From e0426b12f8ec151cc112d18d772720da589ea9b6 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 22 Mar 2023 11:58:26 -0400 Subject: [PATCH 001/331] Use GCARR_ac rate law function for rxns with Arrhenius B = 0 KPP/custom/custom.eqn KPP/fullchem/fullchem.eqn - Change GCARR_abc to GCARR_ac for rxns where the Arrhenius B parameter is zero. This is more computationally efficient, since it will avoid computing terms that evaluate to 1. CHANGELOG.md - Refer user to CHANGELOG_fullchem.md for chemistry mechanism updates CHANGELOG_fullchem.md - Updated with info about GCARR_ac and other chemistry mechanism updates going into version 14.2.0 KPP/fullchem/gckpp_Rates.F90 - Rebuilt with KPP 3.0.0 --- CHANGELOG.md | 3 +- KPP/custom/custom.eqn | 54 +++++++++++++++--------------- KPP/fullchem/CHANGELOG_fullchem.md | 9 ++++- KPP/fullchem/fullchem.eqn | 54 +++++++++++++++--------------- KPP/fullchem/gckpp_Rates.F90 | 52 ++++++++++++++-------------- 5 files changed, 89 insertions(+), 83 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9fce5ee50..03583d2fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased 14.2.0] ### Added +- Chemistry mechanism updates; See `KPP/fullchem/CHANGELOG_fullchem.md` for details - Added a printout of GEOS-Chem species and indices - Added 'NcdfUtil/README.md` file directing users to look for netCDF utility scripts at https://github.com/geoschem/netcdf-scripts -- Restored sink reactions for HOI, IONO, IONO2 (fullchem, custom mechanisms) ### Changed - Most printout has been converted to debug printout (toggled by `debug_printout: true` in `geoschem_config.yml` @@ -21,7 +21,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - `Warnings: 1` is now removed from `HEMCO_Config.rc.*` template files - Removed the `NcdfUtil/perl` folder - Removed `X-HRS` output from log file -- IONO2 recycling (fullchem, custom mechanisms) ### Fixed - Fixed typo in `GCClassic/createRunDir.sh` preventing benchmark run script from being copied to the run directory diff --git a/KPP/custom/custom.eqn b/KPP/custom/custom.eqn index d5512bfba..64438eae7 100644 --- a/KPP/custom/custom.eqn +++ b/KPP/custom/custom.eqn @@ -477,7 +477,7 @@ OH + CO = HO2 + CO2 : GC_OHCO_a(1.50d-13); OH + CH4 = MO2 + H2O : GCARR_ac(2.45d-12, -1775.0d0); MO2 + NO = CH2O + HO2 + NO2 : GC_RO2NO_B1_ac(2.80d-12, 300.0d0); {2019/05/10; Fisher2018; JAF} MO2 + NO = MENO3 : GC_RO2NO_A1_ac(2.80d-12, 300.0d0); {2019/05/10; Fisher2018; JAF} -MO2 + HO2 = MP + O2 : GCARR_abc(4.10d-13, 0.0d0, 750.0d0); +MO2 + HO2 = MP + O2 : GCARR_ac(4.10d-13, 750.0d0); MO2 + MO2 = MOH + CH2O + O2 : GC_TBRANCH_1_acac(9.50d-14, 390.0d0, 2.62d1, -1130.0d0); MO2 + MO2 = 2.000CH2O + 2.000HO2 : GC_TBRANCH_1_acac(9.50d-14, 390.0d0, 4.0d-2, 1130.0d0); MO2 + OH = 0.13MOH + 0.87CH2O + 1.74HO2 : 1.60d-10 ; {2021/09/22; Bates2021a; KHB,MSL} @@ -1316,42 +1316,42 @@ NRO2 + HO2 = LNRO2H + HO2 : GCARR_ac(1.40d-12, 700.0d0); NRO2 + NO = LNRO2N + NO : GCARR_ac(2.60d-12, 350.0d0); {2013/08/12; Pye2010; HOTP} // // --- C2H2 & C2H4 chemistry (per KHB) -C2H4 + O3 = CH2O + CH2OO : GCARR_abc(9.10d-15, 0.0d0, -2580.0d0); {2021/09/22; Kwon2020; KHB,MSL} +C2H4 + O3 = CH2O + CH2OO : GCARR_ac(9.10d-15, -2580.0d0); {2021/09/22; Kwon2020; KHB,MSL} C2H4 + OH = ETOO : GCJPLPR_abab(1.10d-28, 3.5d+00, 8.4d-12, 1.75d0, 0.5d0); {2021/09/22; Kwon2020; KHB,MSL} C2H2 + OH = 0.636GLYX + 0.636OH + 0.364CO + 0.364HO2 + 0.364HCOOH : GCJPLPR_abab(5.50d-30, 0.0d0, 8.3d-13, -2.0d0, 0.5d0); {2021/09/22; Kwon2020; KHB,MSL} -ETOO + HO2 = ETHP : GCARR_abc(1.53d-13, 0.0d0, 1300.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETOO + HO2 = ETHP : GCARR_ac(1.53d-13, 1300.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETOO + NO = 0.995ETO + - 0.995NO2 + 0.005ETHN : GCARR_abc(2.7d-12, 0.0d+00, 360.0d0); {2021/09/22; Kwon2020; KHB,MSL} + 0.995NO2 + 0.005ETHN : GCARR_ac(2.7d-12, 360.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETOO + NO3 = ETO + NO2 : 2.3d-12; {2021/09/22; Kwon2020; KHB,MSL} ETOO + MO2 = 0.6ETO + 0.6HO2 + 0.8CH2O + 0.2MOH + 0.2ETHP + 0.2GLYC : 6.00d-13; {2021/09/22; Kwon2020; KHB,MSL} -ETO = HO2 + 2.000CH2O : GCARR_abc(9.5d+13, 0.0d0, -5988.0d0); {2021/09/22; Kwon2020; KHB,MSL} -ETO + O2 = GLYC + HO2 : GCARR_abc(2.5d-14, 0.0d0, -300.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETO = HO2 + 2.000CH2O : GCARR_ac(9.5d+13, -5988.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETO + O2 = GLYC + HO2 : GCARR_ac(2.5d-14, -300.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETHN + OH = GLYC + NO2 : 8.40d-13; {2021/09/22; Kwon2020; KHB,MSL} -ETHP + OH = ETOO : GCARR_abc(1.90d-12, 0.0d+00, 190.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETHP + OH = ETOO : GCARR_ac(1.90d-12, 190.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETHP + OH = OH + GLYC : 1.38d-11; {2021/09/22; Kwon2020; KHB,MSL} // // --- Aromatic Chemistry (per KHB) BENZ + OH = BRO2 + 0.54PHEN + 0.54HO2 + 0.46AROMRO2 + 0.18GLYX + - 0.2CO +0.56AROMP4 : GCARR_abc(2.3d-12, 0.0d0, -193.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.2CO +0.56AROMP4 : GCARR_ac(2.3d-12, -193.0d0); {2021/09/29; Bates2021b; KHB,MSL} TOLU + OH = TRO2 + 0.19CSL + 0.19HO2 + 0.81AROMRO2 + 0.06BALD + 0.12GLYX + 0.12MGLY + 0.27CO + 0.04MVK + 0.3AROMP5 + - 0.68AROMP4 : GCARR_abc(1.8d-12, 0.0d0, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.68AROMP4 : GCARR_ac(1.8d-12, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} XYLE + OH = XRO2 + 0.15CSL + 0.15HO2 + 0.85AROMRO2 + 0.06BALD + 0.1GLYX + 0.2MGLY + 0.3CO + 0.04MVK + 0.56AROMP5 + 0.28AROMP4 + 0.45RCOOH : 1.7d-11; {2021/09/29; Bates2021b; KHB,MSL} AROMRO2 + HO2 = OH + HO2 : 2.91d-13 * EXP( 1300.0d0 / TEMP ) * 0.82d0; {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + NO = NO2 + HO2 : GCARR_abc(2.60d-12, 0.0d+00, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +AROMRO2 + NO = NO2 + HO2 : GCARR_ac(2.60d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} AROMRO2 + NO3 = NO2 + HO2 : 2.30d-12; {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + MO2 = CH2O + HO2 + HO2 : GCARR_abc(1.70d-14, 0.0d0, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + MCO3 = MO2 + HO2 : GCARR_abc(4.20d-14, 0.0d0, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} +AROMRO2 + MO2 = CH2O + HO2 + HO2 : GCARR_ac(1.70d-14, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} +AROMRO2 + MCO3 = MO2 + HO2 : GCARR_ac(4.20d-14, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} PHEN + OH = 0.06BENZO + 0.06GLYX + 0.18AROMP4 + 0.14AROMRO2 + - 0.8MCT + 0.8HO2 : GCARR_abc(4.70d-13, 0.0d0, 1220.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.8MCT + 0.8HO2 : GCARR_ac(4.70d-13, 1220.0d0); {2021/09/29; Bates2021b; KHB,MSL} PHEN + NO3 = 0.258NPHEN + 0.742HNO3 + 0.742BENZO : 3.8d-12; {2021/09/29; Bates2021b; KHB,MSL} CSL + OH = 0.727MCT + 0.727HO2 + @@ -1363,27 +1363,27 @@ MCT + OH = 0.3BENZO + 0.7AROMRO2 + MCT + O3 = GLYC + HO2 + OH + AROMP4 : 9.2d-18; {2021/09/29; Bates2021b; KHB,MSL} MCT + NO3 = 0.5NPHEN + 0.5HNO3 + 0.3BENZO + 0.2AROMRO2 + 0.3AROMP4 : 9.9d-11; {2021/09/29; Bates2021b; KHB,MSL} -BALD + OH = BZCO3 : GCARR_abc(5.90d-12, 0.0d0, 225.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BALD + OH = BZCO3 : GCARR_ac(5.90d-12, 225.0d0); {2021/09/29; Bates2021b; KHB,MSL} BALD + NO3 = BZCO3 + HNO3 : 2.4d-15; {2021/09/29; Bates2021b; KHB,MSL} BZCO3 + HO2 = 0.35CO2 + 0.2BENZO2 + - 0.15O3 + 0.2OH + 0.15BENZP + 0.65BZCO3H : GCARR_abc(1.10d-11, 0.0d0, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BZCO3 + NO = NO2 + CO2 + BENZO2 : GCARR_abc(7.50d-12, 0.0d0, 290.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.15O3 + 0.2OH + 0.15BENZP + 0.65BZCO3H : GCARR_ac(1.10d-11, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BZCO3 + NO = NO2 + CO2 + BENZO2 : GCARR_ac(7.50d-12, 290.0d0); {2021/09/29; Bates2021b; KHB,MSL} BZCO3 + NO2 = BZPAN : GC_PAN_acac(3.28d-28, -6.87d0, 1.125d-11, -1.105d0, 0.3d0); {2021/09/29; Bates2021b; KHB,MSL} BZCO3H + OH = BZCO3 : 4.66d-12; {2021/09/29; Bates2021b; KHB,MSL} BZPAN = BZCO3 + NO2 : GC_PAN_abab(1.10d-5, -10100.0d0, 1.90d+17, -14100.0d0, 0.3d0)*0.67d0; {2021/09/29; Bates2021b; KHB,MSL} BZPAN + OH = BENZP + CO2 + NO2 : 1.06d-12; {2021/09/29; Bates2021b; KHB,MSL} BENZO2 + NO2 = BENZO + NO3 : 7.00d-12; {2021/09/29; Bates2021b; KHB,MSL} -BENZO2 + NO = BENZO + NO2 : GCARR_abc(2.670d-12, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + NO = BENZO + NO2 : GCARR_ac(2.670d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} BENZO2 + NO3 = BENZO + NO2 : 2.30d-12; {2021/09/29; Bates2021b; KHB,MSL} -BENZO2 + HO2 = BENZP : GCARR_abc(2.24d-13, 0.0d0, 1300.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + HO2 = BENZP : GCARR_ac(2.24d-13, 1300.0d0); {2021/09/29; Bates2021b; KHB,MSL} BENZP + OH = BENZO2 : 3.60d-12; {2021/09/29; Bates2021b; KHB,MSL} BENZO + O3 = BENZO2 : 2.86d-13; {2021/09/29; Bates2021b; KHB,MSL} BENZO + NO2 = NPHEN : 2.08d-12; {2021/09/29; Bates2021b; KHB,MSL} NPHEN + OH = 0.5R4N1 + AROMP4 + 0.5NO2 : 3.47d-12; {2021/09/29; Bates2021b; KHB,MSL} NPHEN + NO3 = 0.5HNO3 + NO2 + 0.5R4N1 + AROMP4 : 2.60d-12; {2021/09/29; Bates2021b; KHB,MSL} -BENZO2 + MO2 = BENZO + HO2 + CH2O : GCARR_abc(2.670d-13, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BZCO3 + MO2 = BENZO2 + CO2 + HO2 + CH2O : GCARR_abc(2.670d-12, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + MO2 = BENZO + HO2 + CH2O : GCARR_ac(2.670d-13, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BZCO3 + MO2 = BENZO2 + CO2 + HO2 + CH2O : GCARR_ac(2.670d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} AROMP4 + OH = 0.6GLYX + 0.25CO + 0.25HCOOH + 0.25OH + 0.33HO2 + 0.33RCO3 + 0.45RCOOH : 5.0d-11; {2021/09/29; Bates2021b; KHB,MSL} AROMP4 + O3 = 0.5HCOOH + 0.5CO + 0.6GLYX + @@ -1406,14 +1406,14 @@ AROMP5 = 0.2HO2 + 0.2R4O2 + // XRO2, TRO2, and BRO2 as products from the BENZ + OH, TOLU + OH, // and XYLE + OH reactions above, and not include the following reactions)" // -BRO2 + HO2 = HO2 + LBRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BRO2 + NO = NO + LBRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} -TRO2 + HO2 = HO2 + LTRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -TRO2 + NO = NO + LTRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} -XRO2 + HO2 = HO2 + LXRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -XRO2 + NO = NO + LXRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BRO2 + HO2 = HO2 + LBRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BRO2 + NO = NO + LBRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +TRO2 + HO2 = HO2 + LTRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +TRO2 + NO = NO + LTRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +XRO2 + HO2 = HO2 + LXRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +XRO2 + NO = NO + LXRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} MO2 + NO3 = NO2 + CH2O + HO2 : 1.20d-12; {2022/10/18: IUPAC ROO_19; KHB,BMY} -FURA + OH = BUTDI : GCARR_ac(1.32d-11,334.0d0); {2023/02/07; Carter2022; TSC} +FURA + OH = BUTDI : GCARR_ac(1.32d-11, 334.0d0); {2023/02/07; Carter2022; TSC} // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // %%%%% Heterogeneous chemistry reactions %%%%% diff --git a/KPP/fullchem/CHANGELOG_fullchem.md b/KPP/fullchem/CHANGELOG_fullchem.md index 6eecc8533..e830b4dc4 100644 --- a/KPP/fullchem/CHANGELOG_fullchem.md +++ b/KPP/fullchem/CHANGELOG_fullchem.md @@ -4,10 +4,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), # Mechanism history -## [ Unreleased 14.2.0] +## [Unreleased 14.2.0] ### Added - Add lumped furan chemistry following Carter2020 +### Changed + - Restored sink reactions for HOI, IONO, IONO2 + - Use `GCARR_ac` for rxns where the Arrhenius `B` parameter is zero + +### Removed + - IONO2 recycling + ## [14.1.0] - Feb 2023 ### Added - MO2 + NO3 reaction (IUPAC ROO_19) diff --git a/KPP/fullchem/fullchem.eqn b/KPP/fullchem/fullchem.eqn index effd9b8b5..d0c197017 100644 --- a/KPP/fullchem/fullchem.eqn +++ b/KPP/fullchem/fullchem.eqn @@ -475,7 +475,7 @@ OH + CO = HO2 + CO2 : GC_OHCO_a(1.50d-13); OH + CH4 = MO2 + H2O : GCARR_ac(2.45d-12, -1775.0d0); MO2 + NO = CH2O + HO2 + NO2 : GC_RO2NO_B1_ac(2.80d-12, 300.0d0); {2019/05/10; Fisher2018; JAF} MO2 + NO = MENO3 : GC_RO2NO_A1_ac(2.80d-12, 300.0d0); {2019/05/10; Fisher2018; JAF} -MO2 + HO2 = MP + O2 : GCARR_abc(4.10d-13, 0.0d0, 750.0d0); +MO2 + HO2 = MP + O2 : GCARR_ac(4.10d-13, 750.0d0); MO2 + MO2 = MOH + CH2O + O2 : GC_TBRANCH_1_acac(9.50d-14, 390.0d0, 2.62d1, -1130.0d0); MO2 + MO2 = 2.000CH2O + 2.000HO2 : GC_TBRANCH_1_acac(9.50d-14, 390.0d0, 4.0d-2, 1130.0d0); MO2 + OH = 0.13MOH + 0.87CH2O + 1.74HO2 : 1.60d-10 ; {2021/09/22; Bates2021a; KHB,MSL} @@ -1314,42 +1314,42 @@ NRO2 + HO2 = LNRO2H + HO2 : GCARR_ac(1.40d-12, 700.0d0); NRO2 + NO = LNRO2N + NO : GCARR_ac(2.60d-12, 350.0d0); {2013/08/12; Pye2010; HOTP} // // --- C2H2 & C2H4 chemistry (per KHB) -C2H4 + O3 = CH2O + CH2OO : GCARR_abc(9.10d-15, 0.0d0, -2580.0d0); {2021/09/22; Kwon2020; KHB,MSL} +C2H4 + O3 = CH2O + CH2OO : GCARR_ac(9.10d-15, -2580.0d0); {2021/09/22; Kwon2020; KHB,MSL} C2H4 + OH = ETOO : GCJPLPR_abab(1.10d-28, 3.5d+00, 8.4d-12, 1.75d0, 0.5d0); {2021/09/22; Kwon2020; KHB,MSL} C2H2 + OH = 0.636GLYX + 0.636OH + 0.364CO + 0.364HO2 + 0.364HCOOH : GCJPLPR_abab(5.50d-30, 0.0d0, 8.3d-13, -2.0d0, 0.5d0); {2021/09/22; Kwon2020; KHB,MSL} -ETOO + HO2 = ETHP : GCARR_abc(1.53d-13, 0.0d0, 1300.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETOO + HO2 = ETHP : GCARR_ac(1.53d-13, 1300.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETOO + NO = 0.995ETO + - 0.995NO2 + 0.005ETHN : GCARR_abc(2.7d-12, 0.0d+00, 360.0d0); {2021/09/22; Kwon2020; KHB,MSL} + 0.995NO2 + 0.005ETHN : GCARR_ac(2.7d-12, 360.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETOO + NO3 = ETO + NO2 : 2.3d-12; {2021/09/22; Kwon2020; KHB,MSL} ETOO + MO2 = 0.6ETO + 0.6HO2 + 0.8CH2O + 0.2MOH + 0.2ETHP + 0.2GLYC : 6.00d-13; {2021/09/22; Kwon2020; KHB,MSL} -ETO = HO2 + 2.000CH2O : GCARR_abc(9.5d+13, 0.0d0, -5988.0d0); {2021/09/22; Kwon2020; KHB,MSL} -ETO + O2 = GLYC + HO2 : GCARR_abc(2.5d-14, 0.0d0, -300.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETO = HO2 + 2.000CH2O : GCARR_ac(9.5d+13, -5988.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETO + O2 = GLYC + HO2 : GCARR_ac(2.5d-14, -300.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETHN + OH = GLYC + NO2 : 8.40d-13; {2021/09/22; Kwon2020; KHB,MSL} -ETHP + OH = ETOO : GCARR_abc(1.90d-12, 0.0d+00, 190.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETHP + OH = ETOO : GCARR_ac(1.90d-12, 190.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETHP + OH = OH + GLYC : 1.38d-11; {2021/09/22; Kwon2020; KHB,MSL} // // --- Aromatic Chemistry (per KHB) BENZ + OH = BRO2 + 0.54PHEN + 0.54HO2 + 0.46AROMRO2 + 0.18GLYX + - 0.2CO +0.56AROMP4 : GCARR_abc(2.3d-12, 0.0d0, -193.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.2CO +0.56AROMP4 : GCARR_ac(2.3d-12, -193.0d0); {2021/09/29; Bates2021b; KHB,MSL} TOLU + OH = TRO2 + 0.19CSL + 0.19HO2 + 0.81AROMRO2 + 0.06BALD + 0.12GLYX + 0.12MGLY + 0.27CO + 0.04MVK + 0.3AROMP5 + - 0.68AROMP4 : GCARR_abc(1.8d-12, 0.0d0, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.68AROMP4 : GCARR_ac(1.8d-12, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} XYLE + OH = XRO2 + 0.15CSL + 0.15HO2 + 0.85AROMRO2 + 0.06BALD + 0.1GLYX + 0.2MGLY + 0.3CO + 0.04MVK + 0.56AROMP5 + 0.28AROMP4 + 0.45RCOOH : 1.7d-11; {2021/09/29; Bates2021b; KHB,MSL} AROMRO2 + HO2 = OH + HO2 : 2.91d-13 * EXP( 1300.0d0 / TEMP ) * 0.82d0; {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + NO = NO2 + HO2 : GCARR_abc(2.60d-12, 0.0d+00, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +AROMRO2 + NO = NO2 + HO2 : GCARR_ac(2.60d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} AROMRO2 + NO3 = NO2 + HO2 : 2.30d-12; {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + MO2 = CH2O + HO2 + HO2 : GCARR_abc(1.70d-14, 0.0d0, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + MCO3 = MO2 + HO2 : GCARR_abc(4.20d-14, 0.0d0, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} +AROMRO2 + MO2 = CH2O + HO2 + HO2 : GCARR_ac(1.70d-14, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} +AROMRO2 + MCO3 = MO2 + HO2 : GCARR_ac(4.20d-14, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} PHEN + OH = 0.06BENZO + 0.06GLYX + 0.18AROMP4 + 0.14AROMRO2 + - 0.8MCT + 0.8HO2 : GCARR_abc(4.70d-13, 0.0d0, 1220.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.8MCT + 0.8HO2 : GCARR_ac(4.70d-13, 1220.0d0); {2021/09/29; Bates2021b; KHB,MSL} PHEN + NO3 = 0.258NPHEN + 0.742HNO3 + 0.742BENZO : 3.8d-12; {2021/09/29; Bates2021b; KHB,MSL} CSL + OH = 0.727MCT + 0.727HO2 + @@ -1361,27 +1361,27 @@ MCT + OH = 0.3BENZO + 0.7AROMRO2 + MCT + O3 = GLYC + HO2 + OH + AROMP4 : 9.2d-18; {2021/09/29; Bates2021b; KHB,MSL} MCT + NO3 = 0.5NPHEN + 0.5HNO3 + 0.3BENZO + 0.2AROMRO2 + 0.3AROMP4 : 9.9d-11; {2021/09/29; Bates2021b; KHB,MSL} -BALD + OH = BZCO3 : GCARR_abc(5.90d-12, 0.0d0, 225.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BALD + OH = BZCO3 : GCARR_ac(5.90d-12, 225.0d0); {2021/09/29; Bates2021b; KHB,MSL} BALD + NO3 = BZCO3 + HNO3 : 2.4d-15; {2021/09/29; Bates2021b; KHB,MSL} BZCO3 + HO2 = 0.35CO2 + 0.2BENZO2 + - 0.15O3 + 0.2OH + 0.15BENZP + 0.65BZCO3H : GCARR_abc(1.10d-11, 0.0d0, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BZCO3 + NO = NO2 + CO2 + BENZO2 : GCARR_abc(7.50d-12, 0.0d0, 290.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.15O3 + 0.2OH + 0.15BENZP + 0.65BZCO3H : GCARR_ac(1.10d-11, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BZCO3 + NO = NO2 + CO2 + BENZO2 : GCARR_ac(7.50d-12, 290.0d0); {2021/09/29; Bates2021b; KHB,MSL} BZCO3 + NO2 = BZPAN : GC_PAN_acac(3.28d-28, -6.87d0, 1.125d-11, -1.105d0, 0.3d0); {2021/09/29; Bates2021b; KHB,MSL} BZCO3H + OH = BZCO3 : 4.66d-12; {2021/09/29; Bates2021b; KHB,MSL} BZPAN = BZCO3 + NO2 : GC_PAN_abab(1.10d-5, -10100.0d0, 1.90d+17, -14100.0d0, 0.3d0)*0.67d0; {2021/09/29; Bates2021b; KHB,MSL} BZPAN + OH = BENZP + CO2 + NO2 : 1.06d-12; {2021/09/29; Bates2021b; KHB,MSL} BENZO2 + NO2 = BENZO + NO3 : 7.00d-12; {2021/09/29; Bates2021b; KHB,MSL} -BENZO2 + NO = BENZO + NO2 : GCARR_abc(2.670d-12, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + NO = BENZO + NO2 : GCARR_ac(2.670d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} BENZO2 + NO3 = BENZO + NO2 : 2.30d-12; {2021/09/29; Bates2021b; KHB,MSL} -BENZO2 + HO2 = BENZP : GCARR_abc(2.24d-13, 0.0d0, 1300.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + HO2 = BENZP : GCARR_ac(2.24d-13, 1300.0d0); {2021/09/29; Bates2021b; KHB,MSL} BENZP + OH = BENZO2 : 3.60d-12; {2021/09/29; Bates2021b; KHB,MSL} BENZO + O3 = BENZO2 : 2.86d-13; {2021/09/29; Bates2021b; KHB,MSL} BENZO + NO2 = NPHEN : 2.08d-12; {2021/09/29; Bates2021b; KHB,MSL} NPHEN + OH = 0.5R4N1 + AROMP4 + 0.5NO2 : 3.47d-12; {2021/09/29; Bates2021b; KHB,MSL} NPHEN + NO3 = 0.5HNO3 + NO2 + 0.5R4N1 + AROMP4 : 2.60d-12; {2021/09/29; Bates2021b; KHB,MSL} -BENZO2 + MO2 = BENZO + HO2 + CH2O : GCARR_abc(2.670d-13, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BZCO3 + MO2 = BENZO2 + CO2 + HO2 + CH2O : GCARR_abc(2.670d-12, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + MO2 = BENZO + HO2 + CH2O : GCARR_ac(2.670d-13, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BZCO3 + MO2 = BENZO2 + CO2 + HO2 + CH2O : GCARR_ac(2.670d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} AROMP4 + OH = 0.6GLYX + 0.25CO + 0.25HCOOH + 0.25OH + 0.33HO2 + 0.33RCO3 + 0.45RCOOH : 5.0d-11; {2021/09/29; Bates2021b; KHB,MSL} AROMP4 + O3 = 0.5HCOOH + 0.5CO + 0.6GLYX + @@ -1404,14 +1404,14 @@ AROMP5 = 0.2HO2 + 0.2R4O2 + // XRO2, TRO2, and BRO2 as products from the BENZ + OH, TOLU + OH, // and XYLE + OH reactions above, and not include the following reactions)" // -BRO2 + HO2 = HO2 + LBRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BRO2 + NO = NO + LBRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} -TRO2 + HO2 = HO2 + LTRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -TRO2 + NO = NO + LTRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} -XRO2 + HO2 = HO2 + LXRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -XRO2 + NO = NO + LXRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BRO2 + HO2 = HO2 + LBRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BRO2 + NO = NO + LBRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +TRO2 + HO2 = HO2 + LTRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +TRO2 + NO = NO + LTRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +XRO2 + HO2 = HO2 + LXRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +XRO2 + NO = NO + LXRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} MO2 + NO3 = NO2 + CH2O + HO2 : 1.20d-12; {2022/10/18: IUPAC ROO_19; KHB,BMY} -FURA + OH = BUTDI : GCARR_ac(1.32d-11,334.0d0); {2023/02/07; Carter2022; TSC} +FURA + OH = BUTDI : GCARR_ac(1.32d-11, 334.0d0); {2023/02/07; Carter2022; TSC} // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // %%%%% Heterogeneous chemistry reactions %%%%% diff --git a/KPP/fullchem/gckpp_Rates.F90 b/KPP/fullchem/gckpp_Rates.F90 index 53abd4d0c..94b6a6c05 100644 --- a/KPP/fullchem/gckpp_Rates.F90 +++ b/KPP/fullchem/gckpp_Rates.F90 @@ -456,7 +456,7 @@ SUBROUTINE Update_RCONST ( ) RCONST(25) = (GCARR_ac(2.45d-12,-1775.0d0)) RCONST(26) = (GC_RO2NO_B1_ac(2.80d-12,300.0d0)) RCONST(27) = (GC_RO2NO_A1_ac(2.80d-12,300.0d0)) - RCONST(28) = (GCARR_abc(4.10d-13,0.0d0,750.0d0)) + RCONST(28) = (GCARR_ac(4.10d-13,750.0d0)) RCONST(29) = (GC_TBRANCH_1_acac(9.50d-14,390.0d0,2.62d1,-1130.0d0)) RCONST(30) = (GC_TBRANCH_1_acac(9.50d-14,390.0d0,4.0d-2,1130.0d0)) RCONST(31) = (1.60d-10) @@ -1032,64 +1032,64 @@ SUBROUTINE Update_RCONST ( ) RCONST(601) = (GCARR_ac(1.56d-11,117.0d0)) RCONST(602) = (GCARR_ac(1.40d-12,700.0d0)) RCONST(603) = (GCARR_ac(2.60d-12,350.0d0)) - RCONST(604) = (GCARR_abc(9.10d-15,0.0d0,-2580.0d0)) + RCONST(604) = (GCARR_ac(9.10d-15,-2580.0d0)) RCONST(605) = (GCJPLPR_abab(1.10d-28,3.5d+00,8.4d-12,1.75d0,0.5d0)) RCONST(606) = (GCJPLPR_abab(5.50d-30,0.0d0,8.3d-13,-2.0d0,0.5d0)) - RCONST(607) = (GCARR_abc(1.53d-13,0.0d0,1300.0d0)) - RCONST(608) = (GCARR_abc(2.7d-12,0.0d+00,360.0d0)) + RCONST(607) = (GCARR_ac(1.53d-13,1300.0d0)) + RCONST(608) = (GCARR_ac(2.7d-12,360.0d0)) RCONST(609) = (2.3d-12) RCONST(610) = (6.00d-13) - RCONST(611) = (GCARR_abc(9.5d+13,0.0d0,-5988.0d0)) - RCONST(612) = (GCARR_abc(2.5d-14,0.0d0,-300.0d0)) + RCONST(611) = (GCARR_ac(9.5d+13,-5988.0d0)) + RCONST(612) = (GCARR_ac(2.5d-14,-300.0d0)) RCONST(613) = (8.40d-13) - RCONST(614) = (GCARR_abc(1.90d-12,0.0d+00,190.0d0)) + RCONST(614) = (GCARR_ac(1.90d-12,190.0d0)) RCONST(615) = (1.38d-11) - RCONST(616) = (GCARR_abc(2.3d-12,0.0d0,-193.0d0)) - RCONST(617) = (GCARR_abc(1.8d-12,0.0d0,340.0d0)) + RCONST(616) = (GCARR_ab(2.3d-12,-193.0d0)) + RCONST(617) = (GCARR_ac(1.8d-12,340.0d0)) RCONST(618) = (1.7d-11) RCONST(619) = (2.91d-13*EXP(1300.0d0/TEMP)*0.82d0) - RCONST(620) = (GCARR_abc(2.60d-12,0.0d+00,365.0d0)) + RCONST(620) = (GCARR_ac(2.60d-12,365.0d0)) RCONST(621) = (2.30d-12) - RCONST(622) = (GCARR_abc(1.70d-14,0.0d0,220.0d0)) - RCONST(623) = (GCARR_abc(4.20d-14,0.0d0,220.0d0)) - RCONST(624) = (GCARR_abc(4.70d-13,0.0d0,1220.0d0)) + RCONST(622) = (GCARR_ac(1.70d-14,220.0d0)) + RCONST(623) = (GCARR_ac(4.20d-14,220.0d0)) + RCONST(624) = (GCARR_ac(4.70d-13,1220.0d0)) RCONST(625) = (3.8d-12) RCONST(626) = (4.7d-11) RCONST(627) = (1.4d-11) RCONST(628) = (2.0d-11) RCONST(629) = (9.2d-18) RCONST(630) = (9.9d-11) - RCONST(631) = (GCARR_abc(5.90d-12,0.0d0,225.0d0)) + RCONST(631) = (GCARR_ac(5.90d-12,225.0d0)) RCONST(632) = (2.4d-15) - RCONST(633) = (GCARR_abc(1.10d-11,0.0d0,340.0d0)) - RCONST(634) = (GCARR_abc(7.50d-12,0.0d0,290.0d0)) + RCONST(633) = (GCARR_ac(1.10d-11,340.0d0)) + RCONST(634) = (GCARR_ac(7.50d-12,290.0d0)) RCONST(635) = (GC_PAN_acac(3.28d-28,-6.87d0,1.125d-11,-1.105d0,0.3d0)) RCONST(636) = (4.66d-12) RCONST(637) = (GC_PAN_abab(1.10d-5,-10100.0d0,1.90d+17,-14100.0d0,0.3d0)*0.67d0) RCONST(638) = (1.06d-12) RCONST(639) = (7.00d-12) - RCONST(640) = (GCARR_abc(2.670d-12,0.0d0,365.0d0)) + RCONST(640) = (GCARR_ac(2.670d-12,365.0d0)) RCONST(641) = (2.30d-12) - RCONST(642) = (GCARR_abc(2.24d-13,0.0d0,1300.0d0)) + RCONST(642) = (GCARR_ac(2.24d-13,1300.0d0)) RCONST(643) = (3.60d-12) RCONST(644) = (2.86d-13) RCONST(645) = (2.08d-12) RCONST(646) = (3.47d-12) RCONST(647) = (2.60d-12) - RCONST(648) = (GCARR_abc(2.670d-13,0.0d0,365.0d0)) - RCONST(649) = (GCARR_abc(2.670d-12,0.0d0,365.0d0)) + RCONST(648) = (GCARR_ac(2.670d-13,365.0d0)) + RCONST(649) = (GCARR_ac(2.670d-12,365.0d0)) RCONST(650) = (5.0d-11) RCONST(651) = (8.0d-16) RCONST(652) = (1.5d-3) RCONST(653) = (5.0d-11) RCONST(654) = (8.0d-16) RCONST(655) = (1.5d-3) - RCONST(656) = (GCARR_abc(1.40d-12,0.0d0,700.0d0)) - RCONST(657) = (GCARR_abc(2.60d-12,0.0d0,350.0d0)) - RCONST(658) = (GCARR_abc(1.40d-12,0.0d0,700.0d0)) - RCONST(659) = (GCARR_abc(2.60d-12,0.0d0,350.0d0)) - RCONST(660) = (GCARR_abc(1.40d-12,0.0d0,700.0d0)) - RCONST(661) = (GCARR_abc(2.60d-12,0.0d0,350.0d0)) + RCONST(656) = (GCARR_ac(1.40d-12,700.0d0)) + RCONST(657) = (GCARR_ac(2.60d-12,350.0d0)) + RCONST(658) = (GCARR_ac(1.40d-12,700.0d0)) + RCONST(659) = (GCARR_ac(2.60d-12,350.0d0)) + RCONST(660) = (GCARR_ac(1.40d-12,700.0d0)) + RCONST(661) = (GCARR_ac(2.60d-12,350.0d0)) RCONST(662) = (1.20d-12) RCONST(663) = (GCARR_ac(1.32d-11,334.0d0)) RCONST(664) = (HO2uptk1stOrd(State_Het)) From fa4706639587d11ef7cde0710fc2003865b7d039 Mon Sep 17 00:00:00 2001 From: Dandan Zhang Date: Fri, 9 Jun 2023 17:13:33 -0500 Subject: [PATCH 002/331] Add diel and day-of-week scale factors --- .../HEMCO_Config.rc.aerosol | 153 ++--- .../HEMCO_Config.rc.fullchem | 521 +++++++++--------- .../HEMCO_Config.rc.fullchem | 521 +++++++++--------- 3 files changed, 627 insertions(+), 568 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol index 70a781420..4d2cf74bd 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol @@ -1088,72 +1088,73 @@ Warnings: 1 # EDGAR, HTAPv3 or CMIP6_SFC_LAND_ANTHRO for the global base emissions %%% #============================================================================== (((CEDSv2 -0 CEDS_SOAP_ENE $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ene 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 26/280 1 5 -0 CEDS_SOAP_IND $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ind 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 26/280 1 5 -0 CEDS_SOAP_TRA $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_tra 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 26/280 1 5 -0 CEDS_SOAP_RCO $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_rco 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 26/280 1 5 -0 CEDS_SOAP_SLV $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_slv 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 26/280 1 5 -0 CEDS_SOAP_WST $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_wst 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 26/280 1 5 - -0 CEDS_SO2_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_AGR - - - - - - SO4 63 1 5 -0 CEDS_pFe_AGR - - - - - - pFe 66 1 5 -0 CEDS_SO2_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_ENE - - - - - - SO4 63 1 5 -0 CEDS_pFe_ENE - - - - - - pFe 66 1 5 -0 CEDS_SO2_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_IND - - - - - - SO4 63 1 5 -0 CEDS_pFe_IND - - - - - - pFe 66 1 5 -0 CEDS_SO2_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_TRA - - - - - - SO4 63 1 5 -0 CEDS_pFe_TRA - - - - - - pFe 66 1 5 -0 CEDS_SO2_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_RCO - - - - - - SO4 63 1 5 -0 CEDS_pFe_RCO - - - - - - pFe 66 1 5 -0 CEDS_SO2_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_SLV - - - - - - SO4 63 1 5 -0 CEDS_pFe_SLV - - - - - - pFe 66 1 5 -0 CEDS_SO2_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_WST - - - - - - SO4 63 1 5 -0 CEDS_pFe_WST - - - - - - pFe 66 1 5 - -0 CEDS_NH3_AGR $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_agr 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_ENE $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ene 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_IND $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ind 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_TRA $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_tra 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_RCO $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_rco 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_SLV $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_slv 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_WST $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_wst 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 - -0 CEDS_BCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_AGR - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_ENE - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_IND - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_TRA - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_RCO - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_SLV - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_WST - - - - - - BCPO 71 1 5 - -0 CEDS_OCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_AGR - - - - - - OCPO 73 1 5 -0 CEDS_OCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_ENE - - - - - - OCPO 73 1 5 -0 CEDS_OCPI_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_IND - - - - - - OCPO 73 1 5 -0 CEDS_OCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_TRA - - - - - - OCPO 73 1 5 -0 CEDS_OCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_RCO - - - - - - OCPO 73 1 5 -0 CEDS_OCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_SLV - - - - - - OCPO 73 1 5 -0 CEDS_OCPI_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_WST - - - - - - OCPO 73 1 5 +0 CEDS_SOAP_AGR $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_agr 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 280/2401 1 5 +0 CEDS_SOAP_ENE $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ene 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 280/2406/706 1 5 +0 CEDS_SOAP_IND $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ind 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 280/2407/707 1 5 +0 CEDS_SOAP_TRA $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_tra 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 280/2411/711 1 5 +0 CEDS_SOAP_RCO $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_rco 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 280/2409/709 1 5 +0 CEDS_SOAP_SLV $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_slv 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 280/2407/707 1 5 +0 CEDS_SOAP_WST $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_wst 1750-2019/1-12/1/0 C xy kg/m2/s SOAP 26/280 1 5 + +0 CEDS_SO2_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2401 1 5 +0 CEDS_SO4_AGR - - - - - - SO4 63/2401 1 5 +0 CEDS_pFe_AGR - - - - - - pFe 66/2401 1 5 +0 CEDS_SO2_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2406/706 1 5 +0 CEDS_SO4_ENE - - - - - - SO4 63/2406/706 1 5 +0 CEDS_pFe_ENE - - - - - - pFe 66/2406/706 1 5 +0 CEDS_SO2_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2407/707 1 5 +0 CEDS_SO4_IND - - - - - - SO4 63/2407/707 1 5 +0 CEDS_pFe_IND - - - - - - pFe 66/2407/707 1 5 +0 CEDS_SO2_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2411/711 1 5 +0 CEDS_SO4_TRA - - - - - - SO4 63/2411/711 1 5 +0 CEDS_pFe_TRA - - - - - - pFe 66/2411/711 1 5 +0 CEDS_SO2_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2409/709 1 5 +0 CEDS_SO4_RCO - - - - - - SO4 63/2409/709 1 5 +0 CEDS_pFe_RCO - - - - - - pFe 66/2409/709 1 5 +0 CEDS_SO2_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2407/707 1 5 +0 CEDS_SO4_SLV - - - - - - SO4 63/2407/707 1 5 +0 CEDS_pFe_SLV - - - - - - pFe 66/2407/707 1 5 +0 CEDS_SO2_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CEDS_SO4_WST - - - - - - SO4 63 1 5 +0 CEDS_pFe_WST - - - - - - pFe 66 1 5 + +0 CEDS_NH3_AGR $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_agr 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2401 1 5 +0 CEDS_NH3_ENE $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ene 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2406/706 1 5 +0 CEDS_NH3_IND $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ind 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2407/707 1 5 +0 CEDS_NH3_TRA $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_tra 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2411/711 1 5 +0 CEDS_NH3_RCO $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_rco 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2409/709 1 5 +0 CEDS_NH3_SLV $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_slv 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2407/707 1 5 +0 CEDS_NH3_WST $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_wst 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 + +0 CEDS_BCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2401 1 5 +0 CEDS_BCPO_AGR - - - - - - BCPO 71/2401 1 5 +0 CEDS_BCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2406/706 1 5 +0 CEDS_BCPO_ENE - - - - - - BCPO 71/2406/706 1 5 +0 CEDS_BCPI_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2407/707 1 5 +0 CEDS_BCPO_IND - - - - - - BCPO 71/2407/707 1 5 +0 CEDS_BCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2411/711 1 5 +0 CEDS_BCPO_TRA - - - - - - BCPO 71/2411/711 1 5 +0 CEDS_BCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2409/709 1 5 +0 CEDS_BCPO_RCO - - - - - - BCPO 71/2409/709 1 5 +0 CEDS_BCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2407/707 1 5 +0 CEDS_BCPO_SLV - - - - - - BCPO 71/2407/707 1 5 +0 CEDS_BCPI_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 +0 CEDS_BCPO_WST - - - - - - BCPO 71 1 5 + +0 CEDS_OCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2401 1 5 +0 CEDS_OCPO_AGR - - - - - - OCPO 73/2401 1 5 +0 CEDS_OCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2406/706 1 5 +0 CEDS_OCPO_ENE - - - - - - OCPO 73/2406/706 1 5 +0 CEDS_OCPI_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2407/707 1 5 +0 CEDS_OCPO_IND - - - - - - OCPO 73/2407/707 1 5 +0 CEDS_OCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2411/711 1 5 +0 CEDS_OCPO_TRA - - - - - - OCPO 73/2411/711 1 5 +0 CEDS_OCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2409/709 1 5 +0 CEDS_OCPO_RCO - - - - - - OCPO 73/2409/709 1 5 +0 CEDS_OCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2407/707 1 5 +0 CEDS_OCPO_SLV - - - - - - OCPO 73/2407/707 1 5 +0 CEDS_OCPI_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 +0 CEDS_OCPO_WST - - - - - - OCPO 73 1 5 )))CEDSv2 #============================================================================== @@ -2575,6 +2576,26 @@ ${RUNDIR_TES_CLIM_N2O} 1212 FFF $ROOT/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc FFF 2010/1-12/1/0 C xy unitless 1 )))EDGARv43.or.DICE_Africa + +#========================================================================= +# --- Sector-wise diel scale factors for CEDSv2 --- +# These scale factors could potentially be used for other global base emissions if modified accordingly. +#========================================================================= +2401 TOD_AGRICULTURE 0.599/0.599/0.599/0.599/0.599/0.649/0.748/0.898/1.098/1.247/1.447/1.597/1.796/1.746/1.696/1.547/1.347/1.098/0.898/0.748/0.649/0.599/0.599/0.599 - - - xy unitless 1 +2406 TOD_ENERGY 0.790/0.720/0.720/0.710/0.740/0.800/0.920/1.080/1.190/1.220/1.210/1.210/1.170/1.150/1.140/1.130/1.100/1.070/1.040/1.020/1.020/1.010/0.960/0.880 - - - xy unitless 1 +2407 TOD_INDUSTRY 0.750/0.750/0.780/0.820/0.880/0.950/1.020/1.090/1.160/1.220/1.280/1.300/1.220/1.240/1.250/1.160/1.080/1.010/0.950/0.900/0.850/0.810/0.780/0.750 - - - xy unitless 1 +2409 TOD_RESIDENTIAL 0.393/0.393/0.393/0.393/0.393/0.492/1.180/1.475/1.574/1.574/1.377/1.180/1.082/1.082/0.984/0.984/0.984/1.082/1.377/1.475/1.377/1.377/0.984/0.393 - - - xy unitless 1 +2411 TOD_TRANSPORT 0.190/0.090/0.060/0.050/0.090/0.220/0.860/1.840/1.860/1.410/1.240/1.200/1.320/1.440/1.450/1.590/2.030/2.080/1.510/1.060/0.740/0.620/0.610/0.440 - - - xy unitless 1 + +#========================================================================= +# --- Sector-wise day-of-week scale factors for CEDSv2 --- +# These scale factors could potentially be used for other global base emissions if modified accordingly. +#========================================================================= +706 DOW_ENERGY 0.850/1.060/1.060/1.060/1.060/1.060/0.850 - - - xy unitless 1 +707 DOW_INDUSTRY 0.800/1.080/1.080/1.080/1.080/1.080/0.800 - - - xy unitless 1 +709 DOW_RESIDENTIAL 0.800/1.080/1.080/1.080/1.080/1.080/0.800 - - - xy unitless 1 +711 DOW_TRANSPORT 0.790/1.020/1.060/1.080/1.100/1.140/0.810 - - - xy unitless 1 + ### END SECTION SCALE FACTORS ### ############################################################################### diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index bfe608071..4530b8563 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -1357,264 +1357,264 @@ Warnings: 1 # EDGAR, HTAPv3 or CMIP6_SFC_LAND_ANTHRO for the global base emissions %%% #============================================================================== (((CEDSv2 -0 CEDS_NO_AGR $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_agr 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_ENE $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ene 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_IND $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ind 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_TRA $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_tra 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_RCO $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_rco 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_SLV $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_slv 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_WST $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_wst 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 - -0 CEDS_CO_AGR $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_AGR - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_ENE $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ene 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_ENE - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_IND $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ind 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_IND - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_TRA $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_TRA - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_RCO $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_RCO - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_SLV $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_SLV - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_WST $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_WST - - - - - - SOAP 26/280 1 5 - -0 CEDS_SO2_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_AGR - - - - - - SO4 63 1 5 -0 CEDS_pFe_AGR - - - - - - pFe 66 1 5 -0 CEDS_SO2_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_ENE - - - - - - SO4 63 1 5 -0 CEDS_pFe_ENE - - - - - - pFe 66 1 5 -0 CEDS_SO2_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_IND - - - - - - SO4 63 1 5 -0 CEDS_pFe_IND - - - - - - pFe 66 1 5 -0 CEDS_SO2_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_TRA - - - - - - SO4 63 1 5 -0 CEDS_pFe_TRA - - - - - - pFe 66 1 5 -0 CEDS_SO2_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_RCO - - - - - - SO4 63 1 5 -0 CEDS_pFe_RCO - - - - - - pFe 66 1 5 -0 CEDS_SO2_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_SLV - - - - - - SO4 63 1 5 -0 CEDS_pFe_SLV - - - - - - pFe 66 1 5 -0 CEDS_SO2_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_WST - - - - - - SO4 63 1 5 -0 CEDS_pFe_WST - - - - - - pFe 66 1 5 - -0 CEDS_NH3_AGR $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_agr 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_ENE $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ene 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_IND $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ind 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_TRA $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_tra 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_RCO $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_rco 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_SLV $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_slv 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_WST $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_wst 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 - -0 CEDS_BCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_AGR - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_ENE - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_IND - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_TRA - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_RCO - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_SLV - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_WST - - - - - - BCPO 71 1 5 - -0 CEDS_OCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_AGR - - - - - - OCPO 73 1 5 -0 CEDS_POG1_AGR - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_AGR - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_ENE - - - - - - OCPO 73 1 5 -0 CEDS_POG1_ENE - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_ENE - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_IND - - - - - - OCPO 73 1 5 -0 CEDS_POG1_IND - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_IND - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_TRA - - - - - - OCPO 73 1 5 -0 CEDS_POG1_TRA - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_TRA - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_RCO - - - - - - OCPO 73 1 5 -0 CEDS_POG1_RCO - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_RCO - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_SLV - - - - - - OCPO 73 1 5 -0 CEDS_POG1_SLV - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_SLV - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_WST - - - - - - OCPO 73 1 5 -0 CEDS_POG1_WST - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_WST - - - - - - POG2 74/77 1 5 +0 CEDS_NO_AGR $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_agr 1750-2019/1-12/1/0 C xy kg/m2/s NO 2401 1 5 +0 CEDS_NO_ENE $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ene 1750-2019/1-12/1/0 C xy kg/m2/s NO 2406/706 1 5 +0 CEDS_NO_IND $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ind 1750-2019/1-12/1/0 C xy kg/m2/s NO 2407/707 1 5 +0 CEDS_NO_TRA $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_tra 1750-2019/1-12/1/0 C xy kg/m2/s NO 2411/711 1 5 +0 CEDS_NO_RCO $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_rco 1750-2019/1-12/1/0 C xy kg/m2/s NO 2409/709 1 5 +0 CEDS_NO_SLV $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_slv 1750-2019/1-12/1/0 C xy kg/m2/s NO 2407/707 1 5 +0 CEDS_NO_WST $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_wst 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 + +0 CEDS_CO_AGR $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO 2401 1 5 +0 CEDS_SOAP_AGR - - - - - - SOAP 280/2401 1 5 +0 CEDS_CO_ENE $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ene 1750-2019/1-12/1/0 C xy kg/m2/s CO 2406/706 1 5 +0 CEDS_SOAP_ENE - - - - - - SOAP 280/2406/706 1 5 +0 CEDS_CO_IND $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ind 1750-2019/1-12/1/0 C xy kg/m2/s CO 2407/707 1 5 +0 CEDS_SOAP_IND - - - - - - SOAP 280/2407/707 1 5 +0 CEDS_CO_TRA $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO 2411/711 1 5 +0 CEDS_SOAP_TRA - - - - - - SOAP 280/2411/711 1 5 +0 CEDS_CO_RCO $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO 2409/709 1 5 +0 CEDS_SOAP_RCO - - - - - - SOAP 280/2409/709 1 5 +0 CEDS_CO_SLV $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO 2407/707 1 5 +0 CEDS_SOAP_SLV - - - - - - SOAP 280/2407/707 1 5 +0 CEDS_CO_WST $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CEDS_SOAP_WST - - - - - - SOAP 26/280 1 5 + +0 CEDS_SO2_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2401 1 5 +0 CEDS_SO4_AGR - - - - - - SO4 63/2401 1 5 +0 CEDS_pFe_AGR - - - - - - pFe 66/2401 1 5 +0 CEDS_SO2_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2406/706 1 5 +0 CEDS_SO4_ENE - - - - - - SO4 63/2406/706 1 5 +0 CEDS_pFe_ENE - - - - - - pFe 66/2406/706 1 5 +0 CEDS_SO2_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2407/707 1 5 +0 CEDS_SO4_IND - - - - - - SO4 63/2407/707 1 5 +0 CEDS_pFe_IND - - - - - - pFe 66/2407/707 1 5 +0 CEDS_SO2_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2411/711 1 5 +0 CEDS_SO4_TRA - - - - - - SO4 63/2411/711 1 5 +0 CEDS_pFe_TRA - - - - - - pFe 66/2411/711 1 5 +0 CEDS_SO2_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2409/709 1 5 +0 CEDS_SO4_RCO - - - - - - SO4 63/2409/709 1 5 +0 CEDS_pFe_RCO - - - - - - pFe 66/2409/709 1 5 +0 CEDS_SO2_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2407/707 1 5 +0 CEDS_SO4_SLV - - - - - - SO4 63/2407/707 1 5 +0 CEDS_pFe_SLV - - - - - - pFe 66/2407/707 1 5 +0 CEDS_SO2_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CEDS_SO4_WST - - - - - - SO4 63 1 5 +0 CEDS_pFe_WST - - - - - - pFe 66 1 5 + +0 CEDS_NH3_AGR $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_agr 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2401 1 5 +0 CEDS_NH3_ENE $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ene 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2406/706 1 5 +0 CEDS_NH3_IND $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ind 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2407/707 1 5 +0 CEDS_NH3_TRA $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_tra 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2411/711 1 5 +0 CEDS_NH3_RCO $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_rco 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2409/709 1 5 +0 CEDS_NH3_SLV $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_slv 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2407/707 1 5 +0 CEDS_NH3_WST $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_wst 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 + +0 CEDS_BCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2401 1 5 +0 CEDS_BCPO_AGR - - - - - - BCPO 71/2401 1 5 +0 CEDS_BCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2406/706 1 5 +0 CEDS_BCPO_ENE - - - - - - BCPO 71/2406/706 1 5 +0 CEDS_BCPI_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2407/707 1 5 +0 CEDS_BCPO_IND - - - - - - BCPO 71/2407/707 1 5 +0 CEDS_BCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2411/711 1 5 +0 CEDS_BCPO_TRA - - - - - - BCPO 71/2411/711 1 5 +0 CEDS_BCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2409/709 1 5 +0 CEDS_BCPO_RCO - - - - - - BCPO 71/2409/709 1 5 +0 CEDS_BCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2407/707 1 5 +0 CEDS_BCPO_SLV - - - - - - BCPO 71/2407/707 1 5 +0 CEDS_BCPI_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 +0 CEDS_BCPO_WST - - - - - - BCPO 71 1 5 + +0 CEDS_OCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2401 1 5 +0 CEDS_OCPO_AGR - - - - - - OCPO 73/2401 1 5 +0 CEDS_POG1_AGR - - - - - - POG1 74/76/2401 1 5 +0 CEDS_POG2_AGR - - - - - - POG2 74/77/2401 1 5 +0 CEDS_OCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2406/706 1 5 +0 CEDS_OCPO_ENE - - - - - - OCPO 73/2406/706 1 5 +0 CEDS_POG1_ENE - - - - - - POG1 74/76/2406/706 1 5 +0 CEDS_POG2_ENE - - - - - - POG2 74/77/2406/706 1 5 +0 CEDS_OCPI_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2407/707 1 5 +0 CEDS_OCPO_IND - - - - - - OCPO 73/2407/707 1 5 +0 CEDS_POG1_IND - - - - - - POG1 74/76/2407/707 1 5 +0 CEDS_POG2_IND - - - - - - POG2 74/77/2407/707 1 5 +0 CEDS_OCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2411/711 1 5 +0 CEDS_OCPO_TRA - - - - - - OCPO 73/2411/711 1 5 +0 CEDS_POG1_TRA - - - - - - POG1 74/76/2411/711 1 5 +0 CEDS_POG2_TRA - - - - - - POG2 74/77/2411/711 1 5 +0 CEDS_OCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2409/709 1 5 +0 CEDS_OCPO_RCO - - - - - - OCPO 73/2409/709 1 5 +0 CEDS_POG1_RCO - - - - - - POG1 74/76/2409/709 1 5 +0 CEDS_POG2_RCO - - - - - - POG2 74/77/2409/709 1 5 +0 CEDS_OCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2407/707 1 5 +0 CEDS_OCPO_SLV - - - - - - OCPO 73/2407/707 1 5 +0 CEDS_POG1_SLV - - - - - - POG1 74/76/2407/707 1 5 +0 CEDS_POG2_SLV - - - - - - POG2 74/77/2407/707 1 5 +0 CEDS_OCPI_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 +0 CEDS_OCPO_WST - - - - - - OCPO 73 1 5 +0 CEDS_POG1_WST - - - - - - POG1 74/76 1 5 +0 CEDS_POG2_WST - - - - - - POG2 74/77 1 5 # Comment out CO2 for fullchem simulations: CO2 not advected -#0 CEDS_CO2_AGR $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_ENE $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_IND $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_TRA $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_RCO $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_SLV $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_WST $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_AGR $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_ENE $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_IND $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_TRA $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_RCO $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_SLV $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_WST $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 # Comment out CH4 for fullchem simulations: do not use CH4 emissions # CEDS CH4 emissions are only available for 1970-2014 -#0 CEDS_CH4_AGR $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_agr 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_ENE $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ene 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_IND $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ind 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_TRA $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_tra 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_RCO $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_rco 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_SLV $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_slv 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_WST $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_wst 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_AGR $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_agr 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_ENE $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ene 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_IND $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ind 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_TRA $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_tra 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_RCO $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_rco 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_SLV $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_slv 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_WST $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_wst 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 # NOTE: EOH files in CEDS/v2021-06 are actually VOC1 (total alchohols) and are split into MOH, EOH, ROH here -0 CEDS_MOH_AGR $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_AGR - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_AGR - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_ENE $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_ENE - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_ENE - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_IND $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_IND - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_IND - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_TRA $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_TRA - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_TRA - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_RCO $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_RCO - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_RCO - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_SLV $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_SLV - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_SLV - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_WST $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_WST - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_WST - - - - - - ROH 26/92 1 5 - -0 CEDS_C2H6_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_IND $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_WST $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 - -0 CEDS_C3H8_AGR $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_agr 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_ENE $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ene 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_IND $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ind 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_TRA $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_tra 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_RCO $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_rco 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_SLV $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_slv 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_WST $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_wst 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 - -0 CEDS_C4H10_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C5H12_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C6H14_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C2H4_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_IND $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_WST $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 - -0 CEDS_PRPE_AGR $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_agr 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_ENE $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ene 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_IND $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ind 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_TRA $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_tra 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_RCO $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_rco 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_SLV $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_slv 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_WST $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_wst 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 - -0 CEDS_C2H2_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_IND $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_WST $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 - -0 CEDS_BENZ_AGR $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_agr 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_ENE $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ene 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_IND $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ind 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_TRA $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_tra 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_RCO $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_rco 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_SLV $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_slv 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_WST $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_wst 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 - -0 CEDS_TOLU_AGR $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_agr 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_ENE $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ene 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_IND $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ind 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_TRA $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_tra 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_RCO $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_rco 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_SLV $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_slv 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_WST $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_wst 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 - -0 CEDS_XYLE_AGR $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_agr 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_ENE $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ene 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_IND $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ind 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_TRA $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_tra 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_RCO $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_rco 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_SLV $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_slv 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_WST $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_wst 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 - -0 CEDS_CH2O_AGR $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_agr 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_ENE $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ene 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_IND $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ind 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_TRA $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_tra 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_RCO $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_rco 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_SLV $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_slv 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_WST $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_wst 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 - -0 CEDS_ALD2_AGR $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_ENE $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_IND $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_TRA $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_RCO $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_SLV $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_WST $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 - -0 CEDS_MEK_AGR $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_agr 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_ENE $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ene 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_IND $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ind 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_TRA $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_tra 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_RCO $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_rco 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_SLV $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_slv 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_WST $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_wst 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 - -0 CEDS_HCOOH_AGR $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_ENE $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_IND $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_TRA $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_RCO $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_SLV $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_WST $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CEDS_MOH_AGR $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2401 1 5 +0 CEDS_EOH_AGR - - - - - - EOH 91/2401 1 5 +0 CEDS_ROH_AGR - - - - - - ROH 92/2401 1 5 +0 CEDS_MOH_ENE $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2406/706 1 5 +0 CEDS_EOH_ENE - - - - - - EOH 91/2406/706 1 5 +0 CEDS_ROH_ENE - - - - - - ROH 92/2406/706 1 5 +0 CEDS_MOH_IND $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2407/707 1 5 +0 CEDS_EOH_IND - - - - - - EOH 91/2407/707 1 5 +0 CEDS_ROH_IND - - - - - - ROH 92/2407/707 1 5 +0 CEDS_MOH_TRA $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2411/711 1 5 +0 CEDS_EOH_TRA - - - - - - EOH 91/2411/711 1 5 +0 CEDS_ROH_TRA - - - - - - ROH 92/2411/711 1 5 +0 CEDS_MOH_RCO $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2409/709 1 5 +0 CEDS_EOH_RCO - - - - - - EOH 91/2409/709 1 5 +0 CEDS_ROH_RCO - - - - - - ROH 92/2409/709 1 5 +0 CEDS_MOH_SLV $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2407/707 1 5 +0 CEDS_EOH_SLV - - - - - - EOH 91/2407/707 1 5 +0 CEDS_ROH_SLV - - - - - - ROH 92/2407/707 1 5 +0 CEDS_MOH_WST $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CEDS_EOH_WST - - - - - - EOH 26/91 1 5 +0 CEDS_ROH_WST - - - - - - ROH 26/92 1 5 + +0 CEDS_C2H6_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2401 1 5 +0 CEDS_C2H6_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2406/706 1 5 +0 CEDS_C2H6_IND $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2407/707 1 5 +0 CEDS_C2H6_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2411/711 1 5 +0 CEDS_C2H6_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2409/709 1 5 +0 CEDS_C2H6_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2407/707 1 5 +0 CEDS_C2H6_WST $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 + +0 CEDS_C3H8_AGR $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_agr 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2401 1 5 +0 CEDS_C3H8_ENE $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ene 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2406/706 1 5 +0 CEDS_C3H8_IND $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ind 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2407/707 1 5 +0 CEDS_C3H8_TRA $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_tra 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2411/711 1 5 +0 CEDS_C3H8_RCO $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_rco 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2409/709 1 5 +0 CEDS_C3H8_SLV $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_slv 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2407/707 1 5 +0 CEDS_C3H8_WST $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_wst 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 + +0 CEDS_C4H10_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2401 1 5 +0 CEDS_C4H10_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2406/706 1 5 +0 CEDS_C4H10_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C4H10_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2411/711 1 5 +0 CEDS_C4H10_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2409/709 1 5 +0 CEDS_C4H10_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C4H10_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C5H12_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2401 1 5 +0 CEDS_C5H12_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2406/706 1 5 +0 CEDS_C5H12_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C5H12_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2411/711 1 5 +0 CEDS_C5H12_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2409/709 1 5 +0 CEDS_C5H12_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C5H12_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C6H14_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2401 1 5 +0 CEDS_C6H14_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2406/706 1 5 +0 CEDS_C6H14_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C6H14_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2411/711 1 5 +0 CEDS_C6H14_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2409/709 1 5 +0 CEDS_C6H14_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C6H14_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C2H4_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2401 1 5 +0 CEDS_C2H4_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2406/706 1 5 +0 CEDS_C2H4_IND $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2407/707 1 5 +0 CEDS_C2H4_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2411/711 1 5 +0 CEDS_C2H4_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2409/709 1 5 +0 CEDS_C2H4_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2407/707 1 5 +0 CEDS_C2H4_WST $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 + +0 CEDS_PRPE_AGR $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_agr 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2401 1 5 +0 CEDS_PRPE_ENE $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ene 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2406/706 1 5 +0 CEDS_PRPE_IND $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ind 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2407/707 1 5 +0 CEDS_PRPE_TRA $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_tra 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2411/711 1 5 +0 CEDS_PRPE_RCO $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_rco 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2409/709 1 5 +0 CEDS_PRPE_SLV $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_slv 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2407/707 1 5 +0 CEDS_PRPE_WST $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_wst 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 + +0 CEDS_C2H2_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2401 1 5 +0 CEDS_C2H2_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2406/706 1 5 +0 CEDS_C2H2_IND $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2407/707 1 5 +0 CEDS_C2H2_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2411/711 1 5 +0 CEDS_C2H2_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2409/709 1 5 +0 CEDS_C2H2_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2407/707 1 5 +0 CEDS_C2H2_WST $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 + +0 CEDS_BENZ_AGR $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_agr 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2401 1 5 +0 CEDS_BENZ_ENE $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ene 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2406/706 1 5 +0 CEDS_BENZ_IND $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ind 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2407/707 1 5 +0 CEDS_BENZ_TRA $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_tra 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2411/711 1 5 +0 CEDS_BENZ_RCO $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_rco 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2409/709 1 5 +0 CEDS_BENZ_SLV $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_slv 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2407/707 1 5 +0 CEDS_BENZ_WST $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_wst 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 + +0 CEDS_TOLU_AGR $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_agr 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2401 1 5 +0 CEDS_TOLU_ENE $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ene 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2406/706 1 5 +0 CEDS_TOLU_IND $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ind 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2407/707 1 5 +0 CEDS_TOLU_TRA $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_tra 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2411/711 1 5 +0 CEDS_TOLU_RCO $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_rco 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2409/709 1 5 +0 CEDS_TOLU_SLV $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_slv 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2407/707 1 5 +0 CEDS_TOLU_WST $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_wst 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 + +0 CEDS_XYLE_AGR $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_agr 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2401 1 5 +0 CEDS_XYLE_ENE $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ene 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2406/706 1 5 +0 CEDS_XYLE_IND $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ind 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2407/707 1 5 +0 CEDS_XYLE_TRA $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_tra 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2411/711 1 5 +0 CEDS_XYLE_RCO $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_rco 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2409/709 1 5 +0 CEDS_XYLE_SLV $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_slv 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2407/707 1 5 +0 CEDS_XYLE_WST $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_wst 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 + +0 CEDS_CH2O_AGR $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_agr 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2401 1 5 +0 CEDS_CH2O_ENE $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ene 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2406/706 1 5 +0 CEDS_CH2O_IND $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ind 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2407/707 1 5 +0 CEDS_CH2O_TRA $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_tra 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2411/711 1 5 +0 CEDS_CH2O_RCO $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_rco 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2409/709 1 5 +0 CEDS_CH2O_SLV $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_slv 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2407/707 1 5 +0 CEDS_CH2O_WST $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_wst 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 + +0 CEDS_ALD2_AGR $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2401 1 5 +0 CEDS_ALD2_ENE $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2406/706 1 5 +0 CEDS_ALD2_IND $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2407/707 1 5 +0 CEDS_ALD2_TRA $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2411/711 1 5 +0 CEDS_ALD2_RCO $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2409/709 1 5 +0 CEDS_ALD2_SLV $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2407/707 1 5 +0 CEDS_ALD2_WST $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 + +0 CEDS_MEK_AGR $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_agr 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2401 1 5 +0 CEDS_MEK_ENE $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ene 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2406/706 1 5 +0 CEDS_MEK_IND $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ind 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2407/707 1 5 +0 CEDS_MEK_TRA $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_tra 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2411/711 1 5 +0 CEDS_MEK_RCO $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_rco 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2409/709 1 5 +0 CEDS_MEK_SLV $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_slv 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2407/707 1 5 +0 CEDS_MEK_WST $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_wst 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 + +0 CEDS_HCOOH_AGR $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2401 1 5 +0 CEDS_HCOOH_ENE $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2406/706 1 5 +0 CEDS_HCOOH_IND $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2407/707 1 5 +0 CEDS_HCOOH_TRA $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2411/711 1 5 +0 CEDS_HCOOH_RCO $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2409/709 1 5 +0 CEDS_HCOOH_SLV $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2407/707 1 5 +0 CEDS_HCOOH_WST $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 )))CEDSv2 #============================================================================== @@ -4464,6 +4464,25 @@ ${RUNDIR_TES_CLIM_N2O} 1212 FFF $ROOT/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc FFF 2010/1-12/1/0 C xy unitless 1 )))EDGARv43.or.DICE_Africa +#========================================================================= +# --- Sector-wise diel scale factors for CEDSv2 --- +# These scale factors could potentially be used for other global base emissions if modified accordingly. +#========================================================================= +2401 TOD_AGRICULTURE 0.599/0.599/0.599/0.599/0.599/0.649/0.748/0.898/1.098/1.247/1.447/1.597/1.796/1.746/1.696/1.547/1.347/1.098/0.898/0.748/0.649/0.599/0.599/0.599 - - - xy unitless 1 +2406 TOD_ENERGY 0.790/0.720/0.720/0.710/0.740/0.800/0.920/1.080/1.190/1.220/1.210/1.210/1.170/1.150/1.140/1.130/1.100/1.070/1.040/1.020/1.020/1.010/0.960/0.880 - - - xy unitless 1 +2407 TOD_INDUSTRY 0.750/0.750/0.780/0.820/0.880/0.950/1.020/1.090/1.160/1.220/1.280/1.300/1.220/1.240/1.250/1.160/1.080/1.010/0.950/0.900/0.850/0.810/0.780/0.750 - - - xy unitless 1 +2409 TOD_RESIDENTIAL 0.393/0.393/0.393/0.393/0.393/0.492/1.180/1.475/1.574/1.574/1.377/1.180/1.082/1.082/0.984/0.984/0.984/1.082/1.377/1.475/1.377/1.377/0.984/0.393 - - - xy unitless 1 +2411 TOD_TRANSPORT 0.190/0.090/0.060/0.050/0.090/0.220/0.860/1.840/1.860/1.410/1.240/1.200/1.320/1.440/1.450/1.590/2.030/2.080/1.510/1.060/0.740/0.620/0.610/0.440 - - - xy unitless 1 + +#========================================================================= +# --- Sector-wise day-of-week scale factors for CEDSv2 --- +# These scale factors could potentially be used for other global base emissions if modified accordingly. +#========================================================================= +706 DOW_ENERGY 0.850/1.060/1.060/1.060/1.060/1.060/0.850 - - - xy unitless 1 +707 DOW_INDUSTRY 0.800/1.080/1.080/1.080/1.080/1.080/0.800 - - - xy unitless 1 +709 DOW_RESIDENTIAL 0.800/1.080/1.080/1.080/1.080/1.080/0.800 - - - xy unitless 1 +711 DOW_TRANSPORT 0.790/1.020/1.060/1.080/1.100/1.140/0.810 - - - xy unitless 1 + ### END SECTION SCALE FACTORS ### ############################################################################### diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 824c8f1f5..bef31003a 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -1356,264 +1356,264 @@ Warnings: 1 # EDGAR, HTAPv3 or CMIP6_SFC_LAND_ANTHRO for the global base emissions %%% #============================================================================== (((CEDSv2 -0 CEDS_NO_AGR $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_agr 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_ENE $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ene 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_IND $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ind 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_TRA $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_tra 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_RCO $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_rco 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_SLV $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_slv 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_WST $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_wst 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 - -0 CEDS_CO_AGR $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_AGR - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_ENE $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ene 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_ENE - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_IND $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ind 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_IND - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_TRA $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_TRA - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_RCO $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_RCO - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_SLV $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_SLV - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_WST $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_WST - - - - - - SOAP 26/280 1 5 - -0 CEDS_SO2_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_AGR - - - - - - SO4 63 1 5 -0 CEDS_pFe_AGR - - - - - - pFe 66 1 5 -0 CEDS_SO2_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_ENE - - - - - - SO4 63 1 5 -0 CEDS_pFe_ENE - - - - - - pFe 66 1 5 -0 CEDS_SO2_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_IND - - - - - - SO4 63 1 5 -0 CEDS_pFe_IND - - - - - - pFe 66 1 5 -0 CEDS_SO2_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_TRA - - - - - - SO4 63 1 5 -0 CEDS_pFe_TRA - - - - - - pFe 66 1 5 -0 CEDS_SO2_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_RCO - - - - - - SO4 63 1 5 -0 CEDS_pFe_RCO - - - - - - pFe 66 1 5 -0 CEDS_SO2_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_SLV - - - - - - SO4 63 1 5 -0 CEDS_pFe_SLV - - - - - - pFe 66 1 5 -0 CEDS_SO2_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_WST - - - - - - SO4 63 1 5 -0 CEDS_pFe_WST - - - - - - pFe 66 1 5 - -0 CEDS_NH3_AGR $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_agr 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_ENE $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ene 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_IND $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ind 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_TRA $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_tra 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_RCO $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_rco 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_SLV $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_slv 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_WST $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_wst 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 - -0 CEDS_BCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_AGR - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_ENE - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_IND - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_TRA - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_RCO - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_SLV - - - - - - BCPO 71 1 5 -0 CEDS_BCPI_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CEDS_BCPO_WST - - - - - - BCPO 71 1 5 - -0 CEDS_OCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_AGR - - - - - - OCPO 73 1 5 -0 CEDS_POG1_AGR - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_AGR - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_ENE - - - - - - OCPO 73 1 5 -0 CEDS_POG1_ENE - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_ENE - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_IND - - - - - - OCPO 73 1 5 -0 CEDS_POG1_IND - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_IND - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_TRA - - - - - - OCPO 73 1 5 -0 CEDS_POG1_TRA - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_TRA - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_RCO - - - - - - OCPO 73 1 5 -0 CEDS_POG1_RCO - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_RCO - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_SLV - - - - - - OCPO 73 1 5 -0 CEDS_POG1_SLV - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_SLV - - - - - - POG2 74/77 1 5 -0 CEDS_OCPI_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CEDS_OCPO_WST - - - - - - OCPO 73 1 5 -0 CEDS_POG1_WST - - - - - - POG1 74/76 1 5 -0 CEDS_POG2_WST - - - - - - POG2 74/77 1 5 +0 CEDS_NO_AGR $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_agr 1750-2019/1-12/1/0 C xy kg/m2/s NO 2401 1 5 +0 CEDS_NO_ENE $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ene 1750-2019/1-12/1/0 C xy kg/m2/s NO 2406/706 1 5 +0 CEDS_NO_IND $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ind 1750-2019/1-12/1/0 C xy kg/m2/s NO 2407/707 1 5 +0 CEDS_NO_TRA $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_tra 1750-2019/1-12/1/0 C xy kg/m2/s NO 2411/711 1 5 +0 CEDS_NO_RCO $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_rco 1750-2019/1-12/1/0 C xy kg/m2/s NO 2409/709 1 5 +0 CEDS_NO_SLV $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_slv 1750-2019/1-12/1/0 C xy kg/m2/s NO 2407/707 1 5 +0 CEDS_NO_WST $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_wst 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 + +0 CEDS_CO_AGR $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO 2401 1 5 +0 CEDS_SOAP_AGR - - - - - - SOAP 280/2401 1 5 +0 CEDS_CO_ENE $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ene 1750-2019/1-12/1/0 C xy kg/m2/s CO 2406/706 1 5 +0 CEDS_SOAP_ENE - - - - - - SOAP 280/2406/706 1 5 +0 CEDS_CO_IND $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ind 1750-2019/1-12/1/0 C xy kg/m2/s CO 2407/707 1 5 +0 CEDS_SOAP_IND - - - - - - SOAP 280/2407/707 1 5 +0 CEDS_CO_TRA $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO 2411/711 1 5 +0 CEDS_SOAP_TRA - - - - - - SOAP 280/2411/711 1 5 +0 CEDS_CO_RCO $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO 2409/709 1 5 +0 CEDS_SOAP_RCO - - - - - - SOAP 280/2409/709 1 5 +0 CEDS_CO_SLV $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO 2407/707 1 5 +0 CEDS_SOAP_SLV - - - - - - SOAP 280/2407/707 1 5 +0 CEDS_CO_WST $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CEDS_SOAP_WST - - - - - - SOAP 26/280 1 5 + +0 CEDS_SO2_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2401 1 5 +0 CEDS_SO4_AGR - - - - - - SO4 63/2401 1 5 +0 CEDS_pFe_AGR - - - - - - pFe 66/2401 1 5 +0 CEDS_SO2_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2406/706 1 5 +0 CEDS_SO4_ENE - - - - - - SO4 63/2406/706 1 5 +0 CEDS_pFe_ENE - - - - - - pFe 66/2406/706 1 5 +0 CEDS_SO2_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2407/707 1 5 +0 CEDS_SO4_IND - - - - - - SO4 63/2407/707 1 5 +0 CEDS_pFe_IND - - - - - - pFe 66/2407/707 1 5 +0 CEDS_SO2_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2411/711 1 5 +0 CEDS_SO4_TRA - - - - - - SO4 63/2411/711 1 5 +0 CEDS_pFe_TRA - - - - - - pFe 66/2411/711 1 5 +0 CEDS_SO2_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2409/709 1 5 +0 CEDS_SO4_RCO - - - - - - SO4 63/2409/709 1 5 +0 CEDS_pFe_RCO - - - - - - pFe 66/2409/709 1 5 +0 CEDS_SO2_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2407/707 1 5 +0 CEDS_SO4_SLV - - - - - - SO4 63/2407/707 1 5 +0 CEDS_pFe_SLV - - - - - - pFe 66/2407/707 1 5 +0 CEDS_SO2_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CEDS_SO4_WST - - - - - - SO4 63 1 5 +0 CEDS_pFe_WST - - - - - - pFe 66 1 5 + +0 CEDS_NH3_AGR $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_agr 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2401 1 5 +0 CEDS_NH3_ENE $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ene 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2406/706 1 5 +0 CEDS_NH3_IND $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ind 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2407/707 1 5 +0 CEDS_NH3_TRA $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_tra 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2411/711 1 5 +0 CEDS_NH3_RCO $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_rco 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2409/709 1 5 +0 CEDS_NH3_SLV $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_slv 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2407/707 1 5 +0 CEDS_NH3_WST $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_wst 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 + +0 CEDS_BCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2401 1 5 +0 CEDS_BCPO_AGR - - - - - - BCPO 71/2401 1 5 +0 CEDS_BCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2406/706 1 5 +0 CEDS_BCPO_ENE - - - - - - BCPO 71/2406/706 1 5 +0 CEDS_BCPI_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2407/707 1 5 +0 CEDS_BCPO_IND - - - - - - BCPO 71/2407/707 1 5 +0 CEDS_BCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2411/711 1 5 +0 CEDS_BCPO_TRA - - - - - - BCPO 71/2411/711 1 5 +0 CEDS_BCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2409/709 1 5 +0 CEDS_BCPO_RCO - - - - - - BCPO 71/2409/709 1 5 +0 CEDS_BCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70/2407/707 1 5 +0 CEDS_BCPO_SLV - - - - - - BCPO 71/2407/707 1 5 +0 CEDS_BCPI_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 +0 CEDS_BCPO_WST - - - - - - BCPO 71 1 5 + +0 CEDS_OCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2401 1 5 +0 CEDS_OCPO_AGR - - - - - - OCPO 73/2401 1 5 +0 CEDS_POG1_AGR - - - - - - POG1 74/76/2401 1 5 +0 CEDS_POG2_AGR - - - - - - POG2 74/77/2401 1 5 +0 CEDS_OCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2406/706 1 5 +0 CEDS_OCPO_ENE - - - - - - OCPO 73/2406/706 1 5 +0 CEDS_POG1_ENE - - - - - - POG1 74/76/2406/706 1 5 +0 CEDS_POG2_ENE - - - - - - POG2 74/77/2406/706 1 5 +0 CEDS_OCPI_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2407/707 1 5 +0 CEDS_OCPO_IND - - - - - - OCPO 73/2407/707 1 5 +0 CEDS_POG1_IND - - - - - - POG1 74/76/2407/707 1 5 +0 CEDS_POG2_IND - - - - - - POG2 74/77/2407/707 1 5 +0 CEDS_OCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2411/711 1 5 +0 CEDS_OCPO_TRA - - - - - - OCPO 73/2411/711 1 5 +0 CEDS_POG1_TRA - - - - - - POG1 74/76/2411/711 1 5 +0 CEDS_POG2_TRA - - - - - - POG2 74/77/2411/711 1 5 +0 CEDS_OCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2409/709 1 5 +0 CEDS_OCPO_RCO - - - - - - OCPO 73/2409/709 1 5 +0 CEDS_POG1_RCO - - - - - - POG1 74/76/2409/709 1 5 +0 CEDS_POG2_RCO - - - - - - POG2 74/77/2409/709 1 5 +0 CEDS_OCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72/2407/707 1 5 +0 CEDS_OCPO_SLV - - - - - - OCPO 73/2407/707 1 5 +0 CEDS_POG1_SLV - - - - - - POG1 74/76/2407/707 1 5 +0 CEDS_POG2_SLV - - - - - - POG2 74/77/2407/707 1 5 +0 CEDS_OCPI_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 +0 CEDS_OCPO_WST - - - - - - OCPO 73 1 5 +0 CEDS_POG1_WST - - - - - - POG1 74/76 1 5 +0 CEDS_POG2_WST - - - - - - POG2 74/77 1 5 # Comment out CO2 for fullchem simulations: CO2 not advected -#0 CEDS_CO2_AGR $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_ENE $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_IND $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_TRA $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_RCO $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_SLV $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_WST $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_AGR $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_ENE $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_IND $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_TRA $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_RCO $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_SLV $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_WST $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 # Comment out CH4 for fullchem simulations: do not use CH4 emissions # CEDS CH4 emissions are only available for 1970-2014 -#0 CEDS_CH4_AGR $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_agr 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_ENE $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ene 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_IND $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ind 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_TRA $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_tra 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_RCO $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_rco 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_SLV $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_slv 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_WST $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_wst 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_AGR $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_agr 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_ENE $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ene 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_IND $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ind 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_TRA $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_tra 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_RCO $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_rco 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_SLV $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_slv 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_WST $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_wst 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 # NOTE: EOH files in CEDS/v2021-06 are actually VOC1 (total alchohols) and are split into MOH, EOH, ROH here -0 CEDS_MOH_AGR $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_AGR - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_AGR - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_ENE $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_ENE - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_ENE - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_IND $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_IND - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_IND - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_TRA $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_TRA - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_TRA - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_RCO $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_RCO - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_RCO - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_SLV $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_SLV - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_SLV - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_WST $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_WST - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_WST - - - - - - ROH 26/92 1 5 - -0 CEDS_C2H6_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_IND $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_WST $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 - -0 CEDS_C3H8_AGR $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_agr 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_ENE $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ene 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_IND $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ind 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_TRA $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_tra 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_RCO $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_rco 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_SLV $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_slv 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_WST $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_wst 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 - -0 CEDS_C4H10_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C5H12_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C6H14_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C2H4_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_IND $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_WST $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 - -0 CEDS_PRPE_AGR $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_agr 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_ENE $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ene 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_IND $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ind 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_TRA $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_tra 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_RCO $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_rco 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_SLV $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_slv 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_WST $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_wst 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 - -0 CEDS_C2H2_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_IND $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_WST $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 - -0 CEDS_BENZ_AGR $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_agr 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_ENE $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ene 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_IND $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ind 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_TRA $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_tra 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_RCO $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_rco 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_SLV $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_slv 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_WST $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_wst 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 - -0 CEDS_TOLU_AGR $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_agr 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_ENE $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ene 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_IND $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ind 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_TRA $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_tra 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_RCO $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_rco 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_SLV $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_slv 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_WST $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_wst 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 - -0 CEDS_XYLE_AGR $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_agr 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_ENE $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ene 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_IND $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ind 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_TRA $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_tra 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_RCO $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_rco 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_SLV $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_slv 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_WST $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_wst 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 - -0 CEDS_CH2O_AGR $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_agr 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_ENE $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ene 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_IND $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ind 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_TRA $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_tra 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_RCO $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_rco 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_SLV $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_slv 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_WST $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_wst 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 - -0 CEDS_ALD2_AGR $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_ENE $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_IND $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_TRA $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_RCO $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_SLV $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_WST $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 - -0 CEDS_MEK_AGR $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_agr 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_ENE $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ene 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_IND $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ind 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_TRA $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_tra 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_RCO $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_rco 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_SLV $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_slv 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_WST $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_wst 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 - -0 CEDS_HCOOH_AGR $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_ENE $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_IND $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_TRA $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_RCO $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_SLV $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_WST $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CEDS_MOH_AGR $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2401 1 5 +0 CEDS_EOH_AGR - - - - - - EOH 91/2401 1 5 +0 CEDS_ROH_AGR - - - - - - ROH 92/2401 1 5 +0 CEDS_MOH_ENE $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2406/706 1 5 +0 CEDS_EOH_ENE - - - - - - EOH 91/2406/706 1 5 +0 CEDS_ROH_ENE - - - - - - ROH 92/2406/706 1 5 +0 CEDS_MOH_IND $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2407/707 1 5 +0 CEDS_EOH_IND - - - - - - EOH 91/2407/707 1 5 +0 CEDS_ROH_IND - - - - - - ROH 92/2407/707 1 5 +0 CEDS_MOH_TRA $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2411/711 1 5 +0 CEDS_EOH_TRA - - - - - - EOH 91/2411/711 1 5 +0 CEDS_ROH_TRA - - - - - - ROH 92/2411/711 1 5 +0 CEDS_MOH_RCO $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2409/709 1 5 +0 CEDS_EOH_RCO - - - - - - EOH 91/2409/709 1 5 +0 CEDS_ROH_RCO - - - - - - ROH 92/2409/709 1 5 +0 CEDS_MOH_SLV $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2407/707 1 5 +0 CEDS_EOH_SLV - - - - - - EOH 91/2407/707 1 5 +0 CEDS_ROH_SLV - - - - - - ROH 92/2407/707 1 5 +0 CEDS_MOH_WST $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CEDS_EOH_WST - - - - - - EOH 26/91 1 5 +0 CEDS_ROH_WST - - - - - - ROH 26/92 1 5 + +0 CEDS_C2H6_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2401 1 5 +0 CEDS_C2H6_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2406/706 1 5 +0 CEDS_C2H6_IND $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2407/707 1 5 +0 CEDS_C2H6_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2411/711 1 5 +0 CEDS_C2H6_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2409/709 1 5 +0 CEDS_C2H6_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2407/707 1 5 +0 CEDS_C2H6_WST $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 + +0 CEDS_C3H8_AGR $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_agr 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2401 1 5 +0 CEDS_C3H8_ENE $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ene 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2406/706 1 5 +0 CEDS_C3H8_IND $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ind 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2407/707 1 5 +0 CEDS_C3H8_TRA $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_tra 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2411/711 1 5 +0 CEDS_C3H8_RCO $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_rco 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2409/709 1 5 +0 CEDS_C3H8_SLV $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_slv 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2407/707 1 5 +0 CEDS_C3H8_WST $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_wst 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 + +0 CEDS_C4H10_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2401 1 5 +0 CEDS_C4H10_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2406/706 1 5 +0 CEDS_C4H10_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C4H10_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2411/711 1 5 +0 CEDS_C4H10_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2409/709 1 5 +0 CEDS_C4H10_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C4H10_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C5H12_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2401 1 5 +0 CEDS_C5H12_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2406/706 1 5 +0 CEDS_C5H12_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C5H12_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2411/711 1 5 +0 CEDS_C5H12_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2409/709 1 5 +0 CEDS_C5H12_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C5H12_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C6H14_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2401 1 5 +0 CEDS_C6H14_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2406/706 1 5 +0 CEDS_C6H14_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C6H14_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2411/711 1 5 +0 CEDS_C6H14_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2409/709 1 5 +0 CEDS_C6H14_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C6H14_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C2H4_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2401 1 5 +0 CEDS_C2H4_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2406/706 1 5 +0 CEDS_C2H4_IND $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2407/707 1 5 +0 CEDS_C2H4_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2411/711 1 5 +0 CEDS_C2H4_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2409/709 1 5 +0 CEDS_C2H4_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2407/707 1 5 +0 CEDS_C2H4_WST $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 + +0 CEDS_PRPE_AGR $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_agr 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2401 1 5 +0 CEDS_PRPE_ENE $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ene 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2406/706 1 5 +0 CEDS_PRPE_IND $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ind 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2407/707 1 5 +0 CEDS_PRPE_TRA $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_tra 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2411/711 1 5 +0 CEDS_PRPE_RCO $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_rco 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2409/709 1 5 +0 CEDS_PRPE_SLV $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_slv 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2407/707 1 5 +0 CEDS_PRPE_WST $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_wst 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 + +0 CEDS_C2H2_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2401 1 5 +0 CEDS_C2H2_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2406/706 1 5 +0 CEDS_C2H2_IND $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2407/707 1 5 +0 CEDS_C2H2_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2411/711 1 5 +0 CEDS_C2H2_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2409/709 1 5 +0 CEDS_C2H2_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2407/707 1 5 +0 CEDS_C2H2_WST $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 + +0 CEDS_BENZ_AGR $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_agr 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2401 1 5 +0 CEDS_BENZ_ENE $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ene 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2406/706 1 5 +0 CEDS_BENZ_IND $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ind 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2407/707 1 5 +0 CEDS_BENZ_TRA $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_tra 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2411/711 1 5 +0 CEDS_BENZ_RCO $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_rco 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2409/709 1 5 +0 CEDS_BENZ_SLV $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_slv 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2407/707 1 5 +0 CEDS_BENZ_WST $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_wst 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 + +0 CEDS_TOLU_AGR $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_agr 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2401 1 5 +0 CEDS_TOLU_ENE $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ene 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2406/706 1 5 +0 CEDS_TOLU_IND $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ind 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2407/707 1 5 +0 CEDS_TOLU_TRA $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_tra 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2411/711 1 5 +0 CEDS_TOLU_RCO $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_rco 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2409/709 1 5 +0 CEDS_TOLU_SLV $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_slv 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2407/707 1 5 +0 CEDS_TOLU_WST $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_wst 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 + +0 CEDS_XYLE_AGR $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_agr 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2401 1 5 +0 CEDS_XYLE_ENE $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ene 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2406/706 1 5 +0 CEDS_XYLE_IND $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ind 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2407/707 1 5 +0 CEDS_XYLE_TRA $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_tra 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2411/711 1 5 +0 CEDS_XYLE_RCO $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_rco 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2409/709 1 5 +0 CEDS_XYLE_SLV $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_slv 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2407/707 1 5 +0 CEDS_XYLE_WST $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_wst 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 + +0 CEDS_CH2O_AGR $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_agr 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2401 1 5 +0 CEDS_CH2O_ENE $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ene 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2406/706 1 5 +0 CEDS_CH2O_IND $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ind 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2407/707 1 5 +0 CEDS_CH2O_TRA $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_tra 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2411/711 1 5 +0 CEDS_CH2O_RCO $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_rco 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2409/709 1 5 +0 CEDS_CH2O_SLV $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_slv 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2407/707 1 5 +0 CEDS_CH2O_WST $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_wst 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 + +0 CEDS_ALD2_AGR $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2401 1 5 +0 CEDS_ALD2_ENE $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2406/706 1 5 +0 CEDS_ALD2_IND $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2407/707 1 5 +0 CEDS_ALD2_TRA $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2411/711 1 5 +0 CEDS_ALD2_RCO $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2409/709 1 5 +0 CEDS_ALD2_SLV $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2407/707 1 5 +0 CEDS_ALD2_WST $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 + +0 CEDS_MEK_AGR $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_agr 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2401 1 5 +0 CEDS_MEK_ENE $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ene 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2406/706 1 5 +0 CEDS_MEK_IND $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ind 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2407/707 1 5 +0 CEDS_MEK_TRA $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_tra 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2411/711 1 5 +0 CEDS_MEK_RCO $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_rco 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2409/709 1 5 +0 CEDS_MEK_SLV $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_slv 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2407/707 1 5 +0 CEDS_MEK_WST $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_wst 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 + +0 CEDS_HCOOH_AGR $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2401 1 5 +0 CEDS_HCOOH_ENE $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2406/706 1 5 +0 CEDS_HCOOH_IND $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2407/707 1 5 +0 CEDS_HCOOH_TRA $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2411/711 1 5 +0 CEDS_HCOOH_RCO $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2409/709 1 5 +0 CEDS_HCOOH_SLV $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2407/707 1 5 +0 CEDS_HCOOH_WST $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 )))CEDSv2 #============================================================================== @@ -4454,6 +4454,25 @@ ${RUNDIR_TES_CLIM_N2O} 1212 FFF $ROOT/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc FFF 2010/1-12/1/0 C xy unitless 1 )))EDGARv43.or.DICE_Africa +#========================================================================= +# --- Sector-wise diel scale factors for CEDSv2 --- +# These scale factors could potentially be used for other global base emissions if modified accordingly. +#========================================================================= +2401 TOD_AGRICULTURE 0.599/0.599/0.599/0.599/0.599/0.649/0.748/0.898/1.098/1.247/1.447/1.597/1.796/1.746/1.696/1.547/1.347/1.098/0.898/0.748/0.649/0.599/0.599/0.599 - - - xy unitless 1 +2406 TOD_ENERGY 0.790/0.720/0.720/0.710/0.740/0.800/0.920/1.080/1.190/1.220/1.210/1.210/1.170/1.150/1.140/1.130/1.100/1.070/1.040/1.020/1.020/1.010/0.960/0.880 - - - xy unitless 1 +2407 TOD_INDUSTRY 0.750/0.750/0.780/0.820/0.880/0.950/1.020/1.090/1.160/1.220/1.280/1.300/1.220/1.240/1.250/1.160/1.080/1.010/0.950/0.900/0.850/0.810/0.780/0.750 - - - xy unitless 1 +2409 TOD_RESIDENTIAL 0.393/0.393/0.393/0.393/0.393/0.492/1.180/1.475/1.574/1.574/1.377/1.180/1.082/1.082/0.984/0.984/0.984/1.082/1.377/1.475/1.377/1.377/0.984/0.393 - - - xy unitless 1 +2411 TOD_TRANSPORT 0.190/0.090/0.060/0.050/0.090/0.220/0.860/1.840/1.860/1.410/1.240/1.200/1.320/1.440/1.450/1.590/2.030/2.080/1.510/1.060/0.740/0.620/0.610/0.440 - - - xy unitless 1 + +#========================================================================= +# --- Sector-wise day-of-week scale factors for CEDSv2 --- +# These scale factors could potentially be used for other global base emissions if modified accordingly. +#========================================================================= +706 DOW_ENERGY 0.850/1.060/1.060/1.060/1.060/1.060/0.850 - - - xy unitless 1 +707 DOW_INDUSTRY 0.800/1.080/1.080/1.080/1.080/1.080/0.800 - - - xy unitless 1 +709 DOW_RESIDENTIAL 0.800/1.080/1.080/1.080/1.080/1.080/0.800 - - - xy unitless 1 +711 DOW_TRANSPORT 0.790/1.020/1.060/1.080/1.100/1.140/0.810 - - - xy unitless 1 + ### END SECTION SCALE FACTORS ### ############################################################################### From 22c0164086727b63ac07009173b9d8cd61ebbc91 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Fri, 6 Oct 2023 10:05:23 -0400 Subject: [PATCH 003/331] Update NOAA GMD surface CH4 boundary conditions through 2022 Lee Murray provided updated GMD boundary conditions for GEOS-Chem through Dec 2022. The file can be found in ExtData/HEMCO/NOAA_GMD/v2023-10/. Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 4 ++++ .../HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem | 4 ++-- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO | 4 ++-- run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem | 2 +- run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem | 4 ++-- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 100aedbd3..ff925c5f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased 14.3.0] - TBD +### Changed +- Updated NOAA GMD surface CH4 boundary conditions through 2022 + ## [Unreleased 14.2.1] - TBD ### Added - Script `test/difference/diffTest.sh`, checks 2 different integration tests for differences diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 2f8bb3e7f..c2a1eb258 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -157,7 +157,7 @@ VerboseOnCores: root # Accepted values: root all --> GMI_OH : true # 2005 --> GMI_PROD_LOSS : true # 2005 --> OMOC_RATIO : false # 2010 - --> GMD_SFC_CH4 : ${RUNDIR_USE_GMDCH4} # 1979-2020 + --> GMD_SFC_CH4 : ${RUNDIR_USE_GMDCH4} # 1979-2022 --> CMIP6_SFC_CH4 : false # 1750-1978 --> OLSON_LANDMAP : true # 1985 --> YUAN_MODIS_LAI : true # 2000-2020 @@ -3747,7 +3747,7 @@ VerboseOnCores: root # Accepted values: root all # --- NOAA GMD monthly mean surface CH4 --- #============================================================================== (((GMD_SFC_CH4 -* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2018-01/monthly.gridded.surface.methane.1979-2020.1x1.nc SFC_CH4 1979-2020/1-12/1/0 RY xy ppbv * - 1 1 +* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1979-2022.1x1.nc SFC_CH4 1979-2022/1-12/1/0 RY xy ppbv * - 1 1 )))GMD_SFC_CH4 #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO index 19ac5c059..0c0a09acf 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO @@ -125,7 +125,7 @@ Mask fractions: false --> PROD_CO_CH4 : true # 2010-2019 --> PROD_CO_NMVOC : true # 2010-2019 --> GMI_PROD_LOSS : true # 2005 - --> GMD_SFC_CH4 : true # 1979-2020 + --> GMD_SFC_CH4 : true # 1979-2022 --> CMIP6_SFC_CH4 : false # 1750-1978 --> OLSON_LANDMAP : true # 1985 --> YUAN_MODIS_LAI : true # 2000-2020 @@ -900,7 +900,7 @@ ${RUNDIR_GMI_PROD_CO} # --- NOAA GMD monthly mean surface CH4 --- #============================================================================== (((GMD_SFC_CH4 -* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2018-01/monthly.gridded.surface.methane.1979-2020.1x1.nc SFC_CH4 1979-2020/1-12/1/0 RY xy ppbv * - 1 1 +* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1979-2022.1x1.nc SFC_CH4 1979-2022/1-12/1/0 RY xy ppbv * - 1 1 )))GMD_SFC_CH4 #============================================================================== diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem index 1374995fe..55c523c08 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem @@ -2069,7 +2069,7 @@ GMI_PROD_VRP v/v/s Y Y F2000-%m2-01T00:00:00 none none prod ./HcoDir/GMI/v2015- #============================================================================== # --- NOAA GMD monthly mean surface CH4 (GMD_SFC_CH4) --- #============================================================================== -NOAA_GMD_CH4 ppbv N Y F%y4-%m2-01T00:00:00 none none SFC_CH4 ./HcoDir/NOAA_GMD/v2018-01/monthly.gridded.surface.methane.1979-2020.1x1.nc +NOAA_GMD_CH4 ppbv N Y F%y4-%m2-01T00:00:00 none none SFC_CH4 ./HcoDir/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1979-2022.1x1.nc # #============================================================================== # --- CMIP6 monthly mean surface CH4 (pre 1970) (CMIP6_SFC_CH4) --- diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 4d7d12343..14bb3b289 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -156,7 +156,7 @@ VerboseOnCores: root # Accepted values: root all --> GMI_OH : true # 2005 --> GMI_PROD_LOSS : true # 2005 --> OMOC_RATIO : false # 2010 - --> GMD_SFC_CH4 : ${RUNDIR_USE_GMDCH4} # 1979-2020 + --> GMD_SFC_CH4 : ${RUNDIR_USE_GMDCH4} # 1979-2022 --> CMIP6_SFC_CH4 : false # 1750-1978 --> OLSON_LANDMAP : false # 1985 --> YUAN_MODIS_LAI : false # 2000-2020 @@ -3737,7 +3737,7 @@ VerboseOnCores: root # Accepted values: root all # --- NOAA GMD monthly mean surface CH4 --- #============================================================================== (((GMD_SFC_CH4 -* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2018-01/monthly.gridded.surface.methane.1979-2020.1x1.nc SFC_CH4 1979-2020/1-12/1/0 RY xy ppbv * - 1 1 +* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1979-2022.1x1.nc SFC_CH4 1979-2022/1-12/1/0 RY xy ppbv * - 1 1 )))GMD_SFC_CH4 #============================================================================== From 7dbe2352705c5d6ab97da8ac52e3d38389cbcbd3 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Tue, 10 Oct 2023 09:40:51 -0400 Subject: [PATCH 004/331] Change start year of updated NOAA GMD data from 1979 to 1975 There was a typo in the original file name that propagated to the HEMCO_Config.rc and ExtData.rc files. The start year of the NOAA GMD C4 boundary conditions is 1975, not 1979. The filename has also been fixed in ExtData/HEMCO/NOAA_GMD/v2023-10/. Signed-off-by: Melissa Sulprizio --- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem | 4 ++-- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO | 4 ++-- run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem | 2 +- run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index c2a1eb258..417854e2a 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -157,7 +157,7 @@ VerboseOnCores: root # Accepted values: root all --> GMI_OH : true # 2005 --> GMI_PROD_LOSS : true # 2005 --> OMOC_RATIO : false # 2010 - --> GMD_SFC_CH4 : ${RUNDIR_USE_GMDCH4} # 1979-2022 + --> GMD_SFC_CH4 : ${RUNDIR_USE_GMDCH4} # 1975-2022 --> CMIP6_SFC_CH4 : false # 1750-1978 --> OLSON_LANDMAP : true # 1985 --> YUAN_MODIS_LAI : true # 2000-2020 @@ -3747,7 +3747,7 @@ VerboseOnCores: root # Accepted values: root all # --- NOAA GMD monthly mean surface CH4 --- #============================================================================== (((GMD_SFC_CH4 -* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1979-2022.1x1.nc SFC_CH4 1979-2022/1-12/1/0 RY xy ppbv * - 1 1 +* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1975-2022.1x1.nc SFC_CH4 1975-2022/1-12/1/0 RY xy ppbv * - 1 1 )))GMD_SFC_CH4 #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO index 0c0a09acf..31419557d 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO @@ -125,7 +125,7 @@ Mask fractions: false --> PROD_CO_CH4 : true # 2010-2019 --> PROD_CO_NMVOC : true # 2010-2019 --> GMI_PROD_LOSS : true # 2005 - --> GMD_SFC_CH4 : true # 1979-2022 + --> GMD_SFC_CH4 : true # 1975-2022 --> CMIP6_SFC_CH4 : false # 1750-1978 --> OLSON_LANDMAP : true # 1985 --> YUAN_MODIS_LAI : true # 2000-2020 @@ -900,7 +900,7 @@ ${RUNDIR_GMI_PROD_CO} # --- NOAA GMD monthly mean surface CH4 --- #============================================================================== (((GMD_SFC_CH4 -* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1979-2022.1x1.nc SFC_CH4 1979-2022/1-12/1/0 RY xy ppbv * - 1 1 +* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1975-2022.1x1.nc SFC_CH4 1975-2022/1-12/1/0 RY xy ppbv * - 1 1 )))GMD_SFC_CH4 #============================================================================== diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem index 55c523c08..1160bb45f 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem @@ -2069,7 +2069,7 @@ GMI_PROD_VRP v/v/s Y Y F2000-%m2-01T00:00:00 none none prod ./HcoDir/GMI/v2015- #============================================================================== # --- NOAA GMD monthly mean surface CH4 (GMD_SFC_CH4) --- #============================================================================== -NOAA_GMD_CH4 ppbv N Y F%y4-%m2-01T00:00:00 none none SFC_CH4 ./HcoDir/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1979-2022.1x1.nc +NOAA_GMD_CH4 ppbv N Y F%y4-%m2-01T00:00:00 none none SFC_CH4 ./HcoDir/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1975-2022.1x1.nc # #============================================================================== # --- CMIP6 monthly mean surface CH4 (pre 1970) (CMIP6_SFC_CH4) --- diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 14bb3b289..27ad33dd6 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -156,7 +156,7 @@ VerboseOnCores: root # Accepted values: root all --> GMI_OH : true # 2005 --> GMI_PROD_LOSS : true # 2005 --> OMOC_RATIO : false # 2010 - --> GMD_SFC_CH4 : ${RUNDIR_USE_GMDCH4} # 1979-2022 + --> GMD_SFC_CH4 : ${RUNDIR_USE_GMDCH4} # 1975-2022 --> CMIP6_SFC_CH4 : false # 1750-1978 --> OLSON_LANDMAP : false # 1985 --> YUAN_MODIS_LAI : false # 2000-2020 @@ -3737,7 +3737,7 @@ VerboseOnCores: root # Accepted values: root all # --- NOAA GMD monthly mean surface CH4 --- #============================================================================== (((GMD_SFC_CH4 -* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1979-2022.1x1.nc SFC_CH4 1979-2022/1-12/1/0 RY xy ppbv * - 1 1 +* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1975-2022.1x1.nc SFC_CH4 1975-2022/1-12/1/0 RY xy ppbv * - 1 1 )))GMD_SFC_CH4 #============================================================================== From b09dc0ed538ac137013874933f8ffdf4b974f127 Mon Sep 17 00:00:00 2001 From: Yanshun Li Date: Wed, 11 Oct 2023 10:31:00 +0000 Subject: [PATCH 005/331] Updated gravitational settling, dry mass-weighted mean diameters and hygroscopic growth --- GeosCore/drydep_mod.F90 | 199 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 184 insertions(+), 15 deletions(-) diff --git a/GeosCore/drydep_mod.F90 b/GeosCore/drydep_mod.F90 index aba461db8..ba7ddceb1 100644 --- a/GeosCore/drydep_mod.F90 +++ b/GeosCore/drydep_mod.F90 @@ -1225,6 +1225,10 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Small number REAL(fp), PARAMETER :: SMALL = 1.0e-10_f8 + ! VTS + REAL(f8) :: VTSoutput + REAL(f8) :: VTSoutput_ (NUMDEP,NTYPE) + !================================================================= ! DEPVEL begins here! !================================================================= @@ -1338,6 +1342,7 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & !$OMP PRIVATE( DUMMY1, DUMMY2, DUMMY3, DUMMY4, DAIR, RB ) & !$OMP PRIVATE( C1X, VK, I, J, IW ) & !$OMP PRIVATE( DIAM, DEN, XLAI_FP, SUNCOS_FP, CFRAC_FP ) & + !$OMP PRIVATE( VTSoutput, VTSoutput_ ) & !$OMP PRIVATE( N_SPC, alpha, DEPVw ) & #ifdef TOMAS !$OMP PRIVATE( BIN ) & @@ -1665,7 +1670,11 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & USTAR(I,J), & RHB(I,J), & W10(I,J), & - Input_Opt ) + VTSoutput, & + Input_Opt, & + State_Chm ) + + VTSoutput_(K,LDT) = VTSoutput ELSE IF ( SpcInfo%DD_DustDryDep ) THEN @@ -1709,6 +1718,34 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Particle diameter, convert [m] -> [um] DIAM = A_RADI(K) * 2.e+0_f8 + IF ((SpcInfo%Name .EQ. 'DST1') .OR. & + (SpcInfo%Name .EQ. 'DSTAL1') .OR. & + (SpcInfo%Name .EQ. 'NITD1') .OR. & + (SpcInfo%Name .EQ. 'SO4D1')) THEN + DIAM = 0.66895E-6 + ENDIF + + IF ((SpcInfo%Name .EQ. 'DST2') .OR. & + (SpcInfo%Name .EQ. 'DSTAL2') .OR. & + (SpcInfo%Name .EQ. 'NITD2') .OR. & + (SpcInfo%Name .EQ. 'SO4D2')) THEN + DIAM = 2.4907E-6 + ENDIF + + IF ((SpcInfo%Name .EQ. 'DST3') .OR. & + (SpcInfo%Name .EQ. 'DSTAL3') .OR. & + (SpcInfo%Name .EQ. 'NITD3') .OR. & + (SpcInfo%Name .EQ. 'SO4D3')) THEN + DIAM = 4.164E-6 + ENDIF + + IF ((SpcInfo%Name .EQ. 'DST4') .OR. & + (SpcInfo%Name .EQ. 'DSTAL4') .OR. & + (SpcInfo%Name .EQ. 'NITD4') .OR. & + (SpcInfo%Name .EQ. 'SO4D4')) THEN + DIAM = 6.677E-6 + ENDIF + ! Particle density [kg/m3] DEN = A_DEN(K) #endif @@ -1749,7 +1786,10 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & TEMPK, & USTAR(I,J), & DIAM, & - DEN ) + DEN, & + VTSoutput ) + + VTSoutput_(K,LDT) = VTSoutput ELSE @@ -1772,7 +1812,11 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & ! (-CZH)**0.6667D0 RSURFC(K, LDT) = ADUST_SFCRSII(K, II, PRESSU(I,J)*1e-3_f8, & - TEMPK, USTAR(I,J)) + TEMPK, USTAR(I,J), & + VTSoutput, RHB(I,J), & + State_Chm) + + VTSoutput_(K,LDT) = VTSoutput !* !* Set VDS to be less than VDSMAX (entry in input file @@ -2127,6 +2171,24 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & IF (.NOT.LDEP(K)) GOTO 400 VK(K) = VD(K) VD(K) = VK(K) +.001D0* DBLE( IUSE(I,J,LDT) )/C1X(K) + + IF (AIROSOL (K)) THEN + SpcId = NTRAIND(K) + SpcInfo => State_Chm%SpcData(SpcId)%Info + + IF ( SpcInfo%DD_AeroDryDep ) THEN + VD(K) = VK(K) +.001D0* DBLE( IUSE(I,J,LDT) ) & + /C1X(K) + .001D0* DBLE( IUSE(I,J,LDT) ) *VTSoutput_(K,LDT) + ELSE IF ( SpcInfo%DD_DustDryDep ) THEN + VD(K) = VK(K) +.001D0* DBLE( IUSE(I,J,LDT) ) & + /C1X(K) + .001D0* DBLE( IUSE(I,J,LDT) ) *VTSoutput_(K,LDT) + ELSE + VD(K) = VK(K) +.001D0* DBLE( IUSE(I,J,LDT) ) & + /C1X(K) + .001D0* DBLE( IUSE(I,J,LDT) ) *VTSoutput_(K,LDT) + ENDIF + ELSE + VD(K) = VK(K) +.001D0* DBLE( IUSE(I,J,LDT) )/C1X(K) + ENDIF 400 CONTINUE 500 CONTINUE @@ -3074,12 +3136,14 @@ END SUBROUTINE READ_DRYDEP_INPUTS !\\ ! !INTERFACE: ! - FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, Input_Opt ) & + FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, VTSout, Input_Opt, State_Chm ) & RESULT(RS) ! ! !USES: ! USE Input_Opt_Mod, ONLY : OptInput + USE Species_Mod, ONLY : Species + USE State_Chm_Mod, ONLY : ChmState ! ! !INPUT PARAMETERS: ! @@ -3091,6 +3155,13 @@ FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, Input_Opt ) & REAL(f8), INTENT(IN) :: RHB ! Relative humidity (fraction) REAL(f8), INTENT(IN) :: W10 ! 10 m windspeed [m/s] TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object + TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry State object + +! +! !OUTPUT PARAMETERS: +! + REAL(f8), INTENT(OUT) :: VTSout ! Settling velocity [m/s] + ! ! !RETURN VALUE: ! @@ -3174,6 +3245,11 @@ FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, Input_Opt ) & REAL(f8) :: DEN1, WTP INTEGER :: ID,NR + ! For the species database + INTEGER :: SpcId + TYPE(Species), POINTER :: SpcInfo + REAL(f8) :: drydepRadius + !======================================================================= ! # LUC [Zhang et al., 2001] GEOS-CHEM LUC (Corr. #) !----------------------------------------------------------------------- @@ -3347,11 +3423,29 @@ FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, Input_Opt ) & NR = INT((( Input_Opt%SALC_REDGE_um(2) - Input_Opt%SALA_REDGE_um(1) ) & / DR ) + 0.5e+0_f8 ) + ! drydepRadius + SpcId = NTRAIND(K) + SpcInfo => State_Chm%SpcData(SpcId)%Info + + drydepRadius = A_RADI(K) + + ! Coarse seasalt + IF ((SpcInfo%Name .EQ. 'NITS') .OR. (SpcInfo%Name .EQ. 'SALC') & + .OR. (SpcInfo%Name .EQ. 'SO4S') .OR. (SpcInfo%Name .EQ. 'BRSALC') & + .OR. (SpcInfo%Name .EQ. 'ISALC')) THEN + drydepRadius = 0.74025E-6 + ENDIF + + IF ((SpcInfo%Name .EQ. 'SALA') .OR. (SpcInfo%Name .EQ. 'BRSALA') & + .OR. (SpcInfo%Name .EQ. 'ISALA')) THEN + drydepRadius = 0.114945E-6 + ENDIF + ! Particle radius [cm] ! Bug fix: The Gerber [1985] growth should use the dry radius ! in micromenters and not cm. Replace RCM with RUM (jaegle 5/11/11) !RCM = A_RADI(K) * 1.d2 - RUM = A_RADI(K) * 1.e+6_f8 + RUM = drydepRadius * 1.e+6_f8 ! Exponential factors used for hygroscopic growth ! Replace RCM with RUM (jaegle 5/11/11) @@ -3377,7 +3471,7 @@ FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, Input_Opt ) & ! Use equation 5 in Lewis and Schwartz (2006) for sea salt growth [m] ! (jaegle 5/11/11) - RWET = A_RADI(K) * (4.e+0_f8 / 3.7e+0_f8) * & + RWET = drydepRadius * (4.e+0_f8 / 3.7e+0_f8) * & ( (2.e+0_f8 - RHBL)/(1.e+0_f8 - RHBL) )**(1.e+0_f8/3.e+0_f8) ! Ratio dry over wet radii at the cubic power @@ -3395,7 +3489,7 @@ FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, Input_Opt ) & ! wet aerosol (kg/m3) ! (bec, 6/17/10, jaegle 5/11/11) ! Redefine RATIO_R - RATIO_R = A_RADI(K) / RWET + RATIO_R = drydepRadius / RWET ! Assume an initial density of 1000 kg/m3 DEN = 1000.e+0_f8 @@ -3475,19 +3569,20 @@ FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, Input_Opt ) & ! Calculate mass of wet aerosol (Dw = wet diameter, D = dry diamter): ! Overall = dM/dDw = dV/dlnD * Rwet/Rdry * DEN /Rw IF (DMID(ID) .ge. D0 .and. DMID(ID) .le. D1 ) THEN - DMIDW = DMID(ID) * RWET/A_RADI(K) ! wet radius [um] - SALT_MASS = SALT_V(ID) * RWET/A_RADI(K) * DEN / & + DMIDW = DMID(ID) * RWET/drydepRadius ! wet radius [um] + SALT_MASS = SALT_V(ID) * RWET/drydepRadius * DEN / & (DMIDW*0.5e+0_f8) VTS_WEIGHT = VTS_WEIGHT + & SALT_MASS * VTS * (DMIDW/(RWET*1d6*2e+0_f8) )** & - 2e+0_f8 * (2e+0_f8 * DR * RWET/A_RADI(K)) + 2e+0_f8 * (2e+0_f8 * DR * RWET/drydepRadius) SALT_MASS_TOTAL = SALT_MASS_TOTAL+SALT_MASS * & - (2e+0_f8 * DR * RWET/A_RADI(K)) + (2e+0_f8 * DR * RWET/drydepRadius) ENDIF ENDDO ! Final mass weighted setting velocity: VTS = VTS_WEIGHT/SALT_MASS_TOTAL + VTSout = VTS ! Brownian diffusion constant for particle (m2/s) DIFF = BOLTZ * TEMP * SLIP / (3.e+0_f8 * PI * VISC * DIAM) @@ -3837,7 +3932,14 @@ END FUNCTION DUST_SFCRSI !\\ ! !INTERFACE: ! - FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR ) RESULT( RS ) + FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR, & + VTSout, RHB, State_Chm ) RESULT( RS ) +! +! !USES: +! + USE Species_Mod, ONLY : Species + USE State_Chm_Mod, ONLY : ChmState + ! ! !INPUT PARAMETERS: ! @@ -3846,6 +3948,14 @@ FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR ) RESULT( RS ) REAL(f8), INTENT(IN) :: PRESS ! Pressure [kPa] (1 mb = 100 Pa = 0.1 kPa) REAL(f8), INTENT(IN) :: TEMP ! Temperature [K] REAL(f8), INTENT(IN) :: USTAR ! Friction velocity [m/s] + REAL(f8), INTENT(IN) :: RHB ! Relative humidity (fraction) + TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry State object + +! +! !OUTPUT PARAMETERS: +! + REAL(f8), INTENT(OUT) :: VTSout ! Settling velocity [m/s] + ! ! !RETURN VALUE: ! @@ -3889,6 +3999,12 @@ FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR ) RESULT( RS ) REAL(f8) :: EB, EIM, EIN, R1, AA, VTS + REAL(f8) :: RHBL ! Relative humidity local + + ! For the species database + INTEGER :: SpcId + TYPE(Species), POINTER :: SpcInfo + !======================================================================= ! # LUC [Zhang et al., 2001] GEOS-CHEM LUC (Corr. #) !----------------------------------------------------------------------- @@ -4024,7 +4140,52 @@ FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR ) RESULT( RS ) !================================================================= ! Particle diameter [m] hotp 10/26/07 - DIAM = 0.5e-6_f8 + DIAM = 0.17378e-6_f8 + + ! Hygroscopic growth following Latimer and Martin (2019) ACP (yanshun) + ! Added safety check for LOG (phs, 6/11/08) + RHBL = MAX( TINY(RHB), RHB ) + + ! Over oceans the RH in the viscous sublayer is set to 98%, + ! following + ! Lewis and Schwartz (2004), see discussion above (jaegle 5/11/11) + IF (LUC == 14) THEN + RHBL = 0.98 + ENDIF + + SpcId = NTRAIND(K) + SpcInfo => State_Chm%SpcData(SpcId)%Info + + ! SIA + IF ((SpcInfo%Name .EQ. 'NIT') .OR. (SpcInfo%Name .EQ. 'NH4') & + .OR. (SpcInfo%Name .EQ. 'SO4')) THEN + ! Efflorescence transtions + IF (RHBL .LT. 0.35) THEN + DIAM = DIAM * 1.0 + ! Linear hygroscopic growth + ELSE IF ((RHBL .GE. 0.35) .AND. (RHBL .LE. 0.40)) THEN + DIAM = DIAM + (DIAM * ((1.0 + 0.61 * 0.40 / & + (1.0 - 0.40)) ** (1.0 / 3.0)) - DIAM) / & + (0.40 - 0.35) * (RHBL - 0.35) + ! Kohler hygroscopic growth + ELSE + DIAM = DIAM * ((1.0 + 0.61 * RHBL / (1.0 - RHBL)) & + ** (1.0 / 3.0)) + ENDIF + + !BC + ELSE IF ((SpcInfo%Name .EQ. 'BCPI') .OR. & + (SpcInfo%Name .EQ. 'BCPO')) THEN + DIAM = DIAM * 1.0 + + !OA + ELSE + DIAM = DIAM * ((1.0 + 0.1 * RHBL / (1.0 - RHBL)) & + ** (1.0 / 3.0)) + ENDIF + + ! Free pointer + SpcInfo => NULL() ! Particle density [kg/m3] hotp 10/26/07 DEN = 1500 @@ -4068,6 +4229,7 @@ FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR ) RESULT( RS ) ! Settling velocity [m/s] VTS = CONST * SLIP / VISC + VTSout = VTS ! Brownian diffusion constant for particle (m2/s) DIFF = BOLTZ * TEMP * SLIP / (3.e+0_f8 * Pi * VISC * DIAM) @@ -4126,8 +4288,8 @@ END FUNCTION ADUST_SFCRSII ! !INTERFACE: ! - FUNCTION DUST_SFCRSII( K, II, PRESS, TEMP, USTAR, DIAM, DEN ) & - RESULT( RS ) + FUNCTION DUST_SFCRSII( K, II, PRESS, TEMP, USTAR, DIAM, & + DEN, VTSout) RESULT( RS ) ! ! !INPUT PARAMETERS: ! @@ -4138,6 +4300,12 @@ FUNCTION DUST_SFCRSII( K, II, PRESS, TEMP, USTAR, DIAM, DEN ) & REAL(f8), INTENT(IN) :: USTAR ! Friction velocity [m/s] REAL(f8), INTENT(IN) :: DIAM ! Particle diameter [m] REAL(f8), INTENT(IN) :: DEN ! Particle density [kg/m3] + +! +! !OUTPUT PARAMETERS: +! + REAL(f8), INTENT(OUT) :: VTSout ! Settling velocity [m/s] + ! ! !RETURN VALUE: ! @@ -4353,6 +4521,7 @@ FUNCTION DUST_SFCRSII( K, II, PRESS, TEMP, USTAR, DIAM, DEN ) & ! Settling velocity [m/s] VTS = CONST * SLIP / VISC + VTSout = VTS ! Brownian diffusion constant for particle (m2/s) DIFF = BOLTZ * TEMP * SLIP / (3.e+0_f8 * Pi * VISC * DIAM) From d6b94017868a2b96f8c4229d953664222014487b Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 16 Oct 2023 10:49:00 -0400 Subject: [PATCH 006/331] Remove tagged species handling from carbon_gases_mod.F90 GeosCore/carbon_gases_mod.F90 - For clarity, remove the commented-out tagged species handling from the carbon_gases_mod.F90. We are not planning on adding tagged species into the carbon simulation. Signed-off-by: Bob Yantosca --- GeosCore/carbon_gases_mod.F90 | 204 ---------------------------------- 1 file changed, 204 deletions(-) diff --git a/GeosCore/carbon_gases_mod.F90 b/GeosCore/carbon_gases_mod.F90 index fdf4f4f45..acdc92184 100644 --- a/GeosCore/carbon_gases_mod.F90 +++ b/GeosCore/carbon_gases_mod.F90 @@ -45,12 +45,6 @@ MODULE Carbon_Gases_Mod ! ! !PRIVATE TYPES: ! -!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -!@@@ TAGGED SPECIES HANDLING -!@@@ Set a switch to activate tagged species -!@@@ NOTE: By default, this is not supported and needs further work! -!#define ACTIVATE_TAGGED_SPECIES -!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ! Scalars LOGICAL :: useGlobOHbmk10yr @@ -331,16 +325,6 @@ SUBROUTINE Emiss_Carbon_Gases( Input_Opt, State_Chm, State_Diag, & ! Total CO2 [kg/kg dry air] Spc(id_CO2)%Conc(I,J,L) = Spc(id_CO2)%Conc(I,J,L) + E_CO2 -#ifdef ACTIVATE_TAGGED_SPECIES - !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - !@@@ TAGGED SPECIES HANDLING - !@@@ Add chemical source of CO into the COchem species - !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - IF ( Input_Opt%LSPLIT .and. id_CO2ch > 0 ) THEN - Spc(id_CO2ch)%Conc(I,J,L) = Spc(id_CO2ch)%Conc(I,J,L) + E_CO2 - ENDIF -#endif - ENDDO ENDDO ENDDO @@ -376,7 +360,6 @@ SUBROUTINE Chem_Carbon_Gases( Input_Opt, State_Met, State_Chm, & USE carbon_Funcs USE gckpp_Global USE gckpp_Integrator, ONLY : Integrate - !USE gckpp_Monitor, ONLY : Spc_Names USE gckpp_Parameters USE gckpp_Precision USE gckpp_Rates, ONLY : Update_Rconst @@ -468,13 +451,6 @@ SUBROUTINE Chem_Carbon_Gases( Input_Opt, State_Met, State_Chm, & REAL(fp) :: PCO_in_Strat(State_Grid%NX, State_Grid%NY, State_Grid%NZ) REAL(fp) :: PCO_fr_CH4 (State_Grid%NX, State_Grid%NY, State_Grid%NZ) REAL(fp) :: PCO_fr_NMVOC(State_Grid%NX, State_Grid%NY, State_Grid%NZ) -#ifdef ACTIVATE_TAGGED_SPECIES - !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - !@@@ TAGGED SPECIES HANDLING - !@@@ PrevCH4 stores CH4 before chemistry, for later distribution - !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - REAL(fp) :: PREVCH4( State_Grid%NX, State_Grid%NY, State_Grid%NZ) -#endif #ifdef MODEL_CLASSIC @@ -594,17 +570,6 @@ SUBROUTINE Chem_Carbon_Gases( Input_Opt, State_Met, State_Chm, & !$OMP END PARALLEL DO ENDIF -#ifdef ACTIVATE_TAGGED_SPECIES - !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - !%%% TAGGED SPECIES HANDLING - !%%% If there are multiple CH4 species, store the total CH4 conc - !%%% so that we can distribute the sink after the chemistry. - !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - IF ( Input_Opt%LSPLIT .and. id_CH4 > 0 ) THEN - PrevCH4 = Spc(id_CH4)%Conc - ENDIF -#endif - !======================================================================== ! Main chemistry loop -- call KPP to integrate the mechanism forward !======================================================================== @@ -854,57 +819,6 @@ SUBROUTINE Chem_Carbon_Gases( Input_Opt, State_Met, State_Chm, & ENDIF -#ifdef ACTIVATE_TAGGED_SPECIES - !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - !@@@ TAGGED SPECIES HANDLING - !@@@ Handle trop loss by OH for regional CO species - !@@@ This is turned off by default -- needs further work - !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - IF ( Input_Opt%LSPLIT .and. id_CO > 0 ) THEN - - !%%% NOTE: Un-hardwire the species IDs! - ! Loop over regional CO species - DO NA = 16, State_Chm%nAdvect-11 - - ! Advected species ID - N = State_Chm%Map_Advect(NA) - - !----------------------------------------------------- - ! NOTE: The proper order should be: - ! (1) Calculate CO loss rate - ! (2) Update AD65 array - ! (3) Update the SPC array using the loss rate - ! - ! Therefore, we have now moved the computation of the - ! ND65 diagnostic before we apply the loss to the - ! tagged CO concentrations stored in the SPC array. - ! - ! -- Jenny Fisher (27 Mar 2017) - !----------------------------------------------------- - - ! Update regional species - !<> - IF (NA .ne. 16) & - Spc(N)%Conc(I,J,L) = Spc(N)%Conc(I,J,L) * & - ( 1e+0_fp - K_TROP(2) * C(FixedOH) * DTCHEM ) - - !----------------------------------------------------- - ! HISTORY (aka netCDF diagnostics) - ! - ! Loss of CO by OH for "tagged" species - !----------------------------------------------------- - - ! Units: [kg/s] - IF ( State_Diag%Archive_Loss ) THEN - State_Diag%Loss(I,J,L,N) = Spc(N)%Conc(I,J,L) * k_Trop(2) & - * C(FixedOH) * DTCHEM - ! C(ind_CO2_OH) / DTCHEM & - ! * State_Met%AIRVOL(I,J,L) * 1e+6_fp / XNUMOL_CO - ENDIF - ENDDO - ENDIF -#endif - !===================================================================== ! HISTORY (aka netCDF diagnostics) ! @@ -935,16 +849,6 @@ SUBROUTINE Chem_Carbon_Gases( Input_Opt, State_Met, State_Chm, & carbon_Get_COfromNMVOC_Flux( dtChem ) ENDIF -#ifdef ACTIVATE_TAGGED_SPECIES - !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - !@@@ TAGGED SPECIES HANDLING - !@@@ Loss of CO by OH -- tagged species; Units: [kg/s] - !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - IF ( State_Diag%Archive_Loss ) THEN - State_Diag%Loss(I,J,L,16) = ( COfrom_OH / STTCO / DTCHEM ) - ENDIF -#endif - ! Stop Prod/Loss timer IF ( Input_Opt%useTimers ) THEN CALL Timer_End( & @@ -965,20 +869,6 @@ SUBROUTINE Chem_Carbon_Gases( Input_Opt, State_Met, State_Chm, & RETURN ENDIF -#ifdef ACTIVATE_TAGGED_SPECIES - !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - !@@@ TAGGED SPECIES HANDLING - !@@@ Allocate the CH4 chemistry sink to different tagged CH4 species - !@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - IF ( Input_Opt%LSPLIT .and. id_CH4 > 0 ) THEN - CALL CH4_Distrib_Carbon( & - PrevCh4 = PrevCh4, & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid ) - ENDIF -#endif - ! Free pointers for safety's sake Spc => NULL() @@ -1191,100 +1081,6 @@ SUBROUTINE ReadChemInputFields( Input_Opt, State_Grid, State_Met, & END SUBROUTINE ReadChemInputFields !EOC -#ifdef ACTIVATE_TAGGED_SPECIES -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: ch4_distrib -! -! !DESCRIPTION: Allocates the chemistry sink to different emission species. -! (Only called if there are tagged CH4 species.) -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE CH4_Distrib( PrevCh4, Input_Opt, State_Chm, State_Grid ) -! -! !USES: -! - USE ERROR_MOD, ONLY : SAFE_DIV - USE Input_Opt_Mod, ONLY : OptInput - USE Species_Mod, ONLY : SpcConc - USE State_Chm_Mod, ONLY : ChmState - USE State_Grid_Mod, ONLY : GrdState - - IMPLICIT NONE -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - REAL(fp) :: PREVCH4( & - State_Grid%NX, & - State_Grid%NY, & - State_Grid%NZ) ! CH4 befire chemistry -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry State object -! -! -! !REMARKS: -! This routine is only used with tagged CH4 species. -! -! !REVISION HISTORY: -! See the Git version history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - INTEGER :: I, J, L, N, NA - - ! Pointers - TYPE(SpcConc), POINTER :: Spc(:) - - !======================================================================== - ! CH4_DISTRIB begins here - !======================================================================== - - ! Point to chemical species array [kg] - Spc => State_Chm%Species - - !%%% NOTE: Need to unhardwire the species ID's - ! Loop over the number of advected species - DO NA = 2, State_Chm%nAdvect-24 - - ! Advected species ID - N = State_Chm%Map_Advect(NA) - - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L )& - !$OMP COLLAPSE( 3 ) - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - Spc(N)%Conc(I,J,L) = & - SAFE_DIV( Spc(N)%Conc(I,J,L), PREVCH4(I,J,L), 0.0_fp) & - * Spc(id_CH4)%Conc(I,J,L) - ENDDO - ENDDO - ENDDO - !$OMP END PARALLEL DO - - ENDDO - - ! Free pointer - Spc => NULL() - - END SUBROUTINE CH4_DISTRIB -!EOC -#endif !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ From 35491620a9c14c6138689dc57ab2e098a4b689bd Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 16 Oct 2023 17:36:50 -0400 Subject: [PATCH 007/331] Add advected-only species ID flags for carbon simulation + cleanup GeosCore/carbon_gases_mod.F90 - Removed tagged CO species ID flags - Added species ID flags id_CH4_adv, id_CO2_adv, id_CO_adv, id_OCS_adv, which denote advected species indices - Use advected species ID flags to block out code that is not relevant in single-species simulations KPP/carbon/carbon_Funcs.F90 KPP/stubs/stub_carbon_Funcs.F90 - Remove id_COch4, id_COnmvoc from carbon_ConvertMolecCm3ToKg Signed-off-by: Bob Yantosca --- CHANGELOG.md | 4 ++++ GeosCore/carbon_gases_mod.F90 | 35 +++++++++++++-------------------- KPP/carbon/carbon_Funcs.F90 | 19 ++++-------------- KPP/stubs/stub_carbon_Funcs.F90 | 8 +++----- 4 files changed, 25 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8d9bac61..fb94f6b0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] +### Fixed +- Fix issues that prevented single-species carbon simulations from running + ## [14.2.1] - 2023-10-10 ### Added - Script `test/difference/diffTest.sh`, checks 2 different integration tests for differences diff --git a/GeosCore/carbon_gases_mod.F90 b/GeosCore/carbon_gases_mod.F90 index acdc92184..bbba0a50c 100644 --- a/GeosCore/carbon_gases_mod.F90 +++ b/GeosCore/carbon_gases_mod.F90 @@ -49,9 +49,9 @@ MODULE Carbon_Gases_Mod ! Scalars LOGICAL :: useGlobOHbmk10yr LOGICAL :: useGlobOHv5 - INTEGER :: id_CH4, id_CO, id_COch4, id_COnmvoc - INTEGER :: id_COisop, id_COch3oh, id_COmono, id_COacet - INTEGER :: id_CO2, id_CO2ch, id_OCS, id_OH + INTEGER :: id_CH4, id_CH4_adv, id_CO, id_CO_adv + INTEGER :: id_CO2, id_CO2_adv, id_OCS, id_OCS_adv + INTEGER :: id_OH REAL(fp) :: xnumol_CH4, xnumol_CO, xnumol_CO2, xnumol_OH ! Arrays @@ -190,7 +190,7 @@ SUBROUTINE Emiss_Carbon_Gases( Input_Opt, State_Chm, State_Diag, & ! defined. ! (ckeller, 9/12/2013) !======================================================================== - IF ( id_CH4 > 0 ) THEN + IF ( id_CH4_adv > 0 ) THEN ! Initialize CH4_EMIS_J = 0.0_fp @@ -273,7 +273,7 @@ SUBROUTINE Emiss_Carbon_Gases( Input_Opt, State_Chm, State_Diag, & !======================================================================== ! CO2 production from CO oxidation !======================================================================== - IF ( Input_Opt%LCHEMCO2 .and. id_CO2 > 0 ) THEN + IF ( Input_Opt%LCHEMCO2 .and. id_CO2_adv > 0 ) THEN ! Point to chemical species array [kg/kg dry air] Spc => State_Chm%Species @@ -792,8 +792,6 @@ SUBROUTINE Chem_Carbon_Gases( Input_Opt, State_Met, State_Chm, & L = L, & id_CH4 = id_CH4, & id_CO = id_CO, & - id_COch4 = id_COch4, & - id_COnmvoc = id_COnmvoc, & id_CO2 = id_CO2, & xnumol_CO = xnumol_CO, & xnumol_CH4 = xnumol_CH4, & @@ -1148,21 +1146,16 @@ SUBROUTINE Init_Carbon_Gases( Input_Opt, State_Chm, State_Diag, & !======================================================================== ! Define GEOS-Chem species indices - ! NOTE: Some of these are for tagged species, which are deactivated - ! by default. Interested users can add tagged species if they wish. !======================================================================== - id_CH4 = Ind_( 'CH4' ) - id_CO = Ind_( 'CO' ) - id_COacet = Ind_( 'COacet' ) - id_COch3oh = Ind_( 'COch3oh' ) - id_COch4 = Ind_( 'COch4' ) - id_COisop = Ind_( 'COisop' ) - id_COmono = Ind_( 'COmono' ) - id_COnmvoc = Ind_( 'COnmvoc' ) - id_CO2 = Ind_( 'CO2' ) - id_CO2ch = Ind_( 'CO2ch' ) - id_OCS = Ind_( 'OCS' ) - id_OH = Ind_( 'FixedOH' ) + id_CH4 = Ind_( 'CH4' ) + id_CH4_adv = Ind_( 'CH4', 'A' ) + id_CO = Ind_( 'CO' ) + id_CO_adv = Ind_( 'CO', 'A' ) + id_CO2 = Ind_( 'CO2' ) + id_CO2_adv = Ind_( 'CO2', 'A' ) + id_OCS = Ind_( 'OCS' ) + id_OCS_adv = Ind_( 'OCS', 'A' ) + id_OH = Ind_( 'FixedOH' ) !======================================================================== ! Save physical parameters from the species_database.yml file into KPP diff --git a/KPP/carbon/carbon_Funcs.F90 b/KPP/carbon/carbon_Funcs.F90 index ae62c9435..cfe12a7d2 100644 --- a/KPP/carbon/carbon_Funcs.F90 +++ b/KPP/carbon/carbon_Funcs.F90 @@ -261,10 +261,10 @@ END SUBROUTINE carbon_ComputeRateConstants !\\ ! !INTERFACE: ! - SUBROUTINE carbon_ConvertMolecCm3ToKg( & - I, J, L, id_CH4, id_CO, & - id_COch4, id_COnmvoc, id_CO2, xnumol_CH4, xnumol_CO2, & - xnumol_CO, State_Chm, State_Met ) + SUBROUTINE carbon_ConvertMolecCm3ToKg( & + I, J, L, id_CH4, & + id_CO, id_CO2, xnumol_CH4, xnumol_CO2, & + xnumol_CO, State_Chm, State_Met ) ! ! !USES: ! @@ -277,8 +277,6 @@ SUBROUTINE carbon_ConvertMolecCm3ToKg( & INTEGER, INTENT(IN) :: I, J, L ! Grid box indices INTEGER, INTENT(IN) :: id_CH4 ! Species index for CH4 INTEGER, INTENT(IN) :: id_CO ! Species index for CO - INTEGER, INTENT(IN) :: id_COch4 ! Species index for COch4 - INTEGER, INTENT(IN) :: id_COnmvoc ! Species index for COnmvoc INTEGER, INTENT(IN) :: id_CO2 ! Species index for CO2 REAL(fp), INTENT(IN) :: xnumol_CH4 ! kg CH4 / molec CH4 REAL(fp), INTENT(IN) :: xnumol_CO ! kg CO / molec CO @@ -318,15 +316,6 @@ SUBROUTINE carbon_ConvertMolecCm3ToKg( & IF ( id_CO > 0 ) THEN convfac_CO = airvol_cm3 / xnumol_CO Spc(id_CO)%Conc(I,J,L) = C(ind_CO) * convfac_CO - - IF ( id_COch4 > 0 ) THEN - Spc(id_COch4)%Conc(I,J,L) = C(ind_COfromCH4) * convfac_CO - ENDIF - - IF ( id_COnmvoc > 0 ) THEN - Spc(id_COnmvoc)%Conc(I,J,L) = C(ind_COfromNMVOC) * convfac_CO - ENDIF - ENDIF IF ( id_CO2 > 0 ) THEN diff --git a/KPP/stubs/stub_carbon_Funcs.F90 b/KPP/stubs/stub_carbon_Funcs.F90 index 96a455e4d..0695beea1 100644 --- a/KPP/stubs/stub_carbon_Funcs.F90 +++ b/KPP/stubs/stub_carbon_Funcs.F90 @@ -62,9 +62,9 @@ SUBROUTINE carbon_ComputeRateConstants( & TYPE(MetState), INTENT(IN) :: State_Met END SUBROUTINE carbon_ComputeRateConstants ! - SUBROUTINE carbon_ConvertMolecCm3ToKg( & - I, J, L, id_CH4, id_CO, & - id_COch4, id_COnmvoc, id_CO2, xnumol_CH4, xnumol_CO2, & + SUBROUTINE carbon_ConvertMolecCm3ToKg( & + I, J, L, id_CH4, & + id_CO, id_CO2, xnumol_CH4, xnumol_CO2, & xnumol_CO, State_Chm, State_Met ) ! ! Stub for carbon_ConvertMolecCm3ToKg, @@ -75,8 +75,6 @@ SUBROUTINE carbon_ConvertMolecCm3ToKg( & ! INTEGER, INTENT(IN) :: id_CH4 INTEGER, INTENT(IN) :: id_CO - INTEGER, INTENT(IN) :: id_COch4 - INTEGER, INTENT(IN) :: id_COnmvoc INTEGER, INTENT(IN) :: id_CO2 REAL(fp), INTENT(IN) :: xnumol_CH4 REAL(fp), INTENT(IN) :: xnumol_CO From 143cefc4ce2bdee388f8758dd6df0720c338f8ac Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 16 Oct 2023 17:46:55 -0400 Subject: [PATCH 008/331] Remove USE_CH4_DATA.or.USE_CO2_DATA around GFED entries for carbon sim run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon - Remove the USE_CH4_DATA.or.USE_CO2_DATA blocks around the GFED extension dry-matter and scaling entries. GFED biomass is used for CH4, CO2, and CO. For OCS, we will find a way to turn off the extension switch in the singleCarbonSpecies.sh script. Signed-off-by: Bob Yantosca --- GeosCore/emissions_mod.F90 | 4 ++-- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 3 --- run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 3 --- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/GeosCore/emissions_mod.F90 b/GeosCore/emissions_mod.F90 index ce592fbda..952a9c4f8 100644 --- a/GeosCore/emissions_mod.F90 +++ b/GeosCore/emissions_mod.F90 @@ -118,8 +118,8 @@ END SUBROUTINE Emissions_Init !\\ ! !INTERFACE: ! - SUBROUTINE Emissions_Run( Input_Opt, State_Chm, State_Diag, & - State_Grid, State_Met, EmisTime, Phase, RC ) + SUBROUTINE Emissions_Run( Input_Opt, State_Chm, State_Diag, State_Grid, & + State_Met, EmisTime, Phase, RC ) ! ! !USES: ! diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 62c8bb45f..704347f94 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1016,7 +1016,6 @@ Mask fractions: false # --- GFED biomass burning emissions (Extension 111) # NOTE: These are the base emissions in kgDM/m2/s. #============================================================================== -(((USE_CH4_DATA.or.USE_CO2_DATA (((GFED4 111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 @@ -1035,8 +1034,6 @@ Mask fractions: false )))GFED_3hourly )))GFED4 -)))USE_CH4_DATA.or.USE_CO2_DATA - )))EMISSIONS ############################################################################### diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 7d6491f6d..f66e31e8a 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1016,7 +1016,6 @@ Mask fractions: false # --- GFED biomass burning emissions (Extension 111) # NOTE: These are the base emissions in kgDM/m2/s. #============================================================================== -(((USE_CH4_DATA.or.USE_CO2_DATA (((GFED4 111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 @@ -1035,8 +1034,6 @@ Mask fractions: false )))GFED_3hourly )))GFED4 -)))USE_CH4_DATA.or.USE_CO2_DATA - )))EMISSIONS ############################################################################### From 15701ee41acc4eeafc1a09da9e11b577289a6745 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 18 Oct 2023 11:36:53 -0400 Subject: [PATCH 009/331] Rename tags in geoschem_config.yml for nitrate aerosol photolysis run/CESM/geoschem_config.yml run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem run/GCHP/geoschem.config.yml.templates/geoschem_config.yml.fullchem run/GEOS/geoschem_config.yml - Rename NITs_Jscale_JHNO3 -> NITs_Jscale - Rename NIT_Jscale_JHNO2 -> NIT_Jscale GeosCore/input_mod.F90 - Updated YAML search keys accordingly CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 4 ++++ GeosCore/input_mod.F90 | 4 ++-- run/CESM/geoschem_config.yml | 4 ++-- .../geoschem_config.yml.fullchem | 4 ++-- .../geoschem_config.yml.fullchem | 4 ++-- run/GEOS/geoschem_config.yml | 4 ++-- 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8d9bac61..1f6b67c2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] +### Changed +- Rename `NITs_Jscale_JHNO3` to `NITs_Jscale` and `NIT_Jscale_JHNO2` to `NIT_Jscale` in `geoschem_config.yml` templates + ## [14.2.1] - 2023-10-10 ### Added - Script `test/difference/diffTest.sh`, checks 2 different integration tests for differences diff --git a/GeosCore/input_mod.F90 b/GeosCore/input_mod.F90 index 0df147e4f..b8968bd8a 100644 --- a/GeosCore/input_mod.F90 +++ b/GeosCore/input_mod.F90 @@ -2983,7 +2983,7 @@ SUBROUTINE Config_Photolysis( Config, Input_Opt, RC ) ! Scalar for JHNO3 for photoylsing NITs aerosol !------------------------------------------------------------------------ key = & - "operations%photolysis%photolyze_nitrate_aerosol%NITs_Jscale_JHNO3" + "operations%photolysis%photolyze_nitrate_aerosol%NITs_Jscale" v_str = MISSING_STR CALL QFYAML_Add_Get( Config, TRIM( key ), v_str, "", RC ) IF ( RC /= GC_SUCCESS ) THEN @@ -2997,7 +2997,7 @@ SUBROUTINE Config_Photolysis( Config, Input_Opt, RC ) ! scalar for JHNO3 for photoylsing NIT aerosol (TMS, 23/08/18) !------------------------------------------------------------------------ key = & - "operations%photolysis%photolyze_nitrate_aerosol%NIT_Jscale_JHNO2" + "operations%photolysis%photolyze_nitrate_aerosol%NIT_Jscale" v_str = MISSING_STR CALL QFYAML_Add_Get( Config, TRIM( key ), v_str, "", RC ) IF ( RC /= GC_SUCCESS ) THEN diff --git a/run/CESM/geoschem_config.yml b/run/CESM/geoschem_config.yml index 9fad3497e..4fcd25992 100644 --- a/run/CESM/geoschem_config.yml +++ b/run/CESM/geoschem_config.yml @@ -56,8 +56,8 @@ operations: use_TOMS_SBUV_O3: false photolyze_nitrate_aerosol: activate: true - NITs_Jscale_JHNO3: 100.0 - NIT_Jscale_JHNO2: 100.0 + NITs_Jscale: 100.0 + NIT_Jscale: 100.0 percent_channel_A_HONO: 66.667 percent_channel_B_NO2: 33.333 diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem index 1653683d6..b48bfe037 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -96,8 +96,8 @@ operations: use_TOMS_SBUV_O3: false photolyze_nitrate_aerosol: activate: true - NITs_Jscale_JHNO3: 100.0 - NIT_Jscale_JHNO2: 100.0 + NITs_Jscale: 100.0 + NIT_Jscale: 100.0 percent_channel_A_HONO: 66.667 percent_channel_B_NO2: 33.333 diff --git a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem index b30550047..707349a58 100644 --- a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -79,8 +79,8 @@ operations: use_TOMS_SBUV_O3: false photolyze_nitrate_aerosol: activate: true - NITs_Jscale_JHNO3: 100.0 - NIT_Jscale_JHNO2: 100.0 + NITs_Jscale: 100.0 + NIT_Jscale: 100.0 percent_channel_A_HONO: 66.667 percent_channel_B_NO2: 33.333 diff --git a/run/GEOS/geoschem_config.yml b/run/GEOS/geoschem_config.yml index b2afbb630..087596501 100644 --- a/run/GEOS/geoschem_config.yml +++ b/run/GEOS/geoschem_config.yml @@ -67,8 +67,8 @@ operations: use_TOMS_SBUV_O3: false photolyze_nitrate_aerosol: activate: true - NITs_Jscale_JHNO3: 100.0 - NIT_Jscale_JHNO2: 100.0 + NITs_Jscale: 100.0 + NIT_Jscale: 100.0 percent_channel_A_HONO: 66.667 percent_channel_B_NO2: 33.333 From 57703776dfc7779e26c63024e0e1e7a575b84bb6 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 19 Oct 2023 10:56:39 -0400 Subject: [PATCH 010/331] Add "carbon" to the list of GCHP sims that allow bootstrapping run/GCHP/createRunDir.sh - Add the "carbon" simulation to the if block where the env variable RUNDIR_INITIAL_RESTART_SPECIES_REQUIRED='0' is set. This wiil allow MAPL to bootstrap missing internal state variables to a default value. Signed-off-by: Bob Yantosca --- run/GCHP/createRunDir.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/run/GCHP/createRunDir.sh b/run/GCHP/createRunDir.sh index 985df82df..15120cee8 100755 --- a/run/GCHP/createRunDir.sh +++ b/run/GCHP/createRunDir.sh @@ -564,6 +564,7 @@ if [[ "x${sim_extra_option}" == "xbenchmark" || "x${sim_extra_option}" == "xmarinePOA" || "x${sim_extra_option}" == "xcomplexSOA_SVPOA" || "x${sim_extra_option}" == "xAPM" || + "x${sim_name}" == "xcarbon" || "x${sim_name}" == "xPOPs" || "x${sim_name}" == "xtagCH4" || "x${sim_name}" == "xTransportTracers" || From 9bc0b48df3139d39d57f19622218409dd8ff5c0e Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 21 Nov 2023 11:12:03 -0500 Subject: [PATCH 011/331] Now use rate-law fn GCARR_ac for rxns having Arrhenius B=0 KPP/custom/custom.eqn - Apply fix for runaway HMS chemistry from 14.3.0-alpha.1 - Use GCARR_ac instead of GCARR_abc for rxns with B=0 KPP/fullchem/fullchem.eqn - Use GCARR_ac instead of GCARR_abc for rxns with B=0 KPP/fullchem/gckpp_Rates.F90 - Rebuilt from fullchem.eqn with KPP 3.0.2 CHANGELOG.md KPP/fullchem/CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 ++ KPP/custom/custom.eqn | 58 +++++++++++++++--------------- KPP/fullchem/CHANGELOG_fullchem.md | 1 + KPP/fullchem/fullchem.eqn | 54 ++++++++++++++-------------- KPP/fullchem/gckpp_Rates.F90 | 52 +++++++++++++-------------- 5 files changed, 85 insertions(+), 82 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d01865625..ea842e8c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased 14.3.0] - TBD - Updated fullchem mechanism following JPL/IUPAC. See `KPP/fullchem/CHANGELOG_fullchem.md` for details. +- Added fix for runaway HMS chemistry. See `KPP/fullchem/CHANGELOG_fullchem.md` for details. +- Use rate-law function `GCARR_ac` for rxns that have Arrhenius `B` parameters that are zero ## [14.2.2] - 2023-10-23 ### Changed diff --git a/KPP/custom/custom.eqn b/KPP/custom/custom.eqn index 95a887114..bac22185d 100644 --- a/KPP/custom/custom.eqn +++ b/KPP/custom/custom.eqn @@ -1,4 +1,4 @@ -{ fullchem.eqn +{ custom.eqn ------------------------------------------------------------------------------- DESCRIPTION @@ -435,7 +435,7 @@ SO2 {+O2} = SO4 : K_CLD(3); {Mn & Fe catalysis + // HMS CH2O + SO2 = HMS : K_CLD(4); {Sep 2021; Moch2020; MSL} HMS = SO2 + CH2O : K_CLD(5); {Sep 2021; Moch2020; MSL} -HMS + OH = 2SO4 + CH2O - SO2 : K_CLD(6); {Sep 2021; Moch2020; MSL} +HMS + OH + SO2 = 2SO4 + CH2O : K_CLD(6); {Sep 2021; Moch2020; MSL} // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // %%%%% Gas-phase chemistry reactions %%%%% @@ -479,7 +479,7 @@ OH + CO = HO2 + CO2 : GCJPLPR_abab(6.9d-33,2.1d0,1.1d-12, OH + CH4 = MO2 + H2O : GCARR_ac(2.45d-12, -1775.0d0); MO2 + NO = CH2O + HO2 + NO2 : GC_RO2NO_B1_ac(2.80d-12, 300.0d0); {2019/05/10; Fisher2018; JAF} MO2 + NO = MENO3 : GC_RO2NO_A1_ac(2.80d-12, 300.0d0); {2019/05/10; Fisher2018; JAF} -MO2 + HO2 = MP + O2 : GCARR_abc(4.10d-13, 0.0d0, 750.0d0); +MO2 + HO2 = MP + O2 : GCARR_ac(4.10d-13, 750.0d0); MO2 + MO2 = MOH + CH2O + O2 : GC_TBRANCH_1_acac(9.50d-14, 390.0d0, 2.62d1, -1130.0d0); MO2 + MO2 = 2.000CH2O + 2.000HO2 : GC_TBRANCH_1_acac(9.50d-14, 390.0d0, 4.0d-2, 1130.0d0); MO2 + OH = 0.13MOH + 0.87CH2O + 1.74HO2 : 1.60d-10 ; {2021/09/22; Bates2021a; KHB,MSL} @@ -1135,7 +1135,7 @@ IDHNBOO + NO = 0.355MCRHNB + 0.546PROPNN + 0.071HAC + HO2 + NO2 + 0.383CH2O : GC_ALK(2.7d-12, 350.0d0, 1.851d0, 11.0d0, 1.0d0, 0.0d0); {2019/11/06; Bates2019; KHB} IDHNBOO + NO = IDN : GC_NIT(2.7d-12, 350.0d0, 1.851d0, 11.0d0, 1.0d0, 0.0d0); {2019/11/06; Bates2019; KHB} ISOP + NO3 = 0.465INO2B + 0.535INO2D + - LISOPNO3 : GCARR_ac(2.95d-12, -450.0d0); {2019/11/06; Bates2019; KHB} + LISOPNO3 : GCARR_ac(2.95d-12, -450.0d0); {2019/11/06; Bates2019; KHB} INO2B + HO2 = 0.473INPB + 0.048MACR + 0.479MVK + 0.527OH + 0.527CH2O + 0.527NO2 : GCARR_ac(2.47d-13, 1300.0d0); {2019/11/06; Bates2019; KHB} INO2D + HO2 = INPD : GCARR_ac(2.47d-13, 1300.0d0); {2019/11/06; Bates2019; KHB} @@ -1315,42 +1315,42 @@ NRO2 + HO2 = LNRO2H + HO2 : GCARR_ac(1.40d-12, 700.0d0); NRO2 + NO = LNRO2N + NO : GCARR_ac(2.60d-12, 350.0d0); {2013/08/12; Pye2010; HOTP} // // --- C2H2 & C2H4 chemistry (per KHB) -C2H4 + O3 = CH2O + CH2OO : GCARR_abc(1.20d-14, 0.0d0, -2630.0d0); {2021/09/22; Kwon2020; KHB,MSL; 2023/04/18; JPL 19-5; KHB} +C2H4 + O3 = CH2O + CH2OO : GCARR_ac(1.20d-14, -2630.0d0); {2021/09/22; Kwon2020; KHB,MSL; 2023/04/18; JPL 19-5; KHB} C2H4 + OH = ETOO : GCJPLPR_abab(1.10d-28, 3.5d+00, 8.4d-12, 1.75d0, 0.5d0); {2021/09/22; Kwon2020; KHB,MSL} C2H2 + OH = 0.636GLYX + 0.636OH + 0.364CO + 0.364HO2 + 0.364HCOOH : GCJPLPR_abab(5.50d-30, 0.0d0, 8.3d-13, -2.0d0, 0.5d0); {2021/09/22; Kwon2020; KHB,MSL} -ETOO + HO2 = ETHP : GCARR_abc(1.53d-13, 0.0d0, 1300.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETOO + HO2 = ETHP : GCARR_ac(1.53d-13, 1300.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETOO + NO = 0.995ETO + - 0.995NO2 + 0.005ETHN : GCARR_abc(2.7d-12, 0.0d+00, 360.0d0); {2021/09/22; Kwon2020; KHB,MSL} + 0.995NO2 + 0.005ETHN : GCARR_ac(2.7d-12, 360.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETOO + NO3 = ETO + NO2 : 2.3d-12; {2021/09/22; Kwon2020; KHB,MSL} ETOO + MO2 = 0.6ETO + 0.6HO2 + 0.8CH2O + 0.2MOH + 0.2ETHP + 0.2GLYC : 6.00d-13; {2021/09/22; Kwon2020; KHB,MSL} -ETO = HO2 + 2.000CH2O : GCARR_abc(9.5d+13, 0.0d0, -5988.0d0); {2021/09/22; Kwon2020; KHB,MSL} -ETO + O2 = GLYC + HO2 : GCARR_abc(2.5d-14, 0.0d0, -300.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETO = HO2 + 2.000CH2O : GCARR_ac(9.5d+13, -5988.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETO + O2 = GLYC + HO2 : GCARR_ac(2.5d-14, -300.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETHN + OH = GLYC + NO2 : 8.40d-13; {2021/09/22; Kwon2020; KHB,MSL} -ETHP + OH = ETOO : GCARR_abc(1.90d-12, 0.0d+00, 190.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETHP + OH = ETOO : GCARR_ac(1.90d-12, 190.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETHP + OH = OH + GLYC : 1.38d-11; {2021/09/22; Kwon2020; KHB,MSL} // // --- Aromatic Chemistry (per KHB) BENZ + OH = BRO2 + 0.54PHEN + 0.54HO2 + 0.46AROMRO2 + 0.18GLYX + - 0.2CO +0.55AROMP4 : GCARR_abc(2.3d-12, 0.0d0, -193.0d0); {2021/09/29; Bates2021b; KHB,MSL; 2022/07/01; fix C accounting; KHB} + 0.2CO +0.55AROMP4 : GCARR_ac(2.3d-12, -193.0d0); {2021/09/29; Bates2021b; KHB,MSL; 2022/07/01; fix C accounting; KHB} TOLU + OH = TRO2 + 0.19CSL + 0.19HO2 + 0.81AROMRO2 + 0.06BALD + 0.12GLYX + 0.12MGLY + 0.27CO + 0.04MVK + 0.3AROMP5 + - 0.68AROMP4 : GCARR_abc(1.8d-12, 0.0d0, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.68AROMP4 : GCARR_ac(1.8d-12, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} XYLE + OH = XRO2 + 0.15CSL + 0.15HO2 + 0.85AROMRO2 + 0.06BALD + 0.1GLYX + 0.2MGLY + 0.3CO + 0.04MVK + 0.56AROMP5 + 0.28AROMP4 + 0.45RCOOH : 1.7d-11; {2021/09/29; Bates2021b; KHB,MSL} AROMRO2 + HO2 = OH + HO2 : 2.91d-13 * EXP( 1300.0d0 / TEMP ) * 0.82d0; {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + NO = NO2 + HO2 : GCARR_abc(2.60d-12, 0.0d+00, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +AROMRO2 + NO = NO2 + HO2 : GCARR_ac(2.60d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} AROMRO2 + NO3 = NO2 + HO2 : 2.30d-12; {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + MO2 = CH2O + HO2 + HO2 : GCARR_abc(1.70d-14, 0.0d0, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + MCO3 = MO2 + HO2 + CO2 : GCARR_abc(4.20d-14, 0.0d0, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL; 2022/07/01; fix C accounting; KHB} +AROMRO2 + MO2 = CH2O + HO2 + HO2 : GCARR_ac(1.70d-14, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} +AROMRO2 + MCO3 = MO2 + HO2 + CO2 : GCARR_ac(4.20d-14, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL; 2022/07/01; fix C accounting; KHB} PHEN + OH = 0.06BENZO + 0.06GLYX + 0.18AROMP4 + 0.14AROMRO2 + - 0.8MCT + 0.8HO2 : GCARR_abc(4.70d-13, 0.0d0, 1220.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.8MCT + 0.8HO2 : GCARR_ac(4.70d-13, 1220.0d0); {2021/09/29; Bates2021b; KHB,MSL} PHEN + NO3 = 0.258NPHEN + 0.742HNO3 + 0.742BENZO : 3.8d-12; {2021/09/29; Bates2021b; KHB,MSL} CSL + OH = 0.727MCT + 0.727HO2 + @@ -1362,19 +1362,19 @@ MCT + OH = 0.3BENZO + 0.7AROMRO2 + MCT + O3 = GLYC + HO2 + OH + AROMP4 : 9.2d-18; {2021/09/29; Bates2021b; KHB,MSL} MCT + NO3 = 0.5NPHEN + 0.5HNO3 + 0.3BENZO + 0.2AROMRO2 + 0.3AROMP4 : 9.9d-11; {2021/09/29; Bates2021b; KHB,MSL} -BALD + OH = BZCO3 : GCARR_abc(5.90d-12, 0.0d0, 225.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BALD + OH = BZCO3 : GCARR_ac(5.90d-12, 225.0d0); {2021/09/29; Bates2021b; KHB,MSL} BALD + NO3 = BZCO3 + HNO3 : 2.4d-15; {2021/09/29; Bates2021b; KHB,MSL} BZCO3 + HO2 = 0.35CO2 + 0.2BENZO2 + - 0.15O3 + 0.2OH + 0.15BENZP + 0.65BZCO3H : GCARR_abc(1.10d-11, 0.0d0, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BZCO3 + NO = NO2 + CO2 + BENZO2 : GCARR_abc(7.50d-12, 0.0d0, 290.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.15O3 + 0.2OH + 0.15BENZP + 0.65BZCO3H : GCARR_ac(1.10d-11, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BZCO3 + NO = NO2 + CO2 + BENZO2 : GCARR_ac(7.50d-12, 290.0d0); {2021/09/29; Bates2021b; KHB,MSL} BZCO3 + NO2 = BZPAN : GC_PAN_acac(3.28d-28, -6.87d0, 1.125d-11, -1.105d0, 0.3d0); {2021/09/29; Bates2021b; KHB,MSL} BZCO3H + OH = BZCO3 : 4.66d-12; {2021/09/29; Bates2021b; KHB,MSL} BZPAN = BZCO3 + NO2 : GC_PAN_abab(1.10d-5, -10100.0d0, 1.90d+17, -14100.0d0, 0.3d0)*0.67d0; {2021/09/29; Bates2021b; KHB,MSL} BZPAN + OH = BENZP + CO2 + NO2 : 1.06d-12; {2021/09/29; Bates2021b; KHB,MSL} BENZO2 + NO2 = BENZO + NO3 : 7.00d-12; {2021/09/29; Bates2021b; KHB,MSL} -BENZO2 + NO = BENZO + NO2 : GCARR_abc(2.670d-12, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + NO = BENZO + NO2 : GCARR_ac(2.670d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} BENZO2 + NO3 = BENZO + NO2 : 2.30d-12; {2021/09/29; Bates2021b; KHB,MSL} -BENZO2 + HO2 = BENZP : GCARR_abc(2.24d-13, 0.0d0, 1300.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + HO2 = BENZP : GCARR_ac(2.24d-13, 1300.0d0); {2021/09/29; Bates2021b; KHB,MSL} BENZP + OH = BENZO2 : 3.60d-12; {2021/09/29; Bates2021b; KHB,MSL} BENZO + O3 = BENZO2 : 2.86d-13; {2021/09/29; Bates2021b; KHB,MSL} BENZO + NO2 = NPHEN : 2.08d-12; {2021/09/29; Bates2021b; KHB,MSL} @@ -1382,8 +1382,8 @@ NPHEN + OH = 0.5R4N1 + 0.9AROMP4 + 0.5NO2 +0.15CO : 3.47d-12; {2021/09/29; Bates2021b; KHB,MSL; 2023/04/18; Bates2023; KHB} NPHEN + NO3 = 0.5HNO3 + NO2 + 0.5R4N1 + 0.9AROMP4 + 0.15CO : 2.60d-12; {2021/09/29; Bates2021b; KHB,MSL; 2023/04/18; Bates2023; KHB} -BENZO2 + MO2 = BENZO + HO2 + CH2O : GCARR_abc(2.670d-13, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BZCO3 + MO2 = BENZO2 + CO2 + HO2 + CH2O : GCARR_abc(2.670d-12, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + MO2 = BENZO + HO2 + CH2O : GCARR_ac(2.670d-13, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BZCO3 + MO2 = BENZO2 + CO2 + HO2 + CH2O : GCARR_ac(2.670d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} AROMP4 + OH = 0.6GLYX + 0.26CO + 0.26HCOOH + 0.25OH + 0.33HO2 + 0.33RCO3 + 0.43RCOOH : 5.0d-11; {2021/09/29; Bates2021b; KHB,MSL; 2023/04/18; Bates2023; KHB} AROMP4 + O3 = 0.5HCOOH + 0.5CO + 0.6GLYX + @@ -1406,12 +1406,12 @@ AROMP5 = 0.2HO2 + 0.2R4O2 + // XRO2, TRO2, and BRO2 as products from the BENZ + OH, TOLU + OH, // and XYLE + OH reactions above, and not include the following reactions)" // -BRO2 + HO2 = HO2 + LBRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BRO2 + NO = NO + LBRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} -TRO2 + HO2 = HO2 + LTRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -TRO2 + NO = NO + LTRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} -XRO2 + HO2 = HO2 + LXRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -XRO2 + NO = NO + LXRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BRO2 + HO2 = HO2 + LBRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BRO2 + NO = NO + LBRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +TRO2 + HO2 = HO2 + LTRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +TRO2 + NO = NO + LTRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +XRO2 + HO2 = HO2 + LXRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +XRO2 + NO = NO + LXRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} MO2 + NO3 = NO2 + CH2O + HO2 : 1.20d-12; {2022/10/18: IUPAC ROO_19; KHB,BMY} FURA + OH = BUTDI : GCARR_ac(1.32d-11,334.0d0); {2023/02/07; Carter2022; TSC} // diff --git a/KPP/fullchem/CHANGELOG_fullchem.md b/KPP/fullchem/CHANGELOG_fullchem.md index 713d459a8..931d5c9bc 100644 --- a/KPP/fullchem/CHANGELOG_fullchem.md +++ b/KPP/fullchem/CHANGELOG_fullchem.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Updated rate coefficients and products in 63 reactions per JPL / IUPAC recommendations (JPL 19-5; Bates2023) - Consolidated product branches to remove 25 reactions (Bates2023 Table S4) +- Update rxns with zero Arrhenius `B` parameters to use function `GCARR_ac` instead of `GCARR_abc` ### Fixed - Fixed C and N balance in 63 reactions (Bates2023 Table S2) diff --git a/KPP/fullchem/fullchem.eqn b/KPP/fullchem/fullchem.eqn index e21d402bf..2ef5873f5 100644 --- a/KPP/fullchem/fullchem.eqn +++ b/KPP/fullchem/fullchem.eqn @@ -477,7 +477,7 @@ OH + CO = HO2 + CO2 : GCJPLPR_abab(6.9d-33,2.1d0,1.1d-12, OH + CH4 = MO2 + H2O : GCARR_ac(2.45d-12, -1775.0d0); MO2 + NO = CH2O + HO2 + NO2 : GC_RO2NO_B1_ac(2.80d-12, 300.0d0); {2019/05/10; Fisher2018; JAF} MO2 + NO = MENO3 : GC_RO2NO_A1_ac(2.80d-12, 300.0d0); {2019/05/10; Fisher2018; JAF} -MO2 + HO2 = MP + O2 : GCARR_abc(4.10d-13, 0.0d0, 750.0d0); +MO2 + HO2 = MP + O2 : GCARR_ac(4.10d-13, 750.0d0); MO2 + MO2 = MOH + CH2O + O2 : GC_TBRANCH_1_acac(9.50d-14, 390.0d0, 2.62d1, -1130.0d0); MO2 + MO2 = 2.000CH2O + 2.000HO2 : GC_TBRANCH_1_acac(9.50d-14, 390.0d0, 4.0d-2, 1130.0d0); MO2 + OH = 0.13MOH + 0.87CH2O + 1.74HO2 : 1.60d-10 ; {2021/09/22; Bates2021a; KHB,MSL} @@ -1133,7 +1133,7 @@ IDHNBOO + NO = 0.355MCRHNB + 0.546PROPNN + 0.071HAC + HO2 + NO2 + 0.383CH2O : GC_ALK(2.7d-12, 350.0d0, 1.851d0, 11.0d0, 1.0d0, 0.0d0); {2019/11/06; Bates2019; KHB} IDHNBOO + NO = IDN : GC_NIT(2.7d-12, 350.0d0, 1.851d0, 11.0d0, 1.0d0, 0.0d0); {2019/11/06; Bates2019; KHB} ISOP + NO3 = 0.465INO2B + 0.535INO2D + - LISOPNO3 : GCARR_ac(2.95d-12, -450.0d0); {2019/11/06; Bates2019; KHB} + LISOPNO3 : GCARR_ac(2.95d-12, -450.0d0); {2019/11/06; Bates2019; KHB} INO2B + HO2 = 0.473INPB + 0.048MACR + 0.479MVK + 0.527OH + 0.527CH2O + 0.527NO2 : GCARR_ac(2.47d-13, 1300.0d0); {2019/11/06; Bates2019; KHB} INO2D + HO2 = INPD : GCARR_ac(2.47d-13, 1300.0d0); {2019/11/06; Bates2019; KHB} @@ -1313,42 +1313,42 @@ NRO2 + HO2 = LNRO2H + HO2 : GCARR_ac(1.40d-12, 700.0d0); NRO2 + NO = LNRO2N + NO : GCARR_ac(2.60d-12, 350.0d0); {2013/08/12; Pye2010; HOTP} // // --- C2H2 & C2H4 chemistry (per KHB) -C2H4 + O3 = CH2O + CH2OO : GCARR_abc(1.20d-14, 0.0d0, -2630.0d0); {2021/09/22; Kwon2020; KHB,MSL; 2023/04/18; JPL 19-5; KHB} +C2H4 + O3 = CH2O + CH2OO : GCARR_ac(1.20d-14, -2630.0d0); {2021/09/22; Kwon2020; KHB,MSL; 2023/04/18; JPL 19-5; KHB} C2H4 + OH = ETOO : GCJPLPR_abab(1.10d-28, 3.5d+00, 8.4d-12, 1.75d0, 0.5d0); {2021/09/22; Kwon2020; KHB,MSL} C2H2 + OH = 0.636GLYX + 0.636OH + 0.364CO + 0.364HO2 + 0.364HCOOH : GCJPLPR_abab(5.50d-30, 0.0d0, 8.3d-13, -2.0d0, 0.5d0); {2021/09/22; Kwon2020; KHB,MSL} -ETOO + HO2 = ETHP : GCARR_abc(1.53d-13, 0.0d0, 1300.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETOO + HO2 = ETHP : GCARR_ac(1.53d-13, 1300.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETOO + NO = 0.995ETO + - 0.995NO2 + 0.005ETHN : GCARR_abc(2.7d-12, 0.0d+00, 360.0d0); {2021/09/22; Kwon2020; KHB,MSL} + 0.995NO2 + 0.005ETHN : GCARR_ac(2.7d-12, 360.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETOO + NO3 = ETO + NO2 : 2.3d-12; {2021/09/22; Kwon2020; KHB,MSL} ETOO + MO2 = 0.6ETO + 0.6HO2 + 0.8CH2O + 0.2MOH + 0.2ETHP + 0.2GLYC : 6.00d-13; {2021/09/22; Kwon2020; KHB,MSL} -ETO = HO2 + 2.000CH2O : GCARR_abc(9.5d+13, 0.0d0, -5988.0d0); {2021/09/22; Kwon2020; KHB,MSL} -ETO + O2 = GLYC + HO2 : GCARR_abc(2.5d-14, 0.0d0, -300.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETO = HO2 + 2.000CH2O : GCARR_ac(9.5d+13, -5988.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETO + O2 = GLYC + HO2 : GCARR_ac(2.5d-14, -300.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETHN + OH = GLYC + NO2 : 8.40d-13; {2021/09/22; Kwon2020; KHB,MSL} -ETHP + OH = ETOO : GCARR_abc(1.90d-12, 0.0d+00, 190.0d0); {2021/09/22; Kwon2020; KHB,MSL} +ETHP + OH = ETOO : GCARR_ac(1.90d-12, 190.0d0); {2021/09/22; Kwon2020; KHB,MSL} ETHP + OH = OH + GLYC : 1.38d-11; {2021/09/22; Kwon2020; KHB,MSL} // // --- Aromatic Chemistry (per KHB) BENZ + OH = BRO2 + 0.54PHEN + 0.54HO2 + 0.46AROMRO2 + 0.18GLYX + - 0.2CO +0.55AROMP4 : GCARR_abc(2.3d-12, 0.0d0, -193.0d0); {2021/09/29; Bates2021b; KHB,MSL; 2022/07/01; fix C accounting; KHB} + 0.2CO +0.55AROMP4 : GCARR_ac(2.3d-12, -193.0d0); {2021/09/29; Bates2021b; KHB,MSL; 2022/07/01; fix C accounting; KHB} TOLU + OH = TRO2 + 0.19CSL + 0.19HO2 + 0.81AROMRO2 + 0.06BALD + 0.12GLYX + 0.12MGLY + 0.27CO + 0.04MVK + 0.3AROMP5 + - 0.68AROMP4 : GCARR_abc(1.8d-12, 0.0d0, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.68AROMP4 : GCARR_ac(1.8d-12, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} XYLE + OH = XRO2 + 0.15CSL + 0.15HO2 + 0.85AROMRO2 + 0.06BALD + 0.1GLYX + 0.2MGLY + 0.3CO + 0.04MVK + 0.56AROMP5 + 0.28AROMP4 + 0.45RCOOH : 1.7d-11; {2021/09/29; Bates2021b; KHB,MSL} AROMRO2 + HO2 = OH + HO2 : 2.91d-13 * EXP( 1300.0d0 / TEMP ) * 0.82d0; {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + NO = NO2 + HO2 : GCARR_abc(2.60d-12, 0.0d+00, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +AROMRO2 + NO = NO2 + HO2 : GCARR_ac(2.60d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} AROMRO2 + NO3 = NO2 + HO2 : 2.30d-12; {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + MO2 = CH2O + HO2 + HO2 : GCARR_abc(1.70d-14, 0.0d0, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} -AROMRO2 + MCO3 = MO2 + HO2 + CO2 : GCARR_abc(4.20d-14, 0.0d0, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL; 2022/07/01; fix C accounting; KHB} +AROMRO2 + MO2 = CH2O + HO2 + HO2 : GCARR_ac(1.70d-14, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL} +AROMRO2 + MCO3 = MO2 + HO2 + CO2 : GCARR_ac(4.20d-14, 220.0d0); {2021/09/29; Bates2021b; KHB,MSL; 2022/07/01; fix C accounting; KHB} PHEN + OH = 0.06BENZO + 0.06GLYX + 0.18AROMP4 + 0.14AROMRO2 + - 0.8MCT + 0.8HO2 : GCARR_abc(4.70d-13, 0.0d0, 1220.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.8MCT + 0.8HO2 : GCARR_ac(4.70d-13, 1220.0d0); {2021/09/29; Bates2021b; KHB,MSL} PHEN + NO3 = 0.258NPHEN + 0.742HNO3 + 0.742BENZO : 3.8d-12; {2021/09/29; Bates2021b; KHB,MSL} CSL + OH = 0.727MCT + 0.727HO2 + @@ -1360,19 +1360,19 @@ MCT + OH = 0.3BENZO + 0.7AROMRO2 + MCT + O3 = GLYC + HO2 + OH + AROMP4 : 9.2d-18; {2021/09/29; Bates2021b; KHB,MSL} MCT + NO3 = 0.5NPHEN + 0.5HNO3 + 0.3BENZO + 0.2AROMRO2 + 0.3AROMP4 : 9.9d-11; {2021/09/29; Bates2021b; KHB,MSL} -BALD + OH = BZCO3 : GCARR_abc(5.90d-12, 0.0d0, 225.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BALD + OH = BZCO3 : GCARR_ac(5.90d-12, 225.0d0); {2021/09/29; Bates2021b; KHB,MSL} BALD + NO3 = BZCO3 + HNO3 : 2.4d-15; {2021/09/29; Bates2021b; KHB,MSL} BZCO3 + HO2 = 0.35CO2 + 0.2BENZO2 + - 0.15O3 + 0.2OH + 0.15BENZP + 0.65BZCO3H : GCARR_abc(1.10d-11, 0.0d0, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BZCO3 + NO = NO2 + CO2 + BENZO2 : GCARR_abc(7.50d-12, 0.0d0, 290.0d0); {2021/09/29; Bates2021b; KHB,MSL} + 0.15O3 + 0.2OH + 0.15BENZP + 0.65BZCO3H : GCARR_ac(1.10d-11, 340.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BZCO3 + NO = NO2 + CO2 + BENZO2 : GCARR_ac(7.50d-12, 290.0d0); {2021/09/29; Bates2021b; KHB,MSL} BZCO3 + NO2 = BZPAN : GC_PAN_acac(3.28d-28, -6.87d0, 1.125d-11, -1.105d0, 0.3d0); {2021/09/29; Bates2021b; KHB,MSL} BZCO3H + OH = BZCO3 : 4.66d-12; {2021/09/29; Bates2021b; KHB,MSL} BZPAN = BZCO3 + NO2 : GC_PAN_abab(1.10d-5, -10100.0d0, 1.90d+17, -14100.0d0, 0.3d0)*0.67d0; {2021/09/29; Bates2021b; KHB,MSL} BZPAN + OH = BENZP + CO2 + NO2 : 1.06d-12; {2021/09/29; Bates2021b; KHB,MSL} BENZO2 + NO2 = BENZO + NO3 : 7.00d-12; {2021/09/29; Bates2021b; KHB,MSL} -BENZO2 + NO = BENZO + NO2 : GCARR_abc(2.670d-12, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + NO = BENZO + NO2 : GCARR_ac(2.670d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} BENZO2 + NO3 = BENZO + NO2 : 2.30d-12; {2021/09/29; Bates2021b; KHB,MSL} -BENZO2 + HO2 = BENZP : GCARR_abc(2.24d-13, 0.0d0, 1300.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + HO2 = BENZP : GCARR_ac(2.24d-13, 1300.0d0); {2021/09/29; Bates2021b; KHB,MSL} BENZP + OH = BENZO2 : 3.60d-12; {2021/09/29; Bates2021b; KHB,MSL} BENZO + O3 = BENZO2 : 2.86d-13; {2021/09/29; Bates2021b; KHB,MSL} BENZO + NO2 = NPHEN : 2.08d-12; {2021/09/29; Bates2021b; KHB,MSL} @@ -1380,8 +1380,8 @@ NPHEN + OH = 0.5R4N1 + 0.9AROMP4 + 0.5NO2 +0.15CO : 3.47d-12; {2021/09/29; Bates2021b; KHB,MSL; 2023/04/18; Bates2023; KHB} NPHEN + NO3 = 0.5HNO3 + NO2 + 0.5R4N1 + 0.9AROMP4 + 0.15CO : 2.60d-12; {2021/09/29; Bates2021b; KHB,MSL; 2023/04/18; Bates2023; KHB} -BENZO2 + MO2 = BENZO + HO2 + CH2O : GCARR_abc(2.670d-13, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BZCO3 + MO2 = BENZO2 + CO2 + HO2 + CH2O : GCARR_abc(2.670d-12, 0.0d0, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BENZO2 + MO2 = BENZO + HO2 + CH2O : GCARR_ac(2.670d-13, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BZCO3 + MO2 = BENZO2 + CO2 + HO2 + CH2O : GCARR_ac(2.670d-12, 365.0d0); {2021/09/29; Bates2021b; KHB,MSL} AROMP4 + OH = 0.6GLYX + 0.26CO + 0.26HCOOH + 0.25OH + 0.33HO2 + 0.33RCO3 + 0.43RCOOH : 5.0d-11; {2021/09/29; Bates2021b; KHB,MSL; 2023/04/18; Bates2023; KHB} AROMP4 + O3 = 0.5HCOOH + 0.5CO + 0.6GLYX + @@ -1404,12 +1404,12 @@ AROMP5 = 0.2HO2 + 0.2R4O2 + // XRO2, TRO2, and BRO2 as products from the BENZ + OH, TOLU + OH, // and XYLE + OH reactions above, and not include the following reactions)" // -BRO2 + HO2 = HO2 + LBRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -BRO2 + NO = NO + LBRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} -TRO2 + HO2 = HO2 + LTRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -TRO2 + NO = NO + LTRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} -XRO2 + HO2 = HO2 + LXRO2H : GCARR_abc(1.40d-12, 0.0d0, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} -XRO2 + NO = NO + LXRO2N : GCARR_abc(2.60d-12, 0.0d0, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BRO2 + HO2 = HO2 + LBRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +BRO2 + NO = NO + LBRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +TRO2 + HO2 = HO2 + LTRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +TRO2 + NO = NO + LTRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} +XRO2 + HO2 = HO2 + LXRO2H : GCARR_ac(1.40d-12, 700.0d0); {2021/09/29; Bates2021b; KHB,MSL} +XRO2 + NO = NO + LXRO2N : GCARR_ac(2.60d-12, 350.0d0); {2021/09/29; Bates2021b; KHB,MSL} MO2 + NO3 = NO2 + CH2O + HO2 : 1.20d-12; {2022/10/18: IUPAC ROO_19; KHB,BMY} FURA + OH = BUTDI : GCARR_ac(1.32d-11,334.0d0); {2023/02/07; Carter2022; TSC} // diff --git a/KPP/fullchem/gckpp_Rates.F90 b/KPP/fullchem/gckpp_Rates.F90 index cab999442..4abd2cd68 100644 --- a/KPP/fullchem/gckpp_Rates.F90 +++ b/KPP/fullchem/gckpp_Rates.F90 @@ -457,7 +457,7 @@ SUBROUTINE Update_RCONST ( ) RCONST(25) = (GCARR_ac(2.45d-12,-1775.0d0)) RCONST(26) = (GC_RO2NO_B1_ac(2.80d-12,300.0d0)) RCONST(27) = (GC_RO2NO_A1_ac(2.80d-12,300.0d0)) - RCONST(28) = (GCARR_abc(4.10d-13,0.0d0,750.0d0)) + RCONST(28) = (GCARR_ac(4.10d-13,750.0d0)) RCONST(29) = (GC_TBRANCH_1_acac(9.50d-14,390.0d0,2.62d1,-1130.0d0)) RCONST(30) = (GC_TBRANCH_1_acac(9.50d-14,390.0d0,4.0d-2,1130.0d0)) RCONST(31) = (1.60d-10) @@ -1008,64 +1008,64 @@ SUBROUTINE Update_RCONST ( ) RCONST(574) = (GCARR_ac(1.56d-11,117.0d0)) RCONST(575) = (GCARR_ac(1.40d-12,700.0d0)) RCONST(576) = (GCARR_ac(2.60d-12,350.0d0)) - RCONST(577) = (GCARR_abc(1.20d-14,0.0d0,-2630.0d0)) + RCONST(577) = (GCARR_ac(1.20d-14,-2630.0d0)) RCONST(578) = (GCJPLPR_abab(1.10d-28,3.5d+00,8.4d-12,1.75d0,0.5d0)) RCONST(579) = (GCJPLPR_abab(5.50d-30,0.0d0,8.3d-13,-2.0d0,0.5d0)) - RCONST(580) = (GCARR_abc(1.53d-13,0.0d0,1300.0d0)) - RCONST(581) = (GCARR_abc(2.7d-12,0.0d+00,360.0d0)) + RCONST(580) = (GCARR_ac(1.53d-13,1300.0d0)) + RCONST(581) = (GCARR_ac(2.7d-12,360.0d0)) RCONST(582) = (2.3d-12) RCONST(583) = (6.00d-13) - RCONST(584) = (GCARR_abc(9.5d+13,0.0d0,-5988.0d0)) - RCONST(585) = (GCARR_abc(2.5d-14,0.0d0,-300.0d0)) + RCONST(584) = (GCARR_ac(9.5d+13,-5988.0d0)) + RCONST(585) = (GCARR_ac(2.5d-14,-300.0d0)) RCONST(586) = (8.40d-13) - RCONST(587) = (GCARR_abc(1.90d-12,0.0d+00,190.0d0)) + RCONST(587) = (GCARR_ac(1.90d-12,190.0d0)) RCONST(588) = (1.38d-11) - RCONST(589) = (GCARR_abc(2.3d-12,0.0d0,-193.0d0)) - RCONST(590) = (GCARR_abc(1.8d-12,0.0d0,340.0d0)) + RCONST(589) = (GCARR_ac(2.3d-12,-193.0d0)) + RCONST(590) = (GCARR_ac(1.8d-12,340.0d0)) RCONST(591) = (1.7d-11) RCONST(592) = (2.91d-13*EXP(1300.0d0/TEMP)*0.82d0) - RCONST(593) = (GCARR_abc(2.60d-12,0.0d+00,365.0d0)) + RCONST(593) = (GCARR_ac(2.60d-12,365.0d0)) RCONST(594) = (2.30d-12) - RCONST(595) = (GCARR_abc(1.70d-14,0.0d0,220.0d0)) - RCONST(596) = (GCARR_abc(4.20d-14,0.0d0,220.0d0)) - RCONST(597) = (GCARR_abc(4.70d-13,0.0d0,1220.0d0)) + RCONST(595) = (GCARR_ac(1.70d-14,220.0d0)) + RCONST(596) = (GCARR_ac(4.20d-14,220.0d0)) + RCONST(597) = (GCARR_ac(4.70d-13,1220.0d0)) RCONST(598) = (3.8d-12) RCONST(599) = (4.7d-11) RCONST(600) = (1.4d-11) RCONST(601) = (2.0d-11) RCONST(602) = (9.2d-18) RCONST(603) = (9.9d-11) - RCONST(604) = (GCARR_abc(5.90d-12,0.0d0,225.0d0)) + RCONST(604) = (GCARR_ac(5.90d-12,225.0d0)) RCONST(605) = (2.4d-15) - RCONST(606) = (GCARR_abc(1.10d-11,0.0d0,340.0d0)) - RCONST(607) = (GCARR_abc(7.50d-12,0.0d0,290.0d0)) + RCONST(606) = (GCARR_ac(1.10d-11,340.0d0)) + RCONST(607) = (GCARR_ac(7.50d-12,290.0d0)) RCONST(608) = (GC_PAN_acac(3.28d-28,-6.87d0,1.125d-11,-1.105d0,0.3d0)) RCONST(609) = (4.66d-12) RCONST(610) = (GC_PAN_abab(1.10d-5,-10100.0d0,1.90d+17,-14100.0d0,0.3d0)*0.67d0) RCONST(611) = (1.06d-12) RCONST(612) = (7.00d-12) - RCONST(613) = (GCARR_abc(2.670d-12,0.0d0,365.0d0)) + RCONST(613) = (GCARR_ac(2.670d-12,365.0d0)) RCONST(614) = (2.30d-12) - RCONST(615) = (GCARR_abc(2.24d-13,0.0d0,1300.0d0)) + RCONST(615) = (GCARR_ac(2.24d-13,1300.0d0)) RCONST(616) = (3.60d-12) RCONST(617) = (2.86d-13) RCONST(618) = (2.08d-12) RCONST(619) = (3.47d-12) RCONST(620) = (2.60d-12) - RCONST(621) = (GCARR_abc(2.670d-13,0.0d0,365.0d0)) - RCONST(622) = (GCARR_abc(2.670d-12,0.0d0,365.0d0)) + RCONST(621) = (GCARR_ac(2.670d-13,365.0d0)) + RCONST(622) = (GCARR_ac(2.670d-12,365.0d0)) RCONST(623) = (5.0d-11) RCONST(624) = (8.0d-16) RCONST(625) = (1.5d-3) RCONST(626) = (5.0d-11) RCONST(627) = (8.0d-16) RCONST(628) = (1.5d-3) - RCONST(629) = (GCARR_abc(1.40d-12,0.0d0,700.0d0)) - RCONST(630) = (GCARR_abc(2.60d-12,0.0d0,350.0d0)) - RCONST(631) = (GCARR_abc(1.40d-12,0.0d0,700.0d0)) - RCONST(632) = (GCARR_abc(2.60d-12,0.0d0,350.0d0)) - RCONST(633) = (GCARR_abc(1.40d-12,0.0d0,700.0d0)) - RCONST(634) = (GCARR_abc(2.60d-12,0.0d0,350.0d0)) + RCONST(629) = (GCARR_ac(1.40d-12,700.0d0)) + RCONST(630) = (GCARR_ac(2.60d-12,350.0d0)) + RCONST(631) = (GCARR_ac(1.40d-12,700.0d0)) + RCONST(632) = (GCARR_ac(2.60d-12,350.0d0)) + RCONST(633) = (GCARR_ac(1.40d-12,700.0d0)) + RCONST(634) = (GCARR_ac(2.60d-12,350.0d0)) RCONST(635) = (1.20d-12) RCONST(636) = (GCARR_ac(1.32d-11,334.0d0)) RCONST(637) = (HO2uptk1stOrd(State_Het)) From f713bcb44239c6a9432e86b7edea294e9f852efd Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 22 Nov 2023 10:36:33 -0500 Subject: [PATCH 012/331] Minor text updates in KPP/fullchem/CHANGELOG_fullchem.md KPP/fullchem/CHANGELOG_fullchem.md - Changed [Unreleased 14.3.0] to [Unreleased] - Removed the IONO2 recycline comment at lines 41-42 Signed-off-by: Bob Yantosca --- KPP/fullchem/CHANGELOG_fullchem.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/KPP/fullchem/CHANGELOG_fullchem.md b/KPP/fullchem/CHANGELOG_fullchem.md index 23f128905..cc5cce942 100644 --- a/KPP/fullchem/CHANGELOG_fullchem.md +++ b/KPP/fullchem/CHANGELOG_fullchem.md @@ -4,7 +4,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), # Mechanism history -## [Unreleased 14.3.0] - TBD +## [Unreleased] - TBD ### Changed - Updated rate coefficients and products in 63 reactions per JPL / IUPAC recommendations (JPL 19-5; Bates2023) - Consolidated product branches to remove 25 reactions (Bates2023 Table S4) @@ -39,9 +39,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Restored sink reactions for HOI, IONO, IONO2 - Use `GCARR_ac` for rxns where the Arrhenius `B` parameter is zero -### Removed - - IONO2 recycling - ## [14.1.0] - Feb 2023 ### Added - MO2 + NO3 reaction (IUPAC ROO_19) From 533aad971e36567c75d138d80d7acf16a2a443ab Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 30 Nov 2023 16:23:41 -0500 Subject: [PATCH 013/331] Add fields for species-specific unit conversion in derived types Headers/species_mod.F90 - Add SpcConc%Units and SpcConc%Previous_Units to store the integer flags for the current and previous species units. - Add comments Headers/state_chm_mod.F90 - Add State_Chm%Map_All(:) mapping vector, which returns all species indices. This is needed for species-specific unit conversions. - Set State_Chm%Species(:)%Units = 0 at init Set State_Chm%Species(:)%Previous_Units = 0 at init CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- Headers/species_mod.F90 | 6 ++++-- Headers/state_chm_mod.F90 | 30 ++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/Headers/species_mod.F90 b/Headers/species_mod.F90 index 1a1461b0a..ebcbfb2fe 100644 --- a/Headers/species_mod.F90 +++ b/Headers/species_mod.F90 @@ -67,10 +67,12 @@ MODULE Species_Mod !========================================================================= TYPE, PUBLIC :: SpcConc #if defined( MODEL_GCHPCTM ) - REAL(ESMF_KIND_R8), POINTER :: Conc(:,:,:) + REAL(ESMF_KIND_R8), POINTER :: Conc(:,:,:) ! Concentration array #else - REAL(fp), POINTER :: Conc(:,:,:) + REAL(fp), POINTER :: Conc(:,:,:) ! Concentration array #endif + INTEGER :: Units ! Species units + INTEGER :: Previous_Units ! Previous species units END TYPE SpcConc !========================================================================= diff --git a/Headers/state_chm_mod.F90 b/Headers/state_chm_mod.F90 index df1a117a9..9be669742 100644 --- a/Headers/state_chm_mod.F90 +++ b/Headers/state_chm_mod.F90 @@ -91,6 +91,7 @@ MODULE State_Chm_Mod !----------------------------------------------------------------------- INTEGER, POINTER :: Map_Advect (: ) ! Advected species IDs INTEGER, POINTER :: Map_Aero (: ) ! Aerosol species IDs + INTEGER, POINTER :: Map_All (: ) ! All species IDs INTEGER, POINTER :: Map_DryAlt (: ) ! Dryalt species IDs INTEGER, POINTER :: Map_DryDep (: ) ! Drydep species IDs INTEGER, POINTER :: Map_GasSpc (: ) ! Gas species IDs @@ -468,6 +469,7 @@ SUBROUTINE Zero_State_Chm( State_Chm, RC ) ! Mapping vectors State_Chm%Map_Advect => NULL() State_Chm%Map_Aero => NULL() + State_Chm%Map_All => NULL() State_Chm%Map_DryAlt => NULL() State_Chm%Map_DryDep => NULL() State_Chm%Map_GasSpc => NULL() @@ -926,8 +928,9 @@ SUBROUTINE Init_State_Chm( Input_Opt, State_Chm, State_Grid, RC ) ALLOCATE( State_Chm%Species( State_Chm%nSpecies ), STAT=RC ) DO N = 1, State_Chm%nSpecies #if defined ( MODEL_GCHPCTM ) - ! Species concentration array pointers will be set to point to MAPL internal state - ! every timestep when intstate level values are flipped to match GEOS-Chem standard + ! Species concentration array pointers will be set to point + ! to MAPL internal state every timestep when internal state level + ! values are flipped to match GEOS-Chem standard State_Chm%Species(N)%Conc => NULL() #else ALLOCATE( State_Chm%Species(N)%Conc( State_Grid%NX, & @@ -935,6 +938,8 @@ SUBROUTINE Init_State_Chm( Input_Opt, State_Chm, State_Grid, RC ) State_Grid%NZ ), STAT=RC ) State_Chm%Species(N)%Conc = 0.0_f8 #endif + State_Chm%Species(N)%Units = 0 + State_Chm%Species(N)%Previous_Units = 0 ENDDO #ifdef ADJOINT @@ -2444,6 +2449,13 @@ SUBROUTINE Init_Mapping_Vectors( Input_Opt, State_Chm, RC ) State_Chm%Map_Aero = 0 ENDIF + IF ( State_Chm%nSpecies > 0 ) THEN + ALLOCATE( State_Chm%Map_All( State_Chm%nSpecies ), STAT=RC ) + CALL GC_CheckVar( 'State_Chm%Map_All', 0, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Chm%Map_All = 0 + ENDIF + IF ( State_Chm%nDryAlt > 0 ) THEN ALLOCATE( State_Chm%Map_DryAlt( State_Chm%nDryAlt ), STAT=RC ) CALL GC_CheckVar( 'State_Chm%Map_DryAlt', 0, RC ) @@ -2577,12 +2589,15 @@ SUBROUTINE Init_Mapping_Vectors( Input_Opt, State_Chm, RC ) ! GEOS-Chem Species Database entry for species # N ThisSpc => State_Chm%SpcData(N)%Info + !--------------------------------------------------------------------- + ! Set up the mapping for ALL SPECIES + !--------------------------------------------------------------------- + State_Chm%Map_All(N) = ThisSpc%ModelID + !--------------------------------------------------------------------- ! Set up the mapping for ADVECTED SPECIES !--------------------------------------------------------------------- IF ( ThisSpc%Is_Advected ) THEN - - ! Update the mapping vector of advected species C = ThisSpc%AdvectId State_Chm%Map_Advect(C) = ThisSpc%ModelId ENDIF @@ -3056,6 +3071,13 @@ SUBROUTINE Cleanup_State_Chm( State_Chm, RC ) State_Chm%Map_Aero => NULL() ENDIF + IF ( ASSOCIATED( State_Chm%Map_All ) ) THEN + DEALLOCATE( State_Chm%Map_All, STAT=RC ) + CALL GC_CheckVar( 'State_Chm%Map_All', 2, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Chm%Map_All => NULL() + ENDIF + IF ( ASSOCIATED( State_Chm%Map_DryDep ) ) THEN DEALLOCATE( State_Chm%Map_DryDep, STAT=RC ) CALL GC_CheckVar( 'State_Chm%Map_Drydep', 2, RC ) From 075d6ed4669b2050ee05582b5723139af56a53f6 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 30 Nov 2023 17:02:23 -0500 Subject: [PATCH 014/331] Update GeosUtil/unitconv_mod.F90 for species-specific unit conversion GeosUtil/unitconv_mod.F90 - Added routine Check_Input_Units - In each unit conversion routine: - Accepts a mapping array as an argument. This will allow the calling routine to pass one of the State_Chm%Map_* vectors, which specifies the ModelId's of the species for which unit conversions will be done. - Removed references to State_Chm%Spc_Units. - Added new loop index S. - N (the modelID) is now obtained with N = mapping(S) - Update units metadata in State_Chm%Species(N)%Units and State_Chm%Species(N)%Previous_Units - Pull computations outside of (I,J,L) loops where expedient and store the results in !$OMP PRIVATE loop variables for use within (I,J,L) loops. - Store conversion factors in an !$OMP PRIVATE loop variable, both for clarity and to avoid repeated computations - Now place adjoint code in IF/THEN blocks (instead of using a single IF statement with continuation characters. - Change e.g. 1e-3fp to 1.0e-3_fp, etc. - Updated comments CHANGELOG.md - Updated accordingly --- CHANGELOG.md | 6 +- GeosUtil/unitconv_mod.F90 | 1544 +++++++++++++++++++++++-------------- 2 files changed, 962 insertions(+), 588 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa73557eb..80cb96795 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] - TBD +### Added +- Added`SpcConc%Units` and `SpcConc%Previous_Units` for species-specific unit conversion + ### Changed - Now read the Hg restart file from `ExtData/GEOSCHEM_RESTARTS/v2023-12` @@ -33,7 +36,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Move OH perturbation scale factor to outside EMISSIONS logical bracket in HEMCO_Config.rc files for CH4 and carbon simulations ### Removed -- Remove definition of METDIR from primary HEMCO_Config.rc files to ensure use of the definition in the HEMCO_Config.rc.*_metfields files +- Remove definition of METDIR from primary `HEMCO_Config.rc` files to ensure use of the definition in the `HEMCO_Config.rc.*_metfields` files +- Removed `State_Chm%Spc_Units` ## [14.2.2] - 2023-10-23 ### Changed diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index 0bde74218..b55f94a8e 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -69,6 +69,8 @@ MODULE UnitConv_Mod ! ! !PRIVATE MEMBER FUNCTIONS: ! + PRIVATE :: Check_Input_Units + !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! KG/KG DRY <-> V/V DRY !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -148,8 +150,8 @@ MODULE UnitConv_Mod !\\ ! !INTERFACE: ! - SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, State_Met, & - outUnit, RC, origUnit ) + SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & + State_Met, outUnit, mapping, RC ) ! ! !USES: ! @@ -160,7 +162,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, State_Met, & TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid state object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - INTEGER, INTENT(IN) :: outUnit ! Desired output unit + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -176,11 +178,11 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, State_Met, & ! back to the original units in a second call to Convert_Spc_Units. ! For example: ! -! CALL Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, State_Met, & -! 'kg/kg dry', RC, origUnit=origUnit ) +! CALL Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & +! State_Met, unit, mapping, RC ) ! ...computation... -! CALL Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, State_Met, & -! origUnit, RC ) +! CALL Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & +! State_Met, mapping, RC ) ! ! !REVISION HISTORY: ! 14 Apr 2016 - C. Keller - Initial version @@ -206,7 +208,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, State_Met, & ENDIF ! Initialize - RC = GC_SUCCESS + RC = GC_SUCCESS inUnit = State_Chm%Spc_Units isAdjoint = .FALSE. thisLoc = ' -> at Convert_Spc_Units (in GeosUtil/unitconv_mod.F90)' @@ -253,26 +255,33 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, State_Met, & SELECT CASE ( outUnit ) CASE ( MOLES_SPECIES_PER_MOLES_DRY_AIR ) - CALL ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, & - isAdjoint, RC ) + CALL ConvertSpc_KgKgDry_to_VVDry( & + State_Chm, State_Grid, mapping, & + isAdjoint, RC ) + CASE ( KG_SPECIES_PER_KG_TOTAL_AIR ) - CALL ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) + CALL ConvertSpc_KgKgDry_to_KgKgTotal( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CASE ( KG_SPECIES ) - CALL ConvertSpc_KgKgDry_to_Kg( State_Chm, State_Grid, & - State_Met, isAdjoint, & - RC ) + CALL ConvertSpc_KgKgDry_to_Kg( & + State_Chm, State_Grid, State_Met, & + mappingm isAdjoint, RC ) + CASE ( KG_SPECIES_PER_M2 ) - CALL ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, & - State_Met, isAdjoint, & - RC ) + CALL ConvertSpc_KgKgDry_to_Kgm2( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CASE ( MOLECULES_SPECIES_PER_CM3 ) - CALL ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, & - State_Met, isAdjoint, & - RC ) + CALL ConvertSpc_KgKgDry_to_MND( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) + END SELECT !================================================================ @@ -283,22 +292,26 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, State_Met, & SELECT CASE ( outUnit ) CASE ( KG_SPECIES_PER_KG_DRY_AIR ) - CALL ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) + CALL ConvertSpc_KgKgTotal_to_KgKgDry( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CASE ( KG_SPECIES ) - CALL ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) - CALL ConvertSpc_KgKgDry_to_Kg( State_Chm, State_Grid, & - State_Met, isAdjoint, RC ) + CALL ConvertSpc_KgKgTotal_to_KgKgDry( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CALL ConvertSpc_KgKgDry_to_Kg( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CASE ( MOLECULES_SPECIES_PER_CM3 ) - CALL ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) - CALL ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, & - State_Met, isAdjoint, & - RC ) + CALL ConvertSpc_KgKgTotal_to_KgKgDry( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CALL ConvertSpc_KgKgDry_to_MND( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) END SELECT @@ -307,75 +320,90 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, State_Met, & ! Convert from v/v dry !==================================================================== CASE ( MOLES_SPECIES_PER_MOLES_DRY_AIR ) + SELECT CASE ( outUnit ) CASE ( KG_SPECIES_PER_KG_DRY_AIR ) - CALL ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, & - isAdjoint, RC ) + CALL ConvertSpc_VVDry_to_KgKgDry( & + State_Chm, State_Grid, & + mapping, isAdjoint, RC ) CASE ( KG_SPECIES ) - CALL ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, & - State_Met, isAdjoint, RC ) + CALL ConvertSpc_VVDry_to_Kg( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) CASE ( KG_SPECIES_PER_M2 ) - CALL ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, & - isAdjoint, RC ) - CALL ConvertSpc_KgKgDry_to_Kgm2 ( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) + CALL ConvertSpc_VVDry_to_KgKgDry( & + State_Chm, State_Grid, & + mapping, isAdjoint, RC ) + CALL ConvertSpc_KgKgDry_to_Kgm2( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) + END SELECT !==================================================================== ! Convert from kg !==================================================================== CASE ( KG_SPECIES ) + SELECT CASE ( outUnit ) - CASE ( KG_SPECIES_PER_KG_DRY_AIR ) - CALL ConvertSpc_Kg_to_KgKgDry( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) + + CASE ( KG_SPECIES_PER_KG_DRY_AIR ) + CALL ConvertSpc_Kg_to_KgKgDry( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) CASE ( KG_SPECIES_PER_KG_TOTAL_AIR ) - CALL ConvertSpc_Kg_to_KgKgDry( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) - CALL ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) + CALL ConvertSpc_Kg_to_KgKgDry( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CALL ConvertSpc_KgKgDry_to_KgKgTotal( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) CASE ( MOLES_SPECIES_PER_MOLES_DRY_AIR ) - CALL ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) + CALL ConvertSpc_Kg_to_VVDry( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) CASE ( MOLECULES_SPECIES_PER_CM3 ) - CALL ConvertSpc_Kg_to_MND( State_Chm, State_Grid, & - State_Met, isAdjoint, RC ) + CALL ConvertSpc_Kg_to_MND( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) + END SELECT !==================================================================== ! Convert from kg/m2 !==================================================================== CASE ( KG_SPECIES_PER_M2 ) + SELECT CASE ( outUnit ) CASE( KG_SPECIES_PER_KG_DRY_AIR ) - CALL ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) + CALL ConvertSpc_Kgm2_to_KgKgDry( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) CASE ( MOLES_SPECIES_PER_MOLES_DRY_AIR ) - CALL ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) - CALL ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, & - isAdjoint, RC ) + CALL ConvertSpc_Kgm2_to_KgKgDry( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CALL ConvertSpc_KgKgDry_to_VVDry( & + State_Chm, State_Grid, & + mapping, isAdjoint, RC ) + CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) + END SELECT !==================================================================== @@ -386,24 +414,26 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, State_Met, & SELECT CASE ( outUnit ) CASE ( KG_SPECIES ) - CALL ConvertSpc_MND_to_Kg( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) + CALL ConvertSpc_MND_to_Kg( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) CASE ( KG_SPECIES_PER_KG_DRY_AIR ) - CALL ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) + CALL ConvertSpc_MND_to_KgKgDry( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) CASE ( KG_SPECIES_PER_KG_TOTAL_AIR ) - CALL ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) - CALL ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & - State_Met, & - isAdjoint, RC ) + CALL ConvertSpc_MND_to_KgKgDry( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CALL ConvertSpc_KgKgDry_to_KgKgTotal( & + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) + CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) + END SELECT ! Error if input units not found @@ -488,7 +518,10 @@ SUBROUTINE Print_Global_Species_Kg( I, J, L, & RC = GC_SUCCESS errMsg = '' errLoc = & - ' -> at Print_Global_Species_Kg (in module GeosUtil/unitconv_mod.F90)' + ' -> at Print_Global_Species_Kg (in GeosUtil/unitconv_mod.F90)' + + ! Get species index + N = Ind_(spc) ! Convert species conc units to kg CALL Convert_Spc_Units( & @@ -496,6 +529,7 @@ SUBROUTINE Print_Global_Species_Kg( I, J, L, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & + mapping = (/ N /), & outUnit = KG_SPECIES, & origUnit = origUnit, & RC = RC ) @@ -513,9 +547,6 @@ SUBROUTINE Print_Global_Species_Kg( I, J, L, & ENDIF 100 FORMAT( /, '%%%%% PRINT_GLOBAL_SPECIES_KG at ', a ) - ! Get species index - N = Ind_(spc) - ! Compute global sum SpcTotal = SUM( State_Chm%Species(N)%Conc(:,:,:) ) @@ -541,6 +572,7 @@ SUBROUTINE Print_Global_Species_Kg( I, J, L, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & + mapping = (/ N /), & outUnit = origUnit, & RC = RC ) @@ -567,12 +599,14 @@ END SUBROUTINE Print_Global_Species_Kg !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, isAdjoint, RC ) + SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, & + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -592,8 +626,9 @@ SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, isAdjoint, RC ) ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N - REAL(fp) :: MW_g, MwRatio + INTEGER :: I, J + INTEGER :: L, N, S + REAL(fp) :: MW_g, MW_ratio ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -602,16 +637,17 @@ SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, isAdjoint, RC ) ! ConvertSpc_KgKgDry_to_VVDry begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS - - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - thisLoc = 'Routine ConvertSpc_KgKgDry_to_VVDry in unitconv_mod.F90' + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_KgKgDry_to_VVDry (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + KG_SPECIES_PER_KG_DRY_AIR, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -641,37 +677,46 @@ SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, isAdjoint, RC ) ! !======================================================================== - ! Loop over all species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N, MW_g, MwRatio ) - DO N = 1, State_Chm%nSpecies + ! Loop over species + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S, MW_g, MW_ratio ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) ! Molecular weight for the species [g] MW_g = State_Chm%SpcData(N)%Info%MW_g ! Compute the ratio (MW air / MW species) outside of the IJL loop - MwRatio = ( AIRMW / MW_g ) + MW_ratio = ( AIRMW / MW_g ) ! Loop over grid boxes and do unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * MwRatio + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * MW_ratio + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) * MwRatio + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * MW_ratio + ENDIF #endif ENDDO ENDDO ENDDO + + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = MOLES_SPECIES_PER_MOLES_DRY_AIR + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = MOLES_SPECIES_PER_MOLES_DRY_AIR - END SUBROUTINE ConvertSpc_KgKgDry_to_VVDry !EOC !------------------------------------------------------------------------------ @@ -688,12 +733,14 @@ END SUBROUTINE ConvertSpc_KgKgDry_to_VVDry !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, isAdjoint, RC ) + SUBROUTINE ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, & + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -712,24 +759,28 @@ SUBROUTINE ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, isAdjoint, RC ) ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N - REAL(fp) :: MW_g + ! Scalars + INTEGER :: I, J, L, N, S + REAL(fp) :: MW_g, MW_ratio + + ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_VVDry_to_KgKgDry begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS - - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= MOLES_SPECIES_PER_MOLES_DRY_AIR ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR(State_Chm%Spc_Units) ) - thisLoc = 'Routine ConvertSpc_VVDry_to_KgKgDry in unitconv_mod.F90' + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_VVDry_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + MOLES_SPECIES_PER_MOLES_DRY_AIR, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -760,35 +811,45 @@ SUBROUTINE ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, isAdjoint, RC ) !======================================================================== ! Loop over all species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N, MW_g ) - DO N = 1, State_Chm%nSpecies + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S, MW_g, MW_ratio ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) ! Molecular weight for the species [g] MW_g = State_Chm%SpcData(N)%Info%MW_g + ! Compute the ratio (MW air / MW species) outside of the IJL loop + MW_ratio = ( AIRMW / MW_g ) + ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / ( AIRMW / MW_G ) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) / MW_ratio + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - / ( AIRMW / MW_G ) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) / MW_ratio + ENDIF #endif ENDDO ENDDO ENDDO + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = KG_SPECIES_PER_KG_DRY_AIR - END SUBROUTINE ConvertSpc_VVDry_to_KgKgDry !EOC !------------------------------------------------------------------------------ @@ -805,14 +866,16 @@ END SUBROUTINE ConvertSpc_VVDry_to_KgKgDry !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & - State_Met, isAdjoint, RC ) + SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & + State_Met, mapping, & + isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology State object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -831,23 +894,28 @@ SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N + ! Scalars + INTEGER :: I, J, L, N, S + REAL(fp) :: convFac + + ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_KgKgDry_to_KgKgTotal begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS - - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR(State_Chm%Spc_Units) ) - thisLoc = 'Routine ConvertSpc_KgKgDry_to_KgKgTotal in unitconv_mod.F90' + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_KgKgDry_to_KgKgTotal (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + KG_SPECIES_PER_KG_DRY_AIR, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -859,32 +927,41 @@ SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & !======================================================================== ! Loop over all species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N ) - DO N = 1, State_Chm%nSpecies + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S, convFac ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) ! Loop over grid boxes and do unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - * ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) + + convFac = ( 1.0_fp - ( State_Met%SPHU(I,J,L) * 1.0e-3_fp ) ) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * convFac + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - * ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * convFac + ENDIF #endif + ENDDO ENDDO ENDDO + + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_TOTAL_AIR ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = KG_SPECIES_PER_KG_TOTAL_AIR - END SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal !EOC !------------------------------------------------------------------------------ @@ -901,14 +978,16 @@ END SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & - State_Met, isAdjoint, RC ) + SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & + State_Met, mapping, & + isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology State object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -927,23 +1006,28 @@ SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N + ! Scalars + INTEGER :: I, J, L, N, S + REAL(fp) :: convFac + + ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_KgKgTotal_to_KgKgDry begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS - - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_TOTAL_AIR ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR(State_Chm%Spc_Units) ) - thisLoc = 'Routine ConvertSpc_KgKgTotal_to_KgKgDry in unitconv_mod.F90' + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_KgKgTotal_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + KG_SPECIES_PER_KG_TOTAL_AIR, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -952,37 +1036,44 @@ SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & ! ! The conversion is as follows: ! - ! !======================================================================== ! Loop over all species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N ) - DO N = 1, State_Chm%nSpecies + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S, convFac ) + DO S = 1, SIZE( mapping ) - ! Loop over grid boxes and do the unit conversion + ! Get the modelId from the mapping array + N = mapping(S) + + ! Loop over grid boxes and convert units DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - / ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) + + convFac = ( 1.0_fp - ( State_Met%SPHU(I,J,L) * 1.0e-3_fp ) ) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) / convFac + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - / ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) / convFac + ENDIF #endif ENDDO ENDDO ENDDO + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = KG_SPECIES_PER_KG_DRY_AIR - END SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry !EOC !------------------------------------------------------------------------------ @@ -999,14 +1090,15 @@ END SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, & - State_Met, isAdjoint, RC ) + SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, State_Met, & + mapping isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object + TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1014,7 +1106,7 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, & ! ! !OUTPUT PARAMETERS: ! - INTEGER, INTENT(OUT) :: RC ! Success or failure? + INTEGER, INTENT(OUT) :: RC ! Success or failure? ! ! !REVISION HISTORY: ! 21 Jul 2016 - E. Lundgren - Initial version @@ -1025,23 +1117,28 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N + ! Scalars + INTEGER :: I, J, L, N, S + REAL(fp) :: convFac + + ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_KgKgDry_to_Kgm2 begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS - - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - thisLoc = 'Routine ConvertSpc_KgKgDry_to_Kgm2 in unitconv_mod.F90' + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_KgKgDry_to_Kgm2 (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + KG_SPECIES_PER_KG_DRY_AIR, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -1064,31 +1161,41 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, & ! kg dry air / kg total air = 1 - specific humidity ! !======================================================================== - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N ) - DO N = 1, State_Chm%nSpecies - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - * ( g0_100 * State_Met%DELP_DRY(I,J,L) ) + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S, convFac ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) + + ! Loop over grid boxes and convert units + DO L = 1, State_Grid%NZ + DO J = 1, State_Grid%NY + DO I = 1, State_Grid%NX + + convFac = ( g0_100 * State_Met%DELP_DRY(I,J,L) ) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * convFac + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - * ( g0_100 & - * State_Met%DELP_DRY(I,J,L) ) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * convFac + ENDIF #endif - ENDDO - ENDDO - ENDDO + ENDDO + ENDDO + ENDDO + + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES_PER_M2 + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = KG_SPECIES_PER_M2 - END SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2 !EOC !------------------------------------------------------------------------------ @@ -1105,14 +1212,15 @@ END SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2 !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, & - State_Met, isAdjoint, RC ) + SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1131,23 +1239,28 @@ SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N + ! Scalars + INTEGER :: I, J, L, N, S + REAL(fp) :: convFac + + ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_Kgm2_to_KgKgDry begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS - - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_M2 ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - thisLoc = 'Routine ConvertSpc_Kgm2_to_KgKgDry in unitconv_mod.F90' + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_Kgm2_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + KG_SPECIES_PER_M2, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -1171,33 +1284,41 @@ SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, & ! !======================================================================== - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N ) - DO N = 1, State_Chm%nSpecies - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - * ( 1.0e+0_fp / ( g0_100 & - * State_Met%DELP_DRY(I,J,L) ) ) + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S, convFac ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) + + DO L = 1, State_Grid%NZ + DO J = 1, State_Grid%NY + DO I = 1, State_Grid%NX + + convFac = ( 1.0_fp / ( g0_100 * State_Met%DELP_DRY(I,J,L) ) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * convFac + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - * ( 1.0e+0_fp & - / ( g0_100 & - * State_Met%DELP_DRY(I,J,L) ) ) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * convFac + ENDIF #endif - ENDDO - ENDDO - ENDDO + + ENDDO + ENDDO + ENDDO + + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = KG_SPECIES_PER_KG_DRY_AIR - END SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry !EOC !------------------------------------------------------------------------------ @@ -1214,14 +1335,15 @@ END SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & - isAdjoint, RC ) + SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1240,24 +1362,28 @@ SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N - REAL(fp) :: MW_kg - CHARACTER(LEN=255) :: errMsg, thisLoc + ! Scalars + INTEGER :: I, J, L, N, S + REAL(fp) :: avoTerm, convFac, MW_kg + + ! Strings + CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_KgKgDry_to_MND begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS - - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - thisLoc = 'Routine ConvertSpc_KgKgDry_to_MND in unitconv_mod.F90' + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_KgKgDry_to_MND (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + KG_SPECIES_PER_KG_DRY_AIR, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -1291,39 +1417,47 @@ SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & !======================================================================== ! Loop over all species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N, MW_kg ) - DO N = 1, State_Chm%nSpecies + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S, MW_kg, convFac ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) ! Molecular weight for the species [kg] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp + ! Compute AVO/ MW_kg / 1e6 term outside the IJL loop + avoTerm = ( AVO / MW_kg ) / 1.0e+6_fp + ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - * State_Met%AIRDEN(I,J,L) & - * ( AVO / MW_kg ) / 1e+6_fp + + convFac = ( State_Met%AIRDEN(I,J,L) * avoTerm ) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * convFac + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - * State_Met%AIRDEN(I,J,L) & - * ( AVO / MW_kg ) & - / 1e+6_fp + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * convFac + ENDIF #endif ENDDO ENDDO ENDDO + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = MOLECULES_SPECIES_PER_CM3 + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = MOLECULES_SPECIES_PER_CM3 - END SUBROUTINE ConvertSpc_KgKgDry_to_MND !EOC !------------------------------------------------------------------------------ @@ -1340,14 +1474,15 @@ END SUBROUTINE ConvertSpc_KgKgDry_to_MND !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & - isAdjoint, RC ) + SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & + mappingm, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1366,24 +1501,25 @@ SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N - REAL(fp) :: MW_kg - CHARACTER(LEN=255) :: errMsg, thisLoc + INTEGER :: I, J, L, N, S + REAL(fp) :: avoTerm, convFac, MW_kg + CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_MND_to_KgKgDry begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS - - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= MOLECULES_SPECIES_PER_CM3 ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - thisLoc = 'Routine ConvertSpc_MND_to_KgKgDry in unitconv_mod.F90' + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_MND_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + MOLECULES_SPECIES_PER_CM3, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -1421,38 +1557,47 @@ SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & !======================================================================== ! Loop over species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N, MW_kg ) - DO N = 1, State_Chm%nSpecies + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S, MW_kg, avoTerm, convFac ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) ! Molecular weight for the species [kg] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp + ! Compute this term outside of the IJL loop + avoTerm = ( 1.0e+6_fp / ( AVO / MW_kg ) ) + ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - * 1e+6_fp / ( AVO / MW_kg ) & - / State_Met%AIRDEN(I,J,L) + + convFac = ( avoTerm / State_Met%AIRDEN(I,J,L) ) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * convFac + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - * 1e+6_fp / ( AVO / MW_kg ) & - / State_Met%AIRDEN(I,J,L) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * convFac + ENDIF #endif ENDDO ENDDO ENDDO + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = KG_SPECIES_PER_KG_DRY_AIR - END SUBROUTINE ConvertSpc_MND_to_KgKgDry !EOC !------------------------------------------------------------------------------ @@ -1469,14 +1614,15 @@ END SUBROUTINE ConvertSpc_MND_to_KgKgDry !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, State_Met, & - isAdjoint, RC ) + SUBROUTINE ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1500,24 +1646,25 @@ SUBROUTINE ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, State_Met, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N - REAL(fp) :: MW_g - CHARACTER(LEN=255) :: errMsg, thisLoc + INTEGER :: I, J, L, N, S + REAL(fp) :: convFac, MW_g, MW_ratio + CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_VVDry_to_Kg begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS - - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= MOLES_SPECIES_PER_MOLES_DRY_AIR ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - thisLoc = 'Routine ConvertSpc_VVDry_to_Kg in unitconv_mod.F90' + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_VVDry_to_Kg (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + MOLES_SPECIES_PER_MOLES_DRY_AIR, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -1549,38 +1696,47 @@ SUBROUTINE ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, State_Met, & !======================================================================== ! Loop over all species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N, MW_g ) - DO N = 1, State_Chm%nSpecies + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S, MW_g, MW_ratio, convFac ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) ! Molecular weight for the species [g] MW_g = State_Chm%SpcData(N)%Info%MW_g - ! Loop over grid boxes and do the unit conversion + ! Compute this term outside of the IJL loop + MW_ratio = ( AIRMW / MW_g ) + + ! Loop over grid boxes convert units DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - * State_Met%AD(I,J,L) & - / ( AIRMW / MW_g ) + + convFac = ( State_Met%AD(I,J,L) / MW_ratio ) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * convFac + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - * State_Met%AD(I,J,L) & - / ( AIRMW / MW_g ) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * convFac + ENDIF #endif ENDDO ENDDO ENDDO + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = KG_SPECIES - END SUBROUTINE ConvertSpc_VVDry_to_Kg !EOC !------------------------------------------------------------------------------ @@ -1597,14 +1753,15 @@ END SUBROUTINE ConvertSpc_VVDry_to_Kg !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, State_Met, & - isAdjoint, RC ) + SUBROUTINE ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1627,24 +1784,27 @@ SUBROUTINE ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, State_Met, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N - REAL(fp) :: MW_g - CHARACTER(LEN=255) :: errMsg, thisLoc + ! Scalars + INTEGER :: I, J, L, N, S + REAL(fp) :: convFac, MW_g, MW_ratio + + ! Strings + CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_Kg_to_VVDry begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_Kg_to_VVDry (in GeosUtil/unitconv_mod.F90)' - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - thisLoc = 'Routine ConvertSpc_Kg_to_VVDry in unitconv_mod.F90' + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -1676,38 +1836,46 @@ SUBROUTINE ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, State_Met, & !======================================================================== ! Loop over all species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N, MW_g ) - DO N = 1, State_Chm%nSpecies + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S, MW_g, MW_ratio, convFac ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) ! Molecular weight for the species [g] MW_g = State_Chm%SpcData(N)%Info%MW_g + ! Compute this term outside the IJL loop + MW_ratio = ( AIRMW / MW_g ) + ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - * ( AIRMW / MW_g ) & - / State_Met%AD(I,J,L) + + convFac = ( MW_ratio / State_Met%AD(I,J,L) ) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * convFac + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - * ( AIRMW / MW_g ) & - / State_Met%AD(I,J,L) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * convFac #endif ENDDO ENDDO ENDDO + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = MOLES_SPECIES_PER_MOLES_DRY_AIR + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = MOLES_SPECIES_PER_MOLES_DRY_AIR - END SUBROUTINE ConvertSpc_Kg_to_VVDry !EOC !------------------------------------------------------------------------------ @@ -1724,18 +1892,18 @@ END SUBROUTINE ConvertSpc_Kg_to_VVDry !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_KgKgDry_to_Kg( State_Chm, State_Grid, State_Met, & - isAdjoint, RC ) + SUBROUTINE ConvertSpc_KgKgDry_to_Kg( State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! - ! Object containing species concentration TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object ! ! !OUTPUT PARAMETERS: @@ -1751,23 +1919,24 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kg( State_Chm, State_Grid, State_Met, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N + INTEGER :: I, J, L, N, S CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_KgKgDry_to_Kg begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS - - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR(State_Chm%Spc_Units) ) - thisLoc = 'Routine ConvertSpc_KgKgDry_to_Kg in unitconv_mod.F90' + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_KgKgDry_to_Kg (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + KG_SPECIES_PER_KG_DRY_AIR, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -1796,30 +1965,39 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kg( State_Chm, State_Grid, State_Met, & ! !======================================================================== - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N ) - DO N = 1, State_Chm%nSpecies - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - * State_Met%AD(I,J,L) + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) + + ! Loop over grid boxes and convert units + DO L = 1, State_Grid%NZ + DO J = 1, State_Grid%NY + DO I = 1, State_Grid%NX + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * State_Met%AD(I,J,L) + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - * State_Met%AD(I,J,L) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * State_Met%AD(I,J,L) + ENDIF #endif - ENDDO - ENDDO - ENDDO + ENDDO + ENDDO + ENDDO + + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = KG_SPECIES - END SUBROUTINE ConvertSpc_KgKgDry_to_Kg !EOC !------------------------------------------------------------------------------ @@ -1836,14 +2014,15 @@ END SUBROUTINE ConvertSpc_KgKgDry_to_Kg !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_Kg_to_KgKgDry( State_Chm, State_Grid, State_Met, & - isAdjoint, RC ) + SUBROUTINE ConvertSpc_Kg_to_KgKgDry( State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1862,23 +2041,26 @@ SUBROUTINE ConvertSpc_Kg_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N + ! Scalars + INTEGER :: I, J, L, N, S + + ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_Kg_to_KgKgDry begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_Kg_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - thisLoc = 'Routine ConvertSpc_Kg_to_KgKgDry in unitconv_mod.F90' + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -1907,30 +2089,38 @@ SUBROUTINE ConvertSpc_Kg_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! !======================================================================== - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N ) - DO N = 1, State_Chm%nSpecies - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - / State_Met%AD(I,J,L) + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) + + DO L = 1, State_Grid%NZ + DO J = 1, State_Grid%NY + DO I = 1, State_Grid%NX + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) / State_Met%AD(I,J,L) + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - / State_Met%AD(I,J,L) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) / State_Met%AD(I,J,L) + ENDIF #endif - ENDDO - ENDDO - ENDDO + ENDDO + ENDDO + ENDDO + + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_units = KG_SPECIES_PER_KG_DRY_AIR - END SUBROUTINE ConvertSpc_Kg_to_KgKgDry !EOC !------------------------------------------------------------------------------ @@ -1947,14 +2137,15 @@ END SUBROUTINE ConvertSpc_Kg_to_KgKgDry !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & - isAdjoint, RC ) + SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1974,26 +2165,27 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N - REAL(fp) :: MW_kg + INTEGER :: I, J, L, N, S + REAL(fp) :: avoTerm, MW_kg ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc + CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_MND_to_Kg begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS - - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= MOLECULES_SPECIES_PER_CM3 ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - thisLoc = 'Routine ConvertSpc_MND_to_KgKgDry in unitconv_mod.F90' + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_MND_to_Kg (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + MOLECULES_SPECIES_PER_CM3, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -2030,39 +2222,47 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & !======================================================================== ! Loop over all species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N, MW_kg ) - DO N = 1, State_Chm%nSpecies + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, S, MW_kg, avoTerm ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) ! Molecular weight for the species [g] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp + ! Compute this term ouside the IJL loop + avoTerm = ( AVO / MW_kg ) + ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - / ( AVO / MW_kg ) & - * ( State_Met%AIRVOL(I,J,L) * 1e+6_fp ) + + convFac = ( State_Met%AIRVOL(I,J,L) * 1.0e+6_fp ) / avoTerm + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) / convFac + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - / ( AVO / MW_kg ) & - * ( State_Met%AIRVOL(I,J,L) & - * 1e+6_fp ) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * convFac + ENDIF #endif ENDDO ENDDO ENDDO + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = KG_SPECIES - END SUBROUTINE ConvertSpc_MND_to_Kg !EOC !------------------------------------------------------------------------------ @@ -2079,14 +2279,15 @@ END SUBROUTINE ConvertSpc_MND_to_Kg !\\ ! !INTERFACE: ! - SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & - isAdjoint, RC ) + SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -2106,26 +2307,26 @@ SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N - REAL(fp) :: MW_kg + INTEGER :: I, J, L, N, S + REAL(fp) :: avoTerm, MW_kg ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc + CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_Kg_to_MND begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertSpc_Kg_to_MND (in GeosUtil/unitconv_mod.F90)' - ! Verify correct initial units. If current units are unexpected, - ! write error message and location to log, then pass failed RC - ! to calling routine. - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - errMsg = 'Incorrect initial units: ' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - thisLoc = 'Routine ConvertSpc_KgKgDry_to_MND in unitconv_mod.F90' + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -2157,39 +2358,44 @@ SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & !======================================================================== ! Loop over all species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N, MW_kg ) + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, N, MW_kg, avoTerm ) DO N = 1, State_Chm%nSpecies ! Molecular weight for the species [kg] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp + ! Compute this term outside the IJL loop + avoTerm = ( AVO / MW_kg ) + ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - * ( AVO / MW_kg ) & - / ( State_Met%AIRVOL(I,J,L) * 1e+6_fp ) + + convFac = avoTerm / ( State_Met%AIRVOL(I,J,L) * 1.0e+6_fp ) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * convFac + #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - * ( AVO / MW_kg ) & - / ( State_Met%AIRVOL(I,J,L) & - * 1e+6_fp ) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * convFac + ENDIF #endif ENDDO ENDDO ENDDO + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = MOLECULES_SPECIES_PER_CM3 + ENDDO !$OMP END PARALLEL DO - ! Update species units - State_Chm%Spc_Units = MOLECULES_SPECIES_PER_CM3 - END SUBROUTINE ConvertSpc_Kg_to_MND !EOC !------------------------------------------------------------------------------ @@ -2207,17 +2413,19 @@ END SUBROUTINE ConvertSpc_Kg_to_MND !\\ ! !INTERFACE: ! - SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, State_Met, State_Chm, isAdjoint, RC ) + SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, & + State_Met, State_Chm, mapping, & + isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! - ! Object containing species concentration TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object ! ! !OUTPUT PARAMETERS: @@ -2242,28 +2450,54 @@ SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, State_Met, State_Chm, isAdjoint, R ! ! !LOCAL VARIABLES: ! - INTEGER :: N + ! Scalars + INTEGER :: N, S + + ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertBox_KgKgDry_to_Kg begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertBox_KgKgDry_to_Kg (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, & + KG_SPECIES_PER_KG_DRY_AIR, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + ! Loop over species + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( S, N ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * State_Met%AD(I,J,L) - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( N ) - DO N = 1, State_Chm%nSpecies - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - * State_Met%AD(I,J,L) #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - * State_Met%AD(I,J,L) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * State_Met%AD(I,J,L) + ENDIF #endif + + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES + ENDDO !$OMP END PARALLEL DO @@ -2285,13 +2519,16 @@ END SUBROUTINE ConvertBox_KgKgDry_to_Kg !\\ ! !INTERFACE: ! - SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, State_Met, State_Chm, isAdjoint, RC ) + SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & + State_Met, State_Chm, mapping, & + isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -2326,21 +2563,42 @@ SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, State_Met, State_Chm, isAdjoint, R ! ConvertSpc_Kg_to_KgKgDry begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertBox_Kg_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( S, N ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) / State_Met%AD(I,J,L) - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( N ) - DO N = 1, State_Chm%nSpecies - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - / State_Met%AD(I,J,L) #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - / State_Met%AD(I,J,L) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) / State_Met%AD(I,J,L) + ENDIF #endif + + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR + ENDDO !$OMP END PARALLEL DO @@ -2360,21 +2618,24 @@ END SUBROUTINE ConvertBox_Kg_to_KgKgDry !\\ ! !INTERFACE: ! - SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, State_Chm, State_Grid, isAdjoint, RC ) + SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, & + State_Chm, State_Grid, mapping, & + isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! - INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes + TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object ! ! !OUTPUT PARAMETERS: ! - INTEGER, INTENT(OUT) :: RC ! Success or failure? + INTEGER, INTENT(OUT) :: RC ! Success or failure? ! ! !REMARKS: ! This routine is temporary and is only used for local conversion of species @@ -2393,28 +2654,50 @@ SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, State_Chm, State_Grid, isAdjoint, RC ! ! !LOCAL VARIABLES: ! - INTEGER :: N + INTEGER :: N, S CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertBox_Kgm2_to_Kg begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertBox_Kgm2_to_Kg (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES_PER_M2, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + ! Loop over species + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( N, S ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * State_Grid%Area_M2(I,J) - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( N ) - DO N = 1, State_Chm%nSpecies - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - * State_Grid%Area_M2(I,J) #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - * State_Grid%Area_M2(I,J) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * State_Grid%Area_M2(I,J) + ENDIF #endif + + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES + ENDDO !$OMP END PARALLEL DO @@ -2434,21 +2717,24 @@ END SUBROUTINE ConvertBox_Kgm2_to_Kg !\\ ! !INTERFACE: ! - SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, State_Chm, State_Grid, isAdjoint, RC ) + SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, & + State_Chm, State_Grid, mapping, & + isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! - INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - LOGICAL, INTENT(IN) :: isAdjoint ! Is this the reverse integration? + INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes + TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object ! ! !OUTPUT PARAMETERS: ! - INTEGER, INTENT(OUT) :: RC ! Success or failure? + INTEGER, INTENT(OUT) :: RC ! Success or failure? ! ! !REMARKS: ! This routine is temporary and is only used for local conversion of species @@ -2467,31 +2753,115 @@ SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, State_Chm, State_Grid, isAdjoint, RC ! ! !LOCAL VARIABLES: ! - INTEGER :: N + INTEGER :: N, S CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertBox_Kg_to_Kgm2 begins here! !======================================================================== - ! Assume success - RC = GC_SUCCESS + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at ConvertBox_Kg_to_Kgm2 (in GeosUtil/unitconv_mod.F90)' + + ! Make sure all species have the proper starting units + CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Input_Units"!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + ! Loop over species + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( N, S ) + DO S = 1, SIZE( mapping ) + + ! Get the modelId from the mapping array + N = mapping(S) + + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) / State_Grid%Area_M2(I,J) - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( N ) - DO N = 1, State_Chm%nSpecies - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) & - / State_Grid%Area_M2(I,J) #ifdef ADJOINT - if (isAdjoint) & - State_Chm%SpeciesAdj(I,J,L,N) = State_Chm%SpeciesAdj(I,J,L,N) & - / State_Grid%Area_M2(I,J) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) / State_Grid%Area_M2(I,J) + ENDIF #endif + + ! Update units metadata + State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES_PER_M2 + ENDDO !$OMP END PARALLEL DO END SUBROUTINE ConvertBox_Kg_to_Kgm2 !EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Transport Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: Check_Input_Units +! +! !DESCRIPTION: Ensures that the starting units for a given species +! is correct. +!\\ +!\\ +! !INTERFACE: +! + SUBROUTINE Check_Input_Units( State_Chm, mapping, unit, RC ) +! +! !INPUT PARAMETERS: +! + INTEGER, INTENT(IN) :: mapping(:) ! Mapping to species Id + INTEGER, INTENT(IN) :: unit ! Input unit flag +! +! !INPUT/OUTPUT PARAMETERS: +! + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry State object +! +! !OUTPUT PARAMETERS: +! + INTEGER, INTENT(OUT) :: RC ! Success or failure +! +! !REVISION HISTORY: +! 30 Nov 2023 - R. Yantosca - Initial version +! See the subsequent Git history with the gitk browser! +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! !LOCAL VARIABLES: +! + ! Scalars + INTEGER :: N, S + + ! Strings + CHARACTER(LEN=255) :: errMsg, thisLoc + + !======================================================================== + ! Check_Input_Units begins here! + !======================================================================== + + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = ' -> at Check_Input_Units (in module GeosUtil/unitconv_mod.F90)' + + ! Make sure all species start with the proper unit, or throw an error + IF ( .not. ALL( State_Chm%Species(mapping)%Units == unit ) ) THEN + errMsg = 'All species do not have initial units: ' // & + TRIM( UNIT_STR( unit ) ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + END SUBROUTINE Check_Input_Units +!EOC END MODULE UnitConv_Mod From 9cc9262c21f4e008945159a8cdfc1d4806c7dd95 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 11 Dec 2023 12:59:38 -0500 Subject: [PATCH 015/331] Further updates in GeosUtil/unitconv_mod.F90 GeosUtil/unitconv_mod.F90 - Rename function Check_Input_Units to Check_Units. - Add function Check_Previous_Units - In routine Convert_Spc_Units: - Add a single call to Check_Units before the CASE statement. - Rename "outUnit" argument to "new_units" - Rename "origUnit" argument to "previous_units" - Add errUnits error message variable - Add a single call to Check_Previous_Units before exiting, to ensure that all species have the same Previous_Units value - In routine "Print_Species_Kg" - Update calls to "Convert_Spc_Units" - In other routines - Remove calls to Check_Input_Units Signed-off-by: Bob Yantosca --- GeosUtil/unitconv_mod.F90 | 345 +++++++++++++++----------------------- 1 file changed, 138 insertions(+), 207 deletions(-) diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index b55f94a8e..780da3772 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -69,7 +69,7 @@ MODULE UnitConv_Mod ! ! !PRIVATE MEMBER FUNCTIONS: ! - PRIVATE :: Check_Input_Units + PRIVATE :: Check_Units !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! KG/KG DRY <-> V/V DRY @@ -150,8 +150,9 @@ MODULE UnitConv_Mod !\\ ! !INTERFACE: ! - SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & - State_Met, outUnit, mapping, RC ) + SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & + State_Met, mapping, new_units, & + RC, previous_units ) ! ! !USES: ! @@ -159,19 +160,20 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & ! ! !INPUT PARAMETERS: ! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid state object - TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object + TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid state object + TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object + INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId + INTEGER, INTENT(IN) :: new_units ! Units to convert to ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object ! ! !OUTPUT PARAMETERS: ! - INTEGER, INTENT(OUT) :: RC ! Success or failure? - INTEGER, OPTIONAL :: origUnit ! Units of input data + INTEGER, INTENT(OUT) :: RC ! Success or failure? + INTEGER, OPTIONAL :: previous_units ! Previous units ! ! !REMARKS: ! The purpose of optional output argument origUnit is to enable conversion @@ -195,10 +197,10 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & ! ! Scalars LOGICAL :: isAdjoint - INTEGER :: inUnit + INTEGER :: in_units ! Strings - CHARACTER(LEN=255) :: errNoIn, errNoOut, errMsg, thisLoc + CHARACTER(LEN=255) :: errNoIn, errNoOut, errMsg, errUnits, thisLoc !==================================================================== ! Convert_Spc_Units begins here! @@ -209,50 +211,56 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & ! Initialize RC = GC_SUCCESS - inUnit = State_Chm%Spc_Units + in_units = State_Chm%Species(mapping(1))%Units isAdjoint = .FALSE. thisLoc = ' -> at Convert_Spc_Units (in GeosUtil/unitconv_mod.F90)' - errNoOut = 'Conversion to ' // TRIM( UNIT_STR(outUnit) ) // & + errNoOut = 'Conversion to ' // TRIM( UNIT_STR(newUnits) ) // & ' not defined!' errNoIn = 'Conversion from ' // TRIM( UNIT_STR(inUnit ) ) // & ' not defined!' errMsg = 'Error in conversion from ' // TRIM( UNIT_STR(inUnit ) ) // & - ' to ' // TRIM( UNIT_STR(outUnit) ) // & + ' to ' // TRIM( UNIT_STR(newUnits) ) // & '!' - - ! Archive units of input data for output if passed as argument - IF ( PRESENT( origUnit ) ) origUnit = State_Chm%Spc_Units + errUnits = '' ! TODO: Re-enable debug print ! Debugging print IF ( Input_Opt%Verbose ) THEN WRITE(6,'(a)') ' ### Species Unit Conversion: ' // & TRIM( UNIT_STR(inUnit ) ) // ' -> ' // & - TRIM( UNIT_STR(outUnit) ) // ' ###' + TRIM( UNIT_STR(newUnits) ) // ' ###' ENDIF ! Exit if in and out units are the same - IF ( outUnit == inUnit ) THEN + IF ( newUnits == inUnit ) THEN IF ( Input_Opt%useTimers ) THEN CALL Timer_End( "Unit conversions", RC ) ENDIF RETURN ENDIF + ! Make sure all species have consistent starting units + CALL Check_Units( State_Chm, mapping, in_units, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in routine "Check_Units"!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + #ifdef ADJOINT ! Set a flag if we have compiled for the adjoint isAdjoint = Input_Opt%is_Adjoint #endif ! Convert based on input and output units - SELECT CASE ( inUnit ) + SELECT CASE ( in_units ) !================================================================ ! Convert from kg/kg dry !================================================================ CASE ( KG_SPECIES_PER_KG_DRY_AIR ) - SELECT CASE ( outUnit ) + SELECT CASE ( new_units ) CASE ( MOLES_SPECIES_PER_MOLES_DRY_AIR ) CALL ConvertSpc_KgKgDry_to_VVDry( & @@ -262,12 +270,12 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & CASE ( KG_SPECIES_PER_KG_TOTAL_AIR ) CALL ConvertSpc_KgKgDry_to_KgKgTotal( & State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + mapping, isAdjoint, RC ) CASE ( KG_SPECIES ) CALL ConvertSpc_KgKgDry_to_Kg( & State_Chm, State_Grid, State_Met, & - mappingm isAdjoint, RC ) + mapping, isAdjoint, RC ) CASE ( KG_SPECIES_PER_M2 ) CALL ConvertSpc_KgKgDry_to_Kgm2( & @@ -277,7 +285,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & CASE ( MOLECULES_SPECIES_PER_CM3 ) CALL ConvertSpc_KgKgDry_to_MND( & State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + mapping, isAdjoint, RC ) CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) @@ -289,7 +297,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & !================================================================ CASE ( KG_SPECIES_PER_KG_TOTAL_AIR ) - SELECT CASE ( outUnit ) + SELECT CASE ( new_units ) CASE ( KG_SPECIES_PER_KG_DRY_AIR ) CALL ConvertSpc_KgKgTotal_to_KgKgDry( & @@ -321,7 +329,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & !==================================================================== CASE ( MOLES_SPECIES_PER_MOLES_DRY_AIR ) - SELECT CASE ( outUnit ) + SELECT CASE ( new_units ) CASE ( KG_SPECIES_PER_KG_DRY_AIR ) CALL ConvertSpc_VVDry_to_KgKgDry( & @@ -351,12 +359,12 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & !==================================================================== CASE ( KG_SPECIES ) - SELECT CASE ( outUnit ) + SELECT CASE ( new_units ) CASE ( KG_SPECIES_PER_KG_DRY_AIR ) CALL ConvertSpc_Kg_to_KgKgDry( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + mapping, isAdjoint, RC ) CASE ( KG_SPECIES_PER_KG_TOTAL_AIR ) CALL ConvertSpc_Kg_to_KgKgDry( & @@ -386,7 +394,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & !==================================================================== CASE ( KG_SPECIES_PER_M2 ) - SELECT CASE ( outUnit ) + SELECT CASE ( new_units ) CASE( KG_SPECIES_PER_KG_DRY_AIR ) CALL ConvertSpc_Kgm2_to_KgKgDry( & @@ -411,7 +419,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & !==================================================================== CASE ( MOLECULES_SPECIES_PER_CM3 ) - SELECT CASE ( outUnit ) + SELECT CASE ( new_units ) CASE ( KG_SPECIES ) CALL ConvertSpc_MND_to_Kg( & @@ -442,9 +450,25 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & END SELECT + !======================================================================== + ! Additional error checks + !======================================================================== + + ! Make sure that all species have consistent "previous_units" values + IF ( PRESENT( previous_units ) ) THEN + CALL Check_Previous_Units( State_Chm, mapping, in_units, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errUnits = 'Error encountered in "Check_Previous_Units!"' + CALL GC_Error( errUnits, RC, thisLoc ) + RETURN + ENDIF + previous_units = in_units + ENDIF + ! Error if problem within called conversion routine IF ( RC /= GC_SUCCESS ) THEN CALL GC_Error( errMsg, RC, thisLoc ) + RETURN ENDIF IF ( Input_Opt%useTimers ) THEN @@ -506,7 +530,7 @@ SUBROUTINE Print_Global_Species_Kg( I, J, L, & ! !LOCAL VARIABLES: ! INTEGER :: N - INTEGER :: origUnit + INTEGER :: previous_units REAL(fp) :: SpcTotal CHARACTER(LEN=12) :: SpcName CHARACTER(LEN=255) :: errMsg, errLoc @@ -525,14 +549,14 @@ SUBROUTINE Print_Global_Species_Kg( I, J, L, & ! Convert species conc units to kg CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - mapping = (/ N /), & - outUnit = KG_SPECIES, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = (/ N /), & + new_units = KG_SPECIES, & + previous_units = previous_units, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN @@ -573,7 +597,7 @@ SUBROUTINE Print_Global_Species_Kg( I, J, L, & State_Grid = State_Grid, & State_Met = State_Met, & mapping = (/ N /), & - outUnit = origUnit, & + new_units = previous_units, & RC = RC ) ! Trap potential errors @@ -643,14 +667,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, & thisLoc = & ' -> at ConvertSpc_KgKgDry_to_VVDry (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - KG_SPECIES_PER_KG_DRY_AIR, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF !======================================================================== ! @@ -776,15 +792,6 @@ SUBROUTINE ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, & thisLoc = & ' -> at ConvertSpc_VVDry_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - MOLES_SPECIES_PER_MOLES_DRY_AIR, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -911,15 +918,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & thisLoc = & ' -> at ConvertSpc_KgKgDry_to_KgKgTotal (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - KG_SPECIES_PER_KG_DRY_AIR, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -1023,15 +1021,6 @@ SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & thisLoc = & ' -> at ConvertSpc_KgKgTotal_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - KG_SPECIES_PER_KG_TOTAL_AIR, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -1134,15 +1123,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, State_Met, & thisLoc = & ' -> at ConvertSpc_KgKgDry_to_Kgm2 (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - KG_SPECIES_PER_KG_DRY_AIR, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -1256,15 +1236,6 @@ SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, State_Met, & thisLoc = & ' -> at ConvertSpc_Kgm2_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - KG_SPECIES_PER_M2, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -1379,15 +1350,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & thisLoc = & ' -> at ConvertSpc_KgKgDry_to_MND (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - KG_SPECIES_PER_KG_DRY_AIR, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -1515,15 +1477,6 @@ SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & thisLoc = & ' -> at ConvertSpc_MND_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - MOLECULES_SPECIES_PER_CM3, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !==================================================================== ! ! The conversion is as follows: @@ -1660,15 +1613,6 @@ SUBROUTINE ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, State_Met, & thisLoc = & ' -> at ConvertSpc_VVDry_to_Kg (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - MOLES_SPECIES_PER_MOLES_DRY_AIR, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -1801,14 +1745,6 @@ SUBROUTINE ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, State_Met, & thisLoc = & ' -> at ConvertSpc_Kg_to_VVDry (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -1932,15 +1868,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kg( State_Chm, State_Grid, State_Met, & thisLoc = & ' -> at ConvertSpc_KgKgDry_to_Kg (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - KG_SPECIES_PER_KG_DRY_AIR, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -2057,14 +1984,6 @@ SUBROUTINE ConvertSpc_Kg_to_KgKgDry( State_Chm, State_Grid, State_Met, & thisLoc = & ' -> at ConvertSpc_Kg_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -2181,15 +2100,6 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & thisLoc = & ' -> at ConvertSpc_MND_to_Kg (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - MOLECULES_SPECIES_PER_CM3, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -2323,14 +2233,6 @@ SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & thisLoc = & ' -> at ConvertSpc_Kg_to_MND (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !======================================================================== ! ! The conversion is as follows: @@ -2466,15 +2368,6 @@ SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, & thisLoc = & ' -> at ConvertBox_KgKgDry_to_Kg (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, & - KG_SPECIES_PER_KG_DRY_AIR, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - ! Loop over species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& @@ -2569,14 +2462,6 @@ SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & thisLoc = & ' -> at ConvertBox_Kg_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& !$OMP PRIVATE( S, N ) @@ -2667,14 +2552,6 @@ SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, & thisLoc = & ' -> at ConvertBox_Kgm2_to_Kg (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES_PER_M2, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - ! Loop over species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& @@ -2766,14 +2643,6 @@ SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, & thisLoc = & ' -> at ConvertBox_Kg_to_Kgm2 (in GeosUtil/unitconv_mod.F90)' - ! Make sure all species have the proper starting units - CALL Check_Input_Units( State_Chm, mapping, KG_SPECIES, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Input_Units"!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - ! Loop over species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& @@ -2807,15 +2676,14 @@ END SUBROUTINE ConvertBox_Kg_to_Kgm2 !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: Check_Input_Units +! !IROUTINE: Check_Units ! -! !DESCRIPTION: Ensures that the starting units for a given species -! is correct. -!\\ +! !DESCRIPTION: Ensures that all species have the same Units value before +! unit conversion is done. !\\ ! !INTERFACE: ! - SUBROUTINE Check_Input_Units( State_Chm, mapping, unit, RC ) + SUBROUTINE Check_Units( State_Chm, mapping, unit, RC ) ! ! !INPUT PARAMETERS: ! @@ -2846,22 +2714,85 @@ SUBROUTINE Check_Input_Units( State_Chm, mapping, unit, RC ) CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== - ! Check_Input_Units begins here! + ! Check_Units begins here! !======================================================================== ! Initialize RC = GC_SUCCESS errMsg = '' - thisLoc = ' -> at Check_Input_Units (in module GeosUtil/unitconv_mod.F90)' + thisLoc = ' -> at Check_Units (in module GeosUtil/unitconv_mod.F90)' ! Make sure all species start with the proper unit, or throw an error IF ( .not. ALL( State_Chm%Species(mapping)%Units == unit ) ) THEN - errMsg = 'All species do not have initial units: ' // & - TRIM( UNIT_STR( unit ) ) + errMsg = 'All species do not have Units = ' // & + TRIM( UNIT_STR( unit ) ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + END SUBROUTINE Check_Units +!EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Transport Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: Check_Previous_Units +! +! !DESCRIPTION: Ensures that all species have the same Previous_Units value +! before unit conversion is done. +!\\ +!\\ +! !INTERFACE: +! + SUBROUTINE Check_Previous_Units( State_Chm, mapping, unit, RC ) +! +! !INPUT PARAMETERS: +! + INTEGER, INTENT(IN) :: mapping(:) ! Mapping to species Id + INTEGER, INTENT(IN) :: unit ! Input unit flag +! +! !INPUT/OUTPUT PARAMETERS: +! + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry State object +! +! !OUTPUT PARAMETERS: +! + INTEGER, INTENT(OUT) :: RC ! Success or failure +! +! !REVISION HISTORY: +! 30 Nov 2023 - R. Yantosca - Initial version +! See the subsequent Git history with the gitk browser! +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! !LOCAL VARIABLES: +! + ! Scalars + INTEGER :: N, S + + ! Strings + CHARACTER(LEN=255) :: errMsg, thisLoc + + !======================================================================== + ! Check_Previous_Units begins here! + !======================================================================== + + ! Initialize + RC = GC_SUCCESS + errMsg = '' + thisLoc = & + ' -> at Check_PreviousUnits (in module GeosUtil/unitconv_mod.F90)' + + ! Make sure all species start with the proper unit, or throw an error + IF ( .not. ALL( State_Chm%Species(mapping)%Previous_Units == unit ) ) THEN + errMsg = 'All species do not have Previous_Units = ' // & + TRIM( UNIT_STR( unit ) ) CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF - END SUBROUTINE Check_Input_Units + END SUBROUTINE Check_Previous_Units !EOC END MODULE UnitConv_Mod From d838f7ef813190642e3e2d959464adbb1668795b Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 11 Dec 2023 17:24:58 -0500 Subject: [PATCH 016/331] Update calls to Convert_Spc_Units in GeosCore and Interfaces subdirs This commit updates the various calls to Convert_Spc_Units in modules throughout the GeosCore/*.F90, Interfaces/GCHP/*.F90, and Interfaces/GEOS/*.F90. Updates include: - Adding the "mapping" argument to pass one of the State_Chm%Map_* arrays. This is the list of modelId's for each species. - Renaming "outUnit" -> "new_units" - Renaming "origUnit" -> "previous_units NOTE: Some additional work will be needed, as some code (mostly in TOMAS) still relies on the old State_Chm%Spc_Units variable. Signed-off-by: Bob Yantosca --- GeosCore/aerosol_mod.F90 | 20 ++++---- GeosCore/airs_ch4_mod.F90 | 20 ++++---- GeosCore/carbon_mod.F90 | 22 +++++---- GeosCore/chemistry_mod.F90 | 45 ++++++++---------- GeosCore/fullchem_mod.F90 | 18 ++++---- GeosCore/gosat_ch4_mod.F90 | 20 ++++---- GeosCore/hco_interface_gc_mod.F90 | 22 +++++---- GeosCore/linear_chem_mod.F90 | 22 +++++---- GeosCore/mercury_mod.F90 | 58 +++++++++++++----------- GeosCore/mixing_mod.F90 | 20 ++++---- GeosCore/pbl_mix_mod.F90 | 20 ++++---- GeosCore/rrtmg_rad_transfer_mod.F90 | 20 ++++---- GeosCore/set_global_ch4_mod.F90 | 24 ++++++---- GeosCore/sulfate_mod.F90 | 58 +++++++++++++----------- GeosCore/tomas_mod.F90 | 23 +++++----- GeosCore/tracer_mod.F90 | 21 +++++---- GeosCore/vdiff_mod.F90 | 17 +++---- GeosCore/wetscav_mod.F90 | 21 +++++---- Interfaces/GCHP/gchp_chunk_mod.F90 | 21 +++++---- Interfaces/GEOS/geos_CarbonInterface.F90 | 19 ++++---- Interfaces/GEOS/geos_interface.F90 | 23 ++++++++-- ObsPack/obspack_mod.F90 | 20 ++++---- 22 files changed, 305 insertions(+), 249 deletions(-) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 9ec5776cf..5a5fc6b8f 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -251,7 +251,7 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & REAL(fp), POINTER :: KG_STRAT_AER(:,:,:,:) ! Other variables - INTEGER :: OrigUnit + INTEGER :: previous_units ! For spatially and seasonally varying OM/OC @@ -305,13 +305,14 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & ! Convert species to [kg] for this routine CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + new_units = KG_SPECIES, & + mapping = State_Chm%Map_Advect, & + previous_units = previous_units & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN @@ -1023,7 +1024,8 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/airs_ch4_mod.F90 b/GeosCore/airs_ch4_mod.F90 index 28b841c56..f0ee8c9d0 100644 --- a/GeosCore/airs_ch4_mod.F90 +++ b/GeosCore/airs_ch4_mod.F90 @@ -429,7 +429,7 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & INTEGER :: IOS INTEGER, SAVE :: TotalObs = 0 CHARACTER(LEN=255) :: FILENAME - INTEGER :: origUnit + INTEGER :: previous_units CHARACTER(LEN=255) :: ThisLoc CHARACTER(LEN=512) :: ErrMsg INTEGER :: RC @@ -518,13 +518,14 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & ! Convert species units to [v/v] (mps, 6/12/2020) CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Unit conversion error (kg/kg dry -> v/v dry)' @@ -699,7 +700,8 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) ! Trap errors diff --git a/GeosCore/carbon_mod.F90 b/GeosCore/carbon_mod.F90 index 385e95fdb..ae373261d 100644 --- a/GeosCore/carbon_mod.F90 +++ b/GeosCore/carbon_mod.F90 @@ -4968,7 +4968,7 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, RC ) LOGICAL :: SGCOAG = .True. INTEGER :: L, K, EMTYPE INTEGER :: ii=53, jj=29 - INTEGER :: origUnit + INTEGER :: previous_units LOGICAL, SAVE :: FIRST = .TRUE. !(ramnarine 12/27/2018) LOGICAL, SAVE :: USE_FIRE_NUM = .FALSE. LOGICAL :: FND !(ramnarine 1/2/2019) @@ -5029,14 +5029,15 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, RC ) ! Convert concentration units to [kg] for TOMAS. This will be ! removed once TOMAS uses mixing ratio instead of mass ! as species units (ewl, 9/11/15) - CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES, & - origUnit = origUnit, & - RC = RC ) + CALL Convert_Spc_Units( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = KG_SPECIES, & + previous_units = previous_units, & + RC = RC ) ! Trap errors IF ( RC /= GC_SUCCESS ) THEN @@ -5266,7 +5267,8 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, RC ) State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) ! Trap errors diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index 3ef55c4d7..3fcd79965 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -140,7 +140,7 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & LOGICAL, SAVE :: FIRST = .TRUE. ! Strings - INTEGER :: OrigUnit + INTEGER :: previous_units CHARACTER(LEN=255) :: ErrMsg, ThisLoc !======================================================================= @@ -205,13 +205,14 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & ! Convert units from mol/mol dry to kg CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_All, & + new_units = KG_SPECIES, & + previous_units = previous_units, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN @@ -455,17 +456,10 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & errCode = RC ) ! Check units (ewl, 10/5/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - ErrMsg = 'Incorrect species units after DO_LINEARCHEM!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - ENDIF - - ! Trap potential errors - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered in ""!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF + !IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN + ! ErrMsg = 'Incorrect species units after DO_LINEARCHEM!' + ! CALL GC_Error( ErrMsg, RC, ThisLoc ) + !ENDIF IF ( Input_Opt%useTimers ) THEN CALL Timer_End( "=> Linearized chem", RC ) @@ -548,11 +542,11 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & FullRun = .TRUE., & RC = RC ) - ! Check units (ewl, 10/5/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - ErrMsg = 'Incorrect species units after CHEMSULFATE!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - ENDIF + !! Check units (ewl, 10/5/15) + !IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN + ! ErrMsg = 'Incorrect species units after CHEMSULFATE!' + ! CALL GC_Error( ErrMsg, RC, ThisLoc ) + !ENDIF ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN @@ -1077,7 +1071,8 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_All, & + new_units = previous_units, & RC = RC ) ! Trap potential errors diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index 160bc1822..1803b0de4 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -357,13 +357,14 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & ! Convert species to [molec/cm3] (ewl, 8/16/16) !======================================================================== CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLECULES_SPECIES_PER_CM3, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_All, & + new_units = MOLECULES_SPECIES_PER_CM3, & + previous_units = previous_units, & + RC = RC ) IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Unit conversion error!' @@ -1535,7 +1536,8 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_All, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/gosat_ch4_mod.F90 b/GeosCore/gosat_ch4_mod.F90 index d3e777d64..f8846450a 100644 --- a/GeosCore/gosat_ch4_mod.F90 +++ b/GeosCore/gosat_ch4_mod.F90 @@ -399,7 +399,7 @@ SUBROUTINE CALC_GOSAT_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & INTEGER :: IIJJ(2), I, J, N INTEGER :: L, LL, LGOS INTEGER :: JLOOP, NOBS, IND - INTEGER :: origUnit + INTEGER :: previous_units INTEGER :: INDS(MAXGOS) REAL(fp) :: REF_DATE, TIME REAL(fp) :: GC_PRES(State_Grid%NZ) @@ -584,13 +584,14 @@ SUBROUTINE CALC_GOSAT_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & ! Convert species units to [v/v dry] aka [mol/mol dry] CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Unit conversion error (kg/kg dry -> v/v dry)' @@ -945,7 +946,8 @@ SUBROUTINE CALC_GOSAT_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/hco_interface_gc_mod.F90 b/GeosCore/hco_interface_gc_mod.F90 index ef6a63feb..3554f9f78 100644 --- a/GeosCore/hco_interface_gc_mod.F90 +++ b/GeosCore/hco_interface_gc_mod.F90 @@ -4605,7 +4605,7 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & INTEGER :: L, NA INTEGER :: ND, N INTEGER :: Hg_Cat, topMix - INTEGER :: S, origUnit + INTEGER :: S, previous_units REAL(fp) :: dep, emis REAL(fp) :: MW_kg, fracNoHg0Dep REAL(fp) :: tmpFlx @@ -4660,14 +4660,15 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & !======================================================================= ! Convert units to [v/v dry] aka [mol/mol dry] !======================================================================= - CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + CALL Convert_Spc_Units( + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) ! Trap potential error IF ( RC /= GC_SUCCESS ) THEN @@ -5124,7 +5125,8 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) ! Trap potential errors diff --git a/GeosCore/linear_chem_mod.F90 b/GeosCore/linear_chem_mod.F90 index a8e1eeddb..c4fb36afe 100644 --- a/GeosCore/linear_chem_mod.F90 +++ b/GeosCore/linear_chem_mod.F90 @@ -202,8 +202,8 @@ SUBROUTINE DO_LINEAR_CHEM( Input_Opt, State_Chm, State_Grid, & LOGICAL :: IT_IS_A_TAGO3_SIM ! Scalars - INTEGER :: I, J, L, N - INTEGER :: NN, origUnit + INTEGER :: previous_units + INTEGER :: I, J, L, N, NN REAL(fp) :: dt, P, k, M0, RC REAL(fp) :: TK, RDLOSS, T1L, mOH, BryTmp REAL(fp) :: BOXVL, Num, Den, M @@ -602,13 +602,14 @@ SUBROUTINE DO_LINEAR_CHEM( Input_Opt, State_Chm, State_Grid, & ! Convert units to [v/v dry air] aka [mol/mol dry] ! for Linoz and Synoz (ewl, 10/05/15) CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & - origUnit = origUnit, & - RC = errCode ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + previous_units = previous_units, & + RC = errCode ) ! Trap potential errors IF ( errCode /= GC_SUCCESS ) THEN @@ -632,7 +633,8 @@ SUBROUTINE DO_LINEAR_CHEM( Input_Opt, State_Chm, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = errCode ) ! Trap potential errors diff --git a/GeosCore/mercury_mod.F90 b/GeosCore/mercury_mod.F90 index eeb630006..2922d9397 100644 --- a/GeosCore/mercury_mod.F90 +++ b/GeosCore/mercury_mod.F90 @@ -259,7 +259,7 @@ SUBROUTINE EmissMercury( Input_Opt, State_Chm, State_Diag, & ! !LOCAL VARIABLES: ! LOGICAL, SAVE :: FIRST = .TRUE. - INTEGER :: THISMONTH, I, J, origUnit + INTEGER :: THISMONTH, I, J, previous_units ! Pointers REAL(f4), POINTER :: Ptr2D(:,:) @@ -279,13 +279,14 @@ SUBROUTINE EmissMercury( Input_Opt, State_Chm, State_Diag, & ! Convert species units to [kg] for EMISSMERCURY (ewl, 8/12/15) CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = KG_SPECIES, & + previous_units = previous_units, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN @@ -373,7 +374,8 @@ SUBROUTINE EmissMercury( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN @@ -681,16 +683,16 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & LOGICAL, SAVE :: FIRST = .TRUE. ! Scalars - LOGICAL :: doSuppress - INTEGER :: I, J, L, K - INTEGER :: N, NN, CN, Hg_Cat - INTEGER :: NA, F, SpcID, KppID - INTEGER :: P, MONTH, YEAR, IRH - INTEGER :: TotSteps, TotFuncs, TotJacob, TotAccep - INTEGER :: TotRejec, TotNumLU, HCRC, IERR - INTEGER :: Day, S, errorCount, origUnit - REAL(fp) :: REL_HUM, rtim, itim, TOUT - REAL(fp) :: T, TIN + LOGICAL :: doSuppress, previous_units + INTEGER :: I, J, L, K + INTEGER :: N, NN, CN, Hg_Cat + INTEGER :: NA, F, SpcID, KppID + INTEGER :: P, MONTH, YEAR, IRH + INTEGER :: TotSteps, TotFuncs, TotJacob, TotAccep + INTEGER :: TotRejec, TotNumLU, HCRC, IERR + INTEGER :: Day, S, errorCount + REAL(fp) :: REL_HUM, rtim, itim, TOUT + REAL(fp) :: T, TIN ! Strings CHARACTER(LEN=16) :: thisName @@ -866,13 +868,14 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & ! Convert species to [molec/cm3] (ewl, 8/16/16) !====================================================================== CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLECULES_SPECIES_PER_CM3, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_All, & + new_units = MOLECULES_SPECIES_PER_CM3, & + previous_units = previous_units, & + RC = RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Unit conversion error!' @@ -1387,7 +1390,8 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_All, & + new_units = previous_units, & RC = RC ) ! Trap potential errors diff --git a/GeosCore/mixing_mod.F90 b/GeosCore/mixing_mod.F90 index f3eb51c93..aedda83b0 100644 --- a/GeosCore/mixing_mod.F90 +++ b/GeosCore/mixing_mod.F90 @@ -247,7 +247,7 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & ! ! Scalars INTEGER :: I, J, L, L1, L2, N, D, NN, NA, nAdvect, S - INTEGER :: DRYDEPID, origUnit + INTEGER :: DRYDEPID, previous_units INTEGER :: PBL_TOP, DRYD_TOP, EMIS_TOP REAL(fp) :: TS, TMP, FRQ, RKT, FRAC, FLUX, AREA_M2 REAL(fp) :: MWkg, DENOM @@ -360,13 +360,14 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Now use units kg/m2 as State_Chm%SPECIES units in DO_TEND to ! remove area-dependency (ewl, 9/30/15) CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES_PER_M2, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = KG_SPECIES_PER_M2, & + previous_units = previous_units, & + RC = RC ) IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Unit conversion error!' @@ -950,7 +951,8 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/pbl_mix_mod.F90 b/GeosCore/pbl_mix_mod.F90 index 021006bd1..1549cf929 100644 --- a/GeosCore/pbl_mix_mod.F90 +++ b/GeosCore/pbl_mix_mod.F90 @@ -94,7 +94,7 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & INTEGER :: N INTEGER :: NA INTEGER :: TS_Dyn - INTEGER :: origUnit + INTEGER :: previous_units REAL(f8) :: DT_Dyn ! Strings @@ -152,13 +152,14 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & ! Convert species to [v/v dry] aka [mol/mol dry] CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN @@ -192,7 +193,8 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) ! Trap potential errors diff --git a/GeosCore/rrtmg_rad_transfer_mod.F90 b/GeosCore/rrtmg_rad_transfer_mod.F90 index 55159421c..d8abba1c2 100644 --- a/GeosCore/rrtmg_rad_transfer_mod.F90 +++ b/GeosCore/rrtmg_rad_transfer_mod.F90 @@ -204,7 +204,7 @@ SUBROUTINE DO_RRTMG_RAD_TRANSFER( ThisDay, ThisMonth, iCld, & LOGICAL :: LOUTPUTAERO ! OUTPUT AEROSOL DIAGNOSTICS? INTEGER :: ITIMEVALS(8) INTEGER :: IDIAGOUT ! INDEX OF SPC OPTICS FOR OUTPUT - INTEGER :: origUnit + INTEGER :: previous_units REAL*8 :: OLDSECS, NEWSECS ! SAVEd scalars @@ -513,13 +513,14 @@ SUBROUTINE DO_RRTMG_RAD_TRANSFER( ThisDay, ThisMonth, iCld, & ! Convert species units to [kg/kg dry] for RRTMG CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES_PER_KG_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = KG_SPECIES_PER_KG_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN @@ -1709,7 +1710,8 @@ SUBROUTINE DO_RRTMG_RAD_TRANSFER( ThisDay, ThisMonth, iCld, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/set_global_ch4_mod.F90 b/GeosCore/set_global_ch4_mod.F90 index baf2779ec..1e7c7eb72 100644 --- a/GeosCore/set_global_ch4_mod.F90 +++ b/GeosCore/set_global_ch4_mod.F90 @@ -98,7 +98,8 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & ! ! Scalars INTEGER :: I, J, L, PBL_TOP, id_CH4, DT - INTEGER :: OrigUnit + INTEGER :: previous_units + INTEGER :: mapping(1) REAL(fp) :: CH4, dCH4 LOGICAL :: FOUND @@ -128,7 +129,8 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & ENDIF ! Get species ID - id_CH4 = Ind_( 'CH4' ) + id_CH4 = Ind_( 'CH4' ) + mapping(1) = id_CH4 ! Get dynamic timestep DT = GET_TS_DYN() @@ -178,13 +180,14 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Convert species to [v/v dry] aka [mol/mol dry] for this routine CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = mapping, & + new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) ! Add info to logfile IF ( FOUND .AND. Input_Opt%amIRoot .AND. FIRST ) THEN @@ -251,7 +254,8 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = mapping, & + new_units = previous_units, & RC = RC ) ! Trap potential errors diff --git a/GeosCore/sulfate_mod.F90 b/GeosCore/sulfate_mod.F90 index d4c877324..5b202eddb 100644 --- a/GeosCore/sulfate_mod.F90 +++ b/GeosCore/sulfate_mod.F90 @@ -273,7 +273,7 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & LOGICAL :: LDSTUP INTEGER :: I, J, L, N, MONTH REAL(fp) :: DTCHEM - INTEGER :: origUnit + INTEGER :: previous_units ! Strings CHARACTER(LEN=255) :: ErrMsg, ThisLoc @@ -536,13 +536,14 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Convert species to [v/v dry] aka [mol/mol dry] CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) IF ( RC /= GC_SUCCESS ) THEN CALL GC_Error('Unit conversion error', RC, & @@ -677,6 +678,7 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & origUnit = origUnit, & RC = RC ) @@ -790,7 +792,7 @@ SUBROUTINE EMISSSULFATETOMAS( Input_Opt, State_Chm, State_Grid, & INTEGER :: TID, I, J, L, M INTEGER :: ii=53, jj=29, ll=1 REAL(fp) :: NH4_CONC - INTEGER :: origUnit + INTEGER :: previous_units ! Pointers TYPE(SpcConc), POINTER :: Spc(:) @@ -806,13 +808,14 @@ SUBROUTINE EMISSSULFATETOMAS( Input_Opt, State_Chm, State_Grid, & ! Convert species to [kg] for TOMAS. This will be removed once ! TOMAS uses mixing ratio instead of mass as tracer units (ewl, 9/11/15) CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = KG_SPECIES, & + previous_units = previous_units, & + RC = RC ) IF ( RC /= GC_SUCCESS ) THEN CALL GC_Error('Unit conversion error', RC, & @@ -883,7 +886,8 @@ SUBROUTINE EMISSSULFATETOMAS( Input_Opt, State_Chm, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN @@ -7862,7 +7866,7 @@ SUBROUTINE CHEM_SO4_AQ( Input_Opt, State_Chm, State_Grid, State_Met, RC ) ! INTEGER :: I, J, L INTEGER :: k, binact1, binact2 - INTEGER :: KMIN, origUnit + INTEGER :: KMIN, previous_units REAL(fp) :: SO4OXID !================================================================= @@ -7874,13 +7878,14 @@ SUBROUTINE CHEM_SO4_AQ( Input_Opt, State_Chm, State_Grid, State_Met, RC ) ! Convert species from to [kg] CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_unit = KG_SPECIES, & + previous_units = previous_units, & + RC = RC ) IF ( RC /= GC_SUCCESS ) THEN CALL GC_Error('Unit conversion error', RC, & @@ -7944,7 +7949,8 @@ SUBROUTINE CHEM_SO4_AQ( Input_Opt, State_Chm, State_Grid, State_Met, RC ) State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/tomas_mod.F90 b/GeosCore/tomas_mod.F90 index a148cd1b1..4e432f3f3 100644 --- a/GeosCore/tomas_mod.F90 +++ b/GeosCore/tomas_mod.F90 @@ -343,12 +343,12 @@ SUBROUTINE DO_TOMAS( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Assume success RC = GC_SUCCESS - ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - MSG = 'Incorrect species units: ' // TRIM(UNIT_STR(State_Chm%Spc_Units)) - LOC = 'Routine DO_TOMAS in tomas_mod.F90' - CALL GC_Error( MSG, RC, LOC ) - ENDIF + !! Check that species units are in [kg] (ewl, 8/13/15) + !IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN + ! MSG = 'Incorrect species units: ' // TRIM(UNIT_STR(State_Chm%Spc_Units)) + ! LOC = 'Routine DO_TOMAS in tomas_mod.F90' + ! CALL GC_Error( MSG, RC, LOC ) + !ENDIF ! Do TOMAS aerosol microphysics CALL AEROPHYS( Input_Opt, State_Chm, State_Grid, State_Met, RC ) @@ -517,11 +517,11 @@ SUBROUTINE AEROPHYS( Input_Opt, State_Chm, State_Grid, State_Met, RC ) ! are now generally [kg/kg] in GEOS-Chem, they are converted to ! kg for TOMAS elsewhere in tomas_mod prior to calling this subroutine ! (ewl, 8/13/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - MSG = 'Incorrect species units: ' // TRIM(UNIT_STR(State_Chm%Spc_Units)) - LOC = 'Routine AEROPHYS in tomas_mod.F90' - CALL GC_Error( MSG, RC, LOC ) - ENDIF + !IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN + ! MSG = 'Incorrect species units: ' // TRIM(UNIT_STR(State_Chm%Spc_Units)) + ! LOC = 'Routine AEROPHYS in tomas_mod.F90' + ! CALL GC_Error( MSG, RC, LOC ) + !ENDIF ! Point to chemical species array [kg] Spc => State_Chm%Species @@ -3643,6 +3643,7 @@ SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & ! Assume success RC = GC_SUCCESS + ! TODO: Update since Spc_Units are no longer included ! Check that species units are in [kg] (ewl, 8/13/15) ! Convert species concentration units to [kg] if not necessary. ! Units are [kg/m2] if AQOXID is called from wet deposition diff --git a/GeosCore/tracer_mod.F90 b/GeosCore/tracer_mod.F90 index 2a4006731..8b0e24735 100644 --- a/GeosCore/tracer_mod.F90 +++ b/GeosCore/tracer_mod.F90 @@ -100,7 +100,7 @@ SUBROUTINE Tracer_Source_Phase( Input_Opt, State_Chm, State_Grid, & ! ! Scalars INTEGER :: I, J, L, N, DT - INTEGER :: origUnit + INTEGER :: previous_units REAL(fp) :: Local_Tally REAL(fp) :: Total_Area REAL(fp) :: Total_Spc @@ -147,13 +147,15 @@ SUBROUTINE Tracer_Source_Phase( Input_Opt, State_Chm, State_Grid, & ! Convert species units to v/v dry !======================================================================= CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Unit conversion error (kg -> v/v dry)' CALL GC_Error( ErrMsg, RC, ThisLoc ) @@ -422,7 +424,8 @@ SUBROUTINE Tracer_Source_Phase( Input_Opt, State_Chm, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/vdiff_mod.F90 b/GeosCore/vdiff_mod.F90 index d201dcef2..939c4fd59 100644 --- a/GeosCore/vdiff_mod.F90 +++ b/GeosCore/vdiff_mod.F90 @@ -2240,7 +2240,7 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & ! ! Scalars INTEGER :: TS_Dyn - INTEGER :: origUnit + INTEGER :: previous_units REAL(fp) :: DT_Dyn ! Strings @@ -2302,13 +2302,14 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & ! Convert species concentration to [v/v dry] aka [mol/mol dry] CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/wetscav_mod.F90 b/GeosCore/wetscav_mod.F90 index f4ce55658..22c22b808 100644 --- a/GeosCore/wetscav_mod.F90 +++ b/GeosCore/wetscav_mod.F90 @@ -1697,6 +1697,7 @@ SUBROUTINE WASHOUT( I, J, L, & UNITCHANGE_KGKG = .FALSE. UNITCHANGE_KGM2 = .FALSE. + ! TODO: Fix this since Spc_Units are no longer supported IF ( State_Chm%Spc_Units == KG_SPECIES_PER_KG_DRY_AIR ) THEN UNITCHANGE_KGKG = .TRUE. CALL ConvertBox_KgKgDry_to_Kg( I, J, L, & @@ -3185,7 +3186,7 @@ SUBROUTINE WETDEP( Input_Opt, State_Chm, State_Diag, State_Grid, & LOGICAL :: IS_RAINOUT, IS_WASHOUT, IS_BOTH INTEGER :: I, IDX, J, L INTEGER :: N, NW, Hg_Cat, EC - INTEGER :: origUnit + INTEGER :: previous_units REAL(fp) :: Q, QDOWN, DT, DT_OVER_TAU REAL(fp) :: K, K_MIN, K_RAIN, RAINFRAC REAL(fp) :: F, FTOP, F_PRIME, WASHFRAC @@ -3227,13 +3228,14 @@ SUBROUTINE WETDEP( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Convert species concentration to mass per unit area (kg/m2) for ! wet deposition since computation is done per column (ewl, 9/8/15) CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES_PER_M2, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_WetDep, & + new_units = KG_SPECIES_PER_M2, & + previous_units = previous_units, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN @@ -3815,7 +3817,8 @@ SUBROUTINE WETDEP( Input_Opt, State_Chm, State_Diag, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_WetDep, & + new_units = previous_units, & RC = RC ) ! Trap potential errors diff --git a/Interfaces/GCHP/gchp_chunk_mod.F90 b/Interfaces/GCHP/gchp_chunk_mod.F90 index ef6b5f890..0952027de 100644 --- a/Interfaces/GCHP/gchp_chunk_mod.F90 +++ b/Interfaces/GCHP/gchp_chunk_mod.F90 @@ -711,7 +711,8 @@ SUBROUTINE GCHP_Chunk_Run( GC, & TYPE(ESMF_Field) :: IntField REAL*8 :: DT CHARACTER(LEN=ESMF_MAXSTR) :: Iam - INTEGER :: STATUS, HCO_PHASE, RST, origUnit + INTEGER :: STATUS, HCO_PHASE, RST + INTEGER :: previous_units #if defined( MODEL_GEOS ) INTEGER :: I, J, L #endif @@ -969,13 +970,14 @@ SUBROUTINE GCHP_Chunk_Run( GC, & ! Convert to dry mixing ratio CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES_PER_KG_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_All, & + new_units = KG_SPECIES_PER_KG_DRY_AIR, & + previous_units = origUnit, & + RC = RC ) _ASSERT(RC==GC_SUCCESS, 'Error calling CONVERT_SPC_UNITS') ! SDE 05/28/13: Set H2O to STT if relevant @@ -1568,7 +1570,8 @@ SUBROUTINE GCHP_Chunk_Run( GC, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_All, & + new_units = previous_units, & RC = RC ) _ASSERT(RC==GC_SUCCESS, 'Error calling CONVERT_SPC_UNITS') diff --git a/Interfaces/GEOS/geos_CarbonInterface.F90 b/Interfaces/GEOS/geos_CarbonInterface.F90 index 4fda7a268..47e6d7f96 100644 --- a/Interfaces/GEOS/geos_CarbonInterface.F90 +++ b/Interfaces/GEOS/geos_CarbonInterface.F90 @@ -503,7 +503,7 @@ SUBROUTINE GEOS_CarbonSetConc( Import, Input_Opt, State_Chm, & ! CHARACTER(LEN=*), PARAMETER :: myname = 'GEOS_CarbonSetConc' CHARACTER(LEN=*), PARAMETER :: Iam = myname - CHARACTER(LEN=63) :: OrigUnit + CHARACTER(LEN=63) :: previous_units INTEGER :: I, LM, indCO2, indCO, STATUS REAL, POINTER :: CO2(:,:,:) => null() REAL, POINTER :: COmeso(:,:) => null() @@ -519,13 +519,14 @@ SUBROUTINE GEOS_CarbonSetConc( Import, Input_Opt, State_Chm, & ! Make sure concentrations are in kg/kg total ! (this should already be the case) CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES_PER_KG_TOTAL_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_All, & + new_units = KG_SPECIES_PER_KG_TOTAL_AIR, & + previous_units = previous_units, & + RC = RC ) ASSERT_(RC==GC_SUCCESS) ! Get index @@ -570,7 +571,7 @@ SUBROUTINE GEOS_CarbonSetConc( Import, Input_Opt, State_Chm, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + new_units = previous_units, & RC = RC ) ASSERT_( RC == GC_SUCCESS ) diff --git a/Interfaces/GEOS/geos_interface.F90 b/Interfaces/GEOS/geos_interface.F90 index b197863fa..b445cc888 100644 --- a/Interfaces/GEOS/geos_interface.F90 +++ b/Interfaces/GEOS/geos_interface.F90 @@ -1135,7 +1135,7 @@ SUBROUTINE GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, & REAL, POINTER :: LFR(:,:) => NULL() REAL, POINTER :: CNV_FRC(:,:) => NULL() - CHARACTER(LEN=ESMF_MAXSTR) :: OrigUnit + INTEGER :: previous_units __Iam__('GEOS_Diagnostics') @@ -1170,14 +1170,27 @@ SUBROUTINE GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, & ! Move 'regular' GEOS-Chem diagnostics from gchp_chunk_mod.F90 to here to ! make sure that these diagnostics see any post-run updates. ! Diagnostics routine expects units of kg/kg dry. - CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & - 'kg/kg dry', RC, OrigUnit=OrigUnit ) + CALL Convert_Spc_Units( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_All, & + new_units = KG_SPECIES_PER_KG_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) _ASSERT(RC==GC_SUCCESS, 'Error calling CONVERT_SPC_UNITS') CALL Set_Diagnostics_EndofTimestep( Input_Opt, State_Chm, State_Diag, & State_Grid, State_Met, RC ) _ASSERT(RC==GC_SUCCESS, 'Error calling Set_Diagnostics_EndofTimestep') - CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & - OrigUnit, RC ) + CALL Convert_Spc_Units( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_All, & + new_units = previous_units, & + RC = RC ) _ASSERT(RC==GC_SUCCESS, 'Error calling CONVERT_SPC_UNITS') !======================================================================= diff --git a/ObsPack/obspack_mod.F90 b/ObsPack/obspack_mod.F90 index 4c8f6014c..f89f0a7f0 100644 --- a/ObsPack/obspack_mod.F90 +++ b/ObsPack/obspack_mod.F90 @@ -1319,7 +1319,7 @@ SUBROUTINE ObsPack_Sample( yyyymmdd, hhmmss, Input_Opt, State_Chm, & LOGICAL :: prtLog, doSample INTEGER :: I, J, L, N, R, S INTEGER :: Yr, Mo, Da, Hr, Mn, Sc - INTEGER :: origUnit + INTEGER :: previous_units REAL(f8) :: TsStart, TsEnd ! Strings @@ -1345,13 +1345,14 @@ SUBROUTINE ObsPack_Sample( yyyymmdd, hhmmss, Input_Opt, State_Chm, & ! call this again requesting that the species are converted back to the ! InUnit values. CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chem%Map_Advect, & + new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN @@ -1492,7 +1493,8 @@ SUBROUTINE ObsPack_Sample( yyyymmdd, hhmmss, Input_Opt, State_Chm, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) ! Trap potential errors From c553d96e572ee6a4259c67720e2c8c550ed5e5fd Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 13 Dec 2023 12:32:51 -0500 Subject: [PATCH 017/331] Fix syntax errors and compilation errors in unit conversions This commit fixes several minor issues that were left over from the prior commit. GeosCore/aerosol_mod.F90 - Add missing comma after "previous_units" GeosCore/fullchem_mod.F90 - Rename "origUnit" -> "previous_units" GeosCore/hco_interface_gc_mod.F90 - Add missing continuation character & - Rename "outUnit" -> "new_units" GeosCore/hco_utilities_gc_mod.F90 GeosCore/vdiff_mod.F90 - Rename "origUnit" -> "previous_units" - Rename "outUnit" -> "new_units" - Add mapping argument in calls to Convert_Spc_Units GeosUtil/unitconv_mod.F90 - Rename "inUnit" -> "in_units" - Rename "outUnit" -> "new_units" ObsPack/obspack_mod.F90 - Fixed typo: "State_Chem" -> "State_Chm" GeosCore/mercury_mod.F90 - Bug fix: previous_units should be INTEGER, not LOGICAL GeosCore/sulfate_mod.F90 - Rename "origUnit" -> "previous_units" - Rename "outUnit" -> "new_units" Signed-off-by: Bob Yantosca --- GeosCore/aerosol_mod.F90 | 2 +- GeosCore/fullchem_mod.F90 | 2 +- GeosCore/hco_interface_gc_mod.F90 | 4 ++-- GeosCore/hco_utilities_gc_mod.F90 | 20 ++++++++++-------- GeosCore/mercury_mod.F90 | 3 ++- GeosCore/sulfate_mod.F90 | 19 +++++++++-------- GeosCore/vdiff_mod.F90 | 3 ++- GeosUtil/unitconv_mod.F90 | 34 +++++++++++++++++-------------- ObsPack/obspack_mod.F90 | 2 +- 9 files changed, 49 insertions(+), 40 deletions(-) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 5a5fc6b8f..393275fb4 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -311,7 +311,7 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & State_Met = State_Met, & new_units = KG_SPECIES, & mapping = State_Chm%Map_Advect, & - previous_units = previous_units & + previous_units = previous_units, & RC = RC ) ! Trap potential errors diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index 1803b0de4..810d5c262 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -172,7 +172,7 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & INTEGER :: NA, F, SpcID, KppID INTEGER :: P, MONTH, YEAR, Day INTEGER :: IERR, S, Thread - INTEGER :: errorCount, origUnit + INTEGER :: errorCount, previous_units REAL(fp) :: SO4_FRAC, T, TIN REAL(fp) :: TOUT, SR, LWC diff --git a/GeosCore/hco_interface_gc_mod.F90 b/GeosCore/hco_interface_gc_mod.F90 index 3554f9f78..6cfac9eba 100644 --- a/GeosCore/hco_interface_gc_mod.F90 +++ b/GeosCore/hco_interface_gc_mod.F90 @@ -4660,13 +4660,13 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & !======================================================================= ! Convert units to [v/v dry] aka [mol/mol dry] !======================================================================= - CALL Convert_Spc_Units( + CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & mapping = State_Chm%Map_Advect, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & previous_units = previous_units, & RC = RC ) diff --git a/GeosCore/hco_utilities_gc_mod.F90 b/GeosCore/hco_utilities_gc_mod.F90 index ed5702b21..8a96e1ada 100644 --- a/GeosCore/hco_utilities_gc_mod.F90 +++ b/GeosCore/hco_utilities_gc_mod.F90 @@ -1613,7 +1613,7 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & ! !LOCAL VARIABLES: ! INTEGER :: I, J, L, M, N ! lon, lat, lev, indexes - INTEGER :: origUnit + INTEGER :: previous_units LOGICAL :: FOUND ! Found in restart file? CHARACTER(LEN=60) :: Prefix ! utility string CHARACTER(LEN=255) :: LOC ! routine location @@ -1911,13 +1911,14 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & PRINT *, "Species min and max in molec/cm3" CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = MOLECULES_SPECIES_PER_CM3, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_All, & + new_units = MOLECULES_SPECIES_PER_CM3, & + previous_units = previous_units, & + RC = RC ) ! Trap error IF ( RC /= GC_SUCCESS ) THEN @@ -1943,7 +1944,8 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_All, & + new_units = previous_units, & RC = RC ) ! Trap error diff --git a/GeosCore/mercury_mod.F90 b/GeosCore/mercury_mod.F90 index 2922d9397..31928bffd 100644 --- a/GeosCore/mercury_mod.F90 +++ b/GeosCore/mercury_mod.F90 @@ -683,7 +683,8 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & LOGICAL, SAVE :: FIRST = .TRUE. ! Scalars - LOGICAL :: doSuppress, previous_units + LOGICAL :: doSuppress + INTEGER :: previous_units INTEGER :: I, J, L, K INTEGER :: N, NN, CN, Hg_Cat INTEGER :: NA, F, SpcID, KppID diff --git a/GeosCore/sulfate_mod.F90 b/GeosCore/sulfate_mod.F90 index 5b202eddb..e549f77d9 100644 --- a/GeosCore/sulfate_mod.F90 +++ b/GeosCore/sulfate_mod.F90 @@ -674,14 +674,14 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Convert species to [v/v dry] aka [mol/mol dry] CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - mapping = State_Chm%Map_Advect, & - outUnit = MOLES_SPECIES_PER_MOLES_DRY_AIR, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + mapping = State_Chm%Map_Advect, & + new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & + previous_units = previous_units, & + RC = RC ) IF ( RC /= GC_SUCCESS ) THEN CALL GC_Error('Unit conversion error', RC, & @@ -715,7 +715,8 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/vdiff_mod.F90 b/GeosCore/vdiff_mod.F90 index 939c4fd59..a659cecbd 100644 --- a/GeosCore/vdiff_mod.F90 +++ b/GeosCore/vdiff_mod.F90 @@ -2373,7 +2373,8 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + mapping = State_Chm%Map_Advect, & + new_units = previous_units, & RC = RC ) ! Trap potential errors diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index 780da3772..c95cbb736 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -214,12 +214,12 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & in_units = State_Chm%Species(mapping(1))%Units isAdjoint = .FALSE. thisLoc = ' -> at Convert_Spc_Units (in GeosUtil/unitconv_mod.F90)' - errNoOut = 'Conversion to ' // TRIM( UNIT_STR(newUnits) ) // & + errNoOut = 'Conversion to ' // TRIM( UNIT_STR(new_units)) // & ' not defined!' - errNoIn = 'Conversion from ' // TRIM( UNIT_STR(inUnit ) ) // & + errNoIn = 'Conversion from ' // TRIM( UNIT_STR(in_units )) // & ' not defined!' - errMsg = 'Error in conversion from ' // TRIM( UNIT_STR(inUnit ) ) // & - ' to ' // TRIM( UNIT_STR(newUnits) ) // & + errMsg = 'Error in conversion from ' // TRIM( UNIT_STR(in_units )) // & + ' to ' // TRIM( UNIT_STR(new_units)) // & '!' errUnits = '' @@ -227,12 +227,13 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & ! Debugging print IF ( Input_Opt%Verbose ) THEN WRITE(6,'(a)') ' ### Species Unit Conversion: ' // & - TRIM( UNIT_STR(inUnit ) ) // ' -> ' // & - TRIM( UNIT_STR(newUnits) ) // ' ###' + TRIM( UNIT_STR(in_units ) ) // ' -> ' // & + TRIM( UNIT_STR(new_units) ) // ' ###' ENDIF ! Exit if in and out units are the same - IF ( newUnits == inUnit ) THEN + IF ( new_units == in_units ) THEN + IF ( PRESENT( previous_units ) ) previous_units = new_units IF ( Input_Opt%useTimers ) THEN CALL Timer_End( "Unit conversions", RC ) ENDIF @@ -1080,7 +1081,7 @@ END SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry ! !INTERFACE: ! SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, State_Met, & - mapping isAdjoint, RC ) + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! @@ -1267,7 +1268,7 @@ SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, State_Met, & DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - convFac = ( 1.0_fp / ( g0_100 * State_Met%DELP_DRY(I,J,L) ) + convFac = ( 1.0_fp / ( g0_100 * State_Met%DELP_DRY(I,J,L) ) ) State_Chm%Species(N)%Conc(I,J,L) = & State_Chm%Species(N)%Conc(I,J,L) * convFac @@ -1437,7 +1438,7 @@ END SUBROUTINE ConvertSpc_KgKgDry_to_MND ! !INTERFACE: ! SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & - mappingm, isAdjoint, RC ) + mapping, isAdjoint, RC ) ! ! !INPUT PARAMETERS: ! @@ -2085,7 +2086,7 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & ! ! Scalars INTEGER :: I, J, L, N, S - REAL(fp) :: avoTerm, MW_kg + REAL(fp) :: avoTerm, convFac, MW_kg ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -2134,7 +2135,7 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_kg, avoTerm ) + !$OMP PRIVATE( I, J, L, N, S, MW_kg, avoTerm , convFac ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -2218,7 +2219,7 @@ SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & ! ! Scalars INTEGER :: I, J, L, N, S - REAL(fp) :: avoTerm, MW_kg + REAL(fp) :: avoTerm, convFac, MW_kg ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -2262,7 +2263,7 @@ SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, MW_kg, avoTerm ) + !$OMP PRIVATE( I, J, L, N, MW_kg, avoTerm, convFac ) DO N = 1, State_Chm%nSpecies ! Molecular weight for the species [kg] @@ -2449,7 +2450,10 @@ SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & ! ! !LOCAL VARIABLES: ! - INTEGER :: N + ! Scalars + INTEGER :: N, S + + ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== diff --git a/ObsPack/obspack_mod.F90 b/ObsPack/obspack_mod.F90 index f89f0a7f0..9fc87dd91 100644 --- a/ObsPack/obspack_mod.F90 +++ b/ObsPack/obspack_mod.F90 @@ -1349,7 +1349,7 @@ SUBROUTINE ObsPack_Sample( yyyymmdd, hhmmss, Input_Opt, State_Chm, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chem%Map_Advect, & + mapping = State_Chm%Map_Advect, & new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & previous_units = previous_units, & RC = RC ) From 58e0881addbbc5111623466fc38ba2c4ab098b77 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 13 Dec 2023 14:10:39 -0500 Subject: [PATCH 018/331] Fix additional compilation/syntax errors in unit conversions GeosCore/calc_met_mod.F90 - Add "units" variable to store units in UpdtMR block - Only convert units for species that have dry units (moved IF block to within the N loop over species0 GeosCore/chemistry_mod.F90 - Remove reference to State_Chm%Spc_Units GeosCore/hco_utilities_gc_mod.F90 - Remove reference to State_Chm%Spc_Units - Set initial units and previous_units values for each species N GeosCore/ucx_mod.F90 - Remove reference to State_Chm%Spc_Units - Update error check for H2O units using Spc(id_H2O)%Units Signed-off-by: Bob Yantosca --- GeosCore/calc_met_mod.F90 | 51 ++++++++++++++----------------- GeosCore/chemistry_mod.F90 | 7 ----- GeosCore/hco_utilities_gc_mod.F90 | 7 +++-- GeosCore/ucx_mod.F90 | 18 ++++++----- 4 files changed, 37 insertions(+), 46 deletions(-) diff --git a/GeosCore/calc_met_mod.F90 b/GeosCore/calc_met_mod.F90 index b40f1da66..e8470bc5d 100644 --- a/GeosCore/calc_met_mod.F90 +++ b/GeosCore/calc_met_mod.F90 @@ -220,7 +220,7 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & ! Scalars INTEGER :: Dt_Sec INTEGER :: I, J, L - INTEGER :: L_CG, L_TP, N + INTEGER :: L_CG, L_TP, N, units REAL(fp) :: PEdge_Top, Esat REAL(fp) :: EsatA, EsatB, EsatC, EsatD REAL(fp) :: SPHU_kgkg, AVGW_moist, H, FRAC @@ -670,36 +670,31 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & ! following air quantity change is during GEOS-Chem initialization and ! in transport after the pressure fixer is applied IF ( UpdtMR ) THEN - !IF ( .not. PRESENT( update_mixing_ratio ) .or. update_mixing_ratio ) THEN - ! The concentration update formula works only for dry mixing ratios ! (kg/kg or v/v) so check if units are correct - IF ( State_Chm%Spc_Units == KG_SPECIES_PER_KG_DRY_AIR .or. & - State_Chm%Spc_Units == MOLES_SPECIES_PER_MOLES_DRY_AIR ) THEN - - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N ) - DO N = 1, State_Chm%nSpecies - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(n)%Conc(I,J,L) * & - State_Met%DP_DRY_PREV(I,J,L) / & - State_Met%DELP_DRY(I,J,L) - ENDDO - ENDDO - ENDDO - ENDDO - !$OMP END PARALLEL DO - ELSE - ErrMsg = 'Incorrect species units: ' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED ) & + !$OMP PRIVATE( I, J, L, N ) + DO N = 1, State_Chm%nSpecies + + units = State_Chm%Species(N)%Units + + IF ( units == KG_SPECIES_PER_KG_DRY_AIR .or. & + units == MOLES_SPECIES_PER_MOLES_DRY_AIR ) THEN + DO L = 1, State_Grid%NZ + DO J = 1, State_Grid%NY + DO I = 1, State_Grid%NX + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(n)%Conc(I,J,L) * & + State_Met%DP_DRY_PREV(I,J,L) / & + State_Met%DELP_DRY(I,J,L) + ENDDO + ENDDO + ENDDO + ENDIF + ENDDO + !$OMP END PARALLEL DO ENDIF END SUBROUTINE AIRQNT diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index 3fcd79965..82f7556bf 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -421,13 +421,6 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & State_Met = State_Met, & RC = RC ) - ! Check units (ewl, 10/5/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - ErrMsg = 'Incorrect species units after Do_FullChem!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Error encountered in "Do_FullChem"!' diff --git a/GeosCore/hco_utilities_gc_mod.F90 b/GeosCore/hco_utilities_gc_mod.F90 index 8a96e1ada..9dee1cf89 100644 --- a/GeosCore/hco_utilities_gc_mod.F90 +++ b/GeosCore/hco_utilities_gc_mod.F90 @@ -1895,14 +1895,15 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & #endif ENDIF + ! Set the initial unit flags + State_Chm%Species(N)%Previous_Units = MOLES_SPECIES_PER_MOLES_DRY_AIR + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR + ! Free pointer SpcInfo => NULL() ENDDO - ! Set species units - State_Chm%Spc_Units = KG_SPECIES_PER_KG_DRY_AIR - ! If in debug mode, print out species min and max in [molec/cm3] IF ( Input_Opt%Verbose ) THEN diff --git a/GeosCore/ucx_mod.F90 b/GeosCore/ucx_mod.F90 index 1e7ea90df..f4003de78 100644 --- a/GeosCore/ucx_mod.F90 +++ b/GeosCore/ucx_mod.F90 @@ -3639,14 +3639,6 @@ SUBROUTINE SET_H2O_TRAC( SETSTRAT, Input_Opt, State_Chm, State_Grid, & ! Copy fields from INPUT_OPT LACTIVEH2O = Input_Opt%LACTIVEH2O - ! Check that species concentration units are as expected - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - MSG = 'Incorrect species units: ' // & - TRIM( UNIT_STR(State_Chm%Spc_Units) ) - LOC = 'UCX_MOD: SET_H2O_TRAC' - CALL GC_Error( TRIM(MSG), RC, TRIM(LOC) ) - ENDIF - ! Point to GEOS-Chem species array Spc => State_Chm%Species @@ -3658,6 +3650,16 @@ SUBROUTINE SET_H2O_TRAC( SETSTRAT, Input_Opt, State_Chm, State_Grid, & id_H2O = Ind_('H2O') ENDIF + ! Check that species concentration units are as expected + IF ( Spc(id_H2O)%Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN + MSG = 'Incorrect species units: ' // & + TRIM( UNIT_STR(Spc(id_H2O)%Units) ) + LOC = 'UCX_MOD: SET_H2O_TRAC' + CALL GC_Error( TRIM(MSG), RC, TRIM(LOC) ) + Spc => NULL() + RETURN + ENDIF + !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED ) & !$OMP PRIVATE( I, J, L, TPLEV, READ_SPHU, LEVCPT) & From 80c365027ed82fce88d4ecef3f351ea41de5e554 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 13 Dec 2023 16:18:57 -0500 Subject: [PATCH 019/331] Undo numerical optimizations in unitconv_mod.F90 GeosUtil/unitconv_mod.F90 - Undo numerical optimizations where we pull terms outside of the IJL loops. This seems to cause some numerical differences. We can return to this later. Signed-off-by: Bob Yantosca --- GeosUtil/unitconv_mod.F90 | 180 ++++++++++++++++---------------------- 1 file changed, 77 insertions(+), 103 deletions(-) diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index c95cbb736..ef25685d4 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -209,6 +209,13 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & CALL Timer_Start( "Unit conversions", RC ) ENDIF + ! Error check the mapping argument + IF ( SIZE(mapping) < 1 ) THEN + errMsg = 'The "mapping" argument has zero elements!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + ! Initialize RC = GC_SUCCESS in_units = State_Chm%Species(mapping(1))%Units @@ -653,7 +660,7 @@ SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, & ! Scalars INTEGER :: I, J INTEGER :: L, N, S - REAL(fp) :: MW_g, MW_ratio + REAL(fp) :: MW_g ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -697,7 +704,7 @@ SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, & ! Loop over species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_g, MW_ratio ) + !$OMP PRIVATE( I, J, L, N, S, MW_g ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -706,21 +713,18 @@ SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, & ! Molecular weight for the species [g] MW_g = State_Chm%SpcData(N)%Info%MW_g - ! Compute the ratio (MW air / MW species) outside of the IJL loop - MW_ratio = ( AIRMW / MW_g ) - ! Loop over grid boxes and do unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * MW_ratio + State_Chm%Species(N)%Conc(I,J,L) * ( AIRMW / MW_g ) #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * MW_ratio + State_Chm%SpeciesAdj(I,J,L,N) * ( AIRMW / MW_g ) ENDIF #endif ENDDO @@ -778,7 +782,7 @@ SUBROUTINE ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, & ! ! Scalars INTEGER :: I, J, L, N, S - REAL(fp) :: MW_g, MW_ratio + REAL(fp) :: MW_g ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -821,7 +825,7 @@ SUBROUTINE ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_g, MW_ratio ) + !$OMP PRIVATE( I, J, L, N, S, MW_g ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -830,21 +834,18 @@ SUBROUTINE ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, & ! Molecular weight for the species [g] MW_g = State_Chm%SpcData(N)%Info%MW_g - ! Compute the ratio (MW air / MW species) outside of the IJL loop - MW_ratio = ( AIRMW / MW_g ) - ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / MW_ratio + State_Chm%Species(N)%Conc(I,J,L) / ( AIRMW / MW_g ) #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) / MW_ratio + State_Chm%SpeciesAdj(I,J,L,N) / ( AIRMW / MW_g ) ENDIF #endif ENDDO @@ -904,7 +905,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & ! ! Scalars INTEGER :: I, J, L, N, S - REAL(fp) :: convFac ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -928,7 +928,7 @@ SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, convFac ) + !$OMP PRIVATE( I, J, L, N, S ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -938,16 +938,15 @@ SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - - convFac = ( 1.0_fp - ( State_Met%SPHU(I,J,L) * 1.0e-3_fp ) ) - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * convFac + State_Chm%Species(N)%Conc(I,J,L) * & + ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * convFac + State_Chm%SpeciesAdj(I,J,L,N) * & + ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) ENDIF #endif @@ -1041,16 +1040,15 @@ SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - - convFac = ( 1.0_fp - ( State_Met%SPHU(I,J,L) * 1.0e-3_fp ) ) - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / convFac + State_Chm%Species(N)%Conc(I,J,L) / & + ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) / convFac + State_Chm%SpeciesAdj(I,J,L,N) / & + ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) ENDIF #endif ENDDO @@ -1109,7 +1107,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, State_Met, & ! ! Scalars INTEGER :: I, J, L, N, S - REAL(fp) :: convFac ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -1144,7 +1141,7 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, State_Met, & !======================================================================== !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, convFac ) + !$OMP PRIVATE( I, J, L, N, S ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -1155,15 +1152,15 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, State_Met, & DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - convFac = ( g0_100 * State_Met%DELP_DRY(I,J,L) ) - - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * convFac + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * & + ( g0_100 * State_Met%DELP_DRY(I,J,L) ) #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * convFac + State_Chm%SpeciesAdj(I,J,L,N) * & + ( g0_100 * State_Met%DELP_DRY(I,J,L) ) ENDIF #endif ENDDO @@ -1222,7 +1219,6 @@ SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! ! Scalars INTEGER :: I, J, L, N, S - REAL(fp) :: convFac ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -1258,7 +1254,7 @@ SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, State_Met, & !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, convFac ) + !$OMP PRIVATE( I, J, L, N, S ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -1267,16 +1263,15 @@ SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, State_Met, & DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - - convFac = ( 1.0_fp / ( g0_100 * State_Met%DELP_DRY(I,J,L) ) ) - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * convFac + State_Chm%Species(N)%Conc(I,J,L) * & + ( 1.0e+0_fp / ( g0_100 * State_Met%DELP_DRY(I,J,L) ) ) #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * convFac + State_Chm%SpeciesAdj(I,J,L,N) * & + ( 1.0e+0_fp / ( g0_100 * State_Met%DELP_DRY(I,J,L) ) ) ENDIF #endif @@ -1336,7 +1331,7 @@ SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & ! ! Scalars INTEGER :: I, J, L, N, S - REAL(fp) :: avoTerm, convFac, MW_kg + REAL(fp) :: MW_kg ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -1382,7 +1377,7 @@ SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_kg, convFac ) + !$OMP PRIVATE( I, J, L, N, S, MW_kg ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -1391,23 +1386,19 @@ SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & ! Molecular weight for the species [kg] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp - ! Compute AVO/ MW_kg / 1e6 term outside the IJL loop - avoTerm = ( AVO / MW_kg ) / 1.0e+6_fp - ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - - convFac = ( State_Met%AIRDEN(I,J,L) * avoTerm ) - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * convFac + State_Chm%Species(N)%Conc(I,J,L) * State_Met%AIRDEN(I,J,L) & + * ( AVO / MW_kg ) / 1e+6_fp #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * convFac + State_Chm%SpeciesAdj(I,J,L,N) * State_Met%AIRDEN(I,J,L) & + * ( AVO / MW_kg ) / 1e+6_fp ENDIF #endif ENDDO @@ -1465,7 +1456,7 @@ SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! INTEGER :: I, J, L, N, S - REAL(fp) :: avoTerm, convFac, MW_kg + REAL(fp) :: MW_kg CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== @@ -1513,7 +1504,7 @@ SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! Loop over species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_kg, avoTerm, convFac ) + !$OMP PRIVATE( I, J, L, N, S, MW_kg ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -1522,23 +1513,19 @@ SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! Molecular weight for the species [kg] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp - ! Compute this term outside of the IJL loop - avoTerm = ( 1.0e+6_fp / ( AVO / MW_kg ) ) - ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - - convFac = ( avoTerm / State_Met%AIRDEN(I,J,L) ) - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * convFac - + State_Chm%Species(N)%Conc(I,J,L) * 1e+6_fp / ( AVO / MW_kg ) & + / State_Met%AIRDEN(I,J,L) + #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * convFac + State_Chm%SpeciesAdj(I,J,L,N) * 1e+6_fp / ( AVO / MW_kg ) & + / State_Met%AIRDEN(I,J,L) ENDIF #endif ENDDO @@ -1601,7 +1588,7 @@ SUBROUTINE ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! INTEGER :: I, J, L, N, S - REAL(fp) :: convFac, MW_g, MW_ratio + REAL(fp) :: MW_g CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== @@ -1643,7 +1630,7 @@ SUBROUTINE ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, State_Met, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_g, MW_ratio, convFac ) + !$OMP PRIVATE( I, J, L, N, S, MW_g ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -1652,23 +1639,19 @@ SUBROUTINE ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, State_Met, & ! Molecular weight for the species [g] MW_g = State_Chm%SpcData(N)%Info%MW_g - ! Compute this term outside of the IJL loop - MW_ratio = ( AIRMW / MW_g ) - ! Loop over grid boxes convert units DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - - convFac = ( State_Met%AD(I,J,L) / MW_ratio ) - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * convFac - + State_Chm%Species(N)%Conc(I,J,L) * State_Met%AD(I,J,L) & + / ( AIRMW / MW_g ) + #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * convFac + State_Chm%SpeciesAdj(I,J,L,N) * State_Met%AD(I,J,L) & + / ( AIRMW / MW_g ) ENDIF #endif ENDDO @@ -1731,7 +1714,7 @@ SUBROUTINE ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, State_Met, & ! ! Scalars INTEGER :: I, J, L, N, S - REAL(fp) :: convFac, MW_g, MW_ratio + REAL(fp) :: MW_g ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -1775,7 +1758,7 @@ SUBROUTINE ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, State_Met, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_g, MW_ratio, convFac ) + !$OMP PRIVATE( I, J, L, N, S, MW_g ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -1784,23 +1767,18 @@ SUBROUTINE ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, State_Met, & ! Molecular weight for the species [g] MW_g = State_Chm%SpcData(N)%Info%MW_g - ! Compute this term outside the IJL loop - MW_ratio = ( AIRMW / MW_g ) - ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - - convFac = ( MW_ratio / State_Met%AD(I,J,L) ) - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * convFac - + State_Chm%Species(N)%Conc(I,J,L) * ( AIRMW / MW_g ) & + / State_Met%AD(I,J,L) #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * convFac + State_Chm%SpeciesAdj(I,J,L,N) * ( AIRMW / MW_g ) & + / State_Met%AD(I,J,L) #endif ENDDO ENDDO @@ -2086,7 +2064,7 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & ! ! Scalars INTEGER :: I, J, L, N, S - REAL(fp) :: avoTerm, convFac, MW_kg + REAL(fp) :: MW_kg ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -2135,7 +2113,7 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_kg, avoTerm , convFac ) + !$OMP PRIVATE( I, J, L, N, S, MW_kg ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -2144,23 +2122,21 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & ! Molecular weight for the species [g] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp - ! Compute this term ouside the IJL loop - avoTerm = ( AVO / MW_kg ) - ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - - convFac = ( State_Met%AIRVOL(I,J,L) * 1.0e+6_fp ) / avoTerm - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / convFac + State_Chm%Species(N)%Conc(I,J,L) / ( AVO / MW_kg ) & + * ( State_Met%AIRVOL(I,J,L) & + * 1e+6_fp ) #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * convFac + State_Chm%SpeciesAdj(I,J,L,N) / ( AVO / MW_kg ) & + * ( State_Met%AIRVOL(I,J,L) & + * 1e+6_fp ) ENDIF #endif ENDDO @@ -2219,7 +2195,7 @@ SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & ! ! Scalars INTEGER :: I, J, L, N, S - REAL(fp) :: avoTerm, convFac, MW_kg + REAL(fp) :: MW_kg ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -2263,29 +2239,27 @@ SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, MW_kg, avoTerm, convFac ) + !$OMP PRIVATE( I, J, L, N, MW_kg ) DO N = 1, State_Chm%nSpecies ! Molecular weight for the species [kg] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp - ! Compute this term outside the IJL loop - avoTerm = ( AVO / MW_kg ) - ! Loop over grid boxes and do the unit conversion DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - - convFac = avoTerm / ( State_Met%AIRVOL(I,J,L) * 1.0e+6_fp ) - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * convFac + State_Chm%Species(N)%Conc(I,J,L) * ( AVO / MW_kg ) & + / ( State_Met%AIRVOL(I,J,L) & + * 1e+6_fp ) #ifdef ADJOINT IF ( isAdjoint ) THEN State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * convFac + State_Chm%SpeciesAdj(I,J,L,N) * ( AVO / MW_kg ) & + / ( State_Met%AIRVOL(I,J,L) & + * 1e+6_fp ) ENDIF #endif ENDDO From 4ae747deaa862a573f3f7a8ee5ce778eabdd8a82 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 13 Dec 2023 17:19:24 -0500 Subject: [PATCH 020/331] Make Check_Units and Check_Previous_Units public routines GeosUtil/unitconv_mod.F90 - Now declare Check_Units and Check_Previous_Units as PUBLIC, so that they can be seen outside the module - Rename the "unit" argument to "units" in both Check_Units and Check_Previous_Units routines, for consistency Signed-off-by: Bob Yantosca --- GeosUtil/unitconv_mod.F90 | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index ef25685d4..43e012697 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -54,6 +54,8 @@ MODULE UnitConv_Mod ! ! !PUBLIC MEMBER FUNCTIONS: ! + PUBLIC :: Check_Units + PUBLIC :: Check_Previous_Units PUBLIC :: Convert_Spc_Units PUBLIC :: Print_Global_Species_Kg @@ -69,7 +71,6 @@ MODULE UnitConv_Mod ! ! !PRIVATE MEMBER FUNCTIONS: ! - PRIVATE :: Check_Units !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! KG/KG DRY <-> V/V DRY @@ -2661,12 +2662,12 @@ END SUBROUTINE ConvertBox_Kg_to_Kgm2 !\\ ! !INTERFACE: ! - SUBROUTINE Check_Units( State_Chm, mapping, unit, RC ) + SUBROUTINE Check_Units( State_Chm, mapping, units, RC ) ! ! !INPUT PARAMETERS: ! INTEGER, INTENT(IN) :: mapping(:) ! Mapping to species Id - INTEGER, INTENT(IN) :: unit ! Input unit flag + INTEGER, INTENT(IN) :: units ! Input units flag ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -2701,9 +2702,9 @@ SUBROUTINE Check_Units( State_Chm, mapping, unit, RC ) thisLoc = ' -> at Check_Units (in module GeosUtil/unitconv_mod.F90)' ! Make sure all species start with the proper unit, or throw an error - IF ( .not. ALL( State_Chm%Species(mapping)%Units == unit ) ) THEN + IF ( .not. ALL( State_Chm%Species(mapping)%Units == units ) ) THEN errMsg = 'All species do not have Units = ' // & - TRIM( UNIT_STR( unit ) ) + TRIM( UNIT_STR( units ) ) CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -2723,12 +2724,12 @@ END SUBROUTINE Check_Units !\\ ! !INTERFACE: ! - SUBROUTINE Check_Previous_Units( State_Chm, mapping, unit, RC ) + SUBROUTINE Check_Previous_Units( State_Chm, mapping, units, RC ) ! ! !INPUT PARAMETERS: ! INTEGER, INTENT(IN) :: mapping(:) ! Mapping to species Id - INTEGER, INTENT(IN) :: unit ! Input unit flag + INTEGER, INTENT(IN) :: units ! Input unit flag ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -2764,9 +2765,9 @@ SUBROUTINE Check_Previous_Units( State_Chm, mapping, unit, RC ) ' -> at Check_PreviousUnits (in module GeosUtil/unitconv_mod.F90)' ! Make sure all species start with the proper unit, or throw an error - IF ( .not. ALL( State_Chm%Species(mapping)%Previous_Units == unit ) ) THEN + IF ( .not. ALL( State_Chm%Species(mapping)%Previous_Units == units ) ) THEN errMsg = 'All species do not have Previous_Units = ' // & - TRIM( UNIT_STR( unit ) ) + TRIM( UNIT_STR( units ) ) CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF From 2d5ca2ac0458c7157dd8e4e048a0794bebde7844 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 13 Dec 2023 17:27:56 -0500 Subject: [PATCH 021/331] Remove references to State_Chm%Spc_Units GeosCore/aerosol_mod.F90 - State_Chm is now INTENT(INOUT) in routine Set_Aermass_Diagnostic - Now call Check_Units; Remove reference to State_Chm%Spc_Units GeosCore/chemistry_mod.F90 GeosCore/diagnostics_mod.F90 GeosCore/set_boundary_conditions.F90 - Now call Check_Units; Remove reference to State_Chm%Spc_Units Headers/state_chm_mod.F90 - Remove Spc_Units from TYPE(ChmState) History/history_mod.F90 - Replace State_Chm%Spc_Units with State_Chm%Species(1)%Units Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 ++ GeosCore/aerosol_mod.F90 | 15 ++++++--- GeosCore/chemistry_mod.F90 | 6 ---- GeosCore/diagnostics_mod.F90 | 40 +++++++++++++++++------- GeosCore/set_boundary_conditions_mod.F90 | 27 +++++++++------- Headers/state_chm_mod.F90 | 3 -- History/history_mod.F90 | 2 +- 7 files changed, 58 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80cb96795..688f841c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,12 +10,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Now read the Hg restart file from `ExtData/GEOSCHEM_RESTARTS/v2023-12` +- Updated routines in `GeosUtil/unitconv_mod.F90` for species-specific unit conversion ### Fixed - Added missing units in comments of `KPP/fullchem/commonIncludeVars.H` ### Removed - Reduced timers saved out to essential list used for benchmarking model performance +- Removed `State_Chm%Spc_Units`; this is now superseded by `State_Chm%Species(:)%Units` ## [14.2.3] - 2023-12-01 ### Added diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 393275fb4..57d2c295c 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -2663,12 +2663,12 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & ! !INPUT PARAMETERS: ! TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry State object TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology State object ! ! !INPUT/OUTPUT PARAMETERS: ! + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry State object TYPE(DgnState), INTENT(INOUT) :: State_Diag ! Diagnostic State object ! ! !OUTPUT PARAMETERS: @@ -2730,10 +2730,15 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & thisLoc = & ' -> at Set_AerMass_Diagnostic (in module GeosCore/aerosol_mod.F90)' - ! Check that species units are kg/kg dry air - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - errMsg = 'Incorrect species units: ' // UNIT_STR( State_Chm%Spc_Units ) - CALL GC_Error( errMsg, RC, thisLoc ) + ! Verify that incoming State_Chm%Species units are kg/kg dry air. + CALL Check_Units( & + State_Chm = State_Chm, & + mapping = State_Chm%Map_All, & + units = KG_SPECIES_PER_KG_DRY_AIR, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_VVDry!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index 82f7556bf..abda2fa9f 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -659,12 +659,6 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & State_Met = State_Met, & RC = RC ) - ! Check units (ewl, 10/5/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - ErrMsg = 'Incorrect species units after AEROSOL_CONC' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - ENDIF - ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Error encountered in "Aerosol_Conc"!' diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index 22ae5ce55..b05aa18cb 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -465,9 +465,13 @@ SUBROUTINE Set_SpcAdj_Diagnostic( Input_Opt, State_Chm, State_Diag, & ThisLoc = ' -> Set_SpcAdj_Diagnostic (in GeosCore/diagnostics_mod.F90)' ! Verify that incoming State_Chm%Species units are kg/kg dry air. - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - ErrMsg = 'Incorrect species units in Set_SpcAdj_Diags_VVDry!' // & - trim( UNIT_STR(State_Chm%Spc_Units) ) + CALL Check_Units( & + State_Chm = State_Chm, & + mapping = State_Chm%Map_All, & + units = KG_SPECIES_PER_KG_DRY_AIR, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_VVDry!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF @@ -621,7 +625,12 @@ SUBROUTINE Set_SpcConc_Diags_VVDry( Input_Opt, State_Chm, State_Diag, & ' -> at Set_SpcConc_Diags_VVDry (in GeosCore/diagnostics_mod.F90)' ! Verify that incoming State_Chm%Species units are kg/kg dry air. - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN + CALL Check_Units( & + State_Chm = State_Chm, & + mapping = State_Chm%Map_All, & + units = KG_SPECIES_PER_KG_DRY_AIR, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_VVDry!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN @@ -875,8 +884,13 @@ SUBROUTINE Set_SpcConc_Diags_MND ( Input_Opt, State_Chm, State_Diag, & ' -> at Set_SpcConc_Diags_MND (in GeosCore/diagnostics_mod.F90)' ! Verify that incoming State_Chm%Species units are kg/kg dry air. - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_MND!' + CALL Check_Units( & + State_Chm = State_Chm, & + mapping = State_Chm%Map_All, & + units = KG_SPECIES_PER_KG_DRY_AIR, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_VVDry!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF @@ -1004,11 +1018,15 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Grid, & colSum = 0.0_f8 spcMass = 0.0_f8 - ! Exit if concentrations are not in [kg/kg dry] - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - errMsg = 'State_Chm%Species units must be kg/kg dry. ' // & - 'Incorrect units: '// TRIM( UNIT_STR(State_Chm%Spc_Units ) ) - CALL GC_Error( errMsg, RC, ThisLoc ) + ! Verify that incoming State_Chm%Species units are kg/kg dry air. + CALL Check_Units( & + State_Chm = State_Chm, & + mapping = State_Chm%Map_All, & + units = KG_SPECIES_PER_KG_DRY_AIR, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_VVDry!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF diff --git a/GeosCore/set_boundary_conditions_mod.F90 b/GeosCore/set_boundary_conditions_mod.F90 index e1b512278..719cc3156 100644 --- a/GeosCore/set_boundary_conditions_mod.F90 +++ b/GeosCore/set_boundary_conditions_mod.F90 @@ -117,19 +117,24 @@ SUBROUTINE Set_Boundary_Conditions( Input_Opt, State_Chm, State_Grid, RC ) ! simulation. Otherwise the BoundaryCond field won't be allocated. IF ( .not. State_Grid%NestedGrid ) RETURN - ! Ensure species array is in kg/kg as State_Chm%BoundaryCond is in kg/kg dry - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - IF ( Input_Opt%amIRoot ) THEN + ! Verify that incoming State_Chm%Species units are kg/kg dry air. + CALL Check_Units( & + State_Chm = State_Chm, & + mapping = State_Chm%Map_All, & + units = KG_SPECIES_PER_KG_DRY_AIR, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + IF ( Input_Opt%amIRoot ) THEN WRITE(6, '(a)') 'Unit check failure: Current units are ' // & - UNIT_STR(State_Chm%Spc_Units) // & + UNIT_STR(State_Chm%Species(1)%Units) // & ', expected kg/kg dry' - ENDIF - errMsg = 'Unit check failure: Cannot apply nested-grid boundary ' // & - 'conditions if units are not kg/kg dry. Your run may ' // & - ' have failed previous to this error.' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF + ENDIF + errMsg = 'Unit check failure: Cannot apply nested-grid boundary ' // & + 'conditions if units are not kg/kg dry. Your run may ' // & + ' have failed previous to this error.' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF !========================================================================= ! Loop over grid boxes and apply BCs to the specified buffer zone diff --git a/Headers/state_chm_mod.F90 b/Headers/state_chm_mod.F90 index 9be669742..b0bd32098 100644 --- a/Headers/state_chm_mod.F90 +++ b/Headers/state_chm_mod.F90 @@ -121,8 +121,6 @@ MODULE State_Chm_Mod TYPE(SpcConc), POINTER :: Species (: ) ! Vector for species ! concentrations ! [kg/kg dry air] - INTEGER :: Spc_Units ! Species units - #ifdef ADJOINT REAL(fp), POINTER :: SpeciesAdj (:,:,:,:) ! Species adjoint variables REAL(fp), POINTER :: CostFuncMask(:,:,:) ! cost function volume mask @@ -490,7 +488,6 @@ SUBROUTINE Zero_State_Chm( State_Chm, RC ) ! Species-based quantities State_Chm%SpcData => NULL() State_Chm%Species => NULL() - State_Chm%Spc_Units = 0 State_Chm%BoundaryCond => NULL() #ifdef ADJOINT diff --git a/History/history_mod.F90 b/History/history_mod.F90 index 2ca4ebc2d..ee7f46934 100644 --- a/History/history_mod.F90 +++ b/History/history_mod.F90 @@ -2982,7 +2982,7 @@ SUBROUTINE History_Write( Input_Opt, State_Chm, State_Diag, RC ) ! Save the units of State_Chm%Species(:)%Conc in the container, ! so that we can redefine the unit string from "TBD". ! Copy into a temp variable so that Gfortran won't choke. - TmpUnits = UNIT_STR(State_Chm%Spc_Units) + TmpUnits = UNIT_STR(State_Chm%Species(1)%Units) Container%Spc_Units = TmpUnits !----------------------------------------------------------------- From f4e9de4b36ec6137fd9660b67e8c68ac3639a5db Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Thu, 14 Dec 2023 12:09:54 -0500 Subject: [PATCH 022/331] first attempt to rewrite geos_analysis to remove all MAPL/ESMF dependencies --- Headers/state_chm_mod.F90 | 2 +- Headers/state_grid_mod.F90 | 9 ++ Interfaces/GCHP/Chem_GridCompMod.F90 | 24 ++-- Interfaces/GEOS/geos_analysis.F90 | 159 +++++++++++++++++++++++---- 4 files changed, 161 insertions(+), 33 deletions(-) diff --git a/Headers/state_chm_mod.F90 b/Headers/state_chm_mod.F90 index c01f35197..2ab5006a8 100644 --- a/Headers/state_chm_mod.F90 +++ b/Headers/state_chm_mod.F90 @@ -348,7 +348,7 @@ MODULE State_Chm_Mod TYPE(dictionary_t) :: RegDict ! Registry lookup table !----------------------------------------------------------------------- - ! Carbon stuff for GEOS + ! GEOS specific fields !----------------------------------------------------------------------- #if defined( MODEL_GEOS ) ! CO mesosphere boundary diff --git a/Headers/state_grid_mod.F90 b/Headers/state_grid_mod.F90 index 852fa415a..f381179f2 100644 --- a/Headers/state_grid_mod.F90 +++ b/Headers/state_grid_mod.F90 @@ -86,6 +86,11 @@ MODULE State_Grid_Mod REAL(fp), POINTER :: YSIN (:,:) ! SIN( lat edges ) REAL(fp), POINTER :: Area_M2 (:,:) ! Grid box area [m2] +#if defined( MODEL_GEOS ) + ! Are we in the predictor step? + LOGICAL :: PredictorIsActive +#endif + END TYPE GrdState ! ! !REMARKS: @@ -196,6 +201,10 @@ SUBROUTINE Init_State_Grid( Input_Opt, State_Grid, RC ) State_Grid%YSIN => NULL() State_Grid%Area_M2 => NULL() +#if defined( MODEL_GEOS ) + State_Grid%PredictorIsActive = .FALSE. +#endif + END SUBROUTINE Init_State_Grid !EOC !------------------------------------------------------------------------------ diff --git a/Interfaces/GCHP/Chem_GridCompMod.F90 b/Interfaces/GCHP/Chem_GridCompMod.F90 index c572e78be..8d76f0f82 100644 --- a/Interfaces/GCHP/Chem_GridCompMod.F90 +++ b/Interfaces/GCHP/Chem_GridCompMod.F90 @@ -2246,18 +2246,19 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) ! Skip GCC during replay, predictor step (posturm and cakelle2) !======================================================================= #if defined( MODEL_GEOS ) - IF ( SkipReplayGCC ) THEN - CALL ESMF_ClockGetAlarm(CLOCK, "PredictorActive", PredictorAlarm, RC=STATUS) - VERIFY_(STATUS) + CALL ESMF_ClockGetAlarm(CLOCK, "PredictorActive", PredictorAlarm, RC=STATUS) + VERIFY_(STATUS) - PredictorActive = ESMF_AlarmIsRinging( PredictorAlarm, RC=STATUS ) - VERIFY_(STATUS) + PredictorActive = ESMF_AlarmIsRinging( PredictorAlarm, RC=STATUS ) + VERIFY_(STATUS) - IF ( PredictorActive ) THEN - IsRunTime = .FALSE. - IF ( am_I_root ) write(*,*) ' --- Skipping GCC during Predictor Step ' - END IF + IF ( PredictorActive .AND. SkipReplayGCC ) THEN + IsRunTime = .FALSE. + IF ( am_I_root ) write(*,*) ' --- Skipping GCC during Predictor Step ' END IF + + ! Add flag to State_Grid object (cakelle2, 12/14/2023) + State_Grid%PredictorIsActive = PredictorActive #endif #ifdef ADJOINT @@ -2899,8 +2900,9 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) IF ( PHASE == ANAPHASE ) THEN ! Call GEOS analysis routine - CALL GEOS_AnaRun( GC, Import, INTSTATE, Export, Clock, & - Input_Opt, State_Met, State_Chm, Q, PLE, TROPP, __RC__ ) + CALL GEOS_AnaRun( GC, Import, INTSTATE, Export, Clock, & + Input_Opt, State_Met, State_Chm, State_Grid, & + State_Diag, Q, PLE, TROPP, __RC__ ) ! GEOS Diagnostics. This includes the 'default' GEOS-Chem diagnostics. CALL GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, Input_Opt, & diff --git a/Interfaces/GEOS/geos_analysis.F90 b/Interfaces/GEOS/geos_analysis.F90 index 7a197c1dc..ddd305af3 100644 --- a/Interfaces/GEOS/geos_analysis.F90 +++ b/Interfaces/GEOS/geos_analysis.F90 @@ -16,9 +16,16 @@ MODULE GEOS_Analysis ! ! !USES: ! + ! ESMF/MAPL USE ESMF USE MAPL_Mod + ! GEOS-Chem + USE Error_Mod + USE ErrCode_Mod + USE Precision_Mod + USE HCO_Error_Mod + IMPLICIT NONE PRIVATE ! @@ -63,6 +70,7 @@ MODULE GEOS_Analysis CHARACTER(LEN=ESMF_MAXSTR) :: FileTemplate CHARACTER(LEN=ESMF_MAXSTR) :: FileVarName CHARACTER(LEN=ESMF_MAXSTR) :: FileVarUnit + CHARACTER(LEN=ESMF_MAXSTR) :: FldNameHco INTEGER :: FileVarDry LOGICAL :: ApplyIncrement INTEGER :: IAU @@ -253,13 +261,17 @@ END SUBROUTINE GEOS_AnaInit ! !INTERFACE: ! SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & - Input_Opt, State_Met, State_Chm, Q, PLE, TROPP, RC ) + Input_Opt, State_Met, State_Chm, State_Grid, & + State_Diag, Q, PLE, TROPP, RC ) ! ! !USES: ! USE Input_Opt_Mod, ONLY : OptInput USE State_Chm_Mod, ONLY : ChmState ! Chemistry State obj USE State_Met_Mod, ONLY : MetState ! Meteorology State obj + USE State_Grid_Mod, ONLY : GrdState ! Meteorology State obj + USE State_Diag_Mod, ONLY : DgnState ! Meteorology State obj + USE UnitConv_Mod, ONLY : Convert_Spc_Units ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -271,6 +283,8 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & TYPE(OptInput) :: Input_Opt TYPE(MetState) :: State_Met TYPE(ChmState) :: State_Chm + TYPE(GrdState) :: State_Grid + TYPE(DgnState) :: State_Diag REAL, INTENT(INOUT) :: Q(:,:,:) REAL, POINTER :: PLE(:,:,:) REAL, POINTER :: TROPP(:,:) @@ -293,30 +307,50 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & INTEGER :: ispec CHARACTER(LEN=ESMF_MAXSTR) :: compName CHARACTER(LEN=ESMF_MAXSTR) :: Iam + CHARACTER(LEN=63) :: OrigUnit + CHARACTER(LEN=255) :: ErrMsg, ThisLoc INTEGER :: STATUS !======================================================================= ! GEOS_AnaRun begins here !======================================================================= - ! Do nothing if - ! Get configuration CALL ESMF_GridCompGet( GC, name=compName, __RC__ ) ! callback name Iam = TRIM(compName)//'::GEOS_AnaRun' + ThisLoc = ' -> GEOS-Chem AnaRun' + + ! Convert to total mixing ratio + CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & + 'kg/kg total', STATUS, OrigUnit=OrigUnit ) + IF ( STATUS /= GC_SUCCESS ) THEN + ErrMsg = 'Unit conversion error (start)!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF ! Do analysis for all analysis species IF ( nAnaSpec > 0 .AND. ASSOCIATED(AnaConfig) ) THEN DO ispec=1,nAnaSpec IF ( AnaConfig(ispec)%Active ) THEN - CALL DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & - Input_Opt, State_Met, State_Chm, Q, PLE, TROPP, __RC__ ) + CALL DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & + Input_Opt, State_Met, State_Chm, State_Grid, & + State_Diag, Q, PLE, TROPP, __RC__ ) ENDIF ENDDO ENDIF + ! Convert species back to original unit + CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & + OrigUnit, STATUS ) + IF ( STATUS /= GC_SUCCESS ) THEN + ErrMsg = 'Unit conversion error (end)!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF + ! Successful return RETURN_(ESMF_SUCCESS) @@ -384,14 +418,18 @@ END SUBROUTINE GEOS_AnaFinal ! !INTERFACE: ! SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & - Input_Opt, State_Met, State_Chm, Q, PLE, TROPP, RC ) + Input_Opt, State_Met, State_Chm, State_Grid, State_Diag, Q, PLE, TROPP, RC ) ! ! !USES: ! USE Input_Opt_Mod, ONLY : OptInput USE State_Chm_Mod, ONLY : ChmState ! Chemistry State obj USE State_Met_Mod, ONLY : MetState ! Meteorology State obj + USE State_Grid_Mod, ONLY : GrdState ! Grid State obj + USE State_Diag_Mod, ONLY : DgnState ! Diagnostics State obj + USE HCO_Utilities_GC_Mod, ONLY : HCO_GC_EvalFld USE TIME_MOD, ONLY : GET_TS_CHEM + Use PhysConstants, ONLY : AIRMW ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -404,6 +442,8 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & TYPE(OptInput) :: Input_Opt TYPE(MetState) :: State_Met TYPE(ChmState) :: State_Chm + TYPE(GrdState) :: State_Grid + TYPE(DgnState) :: State_Diag REAL, INTENT(INOUT) :: Q(:,:,:) REAL, POINTER :: PLE(:,:,:) REAL, POINTER :: TROPP(:,:) @@ -436,14 +476,14 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & REAL, POINTER :: DiagInc(:,:,:), DiagIncFrac(:,:,:) REAL, ALLOCATABLE :: DiagInc2(:,:,:,:), DiagIncFrac2(:,:,:,:), DiagSpcRatio(:,:,:,:) REAL, POINTER :: DiagMsk2d(:,:), DiagMsk3d(:,:,:) - REAL, POINTER :: AnaPtr(:,:,:), IncPtr(:,:,:), ObsHour(:,:) + REAL, POINTER :: AnaPtrExt(:,:,:), IncPtr(:,:,:), ObsHour(:,:) REAL, POINTER :: Ptr2D(:,:), Ptr3D(:,:,:) REAL, ALLOCATABLE :: SpcBkg(:,:,:), SpcAsm(:,:,:) REAL, ALLOCATABLE :: Spc2Bkg(:,:,:,:), Spc2Asm(:,:,:,:) TYPE(MAPL_SimpleBundle) :: VarBundle, VarBundleH CHARACTER(LEN=ESMF_MAXSTR) :: ifile, only_vars TYPE(ESMF_TIME) :: fileTime - INTEGER :: I, J, L, N, IM, JM, LM, LB, indSpc + INTEGER :: I, J, L, N, IM, JM, LM, indSpc INTEGER, ALLOCATABLE :: indSpc2(:) INTEGER :: UnitFlag, DryFlag, NNEG REAL :: OldRatio, NewRatio @@ -460,6 +500,11 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & CHARACTER(LEN=ESMF_MAXSTR) :: Iam INTEGER :: STATUS + ! temporary arrays + REAL, ALLOCATABLE :: Qtmp(:,:,:) + + REAL(hp), POINTER :: AnaPtr(:,:,:) + !======================================================================= ! DoAnalysis_ begins here !======================================================================= @@ -498,10 +543,11 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ENDIF ! Eventually skip during predictor step - IF ( iopt%SkipPredictor ) THEN - CALL ESMF_ClockGetAlarm(Clock, "PredictorActive", PredictorAlarm, __RC__) - PredictorActive = ESMF_AlarmIsRinging( PredictorAlarm, __RC__ ) - IF ( PredictorActive ) TimeForAna = .FALSE. + IF ( iopt%SkipPredictor .AND. State_Grid%PredictorIsActive ) THEN + TimeForAna = .FALSE. +! CALL ESMF_ClockGetAlarm(Clock, "PredictorActive", PredictorAlarm, __RC__) +! PredictorActive = ESMF_AlarmIsRinging( PredictorAlarm, __RC__ ) +! IF ( PredictorActive ) TimeForAna = .FALSE. ENDIF ! Initialize/reset diagnostics @@ -546,7 +592,19 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! Check if file exists (only if it's time to do the analysis HasBundle = .FALSE. + AnaPtr => NULL() IF ( TimeForAna ) THEN + + FldName = iopt%FldNameHco + ALLOCATE(AnaPtr(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) + CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, AnaPtr, STATUS, FOUND=HasBundle ) + ASSERT_(STATUS==GC_SUCCESS) + + ! flip temporarily to mimick direction of 3D field read through GetAnaBundle + AnaPtr = AnaPtr(:,:,State_Grid%NZ:1:-1) + +! ---------------------------------------------------------------------------------------------- + ! leave here temporarily, can remove once above works ok only_vars = TRIM(iopt%FileVarName) IF ( iopt%NonZeroIncOnly ) only_vars = TRIM(only_vars)//','//TRIM(iopt%FileVarNameInc) CALL GetAnaBundle_( am_I_Root, iopt%FileTemplate, 'AnaFld', yy, mm, dd, h, m, grid, & @@ -559,6 +617,7 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ONLY_VARS=TRIM(iopt%ObsHourName), voting=.TRUE., __RC__ ) ! ONLY_VARS=TRIM(iopt%ObsHourName), regrid_method=REGRID_METHOD_VOTE, __RC__ ) ENDIF +! ---------------------------------------------------------------------------------------------- ENDIF ! Apply increments if it's time to do so and if file exists @@ -574,7 +633,8 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! Get analysis field VarID = MAPL_SimpleBundleGetIndex ( VarBundle, TRIM(iopt%FileVarName), 3, RC=STATUS, QUIET=.TRUE. ) ASSERT_(RC==ESMF_SUCCESS .AND. VarID > 0) - AnaPtr => VarBundle%r3(VarID)%q + AnaPtrExt => VarBundle%r3(VarID)%q + IF ( iopt%nonZeroIncOnly ) THEN VarID = MAPL_SimpleBundleGetIndex ( VarBundle, TRIM(iopt%FileVarNameInc), 3, RC=STATUS, QUIET=.TRUE. ) ASSERT_(RC==ESMF_SUCCESS .AND. VarID > 0) @@ -623,7 +683,11 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & LM = SIZE(AnaPtr,3) ! Get lower bound of PLE array - LB = LBOUND(PLE,3) + !LB = LBOUND(PLE,3) + + ! TODO: Shadow fields, temporary for testing + ALLOCATE(Qtmp(IM,JM,LM)) + Qtmp = State_Met%SPHU(:,:,LM:1:-1) / 1000.0 ! Set dry flag DryFlag = iopt%FileVarDry @@ -650,12 +714,12 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! State_Chm%Species are in kg/kg total. Make local copy in v/v dry before applying increments. ! Also flip vertical axis to be consistent with GEOS ALLOCATE(SpcBkg(IM,JM,LM),SpcAsm(IM,JM,LM)) - SpcBkg(:,:,:) = State_Chm%Species(indSpc)%Conc(:,:,LM:1:-1) / (1.-Q) * MAPL_AIRMW / mwSpc + SpcBkg(:,:,:) = State_Chm%Species(indSpc)%Conc(:,:,LM:1:-1) / (1.-Qtmp) * AIRMW / mwSpc SpcAsm(:,:,:) = SpcBkg(:,:,:) IF ( iopt%nSpec2 > 0 ) THEN ALLOCATE(Spc2Bkg(IM,JM,LM,iopt%nSpec2),Spc2Asm(IM,JM,LM,iopt%nSpec2)) DO N=1,iopt%nSpec2 - Spc2Bkg(:,:,:,N) = State_Chm%Species(indSpc2(N))%Conc(:,:,LM:1:-1) / (1.-Q) * MAPL_AIRMW / mwSpc2(N) + Spc2Bkg(:,:,:,N) = State_Chm%Species(indSpc2(N))%Conc(:,:,LM:1:-1) / (1.-Qtmp) * AIRMW / mwSpc2(N) Spc2Asm(:,:,:,N) = Spc2Bkg(:,:,:,N) IF ( ALLOCATED(DiagSpcRatio) ) THEN WHERE ( SpcBkg > MinConc ) @@ -682,7 +746,16 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & DO L=LM,1,-1 ! Fraction of cell in troposphere / stratosphere - tropwgt = MAX(0.0,MIN(1.0,(PLE(I,J,L+LB)-TROPP(I,J))/(PLE(I,J,L+LB)-PLE(I,J,L+LB-1)))) + !tropwgt = MAX(0.0,MIN(1.0,(PLE(I,J,L+LB)-TROPP(I,J))/(PLE(I,J,L+LB)-PLE(I,J,L+LB-1)))) + tropwgt = MAX(0.0, & + MIN(1.0, & +! this is for L=1,LM: +! (State_Met%PEDGE(I,J,L)-State_Met%TROPP(I,J)) / & +! (State_Met%PEDGE(I,J,L)-State_Met%PEDGE(I,J,L+1)) & + (State_Met%PEDGE(I,J,LM-L+1)-State_Met%TROPP(I,J)) / & + (State_Met%PEDGE(I,J,LM-L+1)-State_Met%PEDGE(I,J,LM-L+2)) & + ) & + ) stratwgt = 1.0 - tropwgt ! Count number of cells since vertical loop start that have been (at least partly) in stratosphere @@ -719,10 +792,10 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! Get target concentration in v/v dry SpcAna = AnaPtr(I,J,L) - IF ( UnitFlag == 1 ) SpcAna = SpcAna * ( MAPL_AIRMW / mwSpc ) + IF ( UnitFlag == 1 ) SpcAna = SpcAna * ( AIRMW / mwSpc ) IF ( UnitFlag == 3 ) SpcAna = SpcAna * 1.0e-6 IF ( UnitFlag == 4 ) SpcAna = SpcAna * 1.0e-9 - IF ( DryFlag == 0 ) SpcAna = SpcAna / ( 1. - Q(I,J,L) ) + IF ( DryFlag == 0 ) SpcAna = SpcAna / ( 1. - Qtmp(I,J,L) ) ! Update field SpcNew = SpcBkg(I,J,L) @@ -823,10 +896,10 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! Pass back to State_Chm%Species array: flip vertical axis and convert v/v dry to kg/kg total ! ------------------------------------------------------------------------------------------- - State_Chm%Species(indSpc)%Conc(:,:,LM:1:-1) = SpcAsm(:,:,:) * (1.-Q) / MAPL_AIRMW * mwSpc + State_Chm%Species(indSpc)%Conc(:,:,LM:1:-1) = SpcAsm(:,:,:) * (1.-Qtmp) / AIRMW * mwSpc IF ( iopt%nSpec2 > 0 ) THEN DO N=1,iopt%nSpec2 - State_Chm%Species(indSpc2(N))%Conc(:,:,LM:1:-1) = Spc2Asm(:,:,:,N) * (1.-Q) / MAPL_AIRMW * mwSpc2(N) + State_Chm%Species(indSpc2(N))%Conc(:,:,LM:1:-1) = Spc2Asm(:,:,:,N) * (1.-Qtmp) / AIRMW * mwSpc2(N) ENDDO ENDIF @@ -859,12 +932,15 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & IF ( ALLOCATED(DiagSpcRatio) ) DEALLOCATE(DiagSpcRatio) IF ( ALLOCATED(indSpc2 ) ) DEALLOCATE(indSpc2) IF ( ALLOCATED(mwSpc2 ) ) DEALLOCATE(mwSpc2) + IF ( ASSOCIATED(AnaPtr ) ) DEALLOCATE(AnaPtr) IF ( ASSOCIATED(DiagInc ) ) DiagInc => NULL() IF ( ASSOCIATED(DiagIncFrac ) ) DiagIncFrac => NULL() IF ( ASSOCIATED(DiagMsk2d ) ) DiagMsk2d => NULL() IF ( ASSOCIATED(DiagMsk3d ) ) DiagMsk3d => NULL() + IF ( ALLOCATED(Qtmp ) ) DEALLOCATE(Qtmp) + IF ( HasBundle ) THEN CALL MAPL_SimpleBundleDestroy ( VarBundle, __RC__ ) IF ( iopt%UseObsHour ) CALL MAPL_SimpleBundleDestroy ( VarBundleH, __RC__ ) @@ -894,6 +970,9 @@ SUBROUTINE GetAnaTime_( Clock, Fwd, yy, mm, dd, h, m, s, RC ) ! !USES: ! USE TIME_MOD, ONLY : GET_TS_CHEM + USE TIME_MOD, ONLY : GET_TIME_AHEAD + USE TIME_MOD, ONLY : GET_NYMD, GET_NHMS + USE TIME_MOD, ONLY : YMD_EXTRACT ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -917,10 +996,16 @@ SUBROUTINE GetAnaTime_( Clock, Fwd, yy, mm, dd, h, m, s, RC ) TYPE(ESMF_TIME) :: currTime TYPE(ESMF_TimeInterval) :: tsChemInt REAL :: tsChem + INTEGER :: cNYMD, cNHMS + INTEGER :: fDate(2) + ! TODO: testing only + INTEGER :: Year, Month, Day, Hour, Minute, Second ! Begins here __Iam__('GetAnaTime_') +! TODO: remove ESMF stuff eventually +! --------------------------------------------------------------------------------------- ! Get current time CALL ESMF_ClockGet( Clock, currTime = currTime, __RC__ ) @@ -932,6 +1017,36 @@ SUBROUTINE GetAnaTime_( Clock, Fwd, yy, mm, dd, h, m, s, RC ) ENDIF CALL ESMF_TimeIntervalSet(tsChemInt, s_r8=real(tsChem,8), __RC__ ) CALL ESMF_TimeGet( currTime+tsChemInt, yy=yy, mm=mm, dd=dd, h=h, m=m, s=s, __RC__ ) +! --------------------------------------------------------------------------------------- + + ! Use GEOS-Chem routines instead + IF ( Fwd ) THEN + tsChem = GET_TS_CHEM() + fDate = GET_TIME_AHEAD(INT(tsChem)) + cNYMD = fDate(1) + cNHMS = fDate(2) + ELSE + cNYMD = GET_NYMD() + cNHMS = GET_NHMS() + ENDIF + CALL YMD_EXTRACT( cNYMD, Year, Month, Day ) + CALL YMD_EXTRACT( cNHMS, Hour, Minute, Second ) + + ! TODO: testing only + IF ( yy /= Year ) write(*,*) 'GetAnaTime_ year mismatch: ', yy, Year + IF ( mm /= Month ) write(*,*) 'GetAnaTime_ month mismatch: ', mm, Month + IF ( dd /= Day ) write(*,*) 'GetAnaTime_ day mismatch: ', dd, Day + IF ( h /= Hour ) write(*,*) 'GetAnaTime_ hour mismatch: ', h, Hour + IF ( m /= Minute) write(*,*) 'GetAnaTime_ minute mismatch: ', m, Minute + IF ( s /= Second) write(*,*) 'GetAnaTime_ second mismatch: ', s, Second + + yy = Year + mm = Month + dd = Day + h = Hour + m = Minute + s = Second + ! All done RETURN_(ESMF_SUCCESS) @@ -1189,6 +1304,7 @@ SUBROUTINE ReadSettings_( am_I_Root, GEOSCF, ispec, RC ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileTemplate, Label='FileTemplate:' , __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileVarName, Label='FileVarName:' , __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileVarUnit, Label='FileVarUnit:' , Default='v/v', __RC__ ) + CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FldNameHco, Label='FldNameHco:' , Default='N/A', __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileVarDry, Label='FileVarDry:' , Default=-1, __RC__ ) CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='ApplyIncrement:', Default=0, __RC__ ) AnaConfig(ispec)%ApplyIncrement = ( ThisInt == 1 ) @@ -1277,6 +1393,7 @@ SUBROUTINE ReadSettings_( am_I_Root, GEOSCF, ispec, RC ) WRITE(*,*) '- File template : ', TRIM(AnaConfig(ispec)%FileTemplate) WRITE(*,*) '- Variable name on file : ', TRIM(AnaConfig(ispec)%FileVarName) WRITE(*,*) '- Variable unit on file : ', TRIM(AnaConfig(ispec)%FileVarUnit) + WRITE(*,*) '- HEMCO field name : ', TRIM(AnaConfig(ispec)%FldNameHco) WRITE(*,*) '- Dry air flag (0=dry, 1=total) : ', AnaConfig(ispec)%FileVarDry IF ( AnaConfig(ispec)%UseObsHour ) THEN WRITE(*,*) '- Observation hour name on file : ', TRIM(AnaConfig(ispec)%ObsHourName) From ccf315fef7901a391e1bc5589db751cbea28c7ca Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 14 Dec 2023 16:10:57 -0500 Subject: [PATCH 023/331] Use array operations in unit conversions where feasible GeosUtil/unitconv_mod.F90 - Remove loops over (I,J,L) and replace with array operations, which are more efficient - Compute constant terms only once where expedient - Reduce the number of local variables where expedient Signed-off-by: Bob Yantosca --- GeosUtil/unitconv_mod.F90 | 456 ++++++++++++++++---------------------- 1 file changed, 190 insertions(+), 266 deletions(-) diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index 43e012697..25851bf74 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -659,9 +659,8 @@ SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J - INTEGER :: L, N, S - REAL(fp) :: MW_g + INTEGER :: N, S + REAL(fp) :: const ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -705,32 +704,25 @@ SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, & ! Loop over species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_g ) + !$OMP PRIVATE( S, N, const ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) - ! Molecular weight for the species [g] - MW_g = State_Chm%SpcData(N)%Info%MW_g - - ! Loop over grid boxes and do unit conversion - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX + ! Compute this constant term only once + const = AIRMW / State_Chm%SpcData(N)%Info%MW_g - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * ( AIRMW / MW_g ) + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc * const #ifdef ADJOINT IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * ( AIRMW / MW_g ) + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) * const ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -782,8 +774,8 @@ SUBROUTINE ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N, S - REAL(fp) :: MW_g + INTEGER :: N, S + REAL(fp) :: const ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -826,32 +818,25 @@ SUBROUTINE ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_g ) + !$OMP PRIVATE( S, N, const ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) - ! Molecular weight for the species [g] - MW_g = State_Chm%SpcData(N)%Info%MW_g - - ! Loop over grid boxes and do the unit conversion - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX + ! Compute this constant only once + const = AIRMW / State_Chm%SpcData(N)%Info%MW_g - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / ( AIRMW / MW_g ) + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc / const #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) / ( AIRMW / MW_g ) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) / const + ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -905,7 +890,7 @@ SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N, S + INTEGER :: N, S ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -929,32 +914,25 @@ SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S ) + !$OMP PRIVATE( S, N ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) - ! Loop over grid boxes and do unit conversion - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * & - ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc * & + ( 1.0_fp - ( State_Met%SPHU * 1e-3_fp ) ) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * & - ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) * & + ( 1.0_fp - ( State_Met%SPHU * 1e-3_fp ) ) + ENDIF #endif - ENDDO - ENDDO - ENDDO - ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_TOTAL_AIR @@ -1006,8 +984,7 @@ SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N, S - REAL(fp) :: convFac + INTEGER :: N, S ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -1031,30 +1008,24 @@ SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, convFac ) + !$OMP PRIVATE( S, N ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) - ! Loop over grid boxes and convert units - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / & - ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc / & + ( 1e0_fp - ( State_Met%SPHU * 1e-3_fp ) ) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) / & - ( 1e0_fp - ( State_Met%SPHU(I,J,L) * 1e-3_fp ) ) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) / & + ( 1e0_fp - ( State_Met%SPHU * 1e-3_fp ) ) + ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -1107,7 +1078,7 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N, S + INTEGER :: N, S ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -1142,31 +1113,22 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, State_Met, & !======================================================================== !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S ) + !$OMP PRIVATE( S, N ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) - ! Loop over grid boxes and convert units - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * & - ( g0_100 * State_Met%DELP_DRY(I,J,L) ) + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc * ( g0_100 * State_Met%DELP_DRY ) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * & - ( g0_100 * State_Met%DELP_DRY(I,J,L) ) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) * ( g0_100 * State_Met%DELP_DRY ) + ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -1219,7 +1181,7 @@ SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N, S + INTEGER :: N, S ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -1255,31 +1217,23 @@ SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, State_Met, & !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S ) + !$OMP PRIVATE( S, N ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * & - ( 1.0e+0_fp / ( g0_100 * State_Met%DELP_DRY(I,J,L) ) ) + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc / ( g0_100 * State_Met%DELP_DRY ) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * & - ( 1.0e+0_fp / ( g0_100 * State_Met%DELP_DRY(I,J,L) ) ) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) / ( g0_100 * State_Met%DELP_DRY ) + ENDIF #endif - ENDDO - ENDDO - ENDDO - ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR @@ -1331,8 +1285,8 @@ SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N, S - REAL(fp) :: MW_kg + INTEGER :: N, S + REAL(fp) :: const, MW_kg ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -1378,7 +1332,7 @@ SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_kg ) + !$OMP PRIVATE( S, N, MW_kg, const ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -1387,24 +1341,19 @@ SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & ! Molecular weight for the species [kg] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp - ! Loop over grid boxes and do the unit conversion - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * State_Met%AIRDEN(I,J,L) & - * ( AVO / MW_kg ) / 1e+6_fp + ! Compute this constant term once + const = ( AVO / MW_kg ) / 1.0e+6_fp + + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc * State_Met%AIRDEN * const #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * State_Met%AIRDEN(I,J,L) & - * ( AVO / MW_kg ) / 1e+6_fp - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) * State_Met%AIRDEN * const + ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -1456,9 +1405,12 @@ SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N, S - REAL(fp) :: MW_kg - CHARACTER(LEN=255) :: errMsg, thisLoc + ! Scalars + INTEGER :: N, S + REAL(fp) :: const, MW_kg + + ! Strings + CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_MND_to_KgKgDry begins here! @@ -1505,7 +1457,7 @@ SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! Loop over species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_kg ) + !$OMP PRIVATE( S, N, MW_kg, const ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -1514,24 +1466,19 @@ SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! Molecular weight for the species [kg] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp - ! Loop over grid boxes and do the unit conversion - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * 1e+6_fp / ( AVO / MW_kg ) & - / State_Met%AIRDEN(I,J,L) + ! Compute this constant term once + const = 1.0e+6_fp / ( AVO / MW_kg ) + + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc * const / State_Met%AIRDEN #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * 1e+6_fp / ( AVO / MW_kg ) & - / State_Met%AIRDEN(I,J,L) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) * const / State_Met%AIRDEN + ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -1588,9 +1535,12 @@ SUBROUTINE ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, State_Met, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N, S - REAL(fp) :: MW_g - CHARACTER(LEN=255) :: errMsg, thisLoc + ! Scalars + INTEGER :: N, S + REAL(fp) :: const + + ! Strings + CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_VVDry_to_Kg begins here! @@ -1631,33 +1581,25 @@ SUBROUTINE ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, State_Met, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_g ) + !$OMP PRIVATE( S, N, const ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) - ! Molecular weight for the species [g] - MW_g = State_Chm%SpcData(N)%Info%MW_g + ! Compute this constant term only once + const = AIRMW / State_Chm%SpcData(N)%Info%MW_g - ! Loop over grid boxes convert units - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * State_Met%AD(I,J,L) & - / ( AIRMW / MW_g ) + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc * State_Met%AD / const #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * State_Met%AD(I,J,L) & - / ( AIRMW / MW_g ) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) * State_Met%AD / const + ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -1714,11 +1656,11 @@ SUBROUTINE ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N, S - REAL(fp) :: MW_g + INTEGER :: N, S + REAL(fp) :: const ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc + CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_Kg_to_VVDry begins here! @@ -1759,31 +1701,25 @@ SUBROUTINE ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, State_Met, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_g ) + !$OMP PRIVATE( S, N, const ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) - ! Molecular weight for the species [g] - MW_g = State_Chm%SpcData(N)%Info%MW_g - - ! Loop over grid boxes and do the unit conversion - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * ( AIRMW / MW_g ) & - / State_Met%AD(I,J,L) + ! Compute this constant only once + const = AIRMW / State_Chm%SpcData(N)%Info%MW_g + + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc * const / State_Met%AD + #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * ( AIRMW / MW_g ) & - / State_Met%AD(I,J,L) + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) * const / State_Met%AD + ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -1835,7 +1771,10 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kg( State_Chm, State_Grid, State_Met, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, N, S + ! Scalars + INTEGER :: N, S + + ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== @@ -1874,29 +1813,22 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kg( State_Chm, State_Grid, State_Met, & !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S ) + !$OMP PRIVATE( S, N ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) - ! Loop over grid boxes and convert units - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * State_Met%AD(I,J,L) + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc * State_Met%AD #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * State_Met%AD(I,J,L) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) * State_Met%AD + ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -1949,7 +1881,7 @@ SUBROUTINE ConvertSpc_Kg_to_KgKgDry( State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N, S + INTEGER :: N, S ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -1990,28 +1922,22 @@ SUBROUTINE ConvertSpc_Kg_to_KgKgDry( State_Chm, State_Grid, State_Met, & !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S ) + !$OMP PRIVATE( S, N ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / State_Met%AD(I,J,L) + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc / State_Met%AD #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) / State_Met%AD(I,J,L) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) / State_Met%AD + ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -2064,11 +1990,11 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N, S - REAL(fp) :: MW_kg + INTEGER :: N, S + REAL(fp) :: const, MW_kg ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc + CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_MND_to_Kg begins here! @@ -2103,7 +2029,8 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & ! ! Species(I,J,L,N) [kg] ! - ! = Species(I,J,L,N) [molecules/cm3] * AIRVOL(I,J,L) / AVO * MW_KG * 1e6 + ! = Species(I,J,L,N) [molec/cm3] * AIRVOL(I,J,L) / AVO * MW_KG * 1e6 + ! = Species(I,J,L,N) [molec/cm3] * [1e6 / (AVO / MW_KG)] * AIRVOL(I,J,L) ! ! NOTES: ! (1) Use exact reverse of the species mass -> # density conversion to @@ -2114,7 +2041,7 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, S, MW_kg ) + !$OMP PRIVATE( S, N, MW_kg, const ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array @@ -2123,26 +2050,19 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & ! Molecular weight for the species [g] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp - ! Loop over grid boxes and do the unit conversion - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / ( AVO / MW_kg ) & - * ( State_Met%AIRVOL(I,J,L) & - * 1e+6_fp ) + ! Define this constant term only once + const = 1.0e6_fp / ( AVO / MW_kg ) + + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc * const * State_Met%AIRVOL #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) / ( AVO / MW_kg ) & - * ( State_Met%AIRVOL(I,J,L) & - * 1e+6_fp ) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) const * State_Met%AIRVOL + ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -2195,11 +2115,11 @@ SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N, S - REAL(fp) :: MW_kg + INTEGER :: N, S + REAL(fp) :: const, MW_kg ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc + CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== ! ConvertSpc_Kg_to_MND begins here! @@ -2234,38 +2154,32 @@ SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & ! Spcies(I,J,L,N) [molecules/cm3] ! ! = Species(I,J,L,N) [kg] / AIRVOL(I,J,L) * AVO / MW_KG / 1e6 + ! = Species(I,J,L,N) [kg] * [ AVO / MW_KG / 1e6 ] / AIRVOL(I,J,L) ! !======================================================================== ! Loop over all species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J, L, N, MW_kg ) + !$OMP PRIVATE( S, N, MW_kg, const ) DO N = 1, State_Chm%nSpecies ! Molecular weight for the species [kg] MW_kg = State_Chm%SpcData(N)%Info%MW_g * 1.e-3_fp - ! Loop over grid boxes and do the unit conversion - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * ( AVO / MW_kg ) & - / ( State_Met%AIRVOL(I,J,L) & - * 1e+6_fp ) + ! Compute this constant term only once + const = ( AVO / MW_kg ) / 1.0e6_fp + + ! Convert species concentration units + State_Chm%Species(N)%Conc = & + State_Chm%Species(N)%Conc * const / State_Met%AIRVOL #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * ( AVO / MW_kg ) & - / ( State_Met%AIRVOL(I,J,L) & - * 1e+6_fp ) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(:,:,:,N) = & + State_Chm%SpeciesAdj(:,:,:,N) * const / State_Met%AIRVOL + ENDIF #endif - ENDDO - ENDDO - ENDDO ! Update units metadata State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units @@ -2329,7 +2243,7 @@ SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: N, S + INTEGER :: N, S ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc @@ -2353,6 +2267,7 @@ SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, & ! Get the modelId from the mapping array N = mapping(S) + ! Convert species concentration units State_Chm%Species(N)%Conc(I,J,L) = & State_Chm%Species(N)%Conc(I,J,L) * State_Met%AD(I,J,L) @@ -2409,7 +2324,7 @@ SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & ! ! !REMARKS: ! This routine is temporary and is only used for local conversion of species -! concentrations for use in TOMAS within wetscav_mod routine WASHOUT. + ! concentrations for use in TOMAS within wetscav_mod routine WASHOUT. ! That routine is called within a parallel do loop and therefore units can ! only be converted per grid box to avoid excessive computation time. Also, ! State_Chm%Spc_Units cannot be changed within the parallel do loop without @@ -2432,7 +2347,7 @@ SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== - ! ConvertSpc_Kg_to_KgKgDry begins here! + ! ConvertBox_Kg_to_KgKgDry begins here! !======================================================================== ! Initialize @@ -2449,6 +2364,7 @@ SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & ! Get the modelId from the mapping array N = mapping(S) + ! Convert species concentration units State_Chm%Species(N)%Conc(I,J,L) = & State_Chm%Species(N)%Conc(I,J,L) / State_Met%AD(I,J,L) @@ -2518,7 +2434,10 @@ SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, & ! ! !LOCAL VARIABLES: ! + ! Scalars INTEGER :: N, S + + ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== @@ -2534,12 +2453,13 @@ SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, & ! Loop over species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( N, S ) + !$OMP PRIVATE( S, N ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) + ! Convert species concentration units State_Chm%Species(N)%Conc(I,J,L) = & State_Chm%Species(N)%Conc(I,J,L) * State_Grid%Area_M2(I,J) @@ -2609,7 +2529,10 @@ SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, & ! ! !LOCAL VARIABLES: ! + ! Scalars INTEGER :: N, S + + ! Strings CHARACTER(LEN=255) :: errMsg, thisLoc !======================================================================== @@ -2625,12 +2548,13 @@ SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, & ! Loop over species !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( N, S ) + !$OMP PRIVATE( S, N ) DO S = 1, SIZE( mapping ) ! Get the modelId from the mapping array N = mapping(S) + ! Convert species concentration units State_Chm%Species(N)%Conc(I,J,L) = & State_Chm%Species(N)%Conc(I,J,L) / State_Grid%Area_M2(I,J) From cfcab175a78f468adc7f3ed56168ca5a12432bea Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Thu, 14 Dec 2023 21:07:01 -0500 Subject: [PATCH 024/331] Changed diagnostics to State_Diag --- Headers/state_diag_mod.F90 | 167 ++++++ Interfaces/GCHP/Chem_GridCompMod.F90 | 2 +- Interfaces/GEOS/geos_analysis.F90 | 818 ++++++++++----------------- 3 files changed, 454 insertions(+), 533 deletions(-) diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index 91da06a43..76c976d9a 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -1246,6 +1246,25 @@ MODULE State_Diag_Mod LOGICAL :: Archive_KppError #endif + !---------------------------------------------------------------------- + ! Diagnostics related to analysis (nudging) module + !---------------------------------------------------------------------- + REAL(f4), POINTER :: AnaInc(:,:,:,:) + TYPE(DgnMap), POINTER :: Map_AnaInc + LOGICAL :: Archive_AnaInc + + REAL(f4), POINTER :: AnaIncFrac(:,:,:,:) + TYPE(DgnMap), POINTER :: Map_AnaIncFrac + LOGICAL :: Archive_AnaIncFrac + + REAL(f4), POINTER :: AnaMask(:,:,:,:) + TYPE(DgnMap), POINTER :: Map_AnaMask + LOGICAL :: Archive_AnaMask + + REAL(f4), POINTER :: AnaMaskSum(:,:,:) + TYPE(DgnMap), POINTER :: Map_AnaMaskSum + LOGICAL :: Archive_AnaMaskSum + !---------------------------------------------------------------------- ! Registry of variables contained within State_Diag !---------------------------------------------------------------------- @@ -2401,6 +2420,22 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%Archive_KppError = .FALSE. #endif + State_Diag%AnaInc => NULL() + State_Diag%Map_AnaInc => NULL() + State_Diag%Archive_AnaInc = .FALSE. + + State_Diag%AnaIncFrac => NULL() + State_Diag%Map_AnaIncFrac => NULL() + State_Diag%Archive_AnaIncFrac = .FALSE. + + State_Diag%AnaMask => NULL() + State_Diag%Map_AnaMask => NULL() + State_Diag%Archive_AnaMask = .FALSE. + + State_Diag%AnaMaskSum => NULL() + State_Diag%Map_AnaMaskSum => NULL() + State_Diag%Archive_AnaMaskSum = .FALSE. + END SUBROUTINE Zero_State_Diag !EOC !------------------------------------------------------------------------------ @@ -7927,6 +7962,89 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & ENDIF #endif + !------------------------------------------------------------------- + ! Analysis (nudging) diagnostics + !------------------------------------------------------------------- + diagID = 'AnaInc' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%AnaInc, & + archiveData = State_Diag%Archive_AnaInc, & + mapData = State_Diag%Map_AnaInc, & + diagId = diagId, & + diagFlag = 'S', & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + diagID = 'AnaIncFrac' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%AnaIncFrac, & + archiveData = State_Diag%Archive_AnaIncFrac, & + mapData = State_Diag%Map_AnaIncFrac, & + diagId = diagId, & + diagFlag = 'S', & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + diagID = 'AnaMask' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%AnaMask, & + archiveData = State_Diag%Archive_AnaMask, & + mapData = State_Diag%Map_AnaMask, & + diagId = diagId, & + diagFlag = 'S', & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + diagID = 'AnaMaskSum' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%AnaMaskSum, & + archiveData = State_Diag%Archive_AnaMaskSum, & + mapData = State_Diag%Map_AnaMaskSum, & + diagId = diagId, & + diagFlag = 'S', & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + !------------------------------------------------------------------- ! Total organic aerosol mass [ug/m3] !------------------------------------------------------------------- @@ -12090,6 +12208,31 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) IF ( RC /= GC_SUCCESS ) RETURN #endif + ! Analysis diagnostics + CALL Finalize( diagId = 'AnaInc', & + Ptr2Data = State_Diag%AnaInc, & + mapData = State_Diag%Map_AnaInc, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + + CALL Finalize( diagId = 'AnaIncFrac', & + Ptr2Data = State_Diag%AnaIncFrac, & + mapData = State_Diag%Map_AnaIncFrac, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + + CALL Finalize( diagId = 'AnaMask', & + Ptr2Data = State_Diag%AnaMask, & + mapData = State_Diag%Map_AnaMask, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + + CALL Finalize( diagId = 'AnaMaskSum', & + Ptr2Data = State_Diag%AnaMaskSum, & + mapData = State_Diag%Map_AnaMaskSum, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + #if defined(MODEL_GEOS) || defined(MODEL_WRF) !======================================================================= ! These fields are only used when GEOS-Chem @@ -13254,6 +13397,30 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isRank ) Rank = 3 #endif + ELSE IF ( TRIM( Name_AllCaps ) == 'ANAINC' ) THEN + IF ( isDesc ) Desc = 'Analysis increment' + IF ( isUnits ) Units = 'v/v dry air' + IF ( isRank ) Rank = 3 + IF ( isTagged ) TagId = 'ALL' + + ELSE IF ( TRIM( Name_AllCaps ) == 'ANAINCFRAC' ) THEN + IF ( isDesc ) Desc = 'Analysis increment ratio' + IF ( isUnits ) Units = '1' + IF ( isRank ) Rank = 3 + IF ( isTagged ) TagId = 'ALL' + + ELSE IF ( TRIM( Name_AllCaps ) == 'ANAMASK' ) THEN + IF ( isDesc ) Desc = 'Analysis mask' + IF ( isUnits ) Units = '1' + IF ( isRank ) Rank = 3 + IF ( isTagged ) TagId = 'ALL' + + ELSE IF ( TRIM( Name_AllCaps ) == 'ANAMASKSUM' ) THEN + IF ( isDesc ) Desc = 'Analysis vertical counts' + IF ( isUnits ) Units = '1' + IF ( isRank ) Rank = 2 + IF ( isTagged ) TagId = 'ALL' + ELSE IF ( TRIM( Name_AllCaps ) == 'TERPENESOA' ) THEN IF ( isDesc ) Desc = 'Monoterpene and sesqiterpene SOA' IF ( isUnits ) Units = 'ug m-3' diff --git a/Interfaces/GCHP/Chem_GridCompMod.F90 b/Interfaces/GCHP/Chem_GridCompMod.F90 index 8d76f0f82..8c335be98 100644 --- a/Interfaces/GCHP/Chem_GridCompMod.F90 +++ b/Interfaces/GCHP/Chem_GridCompMod.F90 @@ -2902,7 +2902,7 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) ! Call GEOS analysis routine CALL GEOS_AnaRun( GC, Import, INTSTATE, Export, Clock, & Input_Opt, State_Met, State_Chm, State_Grid, & - State_Diag, Q, PLE, TROPP, __RC__ ) + State_Diag, __RC__ ) ! GEOS Diagnostics. This includes the 'default' GEOS-Chem diagnostics. CALL GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, Input_Opt, & diff --git a/Interfaces/GEOS/geos_analysis.F90 b/Interfaces/GEOS/geos_analysis.F90 index ddd305af3..696114315 100644 --- a/Interfaces/GEOS/geos_analysis.F90 +++ b/Interfaces/GEOS/geos_analysis.F90 @@ -40,7 +40,6 @@ MODULE GEOS_Analysis PRIVATE :: ReadSettings_ PRIVATE :: DoAnalysis_ PRIVATE :: GetAnaTime_ - PRIVATE :: GetAnaBundle_ PRIVATE :: ReplaceChar_ ! ! !PRIVATE TYPES: @@ -50,7 +49,7 @@ MODULE GEOS_Analysis ! Options for dependent species TYPE Spec2Opt - CHARACTER(LEN=ESMF_MAXSTR) :: Spec2Name + CHARACTER(LEN=63) :: Spec2Name LOGICAL :: Spec2Strat LOGICAL :: Spec2Trop REAL :: Spec2MinRatio @@ -59,24 +58,22 @@ MODULE GEOS_Analysis ! Analysis options object. A separate object will be created for each analysed species/family TYPE AnaOptions - CHARACTER(LEN=ESMF_MAXSTR) :: SpecName + CHARACTER(LEN=63) :: SpecName LOGICAL :: Active INTEGER :: AnalysisFreq INTEGER :: AnalysisHour INTEGER :: AnalysisMinute LOGICAL :: ForwardLooking - LOGICAL :: ReadAnaTime LOGICAL :: SkipPredictor - CHARACTER(LEN=ESMF_MAXSTR) :: FileTemplate - CHARACTER(LEN=ESMF_MAXSTR) :: FileVarName - CHARACTER(LEN=ESMF_MAXSTR) :: FileVarUnit - CHARACTER(LEN=ESMF_MAXSTR) :: FldNameHco + CHARACTER(LEN=127) :: FldNameHco + CHARACTER(LEN=63) :: FileVarUnit INTEGER :: FileVarDry - LOGICAL :: ApplyIncrement + LOGICAL :: IsIncrement INTEGER :: IAU INTEGER :: AnalysisWindow - LOGICAL :: NonZeroIncOnly - CHARACTER(LEN=ESMF_MAXSTR) :: FileVarNameInc + LOGICAL :: HasMask + CHARACTER(LEN=127) :: MskNameHco + REAL :: MaskThreshold LOGICAL :: InStrat LOGICAL :: InTrop INTEGER :: AnaL1 @@ -92,8 +89,6 @@ MODULE GEOS_Analysis REAL :: MinRatioStrat REAL :: MinRatioTrop REAL :: MinConc - LOGICAL :: UseObsHour - CHARACTER(LEN=ESMF_MAXSTR) :: ObsHourName INTEGER :: nSpec2 TYPE(Spec2Opt), POINTER :: Spec2(:) => NULL() INTEGER :: ErrorMode @@ -191,58 +186,58 @@ SUBROUTINE GEOS_AnaInit( am_I_Root, GC, GEOSCF, AnaPhase, RC ) ENDDO ENDIF - ! Initialize diagnostics - IF ( nAnaSpec > 0 ) THEN - DO N=1,nAnaSpec - NDIAG = 1 + AnaConfig(N)%nSpec2 - DO I=1,NDIAG - IF ( I==1 ) THEN - SpecName = AnaConfig(N)%SpecName - ELSE - SpecName = AnaConfig(N)%Spec2(I-1)%Spec2Name - ENDIF - CALL MAPL_AddExportSpec(GC, & - SHORT_NAME = 'GCC_ANA_INC_'//TRIM(SpecName), & - LONG_NAME = TRIM(SpecName)//'_analysis_increment_volume_mixing_ratio_dry_air', & - UNITS = 'mol mol-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - __RC__ ) - CALL MAPL_AddExportSpec(GC, & - SHORT_NAME = 'GCC_ANA_INC_FRAC_'//TRIM(SpecName), & - LONG_NAME = TRIM(SpecName)//'_analysis_increment_ratio_volume_mixing_ratio_dry_air', & - UNITS = '1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - __RC__ ) - IF ( I==1 ) THEN - CALL MAPL_AddExportSpec(GC, & - SHORT_NAME = 'GCC_ANA_MASK_VSUM_'//TRIM(SpecName), & - LONG_NAME = TRIM(SpecName)//'_analysis_counts', & - UNITS = '1', & - DIMS = MAPL_DimsHorzOnly, & - VLOCATION = MAPL_VLocationNone, & - __RC__ ) - CALL MAPL_AddExportSpec(GC, & - SHORT_NAME = 'GCC_ANA_MASK_'//TRIM(SpecName), & - LONG_NAME = TRIM(SpecName)//'_analysis_mask', & - UNITS = '1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - __RC__ ) - ENDIF - IF ( I>1 ) THEN - CALL MAPL_AddExportSpec(GC, & - SHORT_NAME = 'GCC_ANA_RATIO_'//TRIM(SpecName)//'_TO_'//TRIM(AnaConfig(N)%SpecName), & - LONG_NAME = TRIM(SpecName)//'_to_'//TRIM(AnaConfig(N)%SpecName)//'_species_ratio_after_analysis', & - UNITS = '1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - __RC__ ) - ENDIF - ENDDO - ENDDO - ENDIF +! ! Initialize diagnostics +! IF ( nAnaSpec > 0 ) THEN +! DO N=1,nAnaSpec +! NDIAG = 1 + AnaConfig(N)%nSpec2 +! DO I=1,NDIAG +! IF ( I==1 ) THEN +! SpecName = AnaConfig(N)%SpecName +! ELSE +! SpecName = AnaConfig(N)%Spec2(I-1)%Spec2Name +! ENDIF +! CALL MAPL_AddExportSpec(GC, & +! SHORT_NAME = 'GCC_ANA_INC_'//TRIM(SpecName), & +! LONG_NAME = TRIM(SpecName)//'_analysis_increment_volume_mixing_ratio_dry_air', & +! UNITS = 'mol mol-1', & +! DIMS = MAPL_DimsHorzVert, & +! VLOCATION = MAPL_VLocationCenter, & +! __RC__ ) +! CALL MAPL_AddExportSpec(GC, & +! SHORT_NAME = 'GCC_ANA_INC_FRAC_'//TRIM(SpecName), & +! LONG_NAME = TRIM(SpecName)//'_analysis_increment_ratio_volume_mixing_ratio_dry_air', & +! UNITS = '1', & +! DIMS = MAPL_DimsHorzVert, & +! VLOCATION = MAPL_VLocationCenter, & +! __RC__ ) +! IF ( I==1 ) THEN +! CALL MAPL_AddExportSpec(GC, & +! SHORT_NAME = 'GCC_ANA_MASK_VSUM_'//TRIM(SpecName), & +! LONG_NAME = TRIM(SpecName)//'_analysis_counts', & +! UNITS = '1', & +! DIMS = MAPL_DimsHorzOnly, & +! VLOCATION = MAPL_VLocationNone, & +! __RC__ ) +! CALL MAPL_AddExportSpec(GC, & +! SHORT_NAME = 'GCC_ANA_MASK_'//TRIM(SpecName), & +! LONG_NAME = TRIM(SpecName)//'_analysis_mask', & +! UNITS = '1', & +! DIMS = MAPL_DimsHorzVert, & +! VLOCATION = MAPL_VLocationCenter, & +! __RC__ ) +! ENDIF +! IF ( I>1 ) THEN +! CALL MAPL_AddExportSpec(GC, & +! SHORT_NAME = 'GCC_ANA_RATIO_'//TRIM(SpecName)//'_TO_'//TRIM(AnaConfig(N)%SpecName), & +! LONG_NAME = TRIM(SpecName)//'_to_'//TRIM(AnaConfig(N)%SpecName)//'_species_ratio_after_analysis', & +! UNITS = '1', & +! DIMS = MAPL_DimsHorzVert, & +! VLOCATION = MAPL_VLocationCenter, & +! __RC__ ) +! ENDIF +! ENDDO +! ENDDO +! ENDIF ! Successful return RETURN_(ESMF_SUCCESS) @@ -262,7 +257,7 @@ END SUBROUTINE GEOS_AnaInit ! SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & Input_Opt, State_Met, State_Chm, State_Grid, & - State_Diag, Q, PLE, TROPP, RC ) + State_Diag, RC ) ! ! !USES: ! @@ -285,9 +280,6 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & TYPE(ChmState) :: State_Chm TYPE(GrdState) :: State_Grid TYPE(DgnState) :: State_Diag - REAL, INTENT(INOUT) :: Q(:,:,:) - REAL, POINTER :: PLE(:,:,:) - REAL, POINTER :: TROPP(:,:) ! ! !OUTPUT PARAMETERS: ! @@ -305,8 +297,6 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & ! !LOCAL VARIABLES: ! INTEGER :: ispec - CHARACTER(LEN=ESMF_MAXSTR) :: compName - CHARACTER(LEN=ESMF_MAXSTR) :: Iam CHARACTER(LEN=63) :: OrigUnit CHARACTER(LEN=255) :: ErrMsg, ThisLoc INTEGER :: STATUS @@ -315,11 +305,8 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & ! GEOS_AnaRun begins here !======================================================================= - ! Get configuration - CALL ESMF_GridCompGet( GC, name=compName, __RC__ ) - ! callback name - Iam = TRIM(compName)//'::GEOS_AnaRun' + RC = GC_SUCCESS ThisLoc = ' -> GEOS-Chem AnaRun' ! Convert to total mixing ratio @@ -327,17 +314,28 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & 'kg/kg total', STATUS, OrigUnit=OrigUnit ) IF ( STATUS /= GC_SUCCESS ) THEN ErrMsg = 'Unit conversion error (start)!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) + CALL GC_Error( ErrMsg, STATUS, ThisLoc ) RETURN ENDIF + ! Reset diagnostics + IF ( State_Diag%Archive_AnaInc ) State_Diag%AnaInc(:,:,:,:) = 0.0 + IF ( State_Diag%Archive_AnaIncFrac ) State_Diag%AnaIncFrac(:,:,:,:) = 0.0 + IF ( State_Diag%Archive_AnaMask ) State_Diag%AnaMask(:,:,:,:) = 0.0 + IF ( State_Diag%Archive_AnaMaskSum ) State_Diag%AnaMaskSum(:,:,:) = 0.0 + ! Do analysis for all analysis species IF ( nAnaSpec > 0 .AND. ASSOCIATED(AnaConfig) ) THEN DO ispec=1,nAnaSpec IF ( AnaConfig(ispec)%Active ) THEN CALL DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & Input_Opt, State_Met, State_Chm, State_Grid, & - State_Diag, Q, PLE, TROPP, __RC__ ) + State_Diag, STATUS ) + IF ( STATUS /= GC_SUCCESS ) THEN + ErrMsg = 'DoAnalysis_ error!' + CALL GC_Error( ErrMsg, STATUS, ThisLoc ) + RETURN + ENDIF ENDIF ENDDO ENDIF @@ -347,12 +345,12 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & OrigUnit, STATUS ) IF ( STATUS /= GC_SUCCESS ) THEN ErrMsg = 'Unit conversion error (end)!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) + CALL GC_Error( ErrMsg, STATUS, ThisLoc ) RETURN ENDIF ! Successful return - RETURN_(ESMF_SUCCESS) + RC = GC_SUCCESS END SUBROUTINE GEOS_AnaRun !EOC @@ -418,7 +416,7 @@ END SUBROUTINE GEOS_AnaFinal ! !INTERFACE: ! SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & - Input_Opt, State_Met, State_Chm, State_Grid, State_Diag, Q, PLE, TROPP, RC ) + Input_Opt, State_Met, State_Chm, State_Grid, State_Diag, RC ) ! ! !USES: ! @@ -426,7 +424,7 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & USE State_Chm_Mod, ONLY : ChmState ! Chemistry State obj USE State_Met_Mod, ONLY : MetState ! Meteorology State obj USE State_Grid_Mod, ONLY : GrdState ! Grid State obj - USE State_Diag_Mod, ONLY : DgnState ! Diagnostics State obj + USE State_Diag_Mod, ONLY : DgnState, DgnMap ! Diagnostics State obj USE HCO_Utilities_GC_Mod, ONLY : HCO_GC_EvalFld USE TIME_MOD, ONLY : GET_TS_CHEM Use PhysConstants, ONLY : AIRMW @@ -444,9 +442,6 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & TYPE(ChmState) :: State_Chm TYPE(GrdState) :: State_Grid TYPE(DgnState) :: State_Diag - REAL, INTENT(INOUT) :: Q(:,:,:) - REAL, POINTER :: PLE(:,:,:) - REAL, POINTER :: TROPP(:,:) ! ! !OUTPUT PARAMETERS: ! @@ -463,26 +458,17 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! ! !LOCAL VARIABLES: ! - CHARACTER(LEN=ESMF_MAXSTR) :: compName - TYPE(ESMF_Grid) :: grid LOGICAL :: am_I_Root TYPE(AnaOptions), POINTER :: iopt => NULL() - LOGICAL :: TimeForAna, HasBundle + LOGICAL :: TimeForAna, HasField INTEGER :: yy, mm, dd, h, m, s INTEGER :: VarID INTEGER :: StratCount REAL :: ThisHour - CHARACTER(LEN=ESMF_MAXSTR) :: SpecName, Spec2Name, FldName - REAL, POINTER :: DiagInc(:,:,:), DiagIncFrac(:,:,:) - REAL, ALLOCATABLE :: DiagInc2(:,:,:,:), DiagIncFrac2(:,:,:,:), DiagSpcRatio(:,:,:,:) - REAL, POINTER :: DiagMsk2d(:,:), DiagMsk3d(:,:,:) - REAL, POINTER :: AnaPtrExt(:,:,:), IncPtr(:,:,:), ObsHour(:,:) - REAL, POINTER :: Ptr2D(:,:), Ptr3D(:,:,:) + CHARACTER(LEN=255) :: SpecName, Spec2Name, FldName + REAL, ALLOCATABLE :: AnaMask2d(:,:), AnaMask3d(:,:,:) REAL, ALLOCATABLE :: SpcBkg(:,:,:), SpcAsm(:,:,:) REAL, ALLOCATABLE :: Spc2Bkg(:,:,:,:), Spc2Asm(:,:,:,:) - TYPE(MAPL_SimpleBundle) :: VarBundle, VarBundleH - CHARACTER(LEN=ESMF_MAXSTR) :: ifile, only_vars - TYPE(ESMF_TIME) :: fileTime INTEGER :: I, J, L, N, IM, JM, LM, indSpc INTEGER, ALLOCATABLE :: indSpc2(:) INTEGER :: UnitFlag, DryFlag, NNEG @@ -495,27 +481,29 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & REAL :: SpcAna, SpcNew REAL :: MinConc LOGICAL :: UpdateSpec2 - TYPE(ESMF_Alarm) :: PredictorAlarm - LOGICAL :: PredictorActive - CHARACTER(LEN=ESMF_MAXSTR) :: Iam + CHARACTER(LEN=255) :: Iam INTEGER :: STATUS + CHARACTER(LEN=255) :: ErrMsg, ThisLoc + + ! Diagnostics + INTEGER :: DgnId ! temporary arrays REAL, ALLOCATABLE :: Qtmp(:,:,:) - REAL(hp), POINTER :: AnaPtr(:,:,:) + REAL(hp), POINTER :: AnaPtr(:,:,:), MskPtr(:,:,:) !======================================================================= ! DoAnalysis_ begins here !======================================================================= - Iam = 'GEOS_Analysis::DoAnalysis_' - - ! Get configuration - CALL ESMF_GridCompGet( GC, name=compName, grid=grid, __RC__ ) + ! Callback + Iam = 'GEOS_Analysis::DoAnalysis_' + ThisLoc = 'GEOS_Analysis::DoAnalysis_' + RC = GC_SUCCESS ! Root CPU? - am_I_Root = MAPL_am_I_Root() + am_I_Root = Input_Opt%amIRoot ! Get settings iopt => AnaConfig(ispec) @@ -524,7 +512,13 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! Check if it's time to do the analysis TimeForAna = .FALSE. - CALL GetAnaTime_( Clock, iopt%ForwardLooking, yy, mm, dd, h, m, s, __RC__ ) + CALL GetAnaTime_( Clock, iopt%ForwardLooking, yy, mm, dd, h, m, s, RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error in GetAnaTime_' + CALL GC_Error( ErrMsg, RC, ThisLoc) + RETURN + ENDIF + ThisHour = real(h) DilFact = 1.0 @@ -534,9 +528,6 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! Calculate dilution factor, to be applied to analysis/increment weight tsChem = GET_TS_CHEM() DilFact = real(iopt%AnalysisWindow)*(3600./tsChem) - ! If using observation hours, apply analysis every (full) hour - ELSEIF ( iopt%UseObsHour .AND. m==0 ) THEN - TimeForAna = .TRUE. ! Otherwise, use specified analysis frequency and hour/minute offsets ELSE IF ( m==iopt%AnalysisMinute .AND. MOD(h,iopt%AnalysisFreq)==iopt%AnalysisHour ) TimeForAna = .TRUE. @@ -545,84 +536,38 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! Eventually skip during predictor step IF ( iopt%SkipPredictor .AND. State_Grid%PredictorIsActive ) THEN TimeForAna = .FALSE. -! CALL ESMF_ClockGetAlarm(Clock, "PredictorActive", PredictorAlarm, __RC__) -! PredictorActive = ESMF_AlarmIsRinging( PredictorAlarm, __RC__ ) -! IF ( PredictorActive ) TimeForAna = .FALSE. - ENDIF - - ! Initialize/reset diagnostics - ! ---------------------- - FldName = 'GCC_ANA_INC_'//TRIM(SpecName) - CALL MAPL_GetPointer ( Export, DiagInc, TRIM(FldName), NotFoundOk=.TRUE., __RC__ ) - IF ( ASSOCIATED(DiagInc) ) DiagInc = 0.0 - FldName = 'GCC_ANA_INC_FRAC_'//TRIM(SpecName) - CALL MAPL_GetPointer ( Export, DiagIncFrac, TRIM(FldName), NotFoundOk=.TRUE., __RC__ ) - IF ( ASSOCIATED(DiagIncFrac) ) DiagIncFrac = 1.0 - FldName = 'GCC_ANA_MASK_VSUM_'//TRIM(SpecName) - CALL MAPL_GetPointer ( Export, DiagMsk2d, TRIM(FldName), NotFoundOk=.TRUE., __RC__ ) - IF ( ASSOCIATED(DiagMsk2d) ) DiagMsk2d = 0.0 - FldName = 'GCC_ANA_MASK_'//TRIM(SpecName) - CALL MAPL_GetPointer ( Export, DiagMsk3d, TRIM(FldName), NotFoundOk=.TRUE., __RC__ ) - IF ( ASSOCIATED(DiagMsk3d) ) DiagMsk3d = 0.0 - - ! Fill species 2 diagnostics - IF ( iopt%nSpec2 > 0 ) THEN - DO N=1,iopt%nSpec2 - Spec2Name = TRIM(iopt%Spec2(N)%Spec2Name) - FldName = 'GCC_ANA_INC_'//TRIM(Spec2Name) - CALL MAPL_GetPointer ( Export, Ptr3D, TRIM(FldName), NotFoundOk=.TRUE., __RC__ ) - IF ( ASSOCIATED(Ptr3D) .AND. .NOT. ALLOCATED(DiagInc2) ) THEN - ALLOCATE(DiagInc2(SIZE(Ptr3D,1),SIZE(Ptr3D,2),SIZE(Ptr3D,3),iopt%nSpec2)) - DiagInc2 = 0.0 - ENDIF - FldName = 'GCC_ANA_INC_FRAC_'//TRIM(Spec2Name) - CALL MAPL_GetPointer ( Export, Ptr3D, TRIM(FldName), NotFoundOk=.TRUE., __RC__ ) - IF ( ASSOCIATED(Ptr3D) .AND. .NOT. ALLOCATED(DiagIncFrac2) ) THEN - ALLOCATE(DiagIncFrac2(SIZE(Ptr3D,1),SIZE(Ptr3D,2),SIZE(Ptr3D,3),iopt%nSpec2)) - DiagIncFrac2 = 1.0 - ENDIF - FldName = 'GCC_ANA_RATIO_'//TRIM(Spec2Name)//'_TO_'//TRIM(SpecName) - CALL MAPL_GetPointer ( Export, Ptr3D, TRIM(FldName), NotFoundOk=.TRUE., __RC__ ) - IF ( ASSOCIATED(Ptr3D) .AND. .NOT. ALLOCATED(DiagSpcRatio) ) THEN - ALLOCATE(DiagSpcRatio(SIZE(Ptr3D,1),SIZE(Ptr3D,2),SIZE(Ptr3D,3),iopt%nSpec2)) - DiagSpcRatio = -999.0 - ENDIF - ENDDO ENDIF ! Check if file exists (only if it's time to do the analysis - HasBundle = .FALSE. + HasField = .FALSE. AnaPtr => NULL() IF ( TimeForAna ) THEN FldName = iopt%FldNameHco ALLOCATE(AnaPtr(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) - CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, AnaPtr, STATUS, FOUND=HasBundle ) - ASSERT_(STATUS==GC_SUCCESS) - - ! flip temporarily to mimick direction of 3D field read through GetAnaBundle - AnaPtr = AnaPtr(:,:,State_Grid%NZ:1:-1) - -! ---------------------------------------------------------------------------------------------- - ! leave here temporarily, can remove once above works ok - only_vars = TRIM(iopt%FileVarName) - IF ( iopt%NonZeroIncOnly ) only_vars = TRIM(only_vars)//','//TRIM(iopt%FileVarNameInc) - CALL GetAnaBundle_( am_I_Root, iopt%FileTemplate, 'AnaFld', yy, mm, dd, h, m, grid, & - VarBundle, HasBundle, ifile=ifile, fileTime=fileTime, & - only_vars=only_vars, err_mode=iopt%ErrorMode, anatime=iopt%ReadAnaTime, __RC__ ) - - ! Read obs time using voting regridding method - IF ( HasBundle .AND. iopt%UseObsHour ) THEN - VarBundleH = MAPL_SimpleBundleRead ( TRIM(ifile), 'AnaHour', grid, fileTime, & - ONLY_VARS=TRIM(iopt%ObsHourName), voting=.TRUE., __RC__ ) -! ONLY_VARS=TRIM(iopt%ObsHourName), regrid_method=REGRID_METHOD_VOTE, __RC__ ) + CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, AnaPtr, RC, FOUND=HasField ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error getting field: '//TRIM(FldName) + CALL GC_Error( ErrMsg, RC, ThisLoc) + RETURN + ENDIF + + ! Eventually read mask field + IF ( iopt%HasMask ) THEN + FldName = iopt%MskNameHco + ALLOCATE(MskPtr(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) + CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, MskPtr, RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error getting mask: '//TRIM(FldName) + CALL GC_Error( ErrMsg, RC, ThisLoc) + RETURN + ENDIF ENDIF -! ---------------------------------------------------------------------------------------------- ENDIF ! Apply increments if it's time to do so and if file exists ! --------------------------------------------------------- - IF ( HasBundle ) THEN + IF ( HasField ) THEN ! Verbose IF ( am_I_Root ) THEN @@ -630,24 +575,6 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & 100 FORMAT( "GEOS-Chem: apply analysis for species ",A5," for ",I4.4,"-",I2.2,"-",I2.2," ",I2.2,":",I2.2) ENDIF - ! Get analysis field - VarID = MAPL_SimpleBundleGetIndex ( VarBundle, TRIM(iopt%FileVarName), 3, RC=STATUS, QUIET=.TRUE. ) - ASSERT_(RC==ESMF_SUCCESS .AND. VarID > 0) - AnaPtrExt => VarBundle%r3(VarID)%q - - IF ( iopt%nonZeroIncOnly ) THEN - VarID = MAPL_SimpleBundleGetIndex ( VarBundle, TRIM(iopt%FileVarNameInc), 3, RC=STATUS, QUIET=.TRUE. ) - ASSERT_(RC==ESMF_SUCCESS .AND. VarID > 0) - IncPtr => VarBundle%r3(VarID)%q - ENDIF - ! Observation hour - ObsHour => NULL() - IF ( iopt%UseObsHour ) THEN - VarID = MAPL_SimpleBundleGetIndex ( VarBundleH, TRIM(iopt%ObsHourName), 2, RC=STATUS, QUIET=.TRUE. ) - ASSERT_(RC==ESMF_SUCCESS .AND. VarID > 0) - ObsHour => VarBundleH%r2(VarID)%q - ENDIF - ! Select GEOS-Chem index and molecular weight for analysis species. Also get the same for 2nd species (if used) indSpc = -1 IF ( iopt%nSpec2 > 0 ) THEN @@ -668,12 +595,19 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ENDDO ENDIF ENDDO - ASSERT_(indSpc > 0 ) - ASSERT_( mwSpc > 0.0) + ! Make sure species IDs and MWs are valid + IF ( indSpc <= 0 .OR. mwSpc <= 0.0 ) THEN + ErrMsg = 'Invalid species index/MW: '//TRIM(SpecName) + CALL GC_Error( ErrMsg, RC, ThisLoc) + RETURN + ENDIF IF ( iopt%nSpec2 > 0 ) THEN DO N=1,iopt%nSpec2 - ASSERT_(indSpc2(N) > 0 ) - ASSERT_( mwSpc2(N) > 0.0) + IF ( indSpc2(N) <= 0 .OR. mwSpc2(N) <= 0.0 ) THEN + ErrMsg = 'Invalid species index/MW: '//TRIM(iopt%Spec2(N)%Spec2Name) + CALL GC_Error( ErrMsg, RC, ThisLoc) + RETURN + ENDIF ENDDO ENDIF @@ -682,13 +616,6 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & JM = SIZE(AnaPtr,2) LM = SIZE(AnaPtr,3) - ! Get lower bound of PLE array - !LB = LBOUND(PLE,3) - - ! TODO: Shadow fields, temporary for testing - ALLOCATE(Qtmp(IM,JM,LM)) - Qtmp = State_Met%SPHU(:,:,LM:1:-1) / 1000.0 - ! Set dry flag DryFlag = iopt%FileVarDry @@ -712,48 +639,40 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & END SELECT ! State_Chm%Species are in kg/kg total. Make local copy in v/v dry before applying increments. - ! Also flip vertical axis to be consistent with GEOS ALLOCATE(SpcBkg(IM,JM,LM),SpcAsm(IM,JM,LM)) - SpcBkg(:,:,:) = State_Chm%Species(indSpc)%Conc(:,:,LM:1:-1) / (1.-Qtmp) * AIRMW / mwSpc + SpcBkg(:,:,:) = State_Chm%Species(indSpc)%Conc / (1.-State_Met%SPHU/1000.) * AIRMW / mwSpc SpcAsm(:,:,:) = SpcBkg(:,:,:) IF ( iopt%nSpec2 > 0 ) THEN ALLOCATE(Spc2Bkg(IM,JM,LM,iopt%nSpec2),Spc2Asm(IM,JM,LM,iopt%nSpec2)) DO N=1,iopt%nSpec2 - Spc2Bkg(:,:,:,N) = State_Chm%Species(indSpc2(N))%Conc(:,:,LM:1:-1) / (1.-Qtmp) * AIRMW / mwSpc2(N) + Spc2Bkg(:,:,:,N) = State_Chm%Species(indSpc2(N))%Conc / (1.-State_Met%SPHU/1000.) * AIRMW / mwSpc2(N) Spc2Asm(:,:,:,N) = Spc2Bkg(:,:,:,N) - IF ( ALLOCATED(DiagSpcRatio) ) THEN - WHERE ( SpcBkg > MinConc ) - DiagSpcRatio(:,:,:,N) = Spc2Bkg(:,:,:,N) / SpcBkg(:,:,:) - ELSEWHERE - DiagSpcRatio(:,:,:,N) = Spc2Bkg(:,:,:,N) / MinConc - ENDWHERE - ENDIF ENDDO ENDIF + + ! Eventually initialize diagnostic fields for analysis masks + IF ( State_Diag%Archive_AnaMask ) THEN + ALLOCATE(AnaMask3d(IM,JM,LM)) + AnaMask3d = 0.0 + ENDIF + IF ( State_Diag%Archive_AnaMaskSum ) THEN + ALLOCATE(AnaMask2d(IM,JM)) + AnaMask2d = 0.0 + ENDIF ! Number of negative cells NNEG = 0 DO J=1,JM DO I=1,IM - ! Move to next grid box if there was no observation in this cell for the given hour and the obshour flag is on - IF ( iopt%UseObsHour ) THEN - IF ( ObsHour(I,J) /= ThisHour ) CYCLE - ENDIF - ! Loop over vertical StratCount = 0 - DO L=LM,1,-1 - + DO L=1,LM ! Fraction of cell in troposphere / stratosphere - !tropwgt = MAX(0.0,MIN(1.0,(PLE(I,J,L+LB)-TROPP(I,J))/(PLE(I,J,L+LB)-PLE(I,J,L+LB-1)))) tropwgt = MAX(0.0, & MIN(1.0, & -! this is for L=1,LM: -! (State_Met%PEDGE(I,J,L)-State_Met%TROPP(I,J)) / & -! (State_Met%PEDGE(I,J,L)-State_Met%PEDGE(I,J,L+1)) & - (State_Met%PEDGE(I,J,LM-L+1)-State_Met%TROPP(I,J)) / & - (State_Met%PEDGE(I,J,LM-L+1)-State_Met%PEDGE(I,J,LM-L+2)) & + (State_Met%PEDGE(I,J,L)-State_Met%TROPP(I,J)) / & + (State_Met%PEDGE(I,J,L)-State_Met%PEDGE(I,J,L+1)) & ) & ) stratwgt = 1.0 - tropwgt @@ -762,9 +681,11 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & IF ( stratwgt > 0.1 ) StratCount = StratCount + 1 ! Skip cell if concentration change is too small - IF ( iopt%ApplyIncrement .AND. ABS(AnaPtr(I,J,L)) < MinConc ) CYCLE - IF ( iopt%NonZeroIncOnly ) THEN - IF ( ABS(IncPtr(I,J,L)) < MinConc ) CYCLE + IF ( iopt%IsIncrement .AND. ABS(AnaPtr(I,J,L)) < MinConc ) CYCLE + + ! Skip cell if masked out + IF ( iopt%HasMask ) THEN + IF ( MskPtr(I,J,L) <= iopt%MaskThreshold ) CYCLE ENDIF ! Default weight to be given to analysis. @@ -795,11 +716,11 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & IF ( UnitFlag == 1 ) SpcAna = SpcAna * ( AIRMW / mwSpc ) IF ( UnitFlag == 3 ) SpcAna = SpcAna * 1.0e-6 IF ( UnitFlag == 4 ) SpcAna = SpcAna * 1.0e-9 - IF ( DryFlag == 0 ) SpcAna = SpcAna / ( 1. - Qtmp(I,J,L) ) + IF ( DryFlag == 0 ) SpcAna = SpcAna / ( 1. - State_Met%SPHU(I,J,L)/1000.0 ) ! Update field SpcNew = SpcBkg(I,J,L) - IF ( iopt%ApplyIncrement ) THEN + IF ( iopt%IsIncrement ) THEN SpcNew = SpcBkg(I,J,L) + wgt*SpcAna IF ( SpcNew <= MinConc ) THEN SpcNew = MinConc @@ -848,10 +769,8 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & SpcAsm(I,J,L) = MAX(SpcNew,MinConc) ! Update diagnostics - IF ( ASSOCIATED(DiagInc ) ) DiagInc(I,J,L) = SpcAsm(I,J,L) - SpcBkg(I,J,L) - IF ( ASSOCIATED(DiagIncFrac ) ) DiagIncFrac(I,J,L) = SpcAsm(I,J,L) / MAX(SpcBkg(I,J,L),MinConc) - IF ( ASSOCIATED(DiagMsk2d ) ) DiagMsk2d(I,J) = DiagMsk2d(I,J) + 1.0 - IF ( ASSOCIATED(DiagMsk3d ) ) DiagMsk3d(I,J,L) = 1.0 + IF ( ALLOCATED(AnaMask2d ) ) AnaMask2d(I,J) = AnaMask2d(I,J) + 1.0 + IF ( ALLOCATED(AnaMask3d ) ) AnaMask3d(I,J,L) = 1.0 ! Eventually update dependent species to maintain concentration ratio of species 2 / species 1 IF ( iopt%nSpec2>0 ) THEN @@ -877,12 +796,6 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & UpdateSpec2 = .TRUE. ENDIF ENDIF - ! Diagnostics - IF( UpdateSpec2 ) THEN - IF ( ALLOCATED(DiagInc2 ) ) DiagInc2(I,J,L,N) = Spc2Asm(I,J,L,N) - Spc2Bkg(I,J,L,N) - IF ( ALLOCATED(DiagIncFrac2) ) DiagIncFrac2(I,J,L,N) = Spc2Asm(I,J,L,N) / MAX(Spc2Bkg(I,J,L,N),MinConc) - IF ( ALLOCATED(DiagSpcRatio) ) DiagSpcRatio(I,J,L,N) = Spc2Asm(I,J,L,N) / SpcAsm(I,J,L) - ENDIF ENDDO ENDIF ENDDO @@ -894,61 +807,85 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & WRITE(*,*) '*** DoAnalysis_ warning: encountered concentration below threshold, set to minimum: ',TRIM(SpecName),NNEG,MinConc,' ***' ENDIF - ! Pass back to State_Chm%Species array: flip vertical axis and convert v/v dry to kg/kg total + ! Pass back to State_Chm%Species array: convert v/v dry to kg/kg total ! ------------------------------------------------------------------------------------------- - State_Chm%Species(indSpc)%Conc(:,:,LM:1:-1) = SpcAsm(:,:,:) * (1.-Qtmp) / AIRMW * mwSpc + State_Chm%Species(indSpc)%Conc(:,:,:) = SpcAsm(:,:,:) * (1.-State_Met%SPHU/1000.) / AIRMW * mwSpc IF ( iopt%nSpec2 > 0 ) THEN DO N=1,iopt%nSpec2 - State_Chm%Species(indSpc2(N))%Conc(:,:,LM:1:-1) = Spc2Asm(:,:,:,N) * (1.-Qtmp) / AIRMW * mwSpc2(N) + State_Chm%Species(indSpc2(N))%Conc(:,:,:) = Spc2Asm(:,:,:,N) * (1.-State_Met%SPHU/1000.) / AIRMW * mwSpc2(N) ENDDO ENDIF - ENDIF ! HasBundle - - ! Fill species 2 diagnostics - IF ( iopt%nSpec2 > 0 ) THEN - DO N=1,iopt%nSpec2 - Spec2Name = TRIM(iopt%Spec2(N)%Spec2Name) - FldName = 'GCC_ANA_INC_'//TRIM(Spec2Name) - CALL MAPL_GetPointer ( Export, Ptr3D, TRIM(FldName), NotFoundOk=.TRUE., __RC__ ) - IF ( ASSOCIATED(Ptr3D) ) Ptr3D(:,:,:) = DiagInc2(:,:,:,N) - FldName = 'GCC_ANA_INC_FRAC_'//TRIM(Spec2Name) - CALL MAPL_GetPointer ( Export, Ptr3D, TRIM(FldName), NotFoundOk=.TRUE., __RC__ ) - IF ( ASSOCIATED(Ptr3D) ) Ptr3D(:,:,:) = DiagIncFrac2(:,:,:,N) - FldName = 'GCC_ANA_RATIO_'//TRIM(Spec2Name)//'_TO_'//TRIM(SpecName) - CALL MAPL_GetPointer ( Export, Ptr3D, TRIM(FldName), NotFoundOk=.TRUE., __RC__ ) - IF ( ASSOCIATED(Ptr3D) ) Ptr3D(:,:,:) = DiagSpcRatio(:,:,:,N) - ENDDO - ENDIF + ! Write out diagnostics as needed + ! ------------------------------------------------------------------------------------------- + + ! AnaInc + IF ( State_Diag%Archive_AnaInc ) THEN + DgnID = GetDiagnID ( State_Diag%Map_AnaInc, indSpc ) + IF ( DgnID > 0 ) State_Diag%AnaInc(:,:,:,DgnID) = SpcAsm - SpcBkg + IF ( iopt%nSpec2 > 0 ) THEN + DO N=1,iopt%nSpec2 + DgnID = GetDiagnID ( State_Diag%Map_AnaInc, indSpc2(N) ) + IF ( DgnID > 0 ) State_Diag%AnaInc(:,:,:,DgnID) = Spc2Asm(:,:,:,N) - Spc2Bkg(:,:,:,N) + ENDDO + ENDIF + ENDIF + + ! AnaIncFrac + IF ( State_Diag%Archive_AnaIncFrac ) THEN + DgnID = GetDiagnID ( State_Diag%Map_AnaIncFrac, indSpc ) + IF ( DgnID > 0 ) State_Diag%AnaIncFrac(:,:,:,DgnID) = SpcAsm / MAX(SpcBkg,MinConc) + IF ( iopt%nSpec2 > 0 ) THEN + DO N=1,iopt%nSpec2 + DgnID = GetDiagnID ( State_Diag%Map_AnaIncFrac, indSpc2(N) ) + IF ( DgnID > 0 ) State_Diag%AnaIncFrac(:,:,:,DgnID) = Spc2Asm(:,:,:,N) / MAX(Spc2Bkg(:,:,:,N),MinConc) + ENDDO + ENDIF + ENDIF + + ! AnaMask + IF ( State_Diag%Archive_AnaMask ) THEN + DgnID = GetDiagnID ( State_Diag%Map_AnaMask, indSpc ) + IF ( DgnID > 0 ) State_Diag%AnaMask(:,:,:,DgnID) = AnaMask3d(:,:,:) + IF ( iopt%nSpec2 > 0 ) THEN + DO N=1,iopt%nSpec2 + DgnID = GetDiagnID ( State_Diag%Map_AnaMask, indSpc2(N) ) + IF ( DgnID > 0 ) State_Diag%AnaMask(:,:,:,DgnID) = AnaMask3d(:,:,:) + ENDDO + ENDIF + ENDIF + + ! AnaMaskSum + IF ( State_Diag%Archive_AnaMaskSum ) THEN + DgnID = GetDiagnID ( State_Diag%Map_AnaMaskSum, indSpc ) + IF ( DgnID > 0 ) State_Diag%AnaMaskSum(:,:,DgnID) = AnaMask2d(:,:) + IF ( iopt%nSpec2 > 0 ) THEN + DO N=1,iopt%nSpec2 + DgnID = GetDiagnID ( State_Diag%Map_AnaMaskSum, indSpc2(N) ) + IF ( DgnID > 0 ) State_Diag%AnaMaskSum(:,:,DgnID) = AnaMask2d(:,:) + ENDDO + ENDIF + ENDIF + + ENDIF ! HasField ! Cleanup ! ------- - IF ( ALLOCATED(SpcBkg ) ) DEALLOCATE(SpcBkg) - IF ( ALLOCATED(SpcAsm ) ) DEALLOCATE(SpcAsm) - IF ( ALLOCATED(Spc2Bkg ) ) DEALLOCATE(Spc2Bkg) - IF ( ALLOCATED(Spc2Asm ) ) DEALLOCATE(Spc2Asm) - IF ( ALLOCATED(DiagInc2 ) ) DEALLOCATE(DiagInc2) - IF ( ALLOCATED(DiagIncFrac2) ) DEALLOCATE(DiagIncFrac2) - IF ( ALLOCATED(DiagSpcRatio) ) DEALLOCATE(DiagSpcRatio) - IF ( ALLOCATED(indSpc2 ) ) DEALLOCATE(indSpc2) - IF ( ALLOCATED(mwSpc2 ) ) DEALLOCATE(mwSpc2) - IF ( ASSOCIATED(AnaPtr ) ) DEALLOCATE(AnaPtr) - - IF ( ASSOCIATED(DiagInc ) ) DiagInc => NULL() - IF ( ASSOCIATED(DiagIncFrac ) ) DiagIncFrac => NULL() - IF ( ASSOCIATED(DiagMsk2d ) ) DiagMsk2d => NULL() - IF ( ASSOCIATED(DiagMsk3d ) ) DiagMsk3d => NULL() - - IF ( ALLOCATED(Qtmp ) ) DEALLOCATE(Qtmp) - - IF ( HasBundle ) THEN - CALL MAPL_SimpleBundleDestroy ( VarBundle, __RC__ ) - IF ( iopt%UseObsHour ) CALL MAPL_SimpleBundleDestroy ( VarBundleH, __RC__ ) - ENDIF + IF ( ALLOCATED(SpcBkg ) ) DEALLOCATE(SpcBkg) + IF ( ALLOCATED(SpcAsm ) ) DEALLOCATE(SpcAsm) + IF ( ALLOCATED(Spc2Bkg ) ) DEALLOCATE(Spc2Bkg) + IF ( ALLOCATED(Spc2Asm ) ) DEALLOCATE(Spc2Asm) + IF ( ALLOCATED(indSpc2 ) ) DEALLOCATE(indSpc2) + IF ( ALLOCATED(mwSpc2 ) ) DEALLOCATE(mwSpc2) + IF ( ASSOCIATED(AnaPtr ) ) DEALLOCATE(AnaPtr) + IF ( ASSOCIATED(MskPtr ) ) DEALLOCATE(MskPtr) + IF ( ALLOCATED(AnaMask2d ) ) DEALLOCATE(AnaMask2d) + IF ( ALLOCATED(AnaMask3d ) ) DEALLOCATE(AnaMask3d) + iopt => NULL() ! Successful return - RETURN_(ESMF_SUCCESS) + RC = GC_SUCCESS END SUBROUTINE DoAnalysis_ !EOC @@ -993,33 +930,11 @@ SUBROUTINE GetAnaTime_( Clock, Fwd, yy, mm, dd, h, m, s, RC ) ! ! LOCAL VARIABLES: ! - TYPE(ESMF_TIME) :: currTime - TYPE(ESMF_TimeInterval) :: tsChemInt REAL :: tsChem INTEGER :: cNYMD, cNHMS INTEGER :: fDate(2) - ! TODO: testing only - INTEGER :: Year, Month, Day, Hour, Minute, Second - - ! Begins here - __Iam__('GetAnaTime_') -! TODO: remove ESMF stuff eventually -! --------------------------------------------------------------------------------------- - ! Get current time - CALL ESMF_ClockGet( Clock, currTime = currTime, __RC__ ) - - ! Eventually adjust time - IF ( Fwd ) THEN - tsChem = GET_TS_CHEM() - ELSE - tsChem = 0.0 - ENDIF - CALL ESMF_TimeIntervalSet(tsChemInt, s_r8=real(tsChem,8), __RC__ ) - CALL ESMF_TimeGet( currTime+tsChemInt, yy=yy, mm=mm, dd=dd, h=h, m=m, s=s, __RC__ ) -! --------------------------------------------------------------------------------------- - - ! Use GEOS-Chem routines instead + ! Get time, eventually adjust forward IF ( Fwd ) THEN tsChem = GET_TS_CHEM() fDate = GET_TIME_AHEAD(INT(tsChem)) @@ -1029,27 +944,11 @@ SUBROUTINE GetAnaTime_( Clock, Fwd, yy, mm, dd, h, m, s, RC ) cNYMD = GET_NYMD() cNHMS = GET_NHMS() ENDIF - CALL YMD_EXTRACT( cNYMD, Year, Month, Day ) - CALL YMD_EXTRACT( cNHMS, Hour, Minute, Second ) - - ! TODO: testing only - IF ( yy /= Year ) write(*,*) 'GetAnaTime_ year mismatch: ', yy, Year - IF ( mm /= Month ) write(*,*) 'GetAnaTime_ month mismatch: ', mm, Month - IF ( dd /= Day ) write(*,*) 'GetAnaTime_ day mismatch: ', dd, Day - IF ( h /= Hour ) write(*,*) 'GetAnaTime_ hour mismatch: ', h, Hour - IF ( m /= Minute) write(*,*) 'GetAnaTime_ minute mismatch: ', m, Minute - IF ( s /= Second) write(*,*) 'GetAnaTime_ second mismatch: ', s, Second - - yy = Year - mm = Month - dd = Day - h = Hour - m = Minute - s = Second - + CALL YMD_EXTRACT( cNYMD, yy, mm, dd ) + CALL YMD_EXTRACT( cNHMS, h, m, s ) ! All done - RETURN_(ESMF_SUCCESS) + RC = GC_SUCCESS END SUBROUTINE GetAnaTime_ !EOC @@ -1058,176 +957,6 @@ END SUBROUTINE GetAnaTime_ !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: GetAnaBundle_ -! -! !DESCRIPTION: Get analysis data bundle. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE GetAnaBundle_( am_I_Root, FileTmpl, bName, yy, mm, dd, h, m, grid, & - VarBundle, HasBundle, ifile, fileTime, only_vars, & - err_mode, anatime, RC ) -! -! !USES: -! -! -! !INPUT/OUTPUT PARAMETERS: -! - LOGICAL, INTENT(IN) :: am_I_Root ! Root CPU? - CHARACTER(LEN=*), INTENT(IN) :: FileTmpl ! file template - CHARACTER(LEN=*), INTENT(IN) :: bName ! bundle name - INTEGER, INTENT(IN) :: yy, mm, dd ! year, month, day - INTEGER, INTENT(IN) :: h, m ! hour, minute, second - TYPE(ESMF_Grid), INTENT(INOUT) :: grid ! output grid - TYPE(MAPL_SimpleBundle) :: VarBundle ! Bundle - LOGICAL, INTENT(INOUT) :: HasBundle ! Was bundle found? - CHARACTER(LEN=*), INTENT(OUT), OPTIONAL :: ifile ! file name - TYPE(ESMF_TIME), INTENT(OUT), OPTIONAL :: fileTime ! file time - CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: only_vars ! variables to read - INTEGER, INTENT(IN), OPTIONAL :: err_mode ! error mode - LOGICAL, INTENT(IN), OPTIONAL :: anatime ! round time to analysis time? - INTEGER, INTENT(OUT), OPTIONAL :: RC ! Success or failure? -! -! !REMARKS: -! -! !REVISION HISTORY: -! 01 Mar 2022 - C. Keller - Initial version -! See https://github.com/geoschem/geos-chem for history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! LOCAL VARIABLES: -! - CHARACTER(LEN=ESMF_MAXSTR) :: ifile_ - CHARACTER(LEN=4) :: syy - CHARACTER(LEN=2) :: smm, sdd, sh, sm - INTEGER :: nymd, nhms, incSecs - INTEGER :: yy_, mm_, dd_, h_, m_, s_, fid - TYPE(ESMF_TIME) :: currTime, fileTime_ - TYPE(ESMF_TimeInterval) :: tsInt - LOGICAL :: HasFile, anatime_ - INTEGER :: errmode_ - - ! Begins here - __Iam__('GetAnaBundle_') - - ! Initialize - HasBundle = .FALSE. - errmode_ = 2 - anatime_ = .FALSE. - if ( present(err_mode) ) errmode_ = err_mode - if ( present(anatime ) ) anatime_ = anatime - - ! Get date & time of file. These are the passed values by default - yy_ = yy - mm_ = mm - dd_ = dd - h_ = h - m_ = m - ! If anatime is true, set time to closest analysis hour (0z, 6z, 12z, 18z) - IF ( anatime_ ) THEN - m_ = 0 - IF ( h < 3 ) THEN - h_ = 0 - ELSEIF ( h < 9 ) THEN - h_ = 6 - ELSEIF ( h < 15 ) THEN - h_ = 12 - ELSEIF ( h < 21 ) THEN - h_ = 18 - ! If 21z, get next day (but keep minutes) - ELSE - call ESMF_TimeSet(currTime, yy=yy_, mm=mm_, dd=dd_, h=23, m=m_, s=0) - call ESMF_TimeIntervalSet(tsInt, s_r8=real(7200.0,8), __RC__ ) - call ESMF_TimeGet( currTime+tsInt, yy=yy_, mm=mm_, dd=dd_) - h_ = 0 - ENDIF - ENDIF - - ! Parse file name - ifile_ = FileTmpl - write(syy,'(I4.4)') yy_ - CALL ReplaceChar_ ( ifile_, '%y4', syy ) - write(smm,'(I2.2)') mm_ - CALL ReplaceChar_ ( ifile_, '%m2', smm ) - write(sdd,'(I2.2)') dd_ - CALL ReplaceChar_ ( ifile_, '%d2', sdd ) - write(sh,'(I2.2)') h_ - CALL ReplaceChar_ ( ifile_, '%h2', sh ) - write(sm,'(I2.2)') m_ - CALL ReplaceChar_ ( ifile_, '%n2', sm ) - - ! set default file time - s_ = 0 - call ESMF_TimeSet(fileTime_, yy=yy_, mm=mm_, dd=dd_, h=h_, m=m_, s=s_) - - ! Check if file exists - INQUIRE( FILE=TRIM(ifile_), EXIST=HasFile ) - IF ( HasFile ) THEN - IF ( am_I_Root ) WRITE(*,*) 'GCC GetAnaBundle_: Reading '//TRIM(ifile_) - ! Try reading current time stamp on file - VarBundle = MAPL_SimpleBundleRead ( TRIM(ifile_), TRIM(bname), grid, fileTime_, ONLY_VARS=only_vars, RC=STATUS ) - IF ( STATUS == ESMF_SUCCESS ) HasBundle = .TRUE. - ! If current time stamp not found in file, just read the first entry (dangerous!) - IF ( .NOT. HasBundle ) THEN - ! If error mode is 0 or 1, stop with error - IF ( errmode_ <= 1 ) THEN - IF ( am_I_Root ) THEN - WRITE(*,*) 'Error: current time not found in file: ',TRIM(ifile_),yy_,mm_,dd_,h_,m_ - WRITE(*,*) 'You can get past this error by setting the error mode to > 1' - ENDIF - ASSERT_(.FALSE.) - ELSE - IF ( am_I_Root ) THEN - WRITE(*,*) 'Warning: current time not found in file - will read first time slice on file!! ',yy_,mm_,dd_,h_,m_ - ENDIF - ! Get time stamp on file - call GFIO_Open( ifile_, 1, fid, STATUS ) - ASSERT_(STATUS==0) - call GetBegDateTime ( fid, nymd, nhms, incSecs, STATUS ) - ASSERT_(STATUS==0) - caLL GFIO_Close( fid, STATUS ) - ASSERT_(STATUS==0) - yy_ = nymd/10000 - mm_ = (nymd-yy_*10000) / 100 - dd_ = nymd - (10000*yy_ + mm_*100) - h_ = nhms/10000 - m_ = (nhms- h_*10000) / 100 - s_ = nhms - (10000*h_ + m_*100) - call ESMF_TimeSet(fileTime_, yy=yy_, mm=mm_, dd=dd_, h=h_, m=m_, s=s_) - VarBundle = MAPL_SimpleBundleRead ( TRIM(ifile_), TRIM(bname), grid, fileTime_, ONLY_VARS=only_vars, RC=STATUS ) - IF ( STATUS==ESMF_SUCCESS ) HasBundle = .TRUE. - ENDIF - ENDIF - ! error handling if file not found - ELSE - ! If file not found and error mode is zero, stop with error - IF ( errmode_ == 0 ) THEN - IF ( am_I_Root ) THEN - WRITE(*,*) 'ERROR: file not found: '//TRIM(ifile_) - WRITE(*,*) 'You can get past this error setting the error mode to > 0' - ENDIF - ASSERT_(.FALSE.) - ! If file not found and error mode is not zero, just skip nudging - ELSE - IF ( am_I_Root ) WRITE(*,*) '*** GCC warning in GetAnaBundle_, file not found: '//TRIM(ifile_) - ENDIF - ENDIF - - ! Return - IF ( present(ifile ) ) ifile = ifile_ - IF ( present(fileTime) ) fileTime = fileTime_ - RETURN_(ESMF_SUCCESS) - - END SUBROUTINE GetAnaBundle_ -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Model ! -!------------------------------------------------------------------------------ -!BOP -! ! !IROUTINE: ReadSettings_ ! ! !DESCRIPTION: Reads the analysis settings from a given configuration file @@ -1297,17 +1026,13 @@ SUBROUTINE ReadSettings_( am_I_Root, GEOSCF, ispec, RC ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnalysisMinute, Label='AnalysisMinute:', Default=0, __RC__ ) CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='ForwardLooking:', Default=1, __RC__ ) AnaConfig(ispec)%ForwardLooking = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='ReadAnaTime:' , Default=0, __RC__ ) - AnaConfig(ispec)%ReadAnaTime = ( ThisInt == 1 ) CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='SkipPredictor:' , Default=0, __RC__ ) AnaConfig(ispec)%SkipPredictor = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileTemplate, Label='FileTemplate:' , __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileVarName, Label='FileVarName:' , __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileVarUnit, Label='FileVarUnit:' , Default='v/v', __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FldNameHco, Label='FldNameHco:' , Default='N/A', __RC__ ) + CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileVarUnit, Label='FileVarUnit:' , Default='v/v', __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileVarDry, Label='FileVarDry:' , Default=-1, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='ApplyIncrement:', Default=0, __RC__ ) - AnaConfig(ispec)%ApplyIncrement = ( ThisInt == 1 ) + CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='IsIncrement:' , Default=0, __RC__ ) + AnaConfig(ispec)%IsIncrement = ( ThisInt == 1 ) CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='IAU:' , Default=0, __RC__ ) AnaConfig(ispec)%IAU = ( ThisInt == 1 ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnalysisWindow, Label='AnalysisWindow:', Default=6, __RC__ ) @@ -1315,9 +1040,10 @@ SUBROUTINE ReadSettings_( am_I_Root, GEOSCF, ispec, RC ) AnaConfig(ispec)%InStrat = ( ThisInt == 1 ) CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='InTrop:' , Default=1, __RC__ ) AnaConfig(ispec)%InTrop = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='NonZeroIncOnly:', Default=1, __RC__ ) - AnaConfig(ispec)%NonZeroIncOnly = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileVarNameInc, Label='FileVarNameInc:', Default='N/A', __RC__ ) + CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='HasMask:', Default=0, __RC__ ) + AnaConfig(ispec)%HasMask = ( ThisInt == 1 ) + CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MskNameHco, Label='MskNameHco:' , Default='N/A', __RC__ ) + CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MaskThreshold, Label='MaskThreshold:' , Default=0.1, __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnaL1, Label='AnaL1:' , Default=1, __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnaL2, Label='AnaL2:' , Default=1, __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnaL3, Label='AnaL3:' , Default=72, __RC__ ) @@ -1330,9 +1056,6 @@ SUBROUTINE ReadSettings_( am_I_Root, GEOSCF, ispec, RC ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MaxRatioTrop , Label='MaxRatioTrop:' , Default=-1.0, __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MinRatioStrat , Label='MinRatioStrat:' , Default=-1.0, __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MinRatioTrop , Label='MinRatioTrop:' , Default=-1.0, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='UseObsHour:' , Default=0, __RC__ ) - AnaConfig(ispec)%UseObsHour = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%ObsHourName, Label='ObsHourName:' , Default='ana_hour', __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MinConc, Label='MinConc:' , Default=1.0e-20, __RC__ ) CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%ErrorMode, Label='ErrorMode:' , Default=1 , __RC__ ) @@ -1367,16 +1090,6 @@ SUBROUTINE ReadSettings_( am_I_Root, GEOSCF, ispec, RC ) AnaConfig(ispec)%Spec2 => NULL() ENDIF - ! Some logical checks - IF ( AnaConfig(ispec)%ApplyIncrement ) AnaConfig(ispec)%NonZeroIncOnly = .FALSE. - - ! Force some flags if spreading increments across observation window - IF ( AnaConfig(ispec)%IAU ) THEN - AnaConfig(ispec)%UseObsHour = .FALSE. - AnaConfig(ispec)%ReadAnaTime = .TRUE. - !AnaConfig(ispec)%AnaFraction = AnaConfig(ispec)%AnaFraction - ENDIF - ! Verbose IF ( am_I_Root ) THEN WRITE(*,*) '----------------------------------------' @@ -1387,23 +1100,17 @@ SUBROUTINE ReadSettings_( am_I_Root, GEOSCF, ispec, RC ) WRITE(*,*) '- Analysis hour : ',AnaConfig(ispec)%AnalysisHour WRITE(*,*) '- Analysis minute : ',AnaConfig(ispec)%AnalysisMinute WRITE(*,*) '- Forward looking file read : ', AnaConfig(ispec)%ForwardLooking - WRITE(*,*) '- Read file analysis time stamp : ', AnaConfig(ispec)%ReadAnaTime WRITE(*,*) '- Ignore during predictor step : ', AnaConfig(ispec)%SkipPredictor - WRITE(*,*) '- Use observation hour : ', AnaConfig(ispec)%UseObsHour - WRITE(*,*) '- File template : ', TRIM(AnaConfig(ispec)%FileTemplate) - WRITE(*,*) '- Variable name on file : ', TRIM(AnaConfig(ispec)%FileVarName) - WRITE(*,*) '- Variable unit on file : ', TRIM(AnaConfig(ispec)%FileVarUnit) WRITE(*,*) '- HEMCO field name : ', TRIM(AnaConfig(ispec)%FldNameHco) + WRITE(*,*) '- Input variable unit : ', TRIM(AnaConfig(ispec)%FileVarUnit) WRITE(*,*) '- Dry air flag (0=dry, 1=total) : ', AnaConfig(ispec)%FileVarDry - IF ( AnaConfig(ispec)%UseObsHour ) THEN - WRITE(*,*) '- Observation hour name on file : ', TRIM(AnaConfig(ispec)%ObsHourName) - ENDIF - WRITE(*,*) '- Apply increments : ', AnaConfig(ispec)%ApplyIncrement - WRITE(*,*) '- Spread increments (IAU) : ', AnaConfig(ispec)%IAU + WRITE(*,*) '- Field are increments : ', AnaConfig(ispec)%IsIncrement + WRITE(*,*) '- Spread ana/inc (IAU) : ', AnaConfig(ispec)%IAU WRITE(*,*) '- Analysis window length [h] : ', AnaConfig(ispec)%AnalysisWindow - WRITE(*,*) '- Analysis where inc is not zero: ', AnaConfig(ispec)%NonZeroIncOnly - IF ( AnaConfig(ispec)%NonZeroIncOnly ) THEN - WRITE(*,*) '- Analysis inc variable name : ', TRIM(AnaConfig(ispec)%FileVarNameInc) + WRITE(*,*) '- Restrict analysis to mask area: ', AnaConfig(ispec)%HasMask + IF ( AnaConfig(ispec)%HasMask ) THEN + WRITE(*,*) '- Mask field name: ', TRIM(AnaConfig(ispec)%MskNameHco) + WRITE(*,*) '- Mask threshold : ', AnaConfig(ispec)%MaskThreshold ENDIF WRITE(*,*) '- Apply analysis in stratosphere: ', AnaConfig(ispec)%InStrat WRITE(*,*) '- Apply analysis in troposphere : ', AnaConfig(ispec)%InTrop @@ -1542,4 +1249,51 @@ SUBROUTINE ReplaceChar_ ( str, pattern, replace ) END SUBROUTINE ReplaceChar_ !EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Transport Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: GetDiagnID +! +! !DESCRIPTION: Helper function to get the diagnostics ID +!\\ +!\\ +! !INTERFACE: +! + FUNCTION GetDiagnID ( mapDgn, SpcID ) RESULT ( SlotNumber ) +! +! USES: +! + USE State_Diag_Mod, ONLY : DgnMap +! +! INPUTS: +! + TYPE(DgnMap), POINTER :: mapDgn + INTEGER, INTENT(IN) :: SpcID +! +! !RETURN VALUE: +! + INTEGER :: SlotNumber +! +! !REVISION HISTORY: +! 14 Dec 2023 - C. Keller - Initial version. +! See https://github.com/geoschem/geos-chem for complete history +!EOP +!------------------------------------------------------------------------------ +!BOC +! + INTEGER :: N + + SlotNumber = -1 + DO N = 1,mapDgn%nSlots + IF ( mapDgn%slot2id(N) == SpcID ) THEN + SlotNumber = N + EXIT + ENDIF + ENDDO + + END FUNCTION GetDiagnID +!EOC + END MODULE GEOS_Analysis From ce12173793cff5da467d0356e2a2341ec6dd2f7e Mon Sep 17 00:00:00 2001 From: Christopher Holmes Date: Mon, 18 Dec 2023 21:48:09 -0500 Subject: [PATCH 025/331] Fix PBL level calculations Use local scale height and level thickness to determine PBL top level and pressure thickness. The code previously used a fixed global value for scale height, which is too large near poles and too small in tropics. This update lowers the PBL top level in the tropics and raises it near the poles. The change is typically 1 model level or less. --- GeosCore/pbl_mix_mod.F90 | 189 ++++++++++---------------------------- Headers/state_met_mod.F90 | 56 ----------- 2 files changed, 51 insertions(+), 194 deletions(-) diff --git a/GeosCore/pbl_mix_mod.F90 b/GeosCore/pbl_mix_mod.F90 index 9676fc824..61d01e16f 100644 --- a/GeosCore/pbl_mix_mod.F90 +++ b/GeosCore/pbl_mix_mod.F90 @@ -250,6 +250,7 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) ! !USES: ! USE ErrCode_Mod + USE PhysConstants ! Rd, g0 USE Input_Opt_Mod, ONLY : OptInput USE PhysConstants, ONLY : Scale_Height USE State_Grid_Mod, ONLY : GrdState @@ -280,7 +281,7 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) ! Scalars LOGICAL :: Bad_Sum INTEGER :: I, J, L, LTOP - REAL(fp) :: BLTOP, BLTHIK, DELP + REAL(fp) :: BLTOP, BLTHIK, DELP, Lower_Edge_Height ! Arrays REAL(fp) :: P(0:State_Grid%NZ) @@ -296,156 +297,69 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, P, BLTOP, BLTHIK, LTOP, DELP ) + !$OMP PRIVATE( I, J, L, P, BLTOP, BLTHIK, LTOP, DELP ) & + !$OMP PRIVATE( Lower_Edge_Height ) DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - !---------------------------------------------- - ! Define pressure edges: - ! P(L-1) = P at bottom edge of box (I,J,L) - ! P(L ) = P at top edge of box (I,J,L) - !---------------------------------------------- + ! PBL height above surface, m + State_Met%PBL_Top_m(I,J) = State_Met%PBLH(I,J) - ! Pressure at level edges [hPa] - DO L = 0, State_Grid%NZ - P(L) = State_Met%PEDGE(I,J,L+1) - ENDDO - - !---------------------------------------------- - ! Find PBL top and thickness [hPa] - !---------------------------------------------- - - ! BLTOP = pressure at PBL top [hPa] - ! Use barometric law since PBL is in [m] - BLTOP = P(0) * EXP( -State_Met%PBLH(I,J) / SCALE_HEIGHT ) - - ! BLTHIK is PBL thickness [hPa] - BLTHIK = P(0) - BLTOP - - !---------------------------------------------- - ! Find model level where BLTOP occurs - !---------------------------------------------- - - ! Initialize - LTOP = 0 - - ! Loop over levels - DO L = 1, State_Grid%NZ - - ! Exit when we get to the PBL top level - IF ( BLTOP > P(L) ) THEN - LTOP = L - EXIT - ELSE - State_Met%InPbl(I,J,L) = .TRUE. - ENDIF - - ENDDO - - !---------------------------------------------- - ! Define various related quantities - !---------------------------------------------- - - ! IMIX(I,J) is the level where the PBL top occurs at (I,J) - ! IMIX(I,J)-1 is the number of whole levels below the PBL top - State_Met%IMIX(I,J) = LTOP + ! Height of lower edge above surface, m + Lower_Edge_Height = 0d0 - ! Fraction of the IMIXth level underneath the PBL top - State_Met%FPBL(I,J) = 1.0_fp & - - ( BLTOP - P(LTOP) ) / ( P(LTOP-1) - P(LTOP) ) + ! Find PBL top level (L) and pressure (hPa) + Do L=1, State_Grid%NZ - ! PBL top [model layers] - State_Met%PBL_TOP_L(I,J) = FLOAT( State_Met%IMIX(I,J) - 1 ) & - + State_Met%FPBL(I,J) + If ( Lower_Edge_Height + State_Met%BXHEIGHT(I,J,L) >= State_Met%PBLH(I,J) ) then - ! PBL top [hPa] - State_Met%PBL_TOP_hPa(I,J) = BLTOP + ! PBL top is in this level + LTOP = L - ! Zero PBL top [m] -- compute below - State_Met%PBL_TOP_m(I,J) = 0.0_fp + ! Pressure at the PBL top altitude, hPa + ! Use pressure lapse equation: p(PBLH) = p(z1) * exp( -(PBLH-z1) / Scale_Height ) + ! p(z1) = State_Met%PEDGE(I,J,L) = Pressure at the lower level edge + ! PBLH - z1 = (State_Met%PBLH(I,J,L) - Lower_Edge_Height) = Height above the lower level edge + ! Scale_Height = Rd * Tv / g0 + State_Met%PBL_Top_hPa(I,J) = State_Met%PEdge(I,J,L) * & + EXP( -(State_Met%PBLH(I,J) - Lower_Edge_Height) * g0 / ( Rd * State_Met%Tv(I,J,L) ) ) - ! PBL thickness [hPa] - State_Met%PBL_THICK(I,J) = BLTHIK + ! Fraction of PBL mass in layer L, will be normalized below + State_Met%F_of_PBL(I,J,L) = State_Met%PEdge(I,J,L) - State_Met%PBL_Top_hPa(I,J) + + ! Fraction of the grid cell mass under PBL top + State_Met%F_Under_PBLTop(I,J,L) = State_Met%F_of_PBL(I,J,L) / & + ( State_Met%PEdge(I,J,L) - State_Met%PEdge(I,J,L+1) ) - !============================================================== - ! Loop up to edge of chemically-active grid - !============================================================== - DO L = 1, State_Grid%MaxChemLev + ! Model level of PBL top (integer+fraction). The top is within level CEILING(PBL_Top_L) + State_Met%PBL_Top_L(I,J) = (LTOP-1) + State_Met%F_Under_PBLTop(I,J,L) - ! Thickness of grid box (I,J,L) [hPa] - DELP = P(L-1) - P(L) + ! PBL Thickness from surface to top, hPa + State_Met%PBL_Thick(I,J) = State_Met%PEdge(I,J,1) - State_Met%PBL_Top_hPa(I,J) - IF ( L < State_Met%IMIX(I,J) ) THEN + !! Exit Do loop after we found PBL top level + Exit - !-------------------------------------------- - ! (I,J,L) lies completely below the PBL top - !-------------------------------------------- + Else - ! Fraction of grid box (I,J,L) w/in the PBL - State_Met%F_OF_PBL(I,J,L) = DELP / BLTHIK + ! Grid cell fully within PBL + State_Met%inPBL(I,J,L) = .True. - ! Fraction of grid box (I,J,L) underneath PBL top - State_Met%F_UNDER_PBLTOP(I,J,L) = 1.0_fp + ! Fraction of the grid cell mass under PBL top + State_Met%F_Under_PBLTop(I,J,L) = 1.0d0 - ! PBL height [m] - State_Met%PBL_TOP_m(I,J) = State_Met%PBL_TOP_m(I,J) + & - State_Met%BXHEIGHT(I,J,L) + ! Fraction of PBL mass in layer L, will be normalized below + State_Met%F_of_PBL(I,J,L) = State_Met%PEdge(I,J,L) - State_Met%PEdge(I,J,L+1) - ELSE IF ( L == State_Met%IMIX(I,J) ) THEN + ! Update lower edge height, m + Lower_Edge_Height = Lower_Edge_Height + State_Met%BXHeight(I,J,L) - !-------------------------------------------- - ! (I,J,L) straddles the PBL top - !-------------------------------------------- + EndIf + + EndDo - ! Fraction of grid box (I,J,L) w/in the PBL - State_Met%F_OF_PBL(I,J,L) = ( P(L-1) - BLTOP ) / BLTHIK - - ! Fraction of grid box (I,J,L) underneath PBL top - State_Met%F_UNDER_PBLTOP(I,J,L) = State_Met%FPBL(I,J) - - ! PBL height [m] - State_Met%PBL_TOP_m(I,J) = State_Met%PBL_TOP_m(I,J) & - + ( State_Met%BXHEIGHT(I,J,L) & - * State_Met%FPBL(I,J) ) - - ELSE - - !-------------------------------------------- - ! (I,J,L) lies completely above the PBL top - !-------------------------------------------- - - ! Fraction of grid box (I,J,L) w/in the PBL - State_Met%F_OF_PBL(I,J,L) = 0.0_fp - - ! Fraction of grid box (I,J,L) underneath PBL top - State_Met%F_UNDER_PBLTOP(I,J,L) = 0.0_fp - - ENDIF - - !### Debug - !IF ( I==23 .and. J==34 .and. L < 6 ) THEN - ! PRINT*, '###--------------------------------------' - ! PRINT*, '### COMPUTE_PBL_HEIGHT' - ! PRINT*, '### I, J, L : ', I, J, L - ! PRINT*, '### P(L-1) : ', P(L-1) - ! PRINT*, '### P(L) : ', P(L) - ! PRINT*, '### F_OF_PBL : ', State_Met%F_OF_PBL(I,J,L) - ! PRINT*, '### F_UNDER_TOP : ', & - ! State_Met%F_UNDER_PBLTOP(I,J,L) - ! PRINT*, '### IMIX : ', State_Met%IMIX(I,J) - ! PRINT*, '### FPBL : ', State_Met%FPBL(I,J) - ! PRINT*, '### PBL_TOP_hPa : ', State_Met%PBL_TOP_hPa(I,J) - ! PRINT*, '### PBL_TOP_L : ', State_Met%PBL_TOP_L(I,J) - ! PRINT*, '### DELP : ', DELP - ! PRINT*, '### BLTHIK : ', BLTHIK - ! PRINT*, '### BLTOP : ', BLTOP - ! PRINT*, '### BXHEIGHT : ', State_Met%BXHEIGHT(I,J,L) - ! PRINT*, '### PBL_TOP_m : ', State_Met%PBL_TOP_m(I,J) - ! PRINT*, '### other way m : ', & - ! P(0) * EXP( -State_Met%PBL_TOP_hPa(I,J) / SCALE_HEIGHT ) - !ENDIF - - ENDDO + ! Fraction of PBL mass in layer L, now normalize to sum of 1 + State_Met%F_of_PBL(I,J,:) = State_Met%F_of_PBL(I,J,:) / State_Met%PBL_Thick(I,J) ! Error check IF ( ABS( SUM( State_Met%F_OF_PBL(I,J,:) ) - 1.0_fp) > 1.0e-3_fp) THEN @@ -454,6 +368,7 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) Bad_Sum = .TRUE. !$OMP END CRITICAL ENDIF + ENDDO ENDDO !$OMP END PARALLEL DO @@ -466,7 +381,7 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) ENDIF ! Model level where PBL top occurs - State_Met%PBL_MAX_L = MAXVAL( State_Met%IMIX ) + State_Met%PBL_MAX_L = MAXVAL( ceiling( State_Met%PBL_Top_L ) ) END SUBROUTINE Compute_Pbl_Height !EOC @@ -574,9 +489,9 @@ SUBROUTINE TurbDay( Input_Opt, State_Chm, State_Diag, & ! Initalize AD => State_Met%AD ! Dry air mass - IMIX => State_Met%IMIX ! Integer level where PBL top occurs - FPBL => State_Met%FPBL ! Fractional level above IMIX to PBL top - TC => State_Chm%Species ! Chemical species [v/v] + TC => State_Chm%Species ! Chemical species [v/v] + IMIX = ceiling( State_Met%PBL_Top_L ) ! Integer level where PBL top occurs + FPBL = State_Met%PBL_Top_L - (IMIX-1) ! Fractional level above IMIX to PBL top ! Convection timestep [s] DTCONV = GET_TS_CONV() @@ -663,8 +578,6 @@ SUBROUTINE TurbDay( Input_Opt, State_Chm, State_Diag, & ! Free pointers AD => NULL() - IMIX => NULL() - FPBL => NULL() TC => NULL() END SUBROUTINE TurbDay diff --git a/Headers/state_met_mod.F90 b/Headers/state_met_mod.F90 index 6da6d4427..c88160177 100644 --- a/Headers/state_met_mod.F90 +++ b/Headers/state_met_mod.F90 @@ -272,8 +272,6 @@ MODULE State_Met_Mod !---------------------------------------------------------------------- ! Fields for boundary layer mixing !---------------------------------------------------------------------- - INTEGER, POINTER :: IMIX (:,: ) ! Integer and fractional level - REAL(fp), POINTER :: FPBL (:,: ) ! where PBL top occurs INTEGER :: PBL_MAX_L ! Max level where PBL top occurs !---------------------------------------------------------------------- @@ -494,8 +492,6 @@ SUBROUTINE Zero_State_Met( State_Met, RC ) State_Met%PDOWN => NULL() State_Met%QQ => NULL() State_Met%REEVAP => NULL() - State_Met%IMIX => NULL() - State_Met%FPBL => NULL() State_Met%REEVAP => NULL() State_Met%PBL_MAX_L = 0 @@ -740,25 +736,6 @@ SUBROUTINE Init_State_Met( Input_Opt, State_Grid, State_Met, RC ) RETURN ENDIF - !------------------------------------------------------------------------ - ! FPBL [1] : Local variable for PBL mixing -- do not register this - !------------------------------------------------------------------------ - metId = 'FPBL' - CALL Init_and_Register( & - Input_Opt = Input_Opt, & - State_Met = State_Met, & - State_Grid = State_Grid, & - metId = metId, & - Ptr2Data = State_Met%FPBL, & - noRegister = .TRUE., & - RC = RC ) - - IF ( RC /= GC_SUCCESS ) THEN - errMsg = TRIM( errMsg_ir ) // TRIM( metId ) - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !------------------------------------------------------------------------ ! FRCLND [1] !------------------------------------------------------------------------ @@ -939,25 +916,6 @@ SUBROUTINE Init_State_Met( Input_Opt, State_Grid, State_Met, RC ) RETURN ENDIF - !------------------------------------------------------------------------ - ! IMIX [1]: Local variable for PBL mixing -- Do not register this - !------------------------------------------------------------------------ - metId = 'IMIX' - CALL Init_and_Register( & - Input_Opt = Input_Opt, & - State_Met = State_Met, & - State_Grid = State_Grid, & - metId = metId, & - Ptr2Data = State_Met%IMIX, & - noRegister = .TRUE., & - RC = RC ) - - IF ( RC /= GC_SUCCESS ) THEN - errMsg = TRIM( errMsg_ir ) // TRIM( metId ) - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - !------------------------------------------------------------------------ ! IREG [1] !------------------------------------------------------------------------ @@ -3770,20 +3728,6 @@ SUBROUTINE Cleanup_State_Met( State_Met, RC ) State_Met%IREG => NULL() ENDIF - IF ( ASSOCIATED( State_Met%IMIX) ) THEN - DEALLOCATE( State_Met%IMIX, STAT=RC ) - CALL GC_CheckVar( 'State_Met%IMIX', 2, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - State_Met%IMIX => NULL() - ENDIF - - IF ( ASSOCIATED( State_Met%FPBL ) ) THEN - DEALLOCATE( State_Met%FPBL, STAT=RC ) - CALL GC_CheckVar( 'State_Met%FPBL', 2, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - State_Met%FPBL => NULL() - ENDIF - !======================================================================== ! Deallocate 3-D fields ! From fb71b59fb432e427611d7b15f4adc6b525004c7e Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Tue, 19 Dec 2023 09:19:39 -0500 Subject: [PATCH 026/331] Added error code handling, improved error checks --- Headers/qfyaml_mod.F90 | 2 + Interfaces/GCHP/Chem_GridCompMod.F90 | 5 +- Interfaces/GEOS/geos_analysis.F90 | 890 ++++++++++++++----- run/GEOS/GEOSCHEMchem_AnaSettings_NO2.rc | 37 - run/GEOS/GEOSCHEMchem_AnaSettings_O3.CDAS.rc | 27 - run/GEOS/GEOSCHEMchem_AnaSettings_O3.rc | 29 - run/GEOS/GEOSCHEMchem_AnaSettings_SO2.rc | 33 - run/GEOS/GEOSCHEMchem_ExtData.yaml | 21 +- run/GEOS/geoschem_analysis.yml | 95 ++ 9 files changed, 768 insertions(+), 371 deletions(-) delete mode 100644 run/GEOS/GEOSCHEMchem_AnaSettings_NO2.rc delete mode 100644 run/GEOS/GEOSCHEMchem_AnaSettings_O3.CDAS.rc delete mode 100644 run/GEOS/GEOSCHEMchem_AnaSettings_O3.rc delete mode 100644 run/GEOS/GEOSCHEMchem_AnaSettings_SO2.rc create mode 100644 run/GEOS/geoschem_analysis.yml diff --git a/Headers/qfyaml_mod.F90 b/Headers/qfyaml_mod.F90 index ccbecdab9..d14b4c6f7 100644 --- a/Headers/qfyaml_mod.F90 +++ b/Headers/qfyaml_mod.F90 @@ -46,6 +46,8 @@ MODULE QFYAML_Mod PUBLIC :: QFYAML_Merge PUBLIC :: QFYAML_Print PUBLIC :: QFYAML_Update + + PUBLIC :: Get_Var_Index ! ! !REMARKS: ! QFYAML -- The Quick Fortran YAML parser! diff --git a/Interfaces/GCHP/Chem_GridCompMod.F90 b/Interfaces/GCHP/Chem_GridCompMod.F90 index 8c335be98..b39293156 100644 --- a/Interfaces/GCHP/Chem_GridCompMod.F90 +++ b/Interfaces/GCHP/Chem_GridCompMod.F90 @@ -998,7 +998,7 @@ SUBROUTINE SetServices( GC, RC ) CALL GEOS_CheckRATSandOx( am_I_Root, GC, __RC__ ) ! Analysis options - CALL GEOS_AnaInit( am_I_Root, GC, myState%myCF, ANAPHASE, __RC__ ) + CALL GEOS_AnaInit( am_I_Root, ANAPHASE, __RC__ ) #endif @@ -2900,8 +2900,7 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) IF ( PHASE == ANAPHASE ) THEN ! Call GEOS analysis routine - CALL GEOS_AnaRun( GC, Import, INTSTATE, Export, Clock, & - Input_Opt, State_Met, State_Chm, State_Grid, & + CALL GEOS_AnaRun( Input_Opt, State_Met, State_Chm, State_Grid, & State_Diag, __RC__ ) ! GEOS Diagnostics. This includes the 'default' GEOS-Chem diagnostics. diff --git a/Interfaces/GEOS/geos_analysis.F90 b/Interfaces/GEOS/geos_analysis.F90 index 696114315..a832ad438 100644 --- a/Interfaces/GEOS/geos_analysis.F90 +++ b/Interfaces/GEOS/geos_analysis.F90 @@ -1,5 +1,3 @@ -#include "MAPL_Generic.h" - !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Model ! !------------------------------------------------------------------------------ @@ -16,10 +14,6 @@ MODULE GEOS_Analysis ! ! !USES: ! - ! ESMF/MAPL - USE ESMF - USE MAPL_Mod - ! GEOS-Chem USE Error_Mod USE ErrCode_Mod @@ -67,7 +61,7 @@ MODULE GEOS_Analysis LOGICAL :: SkipPredictor CHARACTER(LEN=127) :: FldNameHco CHARACTER(LEN=63) :: FileVarUnit - INTEGER :: FileVarDry + INTEGER :: DryFlag LOGICAL :: IsIncrement INTEGER :: IAU INTEGER :: AnalysisWindow @@ -96,6 +90,10 @@ MODULE GEOS_Analysis ! List holding all analysis information TYPE(AnaOptions), POINTER :: AnaConfig(:) => NULL() + + ! Main configuration file for analysis options + CHARACTER(LEN=127), PARAMETER :: AnaConfigFile = './geoschem_analysis.yml' + ! ! !REVISION HISTORY: ! 25 May 2022 - C. Keller - initial version (refactored Chem_GridCompMod) @@ -117,24 +115,20 @@ MODULE GEOS_Analysis ! ! !INTERFACE: ! - SUBROUTINE GEOS_AnaInit( am_I_Root, GC, GEOSCF, AnaPhase, RC ) + SUBROUTINE GEOS_AnaInit( am_I_Root, AnaPhase, RC ) ! ! !USES: ! + USE QfYaml_Mod ! ! !INPUT PARAMETERS: ! LOGICAL, INTENT(IN) :: am_I_Root ! Root PET? ! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(ESMF_GridComp), INTENT(INOUT) :: GC ! GridComp - TYPE(ESMF_Config), INTENT(INOUT) :: GEOSCF ! GEOSCHEMchem_GridComp.rc -! ! !OUTPUT PARAMETERS: ! INTEGER, INTENT(OUT) :: AnaPhase ! Do analysis after run phase 1 or 2? - INTEGER, INTENT(OUT) :: RC ! Success or failure + INTEGER, INTENT(INOUT) :: RC ! Success or failure ! ! !REMARKS: ! @@ -147,100 +141,91 @@ SUBROUTINE GEOS_AnaInit( am_I_Root, GC, GEOSCF, AnaPhase, RC ) ! ! !LOCAL VARIABLES: ! - TYPE(ESMF_Config) :: AnaSpecCF - CHARACTER(LEN=ESMF_MAXSTR) :: compName - CHARACTER(LEN=ESMF_MAXSTR) :: Iam - CHARACTER(LEN=ESMF_MAXSTR) :: ConfigName - CHARACTER(LEN=ESMF_MAXSTR) :: SpecName - INTEGER :: I, N, NDIAG, ThisInt - INTEGER :: STATUS + CHARACTER(LEN=255) :: Iam + CHARACTER(LEN=511) :: errMsg + LOGICAL :: FileExists + TYPE(QFYAML_t) :: Config, ConfigAnchored + CHARACTER(LEN=QFYAML_NamLen) :: key + INTEGER :: N, v_int, ix + CHARACTER(LEN=63) :: iSpecName !======================================================================= ! GEOS_AnaInit begins here !======================================================================= - ! Get configuration - CALL ESMF_GridCompGet( GC, name=compName, __RC__ ) - ! callback name - Iam = TRIM(compName)//'::GEOS_AnaInit' + Iam = 'GEOS-Chem::GEOS_AnaInit' + + ! Initialize + RC = GC_SUCCESS + ANAPHASE = 2 + nAnaSpec = 0 + + ! Check if file exists + INQUIRE( FILE=AnaConfigFile, EXIST=FileExists ) + IF ( .NOT. FileExists ) THEN + IF ( am_I_Root ) THEN + WRITE( 6, * ) TRIM(Iam)//": analysis configuration file not there: "//TRIM(AnaConfigFile) + WRITE( 6, * ) " --> no GEOS-Chem species will be nudged" + ENDIF + RETURN + ENDIF + + ! Read YAML file into Config object + CALL QFYAML_Init( AnaConfigFile, Config, ConfigAnchored, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error reading analysis configuration file: ' // TRIM( AnaConfigFile ) + CALL GC_Error( errMsg, RC, Iam ) + RETURN + ENDIF ! Run phase after which to apply analysis - CALL ESMF_ConfigGetAttribute( GEOSCF, ThisInt, Label="ANAPHASE:", Default=2, __RC__ ) - ANAPHASE = ThisInt + key = "general%runphase" + v_int = 2 + CALL QFYAML_Add_Get( Config, TRIM( key ), v_int, "", RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error parsing ' // TRIM( key ) // '!' + CALL GC_Error( errMsg, RC, Iam ) + RETURN + ENDIF + ANAPHASE = v_int + + ! Get list of species + key = "general%nspecies" + v_int = 0 + CALL QFYAML_Add_Get( Config, TRIM( key ), v_int, "", RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error parsing ' // TRIM( key ) // '!' + CALL GC_Error( errMsg, RC, Iam ) + RETURN + ENDIF + nAnaSpec = v_int - ! Get number of analysis species - CALL ESMF_ConfigGetAttribute( GEOSCF, nAnaSpec, Label="Analysis_nSpecies:", Default=0, __RC__ ) + ! Verbose IF ( am_I_Root ) THEN - WRITE(*,*) 'Number of analysis species: ',nAnaSpec - WRITE(*,*) 'Analysis phase set to ',ANAPHASE + WRITE(6,*) 'Number of analysis species: ',nAnaSpec + WRITE(6,*) 'Analysis phase set to ',ANAPHASE ENDIF ! Read settings for all species from config file IF ( nAnaSpec > 0 ) THEN - ALLOCATE( AnaConfig(nAnaSpec), STAT=STATUS ) - _ASSERT( STATUS==0, 'AnaConfig could not be allocated' ) + ALLOCATE( AnaConfig(nAnaSpec), STAT=RC ) + IF ( RC /= 0 ) THEN + errMsg = 'AnaConfig could not be allocated!' + CALL GC_Error( errMsg, RC, Iam ) + RETURN + ENDIF + ! Now read settings for each species DO N=1,nAnaSpec - CALL ReadSettings_( am_I_Root, GEOSCF, N, __RC__ ) + CALL ReadSettings_( am_I_Root, Config, N, RC=RC ) + IF ( RC /= GC_SUCCESS ) EXIT ENDDO ENDIF -! ! Initialize diagnostics -! IF ( nAnaSpec > 0 ) THEN -! DO N=1,nAnaSpec -! NDIAG = 1 + AnaConfig(N)%nSpec2 -! DO I=1,NDIAG -! IF ( I==1 ) THEN -! SpecName = AnaConfig(N)%SpecName -! ELSE -! SpecName = AnaConfig(N)%Spec2(I-1)%Spec2Name -! ENDIF -! CALL MAPL_AddExportSpec(GC, & -! SHORT_NAME = 'GCC_ANA_INC_'//TRIM(SpecName), & -! LONG_NAME = TRIM(SpecName)//'_analysis_increment_volume_mixing_ratio_dry_air', & -! UNITS = 'mol mol-1', & -! DIMS = MAPL_DimsHorzVert, & -! VLOCATION = MAPL_VLocationCenter, & -! __RC__ ) -! CALL MAPL_AddExportSpec(GC, & -! SHORT_NAME = 'GCC_ANA_INC_FRAC_'//TRIM(SpecName), & -! LONG_NAME = TRIM(SpecName)//'_analysis_increment_ratio_volume_mixing_ratio_dry_air', & -! UNITS = '1', & -! DIMS = MAPL_DimsHorzVert, & -! VLOCATION = MAPL_VLocationCenter, & -! __RC__ ) -! IF ( I==1 ) THEN -! CALL MAPL_AddExportSpec(GC, & -! SHORT_NAME = 'GCC_ANA_MASK_VSUM_'//TRIM(SpecName), & -! LONG_NAME = TRIM(SpecName)//'_analysis_counts', & -! UNITS = '1', & -! DIMS = MAPL_DimsHorzOnly, & -! VLOCATION = MAPL_VLocationNone, & -! __RC__ ) -! CALL MAPL_AddExportSpec(GC, & -! SHORT_NAME = 'GCC_ANA_MASK_'//TRIM(SpecName), & -! LONG_NAME = TRIM(SpecName)//'_analysis_mask', & -! UNITS = '1', & -! DIMS = MAPL_DimsHorzVert, & -! VLOCATION = MAPL_VLocationCenter, & -! __RC__ ) -! ENDIF -! IF ( I>1 ) THEN -! CALL MAPL_AddExportSpec(GC, & -! SHORT_NAME = 'GCC_ANA_RATIO_'//TRIM(SpecName)//'_TO_'//TRIM(AnaConfig(N)%SpecName), & -! LONG_NAME = TRIM(SpecName)//'_to_'//TRIM(AnaConfig(N)%SpecName)//'_species_ratio_after_analysis', & -! UNITS = '1', & -! DIMS = MAPL_DimsHorzVert, & -! VLOCATION = MAPL_VLocationCenter, & -! __RC__ ) -! ENDIF -! ENDDO -! ENDDO -! ENDIF - - ! Successful return - RETURN_(ESMF_SUCCESS) + ! Cleanup + CALL QFYAML_CleanUp( Config ) + CALL QFYAML_CleanUp( ConfigAnchored ) END SUBROUTINE GEOS_AnaInit !EOC @@ -255,9 +240,7 @@ END SUBROUTINE GEOS_AnaInit ! ! !INTERFACE: ! - SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & - Input_Opt, State_Met, State_Chm, State_Grid, & - State_Diag, RC ) + SUBROUTINE GEOS_AnaRun( Input_Opt, State_Met, State_Chm, State_Grid, State_Diag, RC ) ! ! !USES: ! @@ -270,11 +253,6 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ESMF_GridComp), INTENT(INOUT) :: GC ! Ref. to this GridComp - TYPE(ESMF_State), INTENT(INOUT) :: Import ! Import State - TYPE(ESMF_STATE), INTENT(INOUT) :: Internal ! Internal state - TYPE(ESMF_State), INTENT(INOUT) :: Export ! Export State - TYPE(ESMF_Clock), INTENT(INOUT) :: Clock ! ESMF Clock object TYPE(OptInput) :: Input_Opt TYPE(MetState) :: State_Met TYPE(ChmState) :: State_Chm @@ -283,7 +261,7 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & ! ! !OUTPUT PARAMETERS: ! - INTEGER, INTENT(OUT) :: RC ! Success or failure + INTEGER, INTENT(INOUT) :: RC ! Success or failure ! ! !REMARKS: ! @@ -299,7 +277,6 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & INTEGER :: ispec CHARACTER(LEN=63) :: OrigUnit CHARACTER(LEN=255) :: ErrMsg, ThisLoc - INTEGER :: STATUS !======================================================================= ! GEOS_AnaRun begins here @@ -311,10 +288,10 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & ! Convert to total mixing ratio CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & - 'kg/kg total', STATUS, OrigUnit=OrigUnit ) - IF ( STATUS /= GC_SUCCESS ) THEN + 'kg/kg total', RC, OrigUnit=OrigUnit ) + IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Unit conversion error (start)!' - CALL GC_Error( ErrMsg, STATUS, ThisLoc ) + CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF @@ -328,12 +305,11 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & IF ( nAnaSpec > 0 .AND. ASSOCIATED(AnaConfig) ) THEN DO ispec=1,nAnaSpec IF ( AnaConfig(ispec)%Active ) THEN - CALL DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & - Input_Opt, State_Met, State_Chm, State_Grid, & - State_Diag, STATUS ) - IF ( STATUS /= GC_SUCCESS ) THEN + CALL DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, & + State_Grid, State_Diag, RC ) + IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'DoAnalysis_ error!' - CALL GC_Error( ErrMsg, STATUS, ThisLoc ) + CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF ENDIF @@ -342,10 +318,10 @@ SUBROUTINE GEOS_AnaRun( GC, Import, Internal, Export, Clock, & ! Convert species back to original unit CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & - OrigUnit, STATUS ) - IF ( STATUS /= GC_SUCCESS ) THEN + OrigUnit, RC ) + IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Unit conversion error (end)!' - CALL GC_Error( ErrMsg, STATUS, ThisLoc ) + CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF @@ -379,8 +355,8 @@ SUBROUTINE GEOS_AnaFinal( RC ) !EOP !------------------------------------------------------------------------------ !BOC - CHARACTER(LEN=ESMF_MAXSTR) :: Iam - INTEGER :: N, STATUS + CHARACTER(LEN=255) :: Iam + INTEGER :: N !======================================================================= ! GEOS_AnaInit begins here @@ -388,6 +364,7 @@ SUBROUTINE GEOS_AnaFinal( RC ) ! callback name Iam = 'GEOS_AnaFinal' + RC = GC_SUCCESS ! Clean up IF ( ASSOCIATED(AnaConfig) ) THEN @@ -399,9 +376,6 @@ SUBROUTINE GEOS_AnaFinal( RC ) AnaConfig => NULL() nAnaSpec = 0 - ! Successful return - RETURN_(ESMF_SUCCESS) - END SUBROUTINE GEOS_AnaFinal !EOC !------------------------------------------------------------------------------ @@ -415,8 +389,7 @@ END SUBROUTINE GEOS_AnaFinal ! ! !INTERFACE: ! - SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & - Input_Opt, State_Met, State_Chm, State_Grid, State_Diag, RC ) + SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, State_Diag, RC ) ! ! !USES: ! @@ -431,11 +404,6 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ESMF_GridComp), INTENT(INOUT) :: GC ! Ref. to this GridComp - TYPE(ESMF_State), INTENT(INOUT) :: Import ! Import State - TYPE(ESMF_State), INTENT(INOUT) :: Internal ! Internal state - TYPE(ESMF_State), INTENT(INOUT) :: Export ! Export State - TYPE(ESMF_Clock), INTENT(INOUT) :: Clock ! ESMF Clock object INTEGER, INTENT(IN) :: ispec ! analysis species index TYPE(OptInput) :: Input_Opt TYPE(MetState) :: State_Met @@ -482,7 +450,6 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & REAL :: MinConc LOGICAL :: UpdateSpec2 CHARACTER(LEN=255) :: Iam - INTEGER :: STATUS CHARACTER(LEN=255) :: ErrMsg, ThisLoc ! Diagnostics @@ -512,7 +479,7 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! Check if it's time to do the analysis TimeForAna = .FALSE. - CALL GetAnaTime_( Clock, iopt%ForwardLooking, yy, mm, dd, h, m, s, RC ) + CALL GetAnaTime_( iopt%ForwardLooking, yy, mm, dd, h, m, s, RC ) IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Error in GetAnaTime_' CALL GC_Error( ErrMsg, RC, ThisLoc) @@ -563,6 +530,19 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & RETURN ENDIF ENDIF + + ! Handle cases where field is not found. If error mode is set to 0, stop with error. + ! Print a warning otherwise. + IF ( .NOT. HasField ) THEN + IF ( iopt%ErrorMode == 0 ) THEN + ErrMsg = 'Field not found: '//TRIM(iopt%FldNameHco)//'; to get past this error, set error mode to > 0' + CALL GC_Error( ErrMsg, RC, ThisLoc) + RETURN + ELSE + ErrMsg = 'Field not found: '//TRIM(iopt%FldNameHco)//'; will skip analysis' + CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc) + ENDIF + ENDIF ENDIF ! Apply increments if it's time to do so and if file exists @@ -617,7 +597,7 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & LM = SIZE(AnaPtr,3) ! Set dry flag - DryFlag = iopt%FileVarDry + DryFlag = iopt%DryFlag ! Set unit flag. This is to prevent parsing the unit string within the loop below SELECT CASE ( TRIM(iopt%FileVarUnit) ) @@ -804,7 +784,7 @@ SUBROUTINE DoAnalysis_( GC, Import, Internal, Export, Clock, ispec, & ! Print warning if at least one negative cell IF ( NNEG > 0 ) THEN - WRITE(*,*) '*** DoAnalysis_ warning: encountered concentration below threshold, set to minimum: ',TRIM(SpecName),NNEG,MinConc,' ***' + WRITE(6,*) '*** DoAnalysis_ warning: encountered concentration below threshold, set to minimum: ',TRIM(SpecName),NNEG,MinConc,' ***' ENDIF ! Pass back to State_Chm%Species array: convert v/v dry to kg/kg total @@ -902,7 +882,7 @@ END SUBROUTINE DoAnalysis_ !\\ ! !INTERFACE: ! - SUBROUTINE GetAnaTime_( Clock, Fwd, yy, mm, dd, h, m, s, RC ) + SUBROUTINE GetAnaTime_( Fwd, yy, mm, dd, h, m, s, RC ) ! ! !USES: ! @@ -913,7 +893,6 @@ SUBROUTINE GetAnaTime_( Clock, Fwd, yy, mm, dd, h, m, s, RC ) ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ESMF_Clock), INTENT(INOUT) :: Clock ! ESMF Clock object LOGICAL, INTENT(IN) :: Fwd ! Adjust time one time step forward? INTEGER, INTENT(OUT) :: yy, mm, dd ! year, month, day INTEGER, INTENT(OUT) :: h, m, s ! hour, minute, second @@ -964,23 +943,25 @@ END SUBROUTINE GetAnaTime_ ! ! !INTERFACE: ! - SUBROUTINE ReadSettings_( am_I_Root, GEOSCF, ispec, RC ) + SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) ! ! !USES: ! + USE QfYaml_Mod + USE RoundOff_Mod, ONLY : Cast_and_RoundOff ! ! !INPUT PARAMETERS: ! LOGICAL, INTENT(IN) :: am_I_Root ! Root PET? - INTEGER, INTENT(IN) :: ispec ! species number + INTEGER, INTENT(IN) :: ispec ! species count ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ESMF_CONFIG), INTENT(INOUT) :: GEOSCF ! GCC RC file + TYPE(QFYAML_t), INTENT(INOUT) :: Config ! yaml config file ! ! !OUTPUT PARAMETERS: ! - INTEGER, INTENT(OUT) :: RC ! Success or failure + INTEGER, INTENT(INOUT) :: RC ! Success or failure ! ! !REMARKS: ! @@ -993,83 +974,413 @@ SUBROUTINE ReadSettings_( am_I_Root, GEOSCF, ispec, RC ) ! ! !LOCAL VARIABLES: ! - TYPE(ESMF_Config) :: CF - CHARACTER(LEN=ESMF_MAXSTR) :: ConfigNameLabel, ConfigName, ThisStr - CHARACTER(LEN=ESMF_MAXSTR) :: Spec2Name, Spec2Strat, Spec2Trop - CHARACTER(LEN=ESMF_MAXSTR) :: Spec2MinRatio, Spec2MaxRatio + CHARACTER(LEN=255) :: Iam + CHARACTER(LEN=63) :: pkey, SpecName CHARACTER(LEN=3) :: intStr - INTEGER :: N, IDX, nSpec2, ThisInt - CHARACTER(LEN=ESMF_MAXSTR) :: Iam - INTEGER :: STATUS + INTEGER :: C, ix + + CHARACTER(LEN=QFYAML_NamLen) :: key + CHARACTER(LEN=QFYAML_StrLen) :: v_str + LOGICAL :: found, v_bool + INTEGER :: v_int + + INTEGER :: N, nSpec2 + CHARACTER(LEN=255) :: ThisStr, Spec2Name, Spec2Strat, Spec2Trop + CHARACTER(LEN=255) :: Spec2MinRatio, Spec2MaxRatio !======================================================================= ! ReadSettings_ begins here !======================================================================= - Iam = 'ReadSettings_' + Iam = 'GEOS_Analysis:: ReadSettings_' - ! Get name of configuration file with settings + ! Prefix for this entry WRITE( intStr, '(I3.3)' ) ispec - ConfigNameLabel = 'Analysis_Settings_Spec'//TRIM(intStr)//':' - CALL ESMF_ConfigGetAttribute( GEOSCF, ConfigName, Label=TRIM(ConfigNameLabel), __RC__ ) - - ! Load configuration file - CF = ESMF_ConfigCreate (__RC__) - IF ( am_I_Root ) write(*,*) 'Reading analysis settings from file '//TRIM(ConfigName) - call ESMF_ConfigLoadFile (CF, TRIM(ConfigName), __RC__ ) - - ! Read settings and write to configuration list - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%SpecName, Label='SpeciesName:' , __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='Active:' , Default=1, __RC__ ) - AnaConfig(ispec)%Active = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnalysisFreq, Label='AnalysisFreq:' , Default=6, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnalysisHour, Label='AnalysisHour:' , Default=0, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnalysisMinute, Label='AnalysisMinute:', Default=0, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='ForwardLooking:', Default=1, __RC__ ) - AnaConfig(ispec)%ForwardLooking = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='SkipPredictor:' , Default=0, __RC__ ) - AnaConfig(ispec)%SkipPredictor = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FldNameHco, Label='FldNameHco:' , Default='N/A', __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileVarUnit, Label='FileVarUnit:' , Default='v/v', __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%FileVarDry, Label='FileVarDry:' , Default=-1, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='IsIncrement:' , Default=0, __RC__ ) - AnaConfig(ispec)%IsIncrement = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='IAU:' , Default=0, __RC__ ) - AnaConfig(ispec)%IAU = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnalysisWindow, Label='AnalysisWindow:', Default=6, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='InStrat:' , Default=1, __RC__ ) - AnaConfig(ispec)%InStrat = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='InTrop:' , Default=1, __RC__ ) - AnaConfig(ispec)%InTrop = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, ThisInt, Label='HasMask:', Default=0, __RC__ ) - AnaConfig(ispec)%HasMask = ( ThisInt == 1 ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MskNameHco, Label='MskNameHco:' , Default='N/A', __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MaskThreshold, Label='MaskThreshold:' , Default=0.1, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnaL1, Label='AnaL1:' , Default=1, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnaL2, Label='AnaL2:' , Default=1, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnaL3, Label='AnaL3:' , Default=72, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnaL4, Label='AnaL4:' , Default=72, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%AnaFraction, Label='AnaFraction:' , Default=1.0, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%StratSponge, Label='StratSponge:' , Default=0, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MaxChangeStrat, Label='MaxChangeStrat:', Default=-1.0, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MaxChangeTrop , Label='MaxChangeTrop:' , Default=-1.0, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MaxRatioStrat , Label='MaxRatioStrat:' , Default=-1.0, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MaxRatioTrop , Label='MaxRatioTrop:' , Default=-1.0, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MinRatioStrat , Label='MinRatioStrat:' , Default=-1.0, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MinRatioTrop , Label='MinRatioTrop:' , Default=-1.0, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%MinConc, Label='MinConc:' , Default=1.0e-20, __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, AnaConfig(ispec)%ErrorMode, Label='ErrorMode:' , Default=1 , __RC__ ) + pkey = "species%Spc"//TRIM(intStr) + + ! Get species name. Eventually remove single quotes from species + key = TRIM(pkey)//"%SpeciesName" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + SpecName = TRIM(v_str) + C = INDEX( SpecName, "'" ) + IF ( C > 0 ) THEN + SpecName = SpecName(C+1:) + C = INDEX( SpecName, "'" ) + IF ( C > 0 ) SpecName = Specname(1:C-1) + ENDIF + AnaConfig(ispec)%SpecName = SpecName + ELSE + AnaConfig(ispec)%SpecName = 'N/A' + ENDIF + IF ( am_I_Root ) write(6,*) 'Reading analysis settings for species: '//TRIM(AnaConfig(ispec)%SpecName) + + ! Active? + key = TRIM(pkey)//"%Active" + CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%Active = v_bool + ELSE + AnaConfig(ispec)%Active = .FALSE. + ENDIF + + ! Analysis frequency + key = TRIM(pkey)//"%AnalysisFreq" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%AnalysisFreq = v_int + ELSE + AnaConfig(ispec)%AnalysisFreq = 6 + ENDIF + + ! Analysis hour + key = TRIM(pkey)//"%AnalysisHour" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%AnalysisHour = v_int + ELSE + AnaConfig(ispec)%AnalysisHour = 0 + ENDIF + + ! Analysis minute + key = TRIM(pkey)//"%AnalysisMinute" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%AnalysisMinute = v_int + ELSE + AnaConfig(ispec)%AnalysisMinute = 0 + ENDIF + + ! Forward looking? + key = TRIM(pkey)//"%ForwardLooking" + CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%ForwardLooking = v_bool + ELSE + AnaConfig(ispec)%ForwardLooking = .TRUE. + ENDIF + + ! Skip predictor? + key = TRIM(pkey)//"%SkipPredictor" + CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%SkipPredictor = v_bool + ELSE + AnaConfig(ispec)%SkipPredictor = .TRUE. + ENDIF + + ! HEMCO field name + key = TRIM(pkey)//"%FldNameHco" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%FldNameHco = v_str + ELSE + AnaConfig(ispec)%FldNameHco = 'N/A' + ENDIF + + ! Field units + key = TRIM(pkey)//"%FileVarUnit" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%FileVarUnit = v_str + ELSE + AnaConfig(ispec)%FileVarUnit = 'v/v' + ENDIF + + ! Dry air flag + key = TRIM(pkey)//"%DryFlag" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%DryFlag = v_int + ELSE + AnaConfig(ispec)%DryFlag = 1 + ENDIF + + ! Is increment? + key = TRIM(pkey)//"%IsIncrement" + CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%IsIncrement = v_bool + ELSE + AnaConfig(ispec)%IsIncrement = .FALSE. + ENDIF + + ! IAU? + key = TRIM(pkey)//"%IAU" + CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%IAU = v_bool + ELSE + AnaConfig(ispec)%IAU = .FALSE. + ENDIF + + ! Analysis window length (hours) + key = TRIM(pkey)//"%AnalysisWindow" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%AnalysisWindow = v_int + ELSE + AnaConfig(ispec)%AnalysisWindow = 6 + ENDIF + + ! Apply in stratosphere? + key = TRIM(pkey)//"%InStrat" + CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%InStrat = v_bool + ELSE + AnaConfig(ispec)%InStrat = .TRUE. + ENDIF + + ! Apply in troposphere? + key = TRIM(pkey)//"%InTrop" + CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%InTrop = v_bool + ELSE + AnaConfig(ispec)%InTrop = .TRUE. + ENDIF + + ! Has mask field + key = TRIM(pkey)//"%HasMask" + CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%HasMask = v_bool + ELSE + AnaConfig(ispec)%HasMask = .FALSE. + ENDIF + + ! Mask name (from HEMCO) + key = TRIM(pkey)//"%MskNameHco" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%MskNameHco = v_str + ELSE + AnaConfig(ispec)%MskNameHco = 'N/A' + ENDIF + + ! Mask threshold + key = TRIM(pkey)//"%MaskThreshold" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%MaskThreshold = Cast_and_RoundOff( v_str, places=2 ) + ELSE + AnaConfig(ispec)%MaskThreshold = 0.1 + ENDIF + + ! Analysis level 1 + key = TRIM(pkey)//"%AnaL1" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%AnaL1 = v_int + ELSE + AnaConfig(ispec)%AnaL1 = 1 + ENDIF + + ! Analysis level 2 + key = TRIM(pkey)//"%AnaL2" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%AnaL2 = v_int + ELSE + AnaConfig(ispec)%AnaL2 = 1 + ENDIF + + ! Analysis level 3 + key = TRIM(pkey)//"%AnaL3" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%AnaL3 = v_int + ELSE + AnaConfig(ispec)%AnaL3 = 72 + ENDIF + + ! Analysis level 4 + key = TRIM(pkey)//"%AnaL4" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%AnaL4 = v_int + ELSE + AnaConfig(ispec)%AnaL4 = 72 + ENDIF + + ! Analysis fraction + key = TRIM(pkey)//"%AnaFraction" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%AnaFraction = Cast_and_RoundOff( v_str, places=2 ) + ELSE + AnaConfig(ispec)%AnaFraction = 1.0 + ENDIF + + ! Stratosphere sponge layer + key = TRIM(pkey)//"%StratSponge" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%StratSponge = v_int + ELSE + AnaConfig(ispec)%StratSponge = 0 + ENDIF + + ! Maximum change in stratosphere + key = TRIM(pkey)//"%MaxChangeStrat" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%MaxChangeStrat = Cast_and_RoundOff( v_str, places=2 ) + ELSE + AnaConfig(ispec)%MaxChangeStrat = -1.0 + ENDIF + + ! Maximum change in troposphere + key = TRIM(pkey)//"%MaxChangeTrop" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%MaxChangeTrop = Cast_and_RoundOff( v_str, places=2 ) + ELSE + AnaConfig(ispec)%MaxChangeTrop = -1.0 + ENDIF + + ! Maximum ratio change in stratosphere + key = TRIM(pkey)//"%MaxRatioStrat" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%MaxRatioStrat = Cast_and_RoundOff( v_str, places=2 ) + ELSE + AnaConfig(ispec)%MaxRatioStrat = -1.0 + ENDIF + + ! Maximum ratio change in troposphere + key = TRIM(pkey)//"%MaxRatioTrop" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%MaxRatioTrop = Cast_and_RoundOff( v_str, places=2 ) + ELSE + AnaConfig(ispec)%MaxRatioTrop = -1.0 + ENDIF + + ! Minimum ratio change in stratosphere + key = TRIM(pkey)//"%MinRatioStrat" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%MinRatioStrat = Cast_and_RoundOff( v_str, places=2 ) + ELSE + AnaConfig(ispec)%MinRatioStrat = -1.0 + ENDIF + + ! Minimum ratio change in troposphere + key = TRIM(pkey)//"%MinRatioTrop" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%MinRatioTrop = Cast_and_RoundOff( v_str, places=2 ) + ELSE + AnaConfig(ispec)%MinRatioTrop = -1.0 + ENDIF + + ! Minimum concentration + key = TRIM(pkey)//"%MinConc" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%MinConc = Cast_and_RoundOff( v_str, places=2 ) + ELSE + AnaConfig(ispec)%MinConc = 1.0e-20 + ENDIF + + ! Error mode + key = TRIM(pkey)//"%ErrorMode" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + AnaConfig(ispec)%ErrorMode = v_int + ELSE + AnaConfig(ispec)%ErrorMode = 1 + ENDIF ! Check for "dependent" species - CALL ESMF_ConfigGetAttribute( CF, nSpec2, Label='HasSpec2:' , Default=0, __RC__ ) - AnaConfig(ispec)%nSpec2 = nSpec2 + key = TRIM(pkey)//"%HasSpec2" + CALL GetKey_( Config, key, found, RC, vint=v_int ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + nSpec2 = v_int + ELSE + nSpec2 = 0 + ENDIF + AnaConfig(ispec)%nSpec2 = nSpec2 + IF ( nSpec2 > 0 ) THEN ALLOCATE(AnaConfig(ispec)%Spec2(nSpec2)) ! Read parameter as string (can be different for multiple dependent species, separated by comma') - CALL ESMF_ConfigGetAttribute( CF, Spec2Name, Label='Spec2Name:' , Default='N/A', __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, Spec2Strat, Label='Spec2Strat:' , Default='1', __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, Spec2Trop, Label='Spec2Trop:' , Default='1', __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, Spec2MinRatio, Label='Spec2MinRatio:' , Default='-1.0', __RC__ ) - CALL ESMF_ConfigGetAttribute( CF, Spec2MaxRatio, Label='Spec2MaxRatio:' , Default='-1.0', __RC__ ) + + ! species names + key = TRIM(pkey)//"%Spec2Name" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + Spec2Name = v_str + ELSE + Spec2Name = 'unknown' + ENDIF + key = TRIM(pkey)//"%Spec2Strat" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + Spec2Strat = v_str + ELSE + Spec2Strat = '1' + ENDIF + key = TRIM(pkey)//"%Spec2Trop" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + Spec2Trop = v_str + ELSE + Spec2Trop = '1' + ENDIF + key = TRIM(pkey)//"%Spec2MinRatio" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + Spec2MinRatio = v_str + ELSE + Spec2MinRatio = '-1.0' + ENDIF + key = TRIM(pkey)//"%Spec2MaxRatio" + CALL GetKey_( Config, key, found, RC, vstr=v_str ) + IF ( RC /= GC_SUCCESS ) RETURN + IF ( found ) THEN + Spec2MaxRatio = v_str + ELSE + Spec2MaxRatio = '-1.0' + ENDIF ! Assign parameter to various slots DO N = 1, nSpec2 ! Species name @@ -1092,58 +1403,55 @@ SUBROUTINE ReadSettings_( am_I_Root, GEOSCF, ispec, RC ) ! Verbose IF ( am_I_Root ) THEN - WRITE(*,*) '----------------------------------------' - WRITE(*,*) 'Analysis settings for GEOS-Chem species ',TRIM(AnaConfig(ispec)%SpecName),':' - WRITE(*,*) 'Active: ',AnaConfig(ispec)%Active + WRITE(6,*) '----------------------------------------' + WRITE(6,*) 'Analysis settings for GEOS-Chem species ',TRIM(AnaConfig(ispec)%SpecName),':' + WRITE(6,*) 'Active: ',AnaConfig(ispec)%Active IF ( AnaConfig(ispec)%Active ) THEN - WRITE(*,*) '- Analysis frequency : ',AnaConfig(ispec)%AnalysisFreq - WRITE(*,*) '- Analysis hour : ',AnaConfig(ispec)%AnalysisHour - WRITE(*,*) '- Analysis minute : ',AnaConfig(ispec)%AnalysisMinute - WRITE(*,*) '- Forward looking file read : ', AnaConfig(ispec)%ForwardLooking - WRITE(*,*) '- Ignore during predictor step : ', AnaConfig(ispec)%SkipPredictor - WRITE(*,*) '- HEMCO field name : ', TRIM(AnaConfig(ispec)%FldNameHco) - WRITE(*,*) '- Input variable unit : ', TRIM(AnaConfig(ispec)%FileVarUnit) - WRITE(*,*) '- Dry air flag (0=dry, 1=total) : ', AnaConfig(ispec)%FileVarDry - WRITE(*,*) '- Field are increments : ', AnaConfig(ispec)%IsIncrement - WRITE(*,*) '- Spread ana/inc (IAU) : ', AnaConfig(ispec)%IAU - WRITE(*,*) '- Analysis window length [h] : ', AnaConfig(ispec)%AnalysisWindow - WRITE(*,*) '- Restrict analysis to mask area: ', AnaConfig(ispec)%HasMask + WRITE(6,*) '- Analysis frequency : ',AnaConfig(ispec)%AnalysisFreq + WRITE(6,*) '- Analysis hour : ',AnaConfig(ispec)%AnalysisHour + WRITE(6,*) '- Analysis minute : ',AnaConfig(ispec)%AnalysisMinute + WRITE(6,*) '- Forward looking file read : ', AnaConfig(ispec)%ForwardLooking + WRITE(6,*) '- Ignore during predictor step : ', AnaConfig(ispec)%SkipPredictor + WRITE(6,*) '- HEMCO field name : ', TRIM(AnaConfig(ispec)%FldNameHco) + WRITE(6,*) '- Input variable unit : ', TRIM(AnaConfig(ispec)%FileVarUnit) + WRITE(6,*) '- Dry air flag (0=dry, 1=total) : ', AnaConfig(ispec)%DryFlag + WRITE(6,*) '- Field are increments : ', AnaConfig(ispec)%IsIncrement + WRITE(6,*) '- Spread ana/inc (IAU) : ', AnaConfig(ispec)%IAU + WRITE(6,*) '- Analysis window length [h] : ', AnaConfig(ispec)%AnalysisWindow + WRITE(6,*) '- Restrict analysis to mask area: ', AnaConfig(ispec)%HasMask IF ( AnaConfig(ispec)%HasMask ) THEN - WRITE(*,*) '- Mask field name: ', TRIM(AnaConfig(ispec)%MskNameHco) - WRITE(*,*) '- Mask threshold : ', AnaConfig(ispec)%MaskThreshold + WRITE(6,*) '- Mask field name: ', TRIM(AnaConfig(ispec)%MskNameHco) + WRITE(6,*) '- Mask threshold : ', AnaConfig(ispec)%MaskThreshold ENDIF - WRITE(*,*) '- Apply analysis in stratosphere: ', AnaConfig(ispec)%InStrat - WRITE(*,*) '- Apply analysis in troposphere : ', AnaConfig(ispec)%InTrop - WRITE(*,*) '- Tropopause sponge layer : ', AnaConfig(ispec)%StratSponge - WRITE(*,*) '- Analysis level 1 : ', AnaConfig(ispec)%AnaL1 - WRITE(*,*) '- Analysis level 2 : ', AnaConfig(ispec)%AnaL2 - WRITE(*,*) '- Analysis level 3 : ', AnaConfig(ispec)%AnaL3 - WRITE(*,*) '- Analysis level 4 : ', AnaConfig(ispec)%AnaL4 - WRITE(*,*) '- Analysis fraction : ', AnaConfig(ispec)%AnaFraction - WRITE(*,*) '- Max. absolute change in strat : ', AnaConfig(ispec)%MaxChangeStrat - WRITE(*,*) '- Max. absolute change in trop : ', AnaConfig(ispec)%MaxChangeTrop - WRITE(*,*) '- Max. relative change in strat : ', AnaConfig(ispec)%MaxRatioStrat - WRITE(*,*) '- Max. relative change in trop : ', AnaConfig(ispec)%MaxRatioTrop - WRITE(*,*) '- Min. relative change in strat : ', AnaConfig(ispec)%MinRatioStrat - WRITE(*,*) '- Min. relative change in trop : ', AnaConfig(ispec)%MinRatioTrop - WRITE(*,*) '- Min. concentration (for ratio): ', AnaConfig(ispec)%MinConc - WRITE(*,*) '- # of dependent species : ', AnaConfig(ispec)%nSpec2 + WRITE(6,*) '- Apply analysis in stratosphere: ', AnaConfig(ispec)%InStrat + WRITE(6,*) '- Apply analysis in troposphere : ', AnaConfig(ispec)%InTrop + WRITE(6,*) '- Tropopause sponge layer : ', AnaConfig(ispec)%StratSponge + WRITE(6,*) '- Analysis level 1 : ', AnaConfig(ispec)%AnaL1 + WRITE(6,*) '- Analysis level 2 : ', AnaConfig(ispec)%AnaL2 + WRITE(6,*) '- Analysis level 3 : ', AnaConfig(ispec)%AnaL3 + WRITE(6,*) '- Analysis level 4 : ', AnaConfig(ispec)%AnaL4 + WRITE(6,*) '- Analysis fraction : ', AnaConfig(ispec)%AnaFraction + WRITE(6,*) '- Max. absolute change in strat : ', AnaConfig(ispec)%MaxChangeStrat + WRITE(6,*) '- Max. absolute change in trop : ', AnaConfig(ispec)%MaxChangeTrop + WRITE(6,*) '- Max. relative change in strat : ', AnaConfig(ispec)%MaxRatioStrat + WRITE(6,*) '- Max. relative change in trop : ', AnaConfig(ispec)%MaxRatioTrop + WRITE(6,*) '- Min. relative change in strat : ', AnaConfig(ispec)%MinRatioStrat + WRITE(6,*) '- Min. relative change in trop : ', AnaConfig(ispec)%MinRatioTrop + WRITE(6,*) '- Min. concentration (for ratio): ', AnaConfig(ispec)%MinConc + WRITE(6,*) '- # of dependent species : ', AnaConfig(ispec)%nSpec2 IF ( AnaConfig(ispec)%nSpec2 > 0 ) THEN DO N = 1, AnaConfig(ispec)%nSpec2 - WRITE(*,*) '- Name of dependent species : ', TRIM(AnaConfig(ispec)%Spec2(N)%Spec2Name) - WRITE(*,*) '- Update in stratosphere : ', AnaConfig(ispec)%Spec2(N)%Spec2Strat - WRITE(*,*) '- Update in troposphere : ', AnaConfig(ispec)%Spec2(N)%Spec2Trop - WRITE(*,*) '- Minimum ratio (x/parent) : ', AnaConfig(ispec)%Spec2(N)%Spec2MinRatio - WRITE(*,*) '- Maximum ratio (x/parent) : ', AnaConfig(ispec)%Spec2(N)%Spec2MaxRatio + WRITE(6,*) '- Name of dependent species : ', TRIM(AnaConfig(ispec)%Spec2(N)%Spec2Name) + WRITE(6,*) '- Update in stratosphere : ', AnaConfig(ispec)%Spec2(N)%Spec2Strat + WRITE(6,*) '- Update in troposphere : ', AnaConfig(ispec)%Spec2(N)%Spec2Trop + WRITE(6,*) '- Minimum ratio (x/parent) : ', AnaConfig(ispec)%Spec2(N)%Spec2MinRatio + WRITE(6,*) '- Maximum ratio (x/parent) : ', AnaConfig(ispec)%Spec2(N)%Spec2MaxRatio ENDDO ENDIF - WRITE(*,*) '- Error mode : ', AnaConfig(ispec)%ErrorMode + WRITE(6,*) '- Error mode : ', AnaConfig(ispec)%ErrorMode ENDIF ! Active ENDIF - ! Successful return - RETURN_(ESMF_SUCCESS) - END SUBROUTINE ReadSettings_ !EOC !------------------------------------------------------------------------------ @@ -1181,7 +1489,7 @@ SUBROUTINE Spec2Parse_( instr, N, outstr ) ! INTEGER :: lenstr INTEGER :: I, LPOS, RPOS - CHARACTER(LEN=ESMF_MAXSTR) :: tmpstr + CHARACTER(LEN=255) :: tmpstr ! Local copy of original string tmpstr = TRIM(instr) @@ -1295,5 +1603,107 @@ FUNCTION GetDiagnID ( mapDgn, SpcID ) RESULT ( SlotNumber ) END FUNCTION GetDiagnID !EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: GetKey_ +! +! !DESCRIPTION: Helper routine to get key +!\\ +!\\ +! !INTERFACE: +! + SUBROUTINE GetKey_( Config, key, found, RC, vint, vbool, vstr ) +! +! !USES: +! + USE QfYaml_Mod +! +! !INPUT PARAMETERS: +! + TYPE(QFYAML_t), INTENT(INOUT) :: Config ! yaml config file + CHARACTER(LEN=*), INTENT(IN) :: key +! +! !INPUT/OUTPUT PARAMETERS: +! + LOGICAL, INTENT(OUT) :: found + INTEGER, INTENT(INOUT) :: RC + INTEGER, OPTIONAL, INTENT(OUT) :: vint + LOGICAL, OPTIONAL, INTENT(OUT) :: vbool + CHARACTER(LEN=QFYAML_StrLen), OPTIONAL, INTENT(OUT) :: vstr +! +! !REVISION HISTORY: +! 15 Dec 2023 - C. Keller - Initial version +! See https://github.com/geoschem/geos-chem for history +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! LOCAL VARIABLES: +! + INTEGER :: v_int, ix + LOGICAL :: v_bool + CHARACTER(LEN=QFYAML_StrLen) :: v_str + CHARACTER(LEN=255) :: errMsg + CHARACTER(LEN=255), PARAMETER :: Iam = 'GetKey_' + + ! Starts here + RC = GC_SUCCESS + ! Check if key exists + CALL Get_Var_Index( Config, TRIM( key ), ix ) + found = ( ix > 0 ) + + ! integer + IF ( PRESENT(vint) ) THEN + IF ( ix>0 ) THEN + v_int = MISSING_INT + CALL QFYAML_Add_Get( Config, TRIM( key ), v_int, "", RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error parsing ' // TRIM( key ) // '!' + CALL GC_Error( errMsg, RC, Iam ) + RETURN + ENDIF + ELSE + v_int = -1 + ENDIF + vint = v_int + ENDIF + + ! bool + IF ( PRESENT(vbool) ) THEN + IF ( ix>0 ) THEN + v_bool = MISSING_BOOL + CALL QFYAML_Add_Get( Config, TRIM( key ), v_bool, "", RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error parsing ' // TRIM( key ) // '!' + CALL GC_Error( errMsg, RC, Iam ) + RETURN + ENDIF + ELSE + v_bool = .false. + ENDIF + vbool = v_bool + ENDIF + + ! character + IF ( PRESENT(vstr) ) THEN + IF ( ix>0 ) THEN + v_str = MISSING_STR + CALL QFYAML_Add_Get( Config, TRIM( key ), v_str, "", RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error parsing ' // TRIM( key ) // '!' + CALL GC_Error( errMsg, RC, Iam ) + RETURN + ENDIF + ELSE + v_str = "unknown" + ENDIF + vstr = v_str + ENDIF + + END SUBROUTINE GetKey_ +!EOC END MODULE GEOS_Analysis diff --git a/run/GEOS/GEOSCHEMchem_AnaSettings_NO2.rc b/run/GEOS/GEOSCHEMchem_AnaSettings_NO2.rc deleted file mode 100644 index 5520edd29..000000000 --- a/run/GEOS/GEOSCHEMchem_AnaSettings_NO2.rc +++ /dev/null @@ -1,37 +0,0 @@ -SpeciesName: NO2 -Active: 0 -AnalysisFreq: 6 -AnalysisHour: 0 -AnalysisMinute: 0 -ForwardLooking: 0 -ReadAnaTime: 1 -SkipPredictor: 1 -FileTemplate: >>>EXPID<<<.inc.eta.%y4%m2%d2_%h200z.nc4 -FileVarName: NO2 -FileVarUnit: v/v -FileVarDry: 1 -UseObsHour: 0 -ObsHourName: ana_hour -ApplyIncrement: 1 -IAU: 1 -InStrat: 0 -InTrop: 1 -AnaL1: 1 -AnaL2: 1 -AnaL3: 72 -AnaL4: 72 -AnaFraction: 1.0 -MaxChangeStrat: 0.1 -MaxChangeTrop: -1.0 -MaxRatioStrat: 10.0 -MinRatioStrat: 0.1 -MaxRatioTrop: 10.0 -MinRatioTrop: 0.1 -MinConc: 1.0e-32 -HasSpec2: 0 -Spec2Name: NO -Spec2Strat: 0 -Spec2Trop: 1 -Spec2MinRatio: 0.05 -Spec2MaxRatio: 10.0 -ErrorMode: 1 diff --git a/run/GEOS/GEOSCHEMchem_AnaSettings_O3.CDAS.rc b/run/GEOS/GEOSCHEMchem_AnaSettings_O3.CDAS.rc deleted file mode 100644 index 35cd46b43..000000000 --- a/run/GEOS/GEOSCHEMchem_AnaSettings_O3.CDAS.rc +++ /dev/null @@ -1,27 +0,0 @@ -SpeciesName: O3 -Active: 0 -AnalysisFreq: 6 -AnalysisHour: 0 -AnalysisMinute: 0 -ForwardLooking: 0 -SkipPredictor: 1 -FileTemplate: >>>EXPID<<<.inc.eta.%y4%m2%d2_%h200z.nc4 -FileVarName: ozone -NonZeroIncOnly: 0 -FileVarNameInc: ozone -FileVarUnit: ppmv -FileVarDry: 0 -UseObsHour: 0 -ObsHourName: ana_hour -ApplyIncrement: 1 -IAU: 1 -InStrat: 1 -InTrop: 1 -AnaL1: 1 -AnaL2: 1 -AnaL3: 72 -AnaL4: 72 -StratSponge: 2 -AnaFraction: 1.0 -MaxChangeStrat: -1.0 -MaxChangeTrop: -1.0 diff --git a/run/GEOS/GEOSCHEMchem_AnaSettings_O3.rc b/run/GEOS/GEOSCHEMchem_AnaSettings_O3.rc deleted file mode 100644 index f942e0ca8..000000000 --- a/run/GEOS/GEOSCHEMchem_AnaSettings_O3.rc +++ /dev/null @@ -1,29 +0,0 @@ -SpeciesName: O3 -Active: 0 -AnalysisFreq: 3 -AnalysisHour: 1 -AnalysisMinute: 30 -ForwardLooking: 1 -ReadAnaTime: 0 -SkipPredictor: 0 -FileTemplate: /discover/nobackup/projects/gmao/yotc/pub/fp/das/Y%y4/M%m2/D%d2/GEOS.fp.asm.tavg3_3d_asm_Nv.%y4%m2%d2_%h2%n2.V01.nc4 -FileVarName: O3 -FileVarUnit: kg/kg -FileVarDry: 0 -UseObsHour: 0 -ObsHourName: ana_hour -ApplyIncrement: 0 -IAU: 0 -NonZeroIncOnly: 0 -InStrat: 1 -InTrop: 0 -AnaL1: 1 -AnaL2: 1 -AnaL3: 72 -AnaL4: 72 -StratSponge: 2 -AnaFraction: 0.2 -MaxChangeStrat: -1.0 -MaxChangeTrop: -1.0 -HasSpec2: 0 -ErrorMode: 1 diff --git a/run/GEOS/GEOSCHEMchem_AnaSettings_SO2.rc b/run/GEOS/GEOSCHEMchem_AnaSettings_SO2.rc deleted file mode 100644 index 0f15b8451..000000000 --- a/run/GEOS/GEOSCHEMchem_AnaSettings_SO2.rc +++ /dev/null @@ -1,33 +0,0 @@ -SpeciesName: SO2 -Active: 1 -AnalysisFreq: 6 -AnalysisHour: 0 -AnalysisMinute: 0 -ForwardLooking: 0 -SkipPredictor: 1 -FileTemplate: >>>EXPID<<<.inc.eta.%y4%m2%d2_%h200z.nc4 -FileVarName: SO2g -FileVarUnit: v/v -FileVarDry: 1 -UseObsHour: 0 -ReadAnaTime: 0 -ObsHourName: ana_hour -ApplyIncrement: 1 -IAU: 1 -NonZeroIncOnly: 0 -FileVarNameInc: SO2g -InStrat: 1 -InTrop: 1 -AnaL1: 1 -AnaL2: 1 -AnaL3: 72 -AnaL4: 72 -AnaFraction: 1.0 -MaxChangeStrat: -1.0 -MaxChangeTrop: -1.0 -MaxRatioStrat: -1.0 -MinRatioStrat: -1.0 -MaxRatioTrop: -1.0 -MinRatioTrop: -1.0 -HasSpec2: 0 -ErrorMode: 1 diff --git a/run/GEOS/GEOSCHEMchem_ExtData.yaml b/run/GEOS/GEOSCHEMchem_ExtData.yaml index 0e4d58f6f..9403f2e69 100644 --- a/run/GEOS/GEOSCHEMchem_ExtData.yaml +++ b/run/GEOS/GEOSCHEMchem_ExtData.yaml @@ -5,7 +5,7 @@ Samplings: gcc_8day_interp_clim: {update_reference_time: "0", update_frequency: P8D, update_offset: P1D, time_interpolation: True, extrapolation: clim} gcc_3hr: {time_interpolation: True, extrapolation: clim} gcc_monthly_clim: {update_reference_time: "0", update_frequency: P1M, time_interpolation: False, extrapolation: clim} - + ana_sample: {update_offset: PT900S, exact: True} Collections: GCC_ACET_seawater: @@ -267,6 +267,12 @@ Collections: valid_range: "2001-01-01T00:00/2020-12-31T21:00" GCC_CMAM_CO: template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CMAM/v0.0.0/vmrco_monChem_CMAM_CMAM30-SD_r1i1p1.monthly_clim_0.015hPa.1979_2010.nc + GCC_d5294_geosit_jan18: + template: /home/dao_ops/d5294_geosit_jan18/run/.../archive/ana/Y%y4/M%m2/d5294_geosit_jan18.bkg.eta.%y4%m2%d2_%h2%n2z.nc4 + freq: "PT3H" + CDAS.inc.eta: + template: ./inc.eta.%y4%m2%d2_%h2%n2z.nc4 + freq: "PT6H" Exports: ACET_SEAWATER: @@ -2686,4 +2692,15 @@ Exports: regrid: BILINEAR sample: gcc_monthly_clim variable: CO - + GEOSIT_O3: + collection: GCC_d5294_geosit_jan18 + regrid: BILINEAR + sample: ana_sample + variable: ozone + fail_on_missing_file: false + CDAS_NO2: + collection: CDAS.inc.eta + regrid: BILINEAR + sample: ana_sample + variable: NO2 + fail_on_missing_file: false diff --git a/run/GEOS/geoschem_analysis.yml b/run/GEOS/geoschem_analysis.yml new file mode 100644 index 000000000..200c85ea6 --- /dev/null +++ b/run/GEOS/geoschem_analysis.yml @@ -0,0 +1,95 @@ +--- +### geoschem_analysis.yml + +#============================================================================ +# General settings +#============================================================================ +general: + runphase: 2 + nspecies: 3 + +#============================================================================ +# List of used analysis species +#============================================================================ +species: + Spc001: + SpeciesName: O3 + Active: false + AnalysisFreq: 6 + AnalysisHour: 0 + AnalysisMinute: 0 + ForwardLooking: true + FldNameHco: GEOSIT_O3 + FileVarUnit: ppmv + DryFlag: 0 + IsIncrement: false + InStrat: true + InTrop: false + AnaL1: 1 + AnaL2: 1 + AnaL3: 72 + AnaL4: 72 + StratSponge: 2 + AnaFraction: 0.2 + MaxChangeStrat: -1.0 + MaxChangeTrop: -1.0 + HasSpec2: 0 + ErrorMode: 1 + + Spc002: + SpeciesName: NO2 + Active: false + AnalysisFreq: 6 + AnalysisHour: 0 + AnalysisMinute: 0 + ForwardLooking: true + FldNameHco: CDAS_NO2 + FileVarUnit: v/v + DryFlag: 1 + IsIncrement: true + InStrat: true + InTrop: true + IAU: true + AnaL1: 1 + AnaL2: 1 + AnaL3: 72 + AnaL4: 72 + AnaFraction: 1.0 + MaxChangeStrat: -1.0 + MaxChangeTrop: -1.0 + MaxRatioStrat: 10.0 + MinRatioStrat: 0.1 + MaxRatioTrop: 10.0 + MinRatioTrop: 0.1 + MinConc: 1.0e-32 + HasSpec2: 0 + ErrorMode: 1 + + Spc003: + SpeciesName: SO2 + Active: false + AnalysisFreq: 6 + AnalysisHour: 0 + AnalysisMinute: 0 + ForwardLooking: true + FldNameHco: CDAS_SO2 + FileVarUnit: v/v + DryFlag: 1 + IsIncrement: true + InStrat: true + InTrop: true + IAU: true + AnaL1: 1 + AnaL2: 1 + AnaL3: 72 + AnaL4: 72 + AnaFraction: 1.0 + MaxChangeStrat: -1.0 + MaxChangeTrop: -1.0 + MaxRatioStrat: 10.0 + MinRatioStrat: 0.1 + MaxRatioTrop: 10.0 + MinRatioTrop: 0.1 + MinConc: 1.0e-32 + HasSpec2: 0 + ErrorMode: 1 From 23f925dabb1cc179dfab8a9f804e9635627e6877 Mon Sep 17 00:00:00 2001 From: Christopher Holmes Date: Tue, 19 Dec 2023 11:02:34 -0500 Subject: [PATCH 027/331] Remove unused variables --- GeosCore/pbl_mix_mod.F90 | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/GeosCore/pbl_mix_mod.F90 b/GeosCore/pbl_mix_mod.F90 index 61d01e16f..d3bba422b 100644 --- a/GeosCore/pbl_mix_mod.F90 +++ b/GeosCore/pbl_mix_mod.F90 @@ -281,7 +281,7 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) ! Scalars LOGICAL :: Bad_Sum INTEGER :: I, J, L, LTOP - REAL(fp) :: BLTOP, BLTHIK, DELP, Lower_Edge_Height + REAL(fp) :: Lower_Edge_Height ! Arrays REAL(fp) :: P(0:State_Grid%NZ) @@ -297,8 +297,7 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, P, BLTOP, BLTHIK, LTOP, DELP ) & - !$OMP PRIVATE( Lower_Edge_Height ) + !$OMP PRIVATE( I, J, L, P, LTOP, Lower_Edge_Height ) DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX @@ -306,7 +305,7 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) State_Met%PBL_Top_m(I,J) = State_Met%PBLH(I,J) ! Height of lower edge above surface, m - Lower_Edge_Height = 0d0 + Lower_Edge_Height = 0.0_fp ! Find PBL top level (L) and pressure (hPa) Do L=1, State_Grid%NZ @@ -346,7 +345,7 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) State_Met%inPBL(I,J,L) = .True. ! Fraction of the grid cell mass under PBL top - State_Met%F_Under_PBLTop(I,J,L) = 1.0d0 + State_Met%F_Under_PBLTop(I,J,L) = 1.0_fp ! Fraction of PBL mass in layer L, will be normalized below State_Met%F_of_PBL(I,J,L) = State_Met%PEdge(I,J,L) - State_Met%PEdge(I,J,L+1) @@ -450,15 +449,15 @@ SUBROUTINE TurbDay( Input_Opt, State_Chm, State_Diag, & REAL(fp) :: AA, CC, CC_AA, DTCONV ! Arrays - REAL(fp) :: A(State_Grid%NX,State_Grid%NY) REAL(fp) :: DTC + REAL(fp) :: A(State_Grid%NX,State_Grid%NY) + REAL(fp) :: FPBL(State_Grid%NX,State_Grid%NY) + INTEGER :: IMIX(State_Grid%NX,State_Grid%NY) ! Strings CHARACTER(LEN=255) :: ErrMsg, ThisLoc ! Pointers - INTEGER, POINTER :: IMIX(:,: ) - REAL(fp), POINTER :: FPBL(:,: ) REAL(fp), POINTER :: AD (:,:,: ) TYPE(SpcConc), POINTER :: TC (: ) From 8d052961fb0e3ee07011f051454e1662dba4b429 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 20 Dec 2023 15:08:58 -0500 Subject: [PATCH 028/331] Halt timers before unit conversions (to time unit conv separately) This commit GeosCore/aerosol_mod.F90 GeosCore/airs_ch4_mod.F90 GeosCore/carbon_mod.F90 GeosCore/chemistry_mod.F90 GeosCore/fullchem_mod.F90 GeosCore/gosat_ch4_mod.F90 GeosCore/hco_interface_mod.F90 GeosCore/hco_utilities_mod.F90 GeosCore/linear_chem_mod.F90 GeosCore/mercury_mod.F90 GeosCore/mixing_mod.F90 GeosCore/pbl_mix_mod.F90 GeosCore/rrtmg_rad_transfer_mod.F90 GeosCore/sulfate_mod.F90 GeosCore/tracer_mod.F90 GeosCore/vdiff_mod.F90 GeosCore/wetscav_mod.F90 ObsPack/obspack_mod.F90 - USE Timer_Start and Timer_End from GeosUtil/timers_mod.F90 - Halt the active timer (by calling Timer_End) before each call to unit conversion routine Convert_Spc_Units - Start the halted timer (by calling Timer_Start) after each call to Convert_Spc_Units - This will make sure that the time spent in unit conversions will be logged separately from other timers Interfaces/GCClassic/main.F90 - Halt the Diagnostics timer (with Timer_Start) before each of the AIRS, GOSAT, TCCON observation operators calls - Restart the diagnostics timer (with Timer_End) after each of the AIRS, GOSAT, TCCON observation operators calls CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + GeosCore/aerosol_mod.F90 | 21 +++++++++++ GeosCore/airs_ch4_mod.F90 | 25 +++++++++++-- GeosCore/carbon_mod.F90 | 20 +++++++++++ GeosCore/chemistry_mod.F90 | 22 ++++++++++++ GeosCore/fullchem_mod.F90 | 23 ++++++++++-- GeosCore/gosat_ch4_mod.F90 | 21 +++++++++++ GeosCore/hco_interface_gc_mod.F90 | 25 +++++++++++++ GeosCore/hco_utilities_gc_mod.F90 | 21 +++++++++++ GeosCore/linear_chem_mod.F90 | 21 +++++++++++ GeosCore/mercury_mod.F90 | 53 ++++++++++++++++++++++++++-- GeosCore/mixing_mod.F90 | 23 ++++++++++++ GeosCore/pbl_mix_mod.F90 | 21 +++++++++++ GeosCore/rrtmg_rad_transfer_mod.F90 | 20 +++++++++++ GeosCore/sulfate_mod.F90 | 54 +++++++++++++++++++++++++++++ GeosCore/tracer_mod.F90 | 25 +++++++++++++ GeosCore/vdiff_mod.F90 | 21 +++++++++++ GeosCore/wetscav_mod.F90 | 21 +++++++++++ Interfaces/GCClassic/main.F90 | 24 +++++++++++++ ObsPack/obspack_mod.F90 | 25 +++++++++++++ 20 files changed, 480 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 688f841c3..78a24ae0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Now read the Hg restart file from `ExtData/GEOSCHEM_RESTARTS/v2023-12` - Updated routines in `GeosUtil/unitconv_mod.F90` for species-specific unit conversion +- Halt timers during calls to `Convert_Spc_Units` so as to time unit conversions separately ### Fixed - Added missing units in comments of `KPP/fullchem/commonIncludeVars.H` diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 57d2c295c..2abb340ab 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -187,6 +187,7 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & USE State_Met_Mod, ONLY : MetState USE UnitConv_Mod USE TIME_MOD, ONLY : GET_MONTH + USE Timers_Mod, ONLY : Timer_End, Timer_Start #ifdef TOMAS USE TOMAS_MOD, ONLY : IBINS #endif @@ -303,6 +304,11 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & ! Set pointers REAA => State_Chm%Phot%REAA + ! Stop aerosol chem timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "=> Aerosol chem", RC ) + ENDIF + ! Convert species to [kg] for this routine CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -321,6 +327,11 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start aerosol chem timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "=> Aerosol chem", RC ) + ENDIF + ! Initialize pointers Spc => State_Chm%Species AIRVOL => State_Met%AIRVOL @@ -1018,6 +1029,11 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & ENDDO !$OMP END PARALLEL DO + ! Stop aerosol chem timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "=> Aerosol chem", RC ) + ENDIF + ! Convert species back to original unit CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -1034,6 +1050,11 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start aerosol chem timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "=> Aerosol chem", RC ) + ENDIF + ! Free pointers Spc => NULL() REAA => NULL() diff --git a/GeosCore/airs_ch4_mod.F90 b/GeosCore/airs_ch4_mod.F90 index f0ee8c9d0..3b2ad056d 100644 --- a/GeosCore/airs_ch4_mod.F90 +++ b/GeosCore/airs_ch4_mod.F90 @@ -149,7 +149,7 @@ SUBROUTINE READ_AIRS_CH4_OBS( YYYYMMDD, NAIRS ) ! READ_AIRS_CH4_OBS begins here! !================================================================= - caller = 'READ_AIRS_CH4_OBS in airs_ch4_mod.F90' + caller = 'READ_AIRS_CH4_OBS in GeosCore/airs_ch4_mod.F90' ! Get current year WRITE( CYEAR, '(i4)' ) GET_YEAR() @@ -370,6 +370,7 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & USE State_Chm_Mod, ONLY : ChmState, Ind_ USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UnitConv_Mod ! ! !INPUT PARAMETERS: @@ -444,7 +445,7 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & ! Initialize RC = GC_SUCCESS ErrMsg = '' - ThisLoc = ' -> at CALC_AIRS_CH4_FORCE (in gosat_ch4_mod.F)' + ThisLoc = ' -> at CALC_AIRS_CH4_FORCE (in GeosCore/airs_ch4_mod.F90)' ! Initialize species ID flag id_CH4 = Ind_('CH4' ) @@ -516,6 +517,11 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & print*, ' for hour range: ', GET_HOUR(), GET_HOUR()+1 print*, ' found # AIRS observations: ', NOBS + ! Halt diagnostics timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Diagnostics", RC ) + ENDIF + ! Convert species units to [v/v] (mps, 6/12/2020) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -533,6 +539,11 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start diagnostics timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Diagnostics", RC ) + ENDIF + !! need to update this in order to do i/o with this loop parallel !! ! Now do a parallel loop for analyzing data !!$OMP PARALLEL DO @@ -694,6 +705,11 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & ENDDO ! NT !!$OMP END PARALLEL DO + ! Halt diagnostics timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Diagnostics", RC ) + ENDIF + ! Convert species units back to original unit (mps, 6/12/2020) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -711,6 +727,11 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start diagnostics timer + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Diagnostics", RC ) + ENDIF + 283 FORMAT( I10,2x,I4,2x,I4,2x,F8.3,2x,F8.4,2x,I4,2x,I2,2x,I2,2x,I2, & 2x,I2,2x,I2,2x,F12.3,2x,E12.6,2x,E12.6,2x,E12.6, & 2x, E12.6,2x, E12.6,2x, F12.3, 2x,E12.6, 2x, E12.6, 2x, & diff --git a/GeosCore/carbon_mod.F90 b/GeosCore/carbon_mod.F90 index ae373261d..bdad21f6f 100644 --- a/GeosCore/carbon_mod.F90 +++ b/GeosCore/carbon_mod.F90 @@ -5026,6 +5026,11 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, RC ) ! Grid box aarea AREA = HcoState%Grid%AREA_M2%Val(:,:) + ! Halt HEMCO timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "HEMCO", RC ) + ENDIF + ! Convert concentration units to [kg] for TOMAS. This will be ! removed once TOMAS uses mixing ratio instead of mass ! as species units (ewl, 9/11/15) @@ -5046,6 +5051,11 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, RC ) RETURN ENDIF + ! Start HEMCO timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "HEMCO", RC ) + ENDIF + ! ---------FOSSIL FUEL EMISSIONS IN 3d--------------------------- DO EMTYPE = 1,4 SELECT CASE (EMTYPE) @@ -5261,6 +5271,11 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, RC ) IF ( Input_Opt%Verbose ) CALL DEBUG_MSG( '### EMISCARB: after SOACOND (BIOG) ' ) + ! Halt HEMCO timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "HEMCO", RC ) + ENDIF + ! Convert concentrations back to original units (ewl, 9/11/15) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -5278,6 +5293,11 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, RC ) RETURN ENDIF + ! Start HEMCO timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "HEMCO", RC ) + ENDIF + END SUBROUTINE EMISSCARBONTOMAS !EOC !------------------------------------------------------------------------------ diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index abda2fa9f..ee43285ee 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -203,6 +203,11 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & State_Chm%Species(id_CO2)%Conc = 421.0e-6_fp ENDIF + ! Halt "All chemistry" timer (so that diags can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "All chemistry", RC ) + ENDIF + ! Convert units from mol/mol dry to kg CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -221,6 +226,11 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start "All chemistry" timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "All chemistry", RC ) + ENDIF + !======================================================================== ! If Input_Opt%LCHEM=T then call the chemistry subroutines !======================================================================== @@ -1053,6 +1063,13 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & !======================================================================== ! Convert species units back to original unit (ewl, 8/12/15) !======================================================================== + + ! Halt "All chemistry" timer (so unitconv+diags can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "All chemistry", RC ) + ENDIF + + ! Convert units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -1069,6 +1086,11 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start "All chemistry" timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "All chemistry", RC ) + ENDIF + !======================================================================== ! Chemistry budget diagnostics - Part 2 of 2 !======================================================================== diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index 810d5c262..cce8573ff 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -356,6 +356,13 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & !======================================================================== ! Convert species to [molec/cm3] (ewl, 8/16/16) !======================================================================== + + ! Halt gas-phase chem timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "=> Gas-phase chem", RC ) + ENDIF + + ! Convert units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -376,7 +383,6 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & ! Call photolysis routine to compute J-Values !======================================================================== IF ( Input_Opt%useTimers ) THEN - CALL Timer_End ( "=> Gas-phase chem", RC ) CALL Timer_Start( "=> Photolysis", RC ) ENDIF @@ -396,9 +402,10 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & CALL DEBUG_MSG( '### Do_FullChem: after computing J-values' ) ENDIF + ! Start gas-phase chem and photolysis timers again IF ( Input_Opt%useTimers ) THEN CALL Timer_End ( "=> Photolysis", RC ) - CALL Timer_Start( "=> Gas-phase chem", RC ) ! ended in Do_Chemistry + CALL Timer_Start( "=> Gas-phase chem", RC ) ENDIF #if defined( MODEL_GEOS ) || defined( MODEL_WRF ) || defined( MODEL_CESM ) @@ -1531,6 +1538,13 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & !======================================================================= ! Convert species back to original units (ewl, 8/16/16) !======================================================================= + + ! Halt gas-phase chem timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "=> Gas-phase chem", RC ) + ENDIF + + ! Convert units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -1546,6 +1560,11 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start gas-phase chem timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "=> Gas-phase chem", RC ) + ENDIF + !======================================================================= ! Apply high-altitude active nitrogen partitioning and H2SO4 ! photolysis approximations outside the chemistry grid diff --git a/GeosCore/gosat_ch4_mod.F90 b/GeosCore/gosat_ch4_mod.F90 index f8846450a..2d8737c09 100644 --- a/GeosCore/gosat_ch4_mod.F90 +++ b/GeosCore/gosat_ch4_mod.F90 @@ -366,6 +366,7 @@ SUBROUTINE CALC_GOSAT_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & USE State_Chm_Mod, ONLY : ChmState, Ind_ USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UnitConv_Mod ! ! !INPUT PARAMETERS: @@ -582,6 +583,11 @@ SUBROUTINE CALC_GOSAT_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & print*, ' for hour range: ', GET_HOUR(), GET_HOUR()+1 print*, ' found # GOSAT observations: ', NOBS + ! Halt diagnostics timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Diagnostics", RC ) + ENDIF + ! Convert species units to [v/v dry] aka [mol/mol dry] CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -599,6 +605,11 @@ SUBROUTINE CALC_GOSAT_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start diagnostics timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Diagnostics", RC ) + ENDIF + !! need to update this in order to do i/o with this loop parallel !! ! Now do a parallel loop for analyzing data !!!$OMP PARALLEL DO & @@ -940,6 +951,11 @@ SUBROUTINE CALC_GOSAT_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & ! Update cost function COST_FUNC = COST_FUNC + SUM(NEW_COST(:)) + ! Halt diagnostics timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Diagnostics", RC ) + ENDIF + ! Convert species units back to original unit (mps, 6/12/2020) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -956,6 +972,11 @@ SUBROUTINE CALC_GOSAT_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start diagnostics timer + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Diagnostics", RC ) + ENDIF + 283 FORMAT( I10,2x,I4,2x,I4,2x,F8.3,2x,F8.4,2x,I4,2x, & I2,2x,I2,2x,I2,2x,I2,2x,I2,2x, & F12.3,2x,E12.6,2x,E12.6,2x,E12.6,2x, & diff --git a/GeosCore/hco_interface_gc_mod.F90 b/GeosCore/hco_interface_gc_mod.F90 index 6cfac9eba..0b61fcdea 100644 --- a/GeosCore/hco_interface_gc_mod.F90 +++ b/GeosCore/hco_interface_gc_mod.F90 @@ -4562,6 +4562,7 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & USE State_Met_Mod, ONLY : MetState USE Time_Mod, ONLY : Get_Ts_Conv USE Time_Mod, ONLY : Get_Ts_Emis + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UnitConv_Mod ! ! !INPUT PARAMETERS: @@ -4660,6 +4661,13 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & !======================================================================= ! Convert units to [v/v dry] aka [mol/mol dry] !======================================================================= + + ! Halt mixing timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Boundary layer mixing", RC ) + ENDIF + + ! Convert units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -4677,6 +4685,11 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start mixing timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Boundary layer mixing", RC ) + ENDIF + !======================================================================= ! Get pointers to the PARANOX loss fluxes. ! These are stored in diagnostics 'PARANOX_O3_DEPOSITION_FLUX' and @@ -5120,6 +5133,13 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & !======================================================================= ! Unit conversion #2: Convert back to the original units !======================================================================= + + ! Halt mixing timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Boundary layer mixing", RC ) + ENDIF + + ! Convert units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -5136,6 +5156,11 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start mixing timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Boundary layer mixing", RC ) + ENDIF + ! Cleanup IF ( ASSOCIATED( PNOxLoss_O3 ) ) DEALLOCATE( PNOxLoss_O3 ) IF ( ASSOCIATED( PNOxLoss_HNO3 ) ) DEALLOCATE( PNOxLoss_HNO3 ) diff --git a/GeosCore/hco_utilities_gc_mod.F90 b/GeosCore/hco_utilities_gc_mod.F90 index 9dee1cf89..613de6d4c 100644 --- a/GeosCore/hco_utilities_gc_mod.F90 +++ b/GeosCore/hco_utilities_gc_mod.F90 @@ -1583,6 +1583,7 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE Time_Mod, ONLY : Expand_Date + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UnitConv_Mod #ifdef APM USE APM_Init_Mod, ONLY : APMIDS @@ -1911,6 +1912,12 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & PRINT *, " " PRINT *, "Species min and max in molec/cm3" + ! Halt HEMCO timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "HEMCO", RC ) + ENDIF + + ! Convert units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -1928,6 +1935,11 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start HEMCO timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "HEMCO", RC ) + ENDIF + ! Print values DO N = 1, State_Chm%nSpecies SpcInfo => State_Chm%SpcData(N)%Info @@ -1939,6 +1951,11 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & SpcInfo => NULL() ENDDO + ! Halt HEMCO timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "HEMCO", RC ) + ENDIF + ! Convert units back CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -1956,6 +1973,10 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start HEMCO timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "HEMCO", RC ) + ENDIF ENDIF !========================================================================= diff --git a/GeosCore/linear_chem_mod.F90 b/GeosCore/linear_chem_mod.F90 index c4fb36afe..2627e4aa4 100644 --- a/GeosCore/linear_chem_mod.F90 +++ b/GeosCore/linear_chem_mod.F90 @@ -166,6 +166,7 @@ SUBROUTINE DO_LINEAR_CHEM( Input_Opt, State_Chm, State_Grid, & USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE TIME_MOD, ONLY : TIMESTAMP_STRING + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UnitConv_Mod IMPLICIT NONE @@ -599,6 +600,11 @@ SUBROUTINE DO_LINEAR_CHEM( Input_Opt, State_Chm, State_Grid, & !====================================================================== IF ( LLINOZ .OR. LSYNOZ ) THEN + ! Halt linear chem timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "=> Linearized chem", errCode ) + ENDIF + ! Convert units to [v/v dry air] aka [mol/mol dry] ! for Linoz and Synoz (ewl, 10/05/15) CALL Convert_Spc_Units( & @@ -618,6 +624,11 @@ SUBROUTINE DO_LINEAR_CHEM( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start linear chem timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "=> Linearized chem", errCode ) + ENDIF + ! Do LINOZ or SYNOZ IF ( LLINOZ ) THEN CALL Do_Linoz( Input_Opt, State_Chm, State_Grid, & @@ -627,6 +638,11 @@ SUBROUTINE DO_LINEAR_CHEM( Input_Opt, State_Chm, State_Grid, & State_Met, errCode ) ENDIF + ! Halt linear chem timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "=> Linearized chem", errCode ) + ENDIF + ! Convert species units back to original unit CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -644,6 +660,11 @@ SUBROUTINE DO_LINEAR_CHEM( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start linear chem timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "=> Linearized chem", errCode ) + ENDIF + ENDIF ELSE diff --git a/GeosCore/mercury_mod.F90 b/GeosCore/mercury_mod.F90 index 31928bffd..d79796d43 100644 --- a/GeosCore/mercury_mod.F90 +++ b/GeosCore/mercury_mod.F90 @@ -226,6 +226,7 @@ SUBROUTINE EmissMercury( Input_Opt, State_Chm, State_Diag, & USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE Time_Mod, ONLY : GET_MONTH, ITS_A_NEW_MONTH + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UnitConv_Mod ! Added for GTMM (ccc, 11/19/09) @@ -277,6 +278,11 @@ SUBROUTINE EmissMercury( Input_Opt, State_Chm, State_Diag, & ErrMsg = '' ThisLoc = ' -> at EMISSMERCURY (in module GeosCore/mercury_mod.F90)' + ! Halt HEMCO timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "HEMCO", RC ) + ENDIF + ! Convert species units to [kg] for EMISSMERCURY (ewl, 8/12/15) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -295,6 +301,11 @@ SUBROUTINE EmissMercury( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start HEMCO timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "HEMCO", RC ) + ENDIF + !======================================================================== ! Get data pointers from HEMCO on the first call !======================================================================== @@ -364,9 +375,14 @@ SUBROUTINE EmissMercury( Input_Opt, State_Chm, State_Diag, & ! Add Hg(0) source into State_Chm%Species [kg] CALL SRCHg0( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, RC ) - IF ( Input_Opt%Verbose ) THEN - CALL DEBUG_MSG( '### EMISSMERCURY: a SRCHg0' ) - ENDIF + IF ( Input_Opt%Verbose ) THEN + CALL DEBUG_MSG( '### EMISSMERCURY: a SRCHg0' ) + ENDIF + + ! Halt HEMCO timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "HEMCO", RC ) + ENDIF ! Convert species units back to original unit CALL Convert_Spc_Units( & @@ -384,6 +400,11 @@ SUBROUTINE EmissMercury( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start HEMCO timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "HEMCO", RC ) + ENDIF + END SUBROUTINE EMISSMERCURY !EOC !------------------------------------------------------------------------------ @@ -658,6 +679,8 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & USE State_Diag_Mod, ONLY : DgnState USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState + USE Timers_Mod, ONLY : Timer_End, Timer_Start + ! ! !INPUT PARAMETERS: ! @@ -868,6 +891,13 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & !====================================================================== ! Convert species to [molec/cm3] (ewl, 8/16/16) !====================================================================== + + ! Halt gas-phase chem timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "=> Gas-phase chem", RC ) + ENDIF + + ! Convert units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -884,6 +914,11 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start gas-phase chem timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "=> Gas-phase chem", RC ) + ENDIF + !======================================================================== ! Call photolysis routine to compute J-Values !======================================================================== @@ -1386,6 +1421,13 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & !======================================================================== ! Convert species back to original units (ewl, 8/16/16) !======================================================================== + + ! Halt gas-phase chem timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "=> Gas-phase chem", RC ) + ENDIF + + ! Convert units back CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -1402,6 +1444,11 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start gas-phase chem timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "=> Gas-phase chem", RC ) + ENDIF + !### Debug output (uncomment if needed) !IF ( ITS_A_NEW_DAY() ) THEN ! WRITE(*,*) 'Total Hg0 mass [Mg]: ', & diff --git a/GeosCore/mixing_mod.F90 b/GeosCore/mixing_mod.F90 index aedda83b0..739138455 100644 --- a/GeosCore/mixing_mod.F90 +++ b/GeosCore/mixing_mod.F90 @@ -217,6 +217,7 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE TIME_MOD, ONLY : GET_TS_DYN, GET_TS_CONV, GET_TS_CHEM + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UnitConv_Mod #ifdef MODEL_CLASSIC use hco_utilities_gc_mod, only: TMP_MDL ! danger @@ -355,6 +356,12 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & State_Chm%Species(Input_Opt%NFD)%Conc(Input_Opt%IFD, Input_Opt%JFD, Input_Opt%LFD) ENDIF #endif + + ! Halt mixing timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Boundary layer mixing", RC ) + ENDIF + ! DO_TEND previously operated in units of kg. The species arrays are in ! v/v for mixing, hence needed to convert before and after. ! Now use units kg/m2 as State_Chm%SPECIES units in DO_TEND to @@ -374,6 +381,11 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF + + ! Start mixing timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Boundary layer mixing", RC ) + ENDIF #if defined( ADJOINT ) && defined ( DEBUG ) IF (Input_Opt%is_adjoint .and. Input_Opt%IS_FD_SPOT_THIS_PET) THEN @@ -945,6 +957,11 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & #endif + ! Halt mixing timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Boundary layer mixing", RC ) + ENDIF + ! Convert State_Chm%Species back to original units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -960,6 +977,12 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF + + ! Start mixing timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Boundary layer mixing", RC ) + ENDIF + #if defined( ADJOINT ) && defined ( DEBUG ) IF (Input_Opt%is_adjoint .and. Input_Opt%IS_FD_SPOT_THIS_PET) THEN WRITE(*,*) ' SpcAdj(IFD,JFD) after unit converstion: ', & diff --git a/GeosCore/pbl_mix_mod.F90 b/GeosCore/pbl_mix_mod.F90 index 1549cf929..9d066b8b3 100644 --- a/GeosCore/pbl_mix_mod.F90 +++ b/GeosCore/pbl_mix_mod.F90 @@ -67,6 +67,7 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & USE State_Met_Mod, ONLY : MetState USE Time_Mod, ONLY : Get_Ts_Conv USE Time_Mod, ONLY : Get_Ts_Dyn + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UnitConv_Mod ! ! !INPUT PARAMETERS: @@ -150,6 +151,11 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & ! Unit conversion #1 !===================================================================== + ! Halt mixing timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Boundary layer mixing", RC ) + ENDIF + ! Convert species to [v/v dry] aka [mol/mol dry] CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -168,6 +174,11 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start mixing timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Boundary layer mixing", RC ) + ENDIF + !===================================================================== ! Do full PBL mixing !===================================================================== @@ -187,6 +198,11 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & ! Unit conversion #2 !===================================================================== + ! Halt mixing timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Boundary layer mixing", RC ) + ENDIF + ! Convert species back to original units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -203,6 +219,11 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF + + ! Start mixing timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Boundary layer mixing", RC ) + ENDIF ENDIF !======================================================================== diff --git a/GeosCore/rrtmg_rad_transfer_mod.F90 b/GeosCore/rrtmg_rad_transfer_mod.F90 index d8abba1c2..f6b5aad54 100644 --- a/GeosCore/rrtmg_rad_transfer_mod.F90 +++ b/GeosCore/rrtmg_rad_transfer_mod.F90 @@ -511,6 +511,11 @@ SUBROUTINE DO_RRTMG_RAD_TRANSFER( ThisDay, ThisMonth, iCld, & RTSSAER => State_Chm%Phot%RTSSAER RTASYMAER => State_Chm%Phot%RTASYMAER + ! Halt RRTMG timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "RRTMG", RC ) + ENDIF + ! Convert species units to [kg/kg dry] for RRTMG CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -529,6 +534,11 @@ SUBROUTINE DO_RRTMG_RAD_TRANSFER( ThisDay, ThisMonth, iCld, & RETURN ENDIF + ! Start RRTMG timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "RRTMG", RC ) + ENDIF + ! Also make sure that the ncDiag arguement is valid, ! as this is the index for the netCDF diagnostic arrays. IF ( iNcDiag <= 0 ) THEN @@ -1704,6 +1714,11 @@ SUBROUTINE DO_RRTMG_RAD_TRANSFER( ThisDay, ThisMonth, iCld, & ENDDO !$OMP END PARALLEL DO + ! Halt RRTMG timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "RRTMG", RC ) + ENDIF + ! Convert species units back to original unit CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -1719,6 +1734,11 @@ SUBROUTINE DO_RRTMG_RAD_TRANSFER( ThisDay, ThisMonth, iCld, & RETURN ENDIF + ! Start RRTMG timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "RRTMG", RC ) + ENDIF + ! Nullify pointers Spc => NULL() SPECMASK => NULL() diff --git a/GeosCore/sulfate_mod.F90 b/GeosCore/sulfate_mod.F90 index e549f77d9..d35658faa 100644 --- a/GeosCore/sulfate_mod.F90 +++ b/GeosCore/sulfate_mod.F90 @@ -233,6 +233,7 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & USE TIME_MOD, ONLY : GET_MONTH USE TIME_MOD, ONLY : GET_TS_CHEM USE TIME_MOD, ONLY : ITS_A_NEW_MONTH + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UCX_MOD, ONLY : SETTLE_STRAT_AER USE UnitConv_Mod #ifdef APM @@ -534,6 +535,11 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & ENDIF ENDIF + ! Halt aerosol chem timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "=> Aerosol chem", RC ) + ENDIF + ! Convert species to [v/v dry] aka [mol/mol dry] CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -550,6 +556,12 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & 'Start of CHEM_SULFATE in sulfate_mod.F90') RETURN ENDIF + + ! Start aerosol chem timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "=> Aerosol chem", RC ) + ENDIF + IF ( Input_Opt%Verbose ) THEN CALL DEBUG_MSG( '### CHEMSULFATE: a CONVERT UNITS' ) ENDIF @@ -672,6 +684,11 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & ! FullRun = F: Just set up Cloud pH & related parameters, and exit !--------------------------------------------------------------------- + ! Halt aerosol chem timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "=> Aerosol chem", RC ) + ENDIF + ! Convert species to [v/v dry] aka [mol/mol dry] CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -688,6 +705,12 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & 'Start of CHEM_SULFATE in sulfate_mod.F90') RETURN ENDIF + + ! Start aerosol chem timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "=> Aerosol chem", RC ) + ENDIF + IF ( Input_Opt%Verbose ) THEN CALL DEBUG_MSG( '### CHEMSULFATE: a CONVERT UNITS' ) ENDIF @@ -709,6 +732,11 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & ENDIF ! FullRun + ! Halt aerosol chem timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "=> Aerosol chem", RC ) + ENDIF + ! Convert species units back to original unit CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -725,6 +753,11 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & RETURN ENDIF + ! Start aerosol chem timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "=> Aerosol chem", RC ) + ENDIF + ! Free pointer Spc => NULL() @@ -760,6 +793,7 @@ SUBROUTINE EMISSSULFATETOMAS( Input_Opt, State_Chm, State_Grid, & USE State_Chm_Mod, ONLY : ChmState USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE TOMAS_MOD, ONLY : IBINS, ICOMP, IDIAG USE TOMAS_MOD, ONLY : NH4BULKTOBIN USE TOMAS_MOD, ONLY : SRTNH4 @@ -806,6 +840,11 @@ SUBROUTINE EMISSSULFATETOMAS( Input_Opt, State_Chm, State_Grid, & ! EMISSSULFATETOMAS begins here! !================================================================= + ! Halt HEMCO timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "HEMCO", RC ) + ENDIF + ! Convert species to [kg] for TOMAS. This will be removed once ! TOMAS uses mixing ratio instead of mass as tracer units (ewl, 9/11/15) CALL Convert_Spc_Units( & @@ -824,6 +863,11 @@ SUBROUTINE EMISSSULFATETOMAS( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start HEMCO timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "HEMCO", RC ) + ENDIF + ! Point to chemical species array [kg] Spc => State_Chm%Species @@ -881,6 +925,11 @@ SUBROUTINE EMISSSULFATETOMAS( Input_Opt, State_Chm, State_Grid, & ! Free pointer NULLIFY( Spc ) + ! Halt HEMCO timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "HEMCO", RC ) + ENDIF + ! Convert species back to original units (ewl, 9/11/15) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -897,6 +946,11 @@ SUBROUTINE EMISSSULFATETOMAS( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start HEMCO timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "HEMCO", RC ) + ENDIF + END SUBROUTINE EMISSSULFATETOMAS !EOC #endif diff --git a/GeosCore/tracer_mod.F90 b/GeosCore/tracer_mod.F90 index 8b0e24735..2caa1cda0 100644 --- a/GeosCore/tracer_mod.F90 +++ b/GeosCore/tracer_mod.F90 @@ -66,6 +66,7 @@ SUBROUTINE Tracer_Source_Phase( Input_Opt, State_Chm, State_Grid, & USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE Time_Mod, ONLY : Get_Ts_Chem + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UnitConv_Mod #if defined( MODEL_GEOS ) || defined( MODEL_GCHP ) @@ -146,6 +147,13 @@ SUBROUTINE Tracer_Source_Phase( Input_Opt, State_Chm, State_Grid, & !======================================================================= ! Convert species units to v/v dry !======================================================================= + + ! Halt "All chem" timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "All chemistry", RC ) + ENDIF + + ! Convert units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -162,6 +170,11 @@ SUBROUTINE Tracer_Source_Phase( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start "All chem" timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "All chemistry", RC ) + ENDIF + !======================================================================== ! Apply tracer source !======================================================================== @@ -419,6 +432,13 @@ SUBROUTINE Tracer_Source_Phase( Input_Opt, State_Chm, State_Grid, & !======================================================================= ! Convert species units back to original unit !======================================================================= + + ! Halt "all chem" timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "All chemistry", RC ) + ENDIF + + ! Convert units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -434,6 +454,11 @@ SUBROUTINE Tracer_Source_Phase( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Start "all chem" timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "All chemistry", RC ) + ENDIF + ! Reset after the first time IF ( First ) First = .FALSE. diff --git a/GeosCore/vdiff_mod.F90 b/GeosCore/vdiff_mod.F90 index a659cecbd..d416b19a9 100644 --- a/GeosCore/vdiff_mod.F90 +++ b/GeosCore/vdiff_mod.F90 @@ -2210,6 +2210,7 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & USE State_Met_Mod, ONLY : MetState USE TIME_MOD, ONLY : ITS_TIME_FOR_EMIS USE Time_Mod, ONLY : Get_Ts_Dyn + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UnitConv_Mod IMPLICIT NONE @@ -2300,6 +2301,11 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & ! Unit conversion #1 !======================================================================= + ! Halt mixing timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Boundary layer mixing", RC ) + ENDIF + ! Convert species concentration to [v/v dry] aka [mol/mol dry] CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -2318,6 +2324,11 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start mixng timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Boundary layer mixing", RC ) + ENDIF + !======================================================================= ! PBL mixing !======================================================================= @@ -2367,6 +2378,11 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & ! Unit conversion #2 !======================================================================= + ! Halt mixing timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Boundary layer mixing", RC ) + ENDIF + ! Convert species back to the original units CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -2384,6 +2400,11 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF + ! Start mixng timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Boundary layer mixing", RC ) + ENDIF + !======================================================================= ! Non-local PBL mixing budget diagnostics - Part 2 of 2 !======================================================================= diff --git a/GeosCore/wetscav_mod.F90 b/GeosCore/wetscav_mod.F90 index 22c22b808..77cb33621 100644 --- a/GeosCore/wetscav_mod.F90 +++ b/GeosCore/wetscav_mod.F90 @@ -3042,6 +3042,7 @@ SUBROUTINE WETDEP( Input_Opt, State_Chm, State_Diag, State_Grid, & USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE TIME_MOD, ONLY : GET_TS_DYN + USE Timers_Mod USE Species_Mod, ONLY : Species USE UnitConv_Mod ! @@ -3225,6 +3226,11 @@ SUBROUTINE WETDEP( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Initialize pointers SpcInfo => NULL() + ! Halt wetdep timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Wet deposition", RC ) + ENDIF + ! Convert species concentration to mass per unit area (kg/m2) for ! wet deposition since computation is done per column (ewl, 9/8/15) CALL Convert_Spc_Units( & @@ -3244,6 +3250,11 @@ SUBROUTINE WETDEP( Input_Opt, State_Chm, State_Diag, State_Grid, & RETURN ENDIF + ! Start wetdep timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Wet deposition", RC ) + ENDIF + ! Dynamic timestep [s] DT = GET_TS_DYN() @@ -3811,6 +3822,11 @@ SUBROUTINE WETDEP( Input_Opt, State_Chm, State_Diag, State_Grid, & RETURN ENDIF + ! Halt wetdep timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Wet deposition", RC ) + ENDIF + ! Convert species concentration back to original unit (ewl, 9/8/15) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & @@ -3828,6 +3844,11 @@ SUBROUTINE WETDEP( Input_Opt, State_Chm, State_Diag, State_Grid, & RETURN ENDIF + ! Start wetdep timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Wet deposition", RC ) + ENDIF + END SUBROUTINE WETDEP !EOC !------------------------------------------------------------------------------ diff --git a/Interfaces/GCClassic/main.F90 b/Interfaces/GCClassic/main.F90 index fce289c5b..a8266e124 100644 --- a/Interfaces/GCClassic/main.F90 +++ b/Interfaces/GCClassic/main.F90 @@ -1873,24 +1873,48 @@ PROGRAM GEOS_Chem ! CH4 columns from the GOSAT instrument IF ( Input_Opt%GOSAT_CH4_OBS ) THEN IF ( ITS_A_NEW_HOUR() ) THEN + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Diagnostics", RC) + ENDIF + CALL CALC_GOSAT_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & State_Met ) + + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Diagnostics", RC ) + ENDIF ENDIF ENDIF ! CH4 columns from the AIRS instrument IF ( Input_Opt%AIRS_CH4_OBS ) THEN IF ( ITS_A_NEW_HOUR() ) THEN + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Diagnostics", RC) + ENDIF + CALL CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & State_Met ) + + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Diagnostics", RC ) + ENDIF ENDIF ENDIF ! CH4 columns from the TCCON instrument IF ( Input_Opt%TCCON_CH4_OBS ) THEN IF ( ITS_A_NEW_HOUR() ) THEN + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Diagnostics", RC) + ENDIF + CALL CALC_TCCON_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & State_Met ) + + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Diagnostics", RC ) + ENDIF ENDIF ENDIF ENDIF diff --git a/ObsPack/obspack_mod.F90 b/ObsPack/obspack_mod.F90 index 9fc87dd91..dfd9b8a67 100644 --- a/ObsPack/obspack_mod.F90 +++ b/ObsPack/obspack_mod.F90 @@ -1281,6 +1281,7 @@ SUBROUTINE ObsPack_Sample( yyyymmdd, hhmmss, Input_Opt, State_Chm, & USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE Time_Mod, ONLY : Ymd_Extract + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE UnitConv_Mod ! ! !INPUT PARAMETERS: @@ -1339,6 +1340,15 @@ SUBROUTINE ObsPack_Sample( yyyymmdd, hhmmss, Input_Opt, State_Chm, & ! because there are no data at this time). IF ( .not. State_Diag%Do_ObsPack ) RETURN + !======================================================================= + ! Unit conversion + !======================================================================= + + ! Halt diags timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Diagnostics", RC ) + ENDIF + ! Ensure that units of species are [v/v dry], which is dry air mole ! fraction, aka [mol/mol dry]. Capture the InUnit value, this is what ! the units are prior to this call. After we sample the species, we'll @@ -1361,6 +1371,11 @@ SUBROUTINE ObsPack_Sample( yyyymmdd, hhmmss, Input_Opt, State_Chm, & RETURN ENDIF + ! Start diags timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Diagnostics", RC ) + ENDIF + !======================================================================= ! Sample the GEOS-CHem data corresponding to this location & time !======================================================================= @@ -1486,6 +1501,11 @@ SUBROUTINE ObsPack_Sample( yyyymmdd, hhmmss, Input_Opt, State_Chm, & ! Cleanup and quit !======================================================================= + ! Halt diags timer (so that unit conv can be timed separately) + IF ( Input_Opt%useTimers ) THEN + CALL Timer_End( "Diagnostics", RC ) + ENDIF + ! Return State_Chm%Species(:)%Conc to whatever units they had ! coming into this routine CALL Convert_Spc_Units( & @@ -1504,6 +1524,11 @@ SUBROUTINE ObsPack_Sample( yyyymmdd, hhmmss, Input_Opt, State_Chm, & RETURN ENDIF + ! Start diags timer again + IF ( Input_Opt%useTimers ) THEN + CALL Timer_Start( "Diagnostics", RC ) + ENDIF + END SUBROUTINE ObsPack_Sample !EOC !------------------------------------------------------------------------------ From 075f80187968789aecd540cc0399be5b3d61139a Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Wed, 29 Nov 2023 16:39:57 -0500 Subject: [PATCH 029/331] Improve error message for when species not found in species_database.yml Signed-off-by: Melissa Sulprizio --- Headers/species_database_mod.F90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Headers/species_database_mod.F90 b/Headers/species_database_mod.F90 index cf504212a..abc0c08c6 100644 --- a/Headers/species_database_mod.F90 +++ b/Headers/species_database_mod.F90 @@ -839,7 +839,8 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) ThisSpc%Is_Gas = .TRUE. ELSE errMsg = "Is_Gas and Is_Aerosol are both FALSE for species " // & - TRIM( spc ) // "!" + TRIM( spc ) // "!This species may not be included " // & + "in species_database.yml. Please check that file." CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF From a1d761b2e9ba2305564bd57f2d9fb0bccfb3a75b Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Fri, 22 Dec 2023 16:06:04 -0500 Subject: [PATCH 030/331] Updates to make analysis interface use the new HEMCO IsValid query and streamline the yaml interface. --- Headers/qfyaml_mod.F90 | 2 - Interfaces/GEOS/geos_analysis.F90 | 449 ++++++++++-------------------- 2 files changed, 149 insertions(+), 302 deletions(-) diff --git a/Headers/qfyaml_mod.F90 b/Headers/qfyaml_mod.F90 index d14b4c6f7..ccbecdab9 100644 --- a/Headers/qfyaml_mod.F90 +++ b/Headers/qfyaml_mod.F90 @@ -46,8 +46,6 @@ MODULE QFYAML_Mod PUBLIC :: QFYAML_Merge PUBLIC :: QFYAML_Print PUBLIC :: QFYAML_Update - - PUBLIC :: Get_Var_Index ! ! !REMARKS: ! QFYAML -- The Quick Fortran YAML parser! diff --git a/Interfaces/GEOS/geos_analysis.F90 b/Interfaces/GEOS/geos_analysis.F90 index a832ad438..6d4503129 100644 --- a/Interfaces/GEOS/geos_analysis.F90 +++ b/Interfaces/GEOS/geos_analysis.F90 @@ -86,6 +86,7 @@ MODULE GEOS_Analysis INTEGER :: nSpec2 TYPE(Spec2Opt), POINTER :: Spec2(:) => NULL() INTEGER :: ErrorMode + INTEGER :: Verbose END TYPE AnaOptions ! List holding all analysis information @@ -401,6 +402,8 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat USE HCO_Utilities_GC_Mod, ONLY : HCO_GC_EvalFld USE TIME_MOD, ONLY : GET_TS_CHEM Use PhysConstants, ONLY : AIRMW + USE HCOIO_Util_Mod, ONLY : HCOIO_IsValid + USE HCO_State_GC_Mod, ONLY : HcoState ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -505,42 +508,49 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat TimeForAna = .FALSE. ENDIF - ! Check if file exists (only if it's time to do the analysis + ! Check if file exists (only if it's time to do the analysis) HasField = .FALSE. AnaPtr => NULL() IF ( TimeForAna ) THEN - + + ! HEMCO field name FldName = iopt%FldNameHco - ALLOCATE(AnaPtr(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) - CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, AnaPtr, RC, FOUND=HasField ) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error getting field: '//TRIM(FldName) - CALL GC_Error( ErrMsg, RC, ThisLoc) - RETURN - ENDIF - ! Eventually read mask field - IF ( iopt%HasMask ) THEN - FldName = iopt%MskNameHco - ALLOCATE(MskPtr(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) - CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, MskPtr, RC ) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error getting mask: '//TRIM(FldName) - CALL GC_Error( ErrMsg, RC, ThisLoc) - RETURN + ! Check first if the field exists / is valid (in ESMF, fields can become invalid) + CALL HCOIO_IsValid( HcoState, FldName, HasField, RC ) + IF ( RC /= GC_SUCCESS ) HasField = .FALSE. + + ! Evaluate field if it is valid to do so + IF ( HasField ) THEN + + ALLOCATE(AnaPtr(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) + CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, AnaPtr, RC ) + IF ( RC /= GC_SUCCESS ) HasField = .FALSE. + + ! Eventually read mask field + IF ( iopt%HasMask ) THEN + FldName = iopt%MskNameHco + ALLOCATE(MskPtr(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) + CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, MskPtr, RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error getting mask: '//TRIM(FldName) + CALL GC_Error( ErrMsg, RC, ThisLoc) + RETURN + ENDIF ENDIF - ENDIF ! Handle cases where field is not found. If error mode is set to 0, stop with error. ! Print a warning otherwise. - IF ( .NOT. HasField ) THEN + ELSE IF ( iopt%ErrorMode == 0 ) THEN ErrMsg = 'Field not found: '//TRIM(iopt%FldNameHco)//'; to get past this error, set error mode to > 0' CALL GC_Error( ErrMsg, RC, ThisLoc) RETURN ELSE - ErrMsg = 'Field not found: '//TRIM(iopt%FldNameHco)//'; will skip analysis' - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc) + IF ( am_I_Root .AND. (iopt%Verbose>1) ) THEN + WRITE(*,*) 'GEOS-Chem analysis: field not found: '//TRIM(iopt%FldNameHco)//'; will skip analysis' + !CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc) + ENDIF ENDIF ENDIF ENDIF @@ -550,7 +560,7 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat IF ( HasField ) THEN ! Verbose - IF ( am_I_Root ) THEN + IF ( am_I_Root .AND. (iopt%Verbose>0) ) THEN WRITE(*,100) SpecName,yy,mm,dd,h,m 100 FORMAT( "GEOS-Chem: apply analysis for species ",A5," for ",I4.4,"-",I2.2,"-",I2.2," ",I2.2,":",I2.2) ENDIF @@ -783,7 +793,7 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat ENDDO ! Print warning if at least one negative cell - IF ( NNEG > 0 ) THEN + IF ( NNEG > 0 .AND. iopt%Verbose > 2 ) THEN WRITE(6,*) '*** DoAnalysis_ warning: encountered concentration below threshold, set to minimum: ',TRIM(SpecName),NNEG,MinConc,' ***' ENDIF @@ -999,341 +1009,213 @@ SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) ! Get species name. Eventually remove single quotes from species key = TRIM(pkey)//"%SpeciesName" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='N/A' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - SpecName = TRIM(v_str) + SpecName = TRIM(v_str) + C = INDEX( SpecName, "'" ) + IF ( C > 0 ) THEN + SpecName = SpecName(C+1:) C = INDEX( SpecName, "'" ) - IF ( C > 0 ) THEN - SpecName = SpecName(C+1:) - C = INDEX( SpecName, "'" ) - IF ( C > 0 ) SpecName = Specname(1:C-1) - ENDIF - AnaConfig(ispec)%SpecName = SpecName - ELSE - AnaConfig(ispec)%SpecName = 'N/A' + IF ( C > 0 ) SpecName = Specname(1:C-1) ENDIF + AnaConfig(ispec)%SpecName = SpecName IF ( am_I_Root ) write(6,*) 'Reading analysis settings for species: '//TRIM(AnaConfig(ispec)%SpecName) ! Active? key = TRIM(pkey)//"%Active" - CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + CALL GetKey_( Config, key, RC, vbool=v_bool, vbool_default=.FALSE. ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%Active = v_bool - ELSE - AnaConfig(ispec)%Active = .FALSE. - ENDIF + AnaConfig(ispec)%Active = v_bool ! Analysis frequency key = TRIM(pkey)//"%AnalysisFreq" - CALL GetKey_( Config, key, found, RC, vint=v_int ) - IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%AnalysisFreq = v_int - ELSE - AnaConfig(ispec)%AnalysisFreq = 6 - ENDIF + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=6 ) + AnaConfig(ispec)%AnalysisFreq = v_int ! Analysis hour key = TRIM(pkey)//"%AnalysisHour" - CALL GetKey_( Config, key, found, RC, vint=v_int ) - IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%AnalysisHour = v_int - ELSE - AnaConfig(ispec)%AnalysisHour = 0 - ENDIF + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=0 ) + AnaConfig(ispec)%AnalysisHour = v_int ! Analysis minute key = TRIM(pkey)//"%AnalysisMinute" - CALL GetKey_( Config, key, found, RC, vint=v_int ) + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=0 ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%AnalysisMinute = v_int - ELSE - AnaConfig(ispec)%AnalysisMinute = 0 - ENDIF + AnaConfig(ispec)%AnalysisMinute = v_int ! Forward looking? key = TRIM(pkey)//"%ForwardLooking" - CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + CALL GetKey_( Config, key, RC, vbool=v_bool, vbool_default=.TRUE. ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%ForwardLooking = v_bool - ELSE - AnaConfig(ispec)%ForwardLooking = .TRUE. - ENDIF + AnaConfig(ispec)%ForwardLooking = v_bool ! Skip predictor? key = TRIM(pkey)//"%SkipPredictor" - CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + CALL GetKey_( Config, key, RC, vbool=v_bool, vbool_default=.TRUE. ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%SkipPredictor = v_bool - ELSE - AnaConfig(ispec)%SkipPredictor = .TRUE. - ENDIF + AnaConfig(ispec)%SkipPredictor = v_bool ! HEMCO field name key = TRIM(pkey)//"%FldNameHco" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='N/A' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%FldNameHco = v_str - ELSE - AnaConfig(ispec)%FldNameHco = 'N/A' - ENDIF + AnaConfig(ispec)%FldNameHco = v_str ! Field units key = TRIM(pkey)//"%FileVarUnit" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='v/v' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%FileVarUnit = v_str - ELSE - AnaConfig(ispec)%FileVarUnit = 'v/v' - ENDIF + AnaConfig(ispec)%FileVarUnit = v_str ! Dry air flag key = TRIM(pkey)//"%DryFlag" - CALL GetKey_( Config, key, found, RC, vint=v_int ) + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=1 ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%DryFlag = v_int - ELSE - AnaConfig(ispec)%DryFlag = 1 - ENDIF + AnaConfig(ispec)%DryFlag = v_int ! Is increment? key = TRIM(pkey)//"%IsIncrement" - CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + CALL GetKey_( Config, key, RC, vbool=v_bool, vbool_default=.FALSE. ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%IsIncrement = v_bool - ELSE - AnaConfig(ispec)%IsIncrement = .FALSE. - ENDIF + AnaConfig(ispec)%IsIncrement = v_bool ! IAU? key = TRIM(pkey)//"%IAU" - CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + CALL GetKey_( Config, key, RC, vbool=v_bool, vbool_default=.FALSE. ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%IAU = v_bool - ELSE - AnaConfig(ispec)%IAU = .FALSE. - ENDIF + AnaConfig(ispec)%IAU = v_bool ! Analysis window length (hours) key = TRIM(pkey)//"%AnalysisWindow" - CALL GetKey_( Config, key, found, RC, vint=v_int ) + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=6 ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%AnalysisWindow = v_int - ELSE - AnaConfig(ispec)%AnalysisWindow = 6 - ENDIF + AnaConfig(ispec)%AnalysisWindow = v_int ! Apply in stratosphere? key = TRIM(pkey)//"%InStrat" - CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + CALL GetKey_( Config, key, RC, vbool=v_bool, vbool_default=.TRUE. ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%InStrat = v_bool - ELSE - AnaConfig(ispec)%InStrat = .TRUE. - ENDIF + AnaConfig(ispec)%InStrat = v_bool ! Apply in troposphere? key = TRIM(pkey)//"%InTrop" - CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + CALL GetKey_( Config, key, RC, vbool=v_bool, vbool_default=.TRUE. ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%InTrop = v_bool - ELSE - AnaConfig(ispec)%InTrop = .TRUE. - ENDIF + AnaConfig(ispec)%InTrop = v_bool ! Has mask field key = TRIM(pkey)//"%HasMask" - CALL GetKey_( Config, key, found, RC, vbool=v_bool ) + CALL GetKey_( Config, key, RC, vbool=v_bool, vbool_default=.FALSE. ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%HasMask = v_bool - ELSE - AnaConfig(ispec)%HasMask = .FALSE. - ENDIF + AnaConfig(ispec)%HasMask = v_bool ! Mask name (from HEMCO) key = TRIM(pkey)//"%MskNameHco" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='N/A' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%MskNameHco = v_str - ELSE - AnaConfig(ispec)%MskNameHco = 'N/A' - ENDIF + AnaConfig(ispec)%MskNameHco = v_str ! Mask threshold key = TRIM(pkey)//"%MaskThreshold" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='0.1' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%MaskThreshold = Cast_and_RoundOff( v_str, places=2 ) - ELSE - AnaConfig(ispec)%MaskThreshold = 0.1 - ENDIF + AnaConfig(ispec)%MaskThreshold = Cast_and_RoundOff( v_str, places=2 ) ! Analysis level 1 key = TRIM(pkey)//"%AnaL1" - CALL GetKey_( Config, key, found, RC, vint=v_int ) + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=1 ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%AnaL1 = v_int - ELSE - AnaConfig(ispec)%AnaL1 = 1 - ENDIF + AnaConfig(ispec)%AnaL1 = v_int ! Analysis level 2 key = TRIM(pkey)//"%AnaL2" - CALL GetKey_( Config, key, found, RC, vint=v_int ) + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=1 ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%AnaL2 = v_int - ELSE - AnaConfig(ispec)%AnaL2 = 1 - ENDIF + AnaConfig(ispec)%AnaL2 = v_int ! Analysis level 3 key = TRIM(pkey)//"%AnaL3" - CALL GetKey_( Config, key, found, RC, vint=v_int ) + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=72 ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%AnaL3 = v_int - ELSE - AnaConfig(ispec)%AnaL3 = 72 - ENDIF + AnaConfig(ispec)%AnaL3 = v_int ! Analysis level 4 key = TRIM(pkey)//"%AnaL4" - CALL GetKey_( Config, key, found, RC, vint=v_int ) + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=72 ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%AnaL4 = v_int - ELSE - AnaConfig(ispec)%AnaL4 = 72 - ENDIF + AnaConfig(ispec)%AnaL4 = v_int ! Analysis fraction key = TRIM(pkey)//"%AnaFraction" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='1.0' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%AnaFraction = Cast_and_RoundOff( v_str, places=2 ) - ELSE - AnaConfig(ispec)%AnaFraction = 1.0 - ENDIF + AnaConfig(ispec)%AnaFraction = Cast_and_RoundOff( v_str, places=2 ) ! Stratosphere sponge layer key = TRIM(pkey)//"%StratSponge" - CALL GetKey_( Config, key, found, RC, vint=v_int ) + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=0 ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%StratSponge = v_int - ELSE - AnaConfig(ispec)%StratSponge = 0 - ENDIF + AnaConfig(ispec)%StratSponge = v_int ! Maximum change in stratosphere key = TRIM(pkey)//"%MaxChangeStrat" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='-1.0' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%MaxChangeStrat = Cast_and_RoundOff( v_str, places=2 ) - ELSE - AnaConfig(ispec)%MaxChangeStrat = -1.0 - ENDIF + AnaConfig(ispec)%MaxChangeStrat = Cast_and_RoundOff( v_str, places=2 ) ! Maximum change in troposphere key = TRIM(pkey)//"%MaxChangeTrop" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='-1.0' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%MaxChangeTrop = Cast_and_RoundOff( v_str, places=2 ) - ELSE - AnaConfig(ispec)%MaxChangeTrop = -1.0 - ENDIF + AnaConfig(ispec)%MaxChangeTrop = Cast_and_RoundOff( v_str, places=2 ) ! Maximum ratio change in stratosphere key = TRIM(pkey)//"%MaxRatioStrat" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='-1.0' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%MaxRatioStrat = Cast_and_RoundOff( v_str, places=2 ) - ELSE - AnaConfig(ispec)%MaxRatioStrat = -1.0 - ENDIF + AnaConfig(ispec)%MaxRatioStrat = Cast_and_RoundOff( v_str, places=2 ) ! Maximum ratio change in troposphere key = TRIM(pkey)//"%MaxRatioTrop" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='-1.0' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%MaxRatioTrop = Cast_and_RoundOff( v_str, places=2 ) - ELSE - AnaConfig(ispec)%MaxRatioTrop = -1.0 - ENDIF + AnaConfig(ispec)%MaxRatioTrop = Cast_and_RoundOff( v_str, places=2 ) ! Minimum ratio change in stratosphere key = TRIM(pkey)//"%MinRatioStrat" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='-1.0' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%MinRatioStrat = Cast_and_RoundOff( v_str, places=2 ) - ELSE - AnaConfig(ispec)%MinRatioStrat = -1.0 - ENDIF + AnaConfig(ispec)%MinRatioStrat = Cast_and_RoundOff( v_str, places=2 ) ! Minimum ratio change in troposphere key = TRIM(pkey)//"%MinRatioTrop" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='-1.0' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%MinRatioTrop = Cast_and_RoundOff( v_str, places=2 ) - ELSE - AnaConfig(ispec)%MinRatioTrop = -1.0 - ENDIF + AnaConfig(ispec)%MinRatioTrop = Cast_and_RoundOff( v_str, places=2 ) ! Minimum concentration key = TRIM(pkey)//"%MinConc" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='1.0e-20' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%MinConc = Cast_and_RoundOff( v_str, places=2 ) - ELSE - AnaConfig(ispec)%MinConc = 1.0e-20 - ENDIF + AnaConfig(ispec)%MinConc = Cast_and_RoundOff( v_str, places=2 ) ! Error mode key = TRIM(pkey)//"%ErrorMode" - CALL GetKey_( Config, key, found, RC, vint=v_int ) + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=1 ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - AnaConfig(ispec)%ErrorMode = v_int - ELSE - AnaConfig(ispec)%ErrorMode = 1 - ENDIF + AnaConfig(ispec)%ErrorMode = v_int + + ! Verbose flag + key = TRIM(pkey)//"%Verbose" + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=2 ) + IF ( RC /= GC_SUCCESS ) RETURN + AnaConfig(ispec)%Verbose = v_int ! Check for "dependent" species key = TRIM(pkey)//"%HasSpec2" - CALL GetKey_( Config, key, found, RC, vint=v_int ) + CALL GetKey_( Config, key, RC, vint=v_int, vint_default=0 ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - nSpec2 = v_int - ELSE - nSpec2 = 0 - ENDIF + nSpec2 = v_int AnaConfig(ispec)%nSpec2 = nSpec2 IF ( nSpec2 > 0 ) THEN @@ -1342,45 +1224,25 @@ SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) ! species names key = TRIM(pkey)//"%Spec2Name" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='unknown' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - Spec2Name = v_str - ELSE - Spec2Name = 'unknown' - ENDIF + Spec2Name = v_str key = TRIM(pkey)//"%Spec2Strat" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='1' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - Spec2Strat = v_str - ELSE - Spec2Strat = '1' - ENDIF + Spec2Strat = v_str key = TRIM(pkey)//"%Spec2Trop" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='1' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - Spec2Trop = v_str - ELSE - Spec2Trop = '1' - ENDIF + Spec2Trop = v_str key = TRIM(pkey)//"%Spec2MinRatio" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='-1.0' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - Spec2MinRatio = v_str - ELSE - Spec2MinRatio = '-1.0' - ENDIF + Spec2MinRatio = v_str key = TRIM(pkey)//"%Spec2MaxRatio" - CALL GetKey_( Config, key, found, RC, vstr=v_str ) + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='-1.0' ) IF ( RC /= GC_SUCCESS ) RETURN - IF ( found ) THEN - Spec2MaxRatio = v_str - ELSE - Spec2MaxRatio = '-1.0' - ENDIF + Spec2MaxRatio = v_str ! Assign parameter to various slots DO N = 1, nSpec2 ! Species name @@ -1449,6 +1311,7 @@ SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) ENDDO ENDIF WRITE(6,*) '- Error mode : ', AnaConfig(ispec)%ErrorMode + WRITE(6,*) '- Verbose flag : ', AnaConfig(ispec)%Verbose ENDIF ! Active ENDIF @@ -1615,7 +1478,7 @@ END FUNCTION GetDiagnID !\\ ! !INTERFACE: ! - SUBROUTINE GetKey_( Config, key, found, RC, vint, vbool, vstr ) + SUBROUTINE GetKey_( Config, key, RC, vint, vint_default, vbool, vbool_default, vstr, vstr_default ) ! ! !USES: ! @@ -1628,11 +1491,13 @@ SUBROUTINE GetKey_( Config, key, found, RC, vint, vbool, vstr ) ! ! !INPUT/OUTPUT PARAMETERS: ! - LOGICAL, INTENT(OUT) :: found - INTEGER, INTENT(INOUT) :: RC - INTEGER, OPTIONAL, INTENT(OUT) :: vint - LOGICAL, OPTIONAL, INTENT(OUT) :: vbool - CHARACTER(LEN=QFYAML_StrLen), OPTIONAL, INTENT(OUT) :: vstr + INTEGER, INTENT(INOUT) :: RC + INTEGER, OPTIONAL, INTENT(OUT) :: vint + INTEGER, OPTIONAL, INTENT(IN) :: vint_default + LOGICAL, OPTIONAL, INTENT(OUT) :: vbool + LOGICAL, OPTIONAL, INTENT(IN) :: vbool_default + CHARACTER(LEN=QFYAML_StrLen), OPTIONAL, INTENT(OUT) :: vstr + CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: vstr_default ! ! !REVISION HISTORY: ! 15 Dec 2023 - C. Keller - Initial version @@ -1643,7 +1508,7 @@ SUBROUTINE GetKey_( Config, key, found, RC, vint, vbool, vstr ) ! ! LOCAL VARIABLES: ! - INTEGER :: v_int, ix + INTEGER :: v_int LOGICAL :: v_bool CHARACTER(LEN=QFYAML_StrLen) :: v_str CHARACTER(LEN=255) :: errMsg @@ -1652,54 +1517,38 @@ SUBROUTINE GetKey_( Config, key, found, RC, vint, vbool, vstr ) ! Starts here RC = GC_SUCCESS - ! Check if key exists - CALL Get_Var_Index( Config, TRIM( key ), ix ) - found = ( ix > 0 ) - ! integer IF ( PRESENT(vint) ) THEN - IF ( ix>0 ) THEN - v_int = MISSING_INT - CALL QFYAML_Add_Get( Config, TRIM( key ), v_int, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, Iam ) - RETURN - ENDIF - ELSE - v_int = -1 + v_int = vint_default + CALL QFYAML_Add_Get( Config, TRIM( key ), v_int, "", RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error parsing ' // TRIM( key ) // '!' + CALL GC_Error( errMsg, RC, Iam ) + RETURN ENDIF vint = v_int ENDIF ! bool IF ( PRESENT(vbool) ) THEN - IF ( ix>0 ) THEN - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, TRIM( key ), v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, Iam ) - RETURN - ENDIF - ELSE - v_bool = .false. + v_bool = vbool_default + CALL QFYAML_Add_Get( Config, TRIM( key ), v_bool, "", RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error parsing ' // TRIM( key ) // '!' + CALL GC_Error( errMsg, RC, Iam ) + RETURN ENDIF vbool = v_bool ENDIF ! character IF ( PRESENT(vstr) ) THEN - IF ( ix>0 ) THEN - v_str = MISSING_STR - CALL QFYAML_Add_Get( Config, TRIM( key ), v_str, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, Iam ) - RETURN - ENDIF - ELSE - v_str = "unknown" + v_str = TRIM(vstr_default) + CALL QFYAML_Add_Get( Config, TRIM( key ), v_str, "", RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error parsing ' // TRIM( key ) // '!' + CALL GC_Error( errMsg, RC, Iam ) + RETURN ENDIF vstr = v_str ENDIF From 44f870e6dea40e1de6265bd2cc79171406c16794 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Fri, 22 Dec 2023 20:13:43 -0500 Subject: [PATCH 031/331] Updates to input files for new geos_analysis interface --- run/GEOS/GEOSCHEMchem_ExtData.yaml | 11 +++++++---- run/GEOS/HEMCO_Config.rc | 17 ++++++++++++++++- run/GEOS/geoschem_analysis.yml | 3 ++- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/run/GEOS/GEOSCHEMchem_ExtData.yaml b/run/GEOS/GEOSCHEMchem_ExtData.yaml index 9403f2e69..dc327a12e 100644 --- a/run/GEOS/GEOSCHEMchem_ExtData.yaml +++ b/run/GEOS/GEOSCHEMchem_ExtData.yaml @@ -5,7 +5,9 @@ Samplings: gcc_8day_interp_clim: {update_reference_time: "0", update_frequency: P8D, update_offset: P1D, time_interpolation: True, extrapolation: clim} gcc_3hr: {time_interpolation: True, extrapolation: clim} gcc_monthly_clim: {update_reference_time: "0", update_frequency: P1M, time_interpolation: False, extrapolation: clim} - ana_sample: {update_offset: PT900S, exact: True} + geosit_sample: {update_offset: PT900S, exact: True} + cdas_sample: {update_offset: PT3H, exact: False, time_interpolation: False} + Collections: GCC_ACET_seawater: @@ -271,8 +273,9 @@ Collections: template: /home/dao_ops/d5294_geosit_jan18/run/.../archive/ana/Y%y4/M%m2/d5294_geosit_jan18.bkg.eta.%y4%m2%d2_%h2%n2z.nc4 freq: "PT3H" CDAS.inc.eta: - template: ./inc.eta.%y4%m2%d2_%h2%n2z.nc4 + template: /discover/nobackup/projects/gmao/geos_cf_dev/cakelle2/develop/c90_dev/tmp/CRtest_mls_c90.inc.eta.%y4%m2%d2_%h2%n2z.nc4 freq: "PT6H" + ref_time: "2018-08-01T00:00" Exports: ACET_SEAWATER: @@ -2695,12 +2698,12 @@ Exports: GEOSIT_O3: collection: GCC_d5294_geosit_jan18 regrid: BILINEAR - sample: ana_sample + sample: geosit_sample variable: ozone fail_on_missing_file: false CDAS_NO2: collection: CDAS.inc.eta regrid: BILINEAR - sample: ana_sample + sample: cdas_sample variable: NO2 fail_on_missing_file: false diff --git a/run/GEOS/HEMCO_Config.rc b/run/GEOS/HEMCO_Config.rc index b317a7633..95ee20019 100644 --- a/run/GEOS/HEMCO_Config.rc +++ b/run/GEOS/HEMCO_Config.rc @@ -80,8 +80,9 @@ VerboseOnCores: root # Accepted values: root all --> GMI_PROD_LOSS : false --> UCX_PROD_LOSS : false --> OMOC_RATIO : false - --> GMD_SFC_CH4 : true + --> GMD_SFC_CH4 : false --> CMIP6_SFC_CH4 : false + --> GEOS_3HR_CH4 : true # OLSON and MODIS read via MAPL not HEMCO in GEOS --> OLSON_LANDMAP : false --> YUAN_MODIS_LAI : false @@ -1412,6 +1413,20 @@ VerboseOnCores: root # Accepted values: root all * surf_iodide $ROOT/OCEAN_O3_DRYDEP/v2020-02/Oi_prj_predicted_iodide_0.125x0.125_No_Skagerrak_Just_Ensemble.nc Ensemble_Monthly_mean 1970/1-12/1/0 C xy 1 * - 1 1 )))OCEAN_O3_DRYDEP + +#============================================================================== +# --- Imports for GEOS handled through HEMCO --- +#============================================================================== +# CH4 boundary conditions +(((GEOS_3HR_CH4 +* GEOS_CH4 /see/extdata CH4_total_dry 1979-2024/1-12/1-31/0 C xyz ppbv * - 1 1 +)))GEOS_3HR_CH4 + +# GEOS analysis fields +* GEOSIT_O3 /see/extdata ozone 1979-2099/1-12/1-31/0 C xyz ppmv * - 1 1 +* CDAS_NO2 /see/extdata NO2 1979-2099/1-12/1-31/0 C xyz v/v * - 1 1 +* CDAS_SO2 /see/extdata SO2 1979-2099/1-12/1-31/0 C xyz v/v * - 1 1 + ### END SECTION BASE EMISSIONS #################################################################################### diff --git a/run/GEOS/geoschem_analysis.yml b/run/GEOS/geoschem_analysis.yml index 200c85ea6..765ee1cf0 100644 --- a/run/GEOS/geoschem_analysis.yml +++ b/run/GEOS/geoschem_analysis.yml @@ -14,7 +14,7 @@ general: species: Spc001: SpeciesName: O3 - Active: false + Active: false AnalysisFreq: 6 AnalysisHour: 0 AnalysisMinute: 0 @@ -64,6 +64,7 @@ species: MinConc: 1.0e-32 HasSpec2: 0 ErrorMode: 1 + Verbose: 1 Spc003: SpeciesName: SO2 From 4bf5952564e2d7b7e1f72f86969e10efb928e7c1 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Fri, 22 Dec 2023 20:15:29 -0500 Subject: [PATCH 032/331] Added CDAS_SO2 to GEOSCHEMchem_ExtData.yaml --- run/GEOS/GEOSCHEMchem_ExtData.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/run/GEOS/GEOSCHEMchem_ExtData.yaml b/run/GEOS/GEOSCHEMchem_ExtData.yaml index dc327a12e..19623a7dd 100644 --- a/run/GEOS/GEOSCHEMchem_ExtData.yaml +++ b/run/GEOS/GEOSCHEMchem_ExtData.yaml @@ -2707,3 +2707,9 @@ Exports: sample: cdas_sample variable: NO2 fail_on_missing_file: false + CDAS_SO2: + collection: CDAS.inc.eta + regrid: BILINEAR + sample: cdas_sample + variable: SO2 + fail_on_missing_file: false From 7e6fcce466b764ebf4672e1e5c9f89473172452e Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 2 Jan 2024 17:19:53 -0500 Subject: [PATCH 033/331] Add "USE Timers_Mod" to GeosCore/rrtmg_rad_transfer_mod.F90 GeosCore/rrtmg_rad_transfer_mod.F90 - Bug fix: We added calls to Timer_Start and Timer_End, but did not add a corresponding "USE Timers_Mod" statement. Now fixed. Signed-off-by: Bob Yantosca --- GeosCore/rrtmg_rad_transfer_mod.F90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/GeosCore/rrtmg_rad_transfer_mod.F90 b/GeosCore/rrtmg_rad_transfer_mod.F90 index f6b5aad54..dc507d872 100644 --- a/GeosCore/rrtmg_rad_transfer_mod.F90 +++ b/GeosCore/rrtmg_rad_transfer_mod.F90 @@ -148,7 +148,7 @@ SUBROUTINE DO_RRTMG_RAD_TRANSFER( ThisDay, ThisMonth, iCld, & USE ERROR_MOD USE Input_Opt_Mod, ONLY : OptInput USE PhysConstants, ONLY : AIRMW, PI, AVO - USE PRESSURE_MOD, ONLY : GET_PCENTER, GET_PEDGE + USE PRESSURE_MOD, ONLY : GET_PCENTER, GET_PEDGE USE Species_Mod, ONLY : SpcConc USE State_Chm_Mod, ONLY : ChmState USE State_Chm_Mod, ONLY : Ind_ @@ -156,6 +156,7 @@ SUBROUTINE DO_RRTMG_RAD_TRANSFER( ThisDay, ThisMonth, iCld, & USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE TIME_MOD, ONLY : GET_DAY_OF_YEAR, GET_HOUR + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE TOMS_MOD, ONLY : GET_OVERHEAD_O3 USE UnitConv_Mod ! From fb670015fe8b01603ebf47cf9e65e889e2e88256 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 3 Jan 2024 13:32:30 -0500 Subject: [PATCH 034/331] Remove reference to State_Chm%Spc_Units in GCHP_Chunk_Init Interfaces/GCHP/gchp_chunk_mod.F90 - Now initialize State_Chm%Species(:)%Units and remove the obsolete State_Chm%Spc_Units. Signed-off-by: Bob Yantosca --- Interfaces/GCHP/gchp_chunk_mod.F90 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Interfaces/GCHP/gchp_chunk_mod.F90 b/Interfaces/GCHP/gchp_chunk_mod.F90 index 0952027de..8179675a0 100644 --- a/Interfaces/GCHP/gchp_chunk_mod.F90 +++ b/Interfaces/GCHP/gchp_chunk_mod.F90 @@ -507,10 +507,11 @@ SUBROUTINE GCHP_Chunk_Init( nymdB, nhmsB, nymdE, & ! are all still zero at this point since internal state values are not ! copied to State_Chm%Species%Conc until Run (post-initialization). # if defined( MODEL_GEOS ) - State_Chm%Spc_Units = KG_SPECIES_PER_KG_TOTAL_AIR + State_Chm%Species(:)%Units = KG_SPECIES_PER_KG_TOTAL_AIR #else - State_Chm%Spc_Units = MOLES_SPECIES_PER_MOLES_DRY_AIR + State_Chm%Species(:)%Units = MOLES_SPECIES_PER_MOLES_DRY_AIR #endif + State_Chm%Species(:)%Previous_Units = -1 ! Initialize photolysis, including reading files for optical properties IF ( Input_Opt%ITS_A_FULLCHEM_SIM .or. & From 01f2a97cafbd278cbadd4c7b1bc24b7cbc39fb1c Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Wed, 3 Jan 2024 13:27:23 -0500 Subject: [PATCH 035/331] Remove CH4 emissions scaling from code and apply in HEMCO_Config.rc instead To facilitate CH4 simulations with multiple tracers representing the different state vector elements within an analytical inversion, we now remove the emissions perturbation applied within global_ch4_mod.F90 (and carbon_mod.F90). Instead, emissions are perturbed directly in HEMCO_Config.rc via scale factors applied to the state vector element IDs read from a netCDF file. The perturbations are meant to be used on total CH4 emissions (i.e. using output from a HEMCO standalone simulation) to avoid having to apply the scale factor(s) for every emissions inventory and sector throughout HEMCO_Config.rc. For example: #============================================================================== # ---Total CH4 emissions (all sectors) from prior simulation --- #============================================================================== (((UseTotalPriorEmis 0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 0 CH4_Emis_Prior_0001 - - - - - - CH4_0001 2001 1 500 )))UseTotalPriorEmis #============================================================================== # --- Scale factors for analytical inversions --- #============================================================================== (((AnalyticalInversion # Add perturbations to individual state vector element (N) following the format # Start scale factor ID at 2000 to avoid conflicts with other SFs/masks #200N SCALE_ELEM000N ./Perturbations.txt - - - xy count 1 2001 SCALE_ELEM_0001 ./Perturbations.txt - - - xy count 1 )))AnalyticalInversion The Emis_PosteriorSF and OH_PosteriorSF options have also been updated here so they are also applied directly within HEMCO_Config.rc instead of within global_ch4_mod.F90/carbon_mod.F90. Emis_PosteriorSF applies the field EMIS_SF to the total CH4 emissions field and OH_PosteriorSF applies OH_SF to the GLOBAL_OH field. Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 7 + GeosCore/carbon_gases_mod.F90 | 135 ---- GeosCore/emissions_mod.F90 | 26 +- GeosCore/global_ch4_mod.F90 | 574 +----------------- GeosCore/hco_interface_gc_mod.F90 | 93 +-- GeosCore/input_mod.F90 | 74 --- Headers/state_chm_mod.F90 | 32 - .../HEMCO_Config.rc.CH4 | 93 ++- .../HEMCO_Config.rc.carbon | 97 +-- .../HEMCO_Config.rc.tagCH4 | 96 +-- .../geoschem_config.yml.CH4 | 5 - .../geoschem_config.yml.carbon | 5 - .../geoschem_config.yml.tagCH4 | 5 - .../HEMCO_Config.rc.carbon | 97 +-- 14 files changed, 282 insertions(+), 1057 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e53787b5..30570f48e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] +### Changed +- Removed emissions handling from `global_ch4_mod.F90` and `carbon_mod.F90` and instead apply scale factors to emissions directly in `HEMCO_Config.rc` + +### Removed +- Removed State_Chm%CH4_EMIS + ## [14.2.3] - 2023-12-01 ### Added - GEOS-Chem Classic rundir script `run/GCClassic/setupForRestarts.sh` diff --git a/GeosCore/carbon_gases_mod.F90 b/GeosCore/carbon_gases_mod.F90 index fdf4f4f45..a10bfdbc4 100644 --- a/GeosCore/carbon_gases_mod.F90 +++ b/GeosCore/carbon_gases_mod.F90 @@ -32,10 +32,6 @@ MODULE Carbon_Gases_Mod PUBLIC :: Init_Carbon_Gases PUBLIC :: Cleanup_Carbon_Gases ! -! !PUBLIC DATA MEMBERS: -! - REAL(fp), ALLOCATABLE, PUBLIC :: CH4_EMIS_J(:,:,:) ! [kg/m2/s] -! ! !REVISION HISTORY: ! 04 Apr 2022 - M.S. Long - Initial version, based on work by B. Bukosa ! See https://github.com/geoschem/geos-chem for complete history @@ -116,13 +112,6 @@ SUBROUTINE Emiss_Carbon_Gases( Input_Opt, State_Chm, State_Diag, & ! !OUTPUT PARAMETERS: ! INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REMARKS: -! WARNING: Soil absorption has to be the 15th field in CH4_EMIS -! Also: the ND58 diagnostics have now been removed. We still need to -! read the HEMCO manual diagnostics into CH4_EMIS for the analytical -! inversion. Therefore, we will keep EmissCh4 for the time-being -! but only remove the bpch diagnostic. !EOP !------------------------------------------------------------------------------ !BOC @@ -180,102 +169,6 @@ SUBROUTINE Emiss_Carbon_Gases( Input_Opt, State_Chm, State_Diag, & ! Emission timestep dtSrce = HcoState%TS_EMIS - !======================================================================== - ! CH4 emissions - ! - ! --> All emission calculations are now done through HEMCO - ! HEMCO stores emissions of all species internally in the HEMCO - ! state object. Here, we pass these emissions into module array - ! CH4_EMIS in units kg/m2/s. These values are then either added to - ! the species array (full mixing scheme) or used later on in - ! vdiff_mod.F90 if the non-local PBL mixing scheme is used. - ! - ! The CH4_EMIS array is mostly used for backwards compatibility - ! (especially the diagnostics). It is also used to ensure that - ! in a multi-species simulation, species 1 (total CH4) is properly - ! defined. - ! (ckeller, 9/12/2013) - !======================================================================== - IF ( id_CH4 > 0 ) THEN - - ! Initialize - CH4_EMIS_J = 0.0_fp - CH4scale = 1.0_hp - CH4diag(1) = 'CH4' - CH4diag(2) = 'CH4_OIL' - CH4diag(3) = 'CH4_GAS' - CH4diag(4) = 'CH4_COAL' - CH4diag(5) = 'CH4_LIVESTOCK' - CH4diag(6) = 'CH4_LANDFILLS' - CH4diag(7) = 'CH4_WASTEWATER' - CH4diag(8) = 'CH4_RICE' - CH4diag(9) = 'CH4_ANTHROTHER' - CH4diag(10) = 'CH4_BIOMASS' - CH4diag(11) = 'CH4_WETLAND' - CH4diag(12) = 'CH4_SEEPS' - CH4diag(13) = 'CH4_LAKES' - CH4diag(14) = 'CH4_TERMITES' - CH4diag(15) = 'CH4_SOILABSORB' ! CH4 soilabsorb values are negative! - CH4diag(16) = 'CH4_RESERVOIRS' - CH4scale(15) = -1.0_hp ! Need to convert to positive - - ! Loop over manual CH4 diagnostics - DO N = 2, N_CH4_DIAGS - - ! Get a pointer to the emissions - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, CH4diag(N), & - .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors - IF ( RC /= HCO_SUCCESS ) THEN - errMsg = 'Cannot get pointer to HEMCO field ' // TRIM(CH4diag(N)) - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - IF ( .not. ASSOCIATED( Ptr2D ) ) THEN - errMsg = 'Cannot get pointer to HEMCO field ' // TRIM(CH4diag(N)) - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - - ! Store emissions in CH4_EMIS_J [kg/m2/s] - ! CH4scale is either -1 (for soil absorption) or 1 (everything else) - CH4_EMIS_J(:,:,N) = Ptr2D * CH4scale(N) - - ! Free pointer for next iteration - Ptr2D => NULL() - ENDDO - - !--------------------------------------------------------------------- - ! Total emission: sum of all emissions - (2*soil absorption) - ! We have to substract soil absorption twice because it is added - ! to other emissions in the SUM function. (ccc, 7/23/09) - !--------------------------------------------------------------------- - CH4_EMIS_J(:,:,1) = SUM( CH4_EMIS_J, 3 ) & - - ( 2.0_fp * CH4_EMIS_J(:,:,15) ) - - IF ( Input_Opt%Verbose ) THEN - WRITE(*,*) 'CH4_EMIS (kg/m2/s):' - WRITE(*,*) 'Total : ', SUM( CH4_EMIS_J(:,:,1 ) ) - WRITE(*,*) 'Oil : ', SUM( CH4_EMIS_J(:,:,2 ) ) - WRITE(*,*) 'Gas : ', SUM( CH4_EMIS_J(:,:,3 ) ) - WRITE(*,*) 'Coal : ', SUM( CH4_EMIS_J(:,:,4 ) ) - WRITE(*,*) 'Livestock : ', SUM( CH4_EMIS_J(:,:,5 ) ) - WRITE(*,*) 'Landfills : ', SUM( CH4_EMIS_J(:,:,6 ) ) - WRITE(*,*) 'Wastewater : ', SUM( CH4_EMIS_J(:,:,7 ) ) - WRITE(*,*) 'Rice : ', SUM( CH4_EMIS_J(:,:,8 ) ) - WRITE(*,*) 'Other anth : ', SUM( CH4_EMIS_J(:,:,9 ) ) - WRITE(*,*) 'Biomass burn : ', SUM( CH4_EMIS_J(:,:,10) ) - WRITE(*,*) 'Wetlands : ', SUM( CH4_EMIS_J(:,:,11) ) - WRITE(*,*) 'Seeps : ', SUM( CH4_EMIS_J(:,:,12) ) - WRITE(*,*) 'Lakes : ', SUM( CH4_EMIS_J(:,:,13) ) - WRITE(*,*) 'Termites : ', SUM( CH4_EMIS_J(:,:,14) ) - WRITE(*,*) 'Soil absorb : ', SUM( CH4_EMIS_J(:,:,15) ) - WRITE(*,*) 'Reservoirs : ', SUM( CH4_EMIS_J(:,:,16) ) - ENDIF - - ENDIF - !======================================================================== ! CO2 production from CO oxidation !======================================================================== @@ -1398,27 +1291,6 @@ SUBROUTINE Init_Carbon_Gases( Input_Opt, State_Chm, State_Diag, & IF ( RC /= GC_SUCCESS ) RETURN sumOfCosSza = 0.0_fp - !======================================================================== - ! Initialize variables for CH4 chemistry - !======================================================================== - IF ( id_CH4 > 0 ) THEN - ALLOCATE( CH4_EMIS_J( State_Grid%NX, State_Grid%NY, N_CH4_DIAGS ), & - STAT=RC ) - CALL GC_CheckVar( 'carbon_gases_mod.F90:CH4_EMIS', 0, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - CH4_EMIS_J = 0.0_fp - ENDIF - - !======================================================================== - ! Initialize variables for CO2 chemistry - !======================================================================== - ! none yet - - !======================================================================== - ! Initialize variables for OCS chemistry - !======================================================================== - ! none yet - END SUBROUTINE Init_Carbon_Gases !EOC !------------------------------------------------------------------------------ @@ -1454,13 +1326,6 @@ SUBROUTINE Cleanup_Carbon_Gases( RC ) ! Initialize RC = GC_SUCCESS - ! Deallocate - IF ( ALLOCATED( CH4_EMIS_J ) ) THEN - DEALLOCATE( CH4_EMIS_J, STAT=RC ) - CALL GC_CheckVar( 'carbon_gases_mod.F90:CH4_EMIS', 2, RC ) - RETURN - ENDIF - IF ( ALLOCATED( sumOfCosSza ) ) THEN DEALLOCATE( sumOfCosSza, STAT=RC ) CALL GC_CheckVar( 'carbon_gases_mod.F90:sumOfCosSza', 2, RC ) diff --git a/GeosCore/emissions_mod.F90 b/GeosCore/emissions_mod.F90 index ce592fbda..c8d2b5a30 100644 --- a/GeosCore/emissions_mod.F90 +++ b/GeosCore/emissions_mod.F90 @@ -127,7 +127,6 @@ SUBROUTINE Emissions_Run( Input_Opt, State_Chm, State_Diag, & USE Carbon_Gases_Mod, ONLY : Emiss_Carbon_Gases USE CO2_MOD, ONLY : EmissCO2 USE ErrCode_Mod - USE GLOBAL_CH4_MOD, ONLY : EmissCH4 USE HCO_Interface_GC_Mod, ONLY : HCOI_GC_Run USE Input_Opt_Mod, ONLY : OptInput USE Mercury_Mod, ONLY : EmissMercury @@ -247,28 +246,6 @@ SUBROUTINE Emissions_Run( Input_Opt, State_Chm, State_Diag, & ENDIF ENDIF - ! For CH4 simulation - ! - ! This will get the individual CH4 emission terms (gas, coal, wetlands, - ! ...) and write them into the individual emissions arrays defined in - ! global_ch4_mod (CH4_EMIS). Emissions are all done in mixing_mod, the - ! call to EMISSCH4 is for backwards consistency. This is especially - ! needed to do the analytical inversions. - ! - ! To enable CH4 emissions in a full-chemistry simulation, add entries - ! in HEMCO_Config.rc as is done for other species. - ! (mps, 2/12/21) - IF ( Input_Opt%ITS_A_CH4_SIM .or. Input_Opt%ITS_A_TAGCH4_SIM ) THEN - CALL EmissCh4( Input_Opt, State_Chm, State_Grid, State_Met, RC ) - - ! Trap potential errors - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered in "EmissCH4"!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - ENDIF - ! For transport tracer simulation IF ( Input_Opt%ITS_A_TRACER_SIM ) THEN CALL Tracer_Source_Phase( Input_Opt, State_Chm, State_Grid, & @@ -284,8 +261,7 @@ SUBROUTINE Emissions_Run( Input_Opt, State_Chm, State_Diag, & ! Carbon simulation (e.g. CO2-CO-CH4-OCS via KPP) ! - ! This will get the individual CH4 emission terms in the same way - ! as done for the CH4 simulation above. + ! Computes CO2 production from CO oxidation IF ( Input_Opt%ITS_A_CARBON_SIM ) THEN CALL Emiss_Carbon_Gases( Input_Opt, State_Chm, State_Diag, & State_Grid, State_Met, RC ) diff --git a/GeosCore/global_ch4_mod.F90 b/GeosCore/global_ch4_mod.F90 index 5a42288fb..e6612e636 100644 --- a/GeosCore/global_ch4_mod.F90 +++ b/GeosCore/global_ch4_mod.F90 @@ -23,7 +23,6 @@ MODULE GLOBAL_CH4_MOD ! ! !PUBLIC MEMBER FUNCTIONS: ! - PUBLIC :: EMISSCH4 PUBLIC :: CHEMCH4 PUBLIC :: INIT_GLOBAL_CH4 ! @@ -61,519 +60,6 @@ MODULE GLOBAL_CH4_MOD !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: emissch4 -! -! !DESCRIPTION: Subroutine EMISSCH4 places emissions of CH4 [kg] into the -! chemical species array. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE EMISSCH4( Input_Opt, State_Chm, State_Grid, State_Met, RC ) -! -! !USES: -! - USE HCO_Utilities_GC_Mod, ONLY : HCO_GC_EvalFld - USE HCO_Utilities_GC_Mod, ONLY : HCO_GC_GetDiagn - USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput - USE State_Chm_Mod, ONLY : ChmState - USE State_Met_Mod, ONLY : MetState - USE State_Grid_Mod, ONLY : GrdState -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry State object - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology State object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REMARKS: -! WARNING: Soil absorption has to be the 15th field in CH4_EMIS -! Also: the ND58 diagnostics have now been removed. We still need to -! read the HEMCO manual diagnostics into CH4_EMIS for the analytical -! inversion. Therefore, we will keep EmissCh4 for the time-being -! but only remove the bpch diagnostic. -! -! !REVISION HISTORY: -! (1 ) Created by Bryan Duncan (1/99). Adapted for CH4 chemistry by -! James Wang (7/00). Inserted into module "global_ch4_mod.f" -! by Bob Yantosca. (bmy, 1/16/01) -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - INTEGER :: I, J, N - - ! Strings - CHARACTER(LEN= 63) :: DgnName - CHARACTER(LEN=255) :: ErrMsg - CHARACTER(LEN=255) :: ThisLoc - - ! Logicals - LOGICAL, SAVE :: FIRST = .TRUE. - - ! Arrays of state vector elements for applying emissions perturbations - REAL(fp) :: STATE_VECTOR(State_Grid%NX,State_Grid%NY) - - ! Array of scale factors for emissions (from HEMCO) - REAL(fp) :: EMIS_SF(State_Grid%NX,State_Grid%NY) - - ! Pointers - REAL(f4), POINTER :: Ptr2D(:,:) - - !================================================================= - ! EMISSCH4 begins here! - !================================================================= - - ! Nullify pointers - Ptr2D => NULL() - - ! Assume success - RC = GC_SUCCESS - ErrMsg = '' - ThisLoc = ' -> at EMISSCH4 (in GeosCore/global_ch4_mod.F90)' - - IF ( Input_Opt%Verbose ) THEN - print*,'BEGIN SUBROUTINE: EMISSCH4' - ENDIF - - ! ================================================================= - ! Get fields for CH4 analytical inversions if needed - ! ================================================================= - IF ( Input_Opt%DoAnalyticalInv ) THEN - - ! Evaluate the state vector field from HEMCO - CALL HCO_GC_EvalFld( Input_Opt, State_Grid, 'CH4_STATE_VECTOR', & - STATE_VECTOR, RC) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'CH4_STATE_VECTOR not found in HEMCO data list!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - - ENDIF - - IF ( Input_Opt%UseEmisSF ) THEN - - ! Evaluate CH4 emissions scale factors from HEMCO - CALL HCO_GC_EvalFld( Input_Opt, State_Grid, 'EMIS_SF', EMIS_SF, RC) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'EMIS_SF not found in HEMCO data list!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - - ENDIF - - ! ================================================================= - ! --> All emission calculations are now done through HEMCO - ! HEMCO stores emissions of all species internally in the HEMCO - ! state object. Here, we pass these emissions into module array - ! CH4_EMIS in units kg/m2/s. These values are then either added to - ! the species array (full mixing scheme) or used later on in - ! vdiff_mod.F90 if the non-local PBL mixing scheme is used. - ! - ! The CH4_EMIS array is mostly used for backwards compatibility - ! (especially the diagnostics). It is also used to ensure that - ! in a multi-species simulation, species 1 (total CH4) is properly - ! defined. - ! - ! (ckeller, 9/12/2013) - ! ================================================================= - State_Chm%CH4_EMIS(:,:,:) = 0e+0_fp - - !------------------- - ! Oil - !------------------- - DgnName = 'CH4_OIL' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,2) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Gas - !------------------- - DgnName = 'CH4_GAS' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,3) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Coal - !------------------- - DgnName = 'CH4_COAL' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,4) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Livestock - !------------------- - DgnName = 'CH4_LIVESTOCK' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,5) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Landfills - !------------------- - DgnName = 'CH4_LANDFILLS' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,6) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Wastewater - !------------------- - DgnName = 'CH4_WASTEWATER' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,7) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Rice - !------------------- - DgnName = 'CH4_RICE' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,8) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Other anthropogenic - !------------------- - DgnName = 'CH4_ANTHROTHER' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc = ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,9) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Biomass burning - !------------------- - DgnName = 'CH4_BIOMASS' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,10) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Wetland - !------------------- - DgnName = 'CH4_WETLAND' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,11) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Global seeps - !------------------- - DgnName = 'CH4_SEEPS' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,12) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Lakes - !------------------- - DgnName = 'CH4_LAKES' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,13) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Termites - !------------------- - DgnName = 'CH4_TERMITES' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,14) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - !------------------- - ! Soil absorption (those are negative!) - !------------------- - DgnName = 'CH4_SOILABSORB' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,15) = Ptr2D(:,:) * -1.0_fp - ENDIF - Ptr2D => NULL() - - !------------------- - ! Reservoirs - !------------------- - DgnName = 'CH4_RESERVOIRS' - CALL HCO_GC_GetDiagn( Input_Opt, State_Grid, DgnName, .FALSE., RC, Ptr2D=Ptr2D ) - - ! Trap potential errors and assign HEMCO pointer to array - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Cannot get pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ELSEIF ( .NOT. ASSOCIATED(Ptr2D) ) THEN - ErrMsg = 'Unassociated pointer to HEMCO field ' // TRIM(DgnName) - CALL GC_Warning( ErrMsg, RC, ThisLoc=ThisLoc ) - ELSE - State_Chm%CH4_EMIS(:,:,16) = Ptr2D(:,:) - ENDIF - Ptr2D => NULL() - - ! ================================================================= - ! Total emission: sum of all emissions - (2*soil absorption) - ! We have to substract soil absorption twice because it is added - ! to other emissions in the SUM function. (ccc, 7/23/09) - ! ================================================================= - State_Chm%CH4_EMIS(:,:,1) = SUM(State_Chm%CH4_EMIS, 3) - (2 * State_Chm%CH4_EMIS(:,:,15)) - - IF ( Input_Opt%Verbose ) THEN - WRITE(*,*) 'CH4_EMIS (kg/m2/s):' - WRITE(*,*) 'Total : ', SUM(State_Chm%CH4_EMIS(:,:,1)) - WRITE(*,*) 'Oil : ', SUM(State_Chm%CH4_EMIS(:,:,2)) - WRITE(*,*) 'Gas : ', SUM(State_Chm%CH4_EMIS(:,:,3)) - WRITE(*,*) 'Coal : ', SUM(State_Chm%CH4_EMIS(:,:,4)) - WRITE(*,*) 'Livestock : ', SUM(State_Chm%CH4_EMIS(:,:,5)) - WRITE(*,*) 'Landfills : ', SUM(State_Chm%CH4_EMIS(:,:,6)) - WRITE(*,*) 'Wastewater : ', SUM(State_Chm%CH4_EMIS(:,:,7)) - WRITE(*,*) 'Rice : ', SUM(State_Chm%CH4_EMIS(:,:,8)) - WRITE(*,*) 'Other anth : ', SUM(State_Chm%CH4_EMIS(:,:,9)) - WRITE(*,*) 'Biomass burn : ', SUM(State_Chm%CH4_EMIS(:,:,10)) - WRITE(*,*) 'Wetlands : ', SUM(State_Chm%CH4_EMIS(:,:,11)) - WRITE(*,*) 'Seeps : ', SUM(State_Chm%CH4_EMIS(:,:,12)) - WRITE(*,*) 'Lakes : ', SUM(State_Chm%CH4_EMIS(:,:,13)) - WRITE(*,*) 'Termites : ', SUM(State_Chm%CH4_EMIS(:,:,14)) - WRITE(*,*) 'Soil absorb : ', SUM(State_Chm%CH4_EMIS(:,:,15)) - WRITE(*,*) 'Reservoirs : ', SUM(State_Chm%CH4_EMIS(:,:,16)) - ENDIF - - ! ================================================================= - ! Do scaling for analytical inversion - ! ================================================================= - IF ( Input_Opt%DoAnalyticalInv .or. & - Input_Opt%UseEmisSF .or. & - Input_Opt%UseOHSF ) THEN - - ! Don't optimize for soil absorption so remove from the total - ! emissions array - State_Chm%CH4_EMIS(:,:,1) = State_Chm%CH4_EMIS(:,:,1) + State_Chm%CH4_EMIS(:,:,15) - - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J) - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - - !------------------------------------------------------------ - ! Apply emission scale factors from a previous inversion - !------------------------------------------------------------ - IF ( Input_Opt%UseEmisSF ) THEN - ! Scale total emissions - State_Chm%CH4_EMIS(I,J,1) = State_Chm%CH4_EMIS(I,J,1) * EMIS_SF(I,J) - ENDIF - - !------------------------------------------------------------ - ! Perturb emissions for analytical inversion - !------------------------------------------------------------ - IF ( Input_Opt%DoAnalyticalInv ) THEN - - ! Only apply emission perturbation to current state vector - ! element number - IF ( Input_Opt%StateVectorElement .GT. 0 ) THEN - - ! Convert STATE_VECTOR value to nearest integer for comparison - IF ( NINT(STATE_VECTOR(I,J)) == & - Input_Opt%StateVectorElement) THEN - State_Chm%CH4_EMIS(I,J,1) = State_Chm%CH4_EMIS(I,J,1) & - * Input_Opt%EmisPerturbFactor - - IF ( Input_Opt%Verbose ) THEN - Print*, 'Analytical Inversion: ', & - 'Scaled state vector element ', & - Input_Opt%StateVectorElement, ' by ', & - Input_Opt%EmisPerturbFactor - ENDIF - ENDIF - ENDIF - ENDIF - - ENDDO - ENDDO - !$OMP END PARALLEL DO - - ! Now that we've done the emission factor scaling, add soil absorption - ! back to the total emissions array - State_Chm%CH4_EMIS(:,:,1) = State_Chm%CH4_EMIS(:,:,1) - State_Chm%CH4_EMIS(:,:, 15) - - ENDIF - - IF ( Input_Opt%Verbose ) THEN - print*,'END SUBROUTINE: EMISSCH4' - ENDIF - - END SUBROUTINE EMISSCH4 -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! ! !IROUTINE: chemch4 ! ! !DESCRIPTION: Subroutine CHEMCH4 computes the chemical loss of CH4 @@ -848,8 +334,8 @@ SUBROUTINE CH4_DECAY( Input_Opt, State_Chm, State_Diag, & ! Pointers TYPE(SpcConc), POINTER :: Spc(:) - ! Array of scale factors for OH (from HEMCO) - REAL(fp) :: OH_SF(State_Grid%NX,State_Grid%NY) +! ! Array of scale factors for OH (from HEMCO) +! REAL(fp) :: OH_SF(State_Grid%NX,State_Grid%NY) !================================================================= ! CH4_DECAY begins here! @@ -864,20 +350,20 @@ SUBROUTINE CH4_DECAY( Input_Opt, State_Chm, State_Diag, & ! Point to the chemical species array Spc => State_Chm%Species - ! ================================================================= - ! Get fields for CH4 analytical inversions if needed - ! ================================================================= - IF ( Input_Opt%UseOHSF ) THEN - - ! Evaluate OH scale factors from HEMCO - CALL HCO_GC_EvalFld( Input_Opt, State_Grid, 'OH_SF', OH_SF, RC) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'OH_SF not found in HEMCO data list!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - - ENDIF +! ! ================================================================= +! ! Get fields for CH4 analytical inversions if needed +! ! ================================================================= +! IF ( Input_Opt%UseOHSF ) THEN +! +! ! Evaluate OH scale factors from HEMCO +! CALL HCO_GC_EvalFld( Input_Opt, State_Grid, 'OH_SF', OH_SF, RC) +! IF ( RC /= GC_SUCCESS ) THEN +! ErrMsg = 'OH_SF not found in HEMCO data list!' +! CALL GC_Error( ErrMsg, RC, ThisLoc ) +! RETURN +! ENDIF +! +! ENDIF !================================================================= ! %%%%% HISTORY (aka netCDF diagnostics) %%%%% @@ -937,14 +423,14 @@ SUBROUTINE CH4_DECAY( Input_Opt, State_Chm, State_Diag, & ! BOH from HEMCO in units of kg/m3, convert to molec/cm3 C_OH = State_Chm%BOH(I,J,L) * XNUMOL_OH / CM3PERM3 - ! Apply OH scale factors from a previous inversion - IF ( Input_Opt%UseOHSF ) THEN - C_OH = C_OH * OH_SF(I,J) - IF ( Input_Opt%Verbose ) THEN - !This will print over every grid box; comment out for now - !Print*, 'Applying scale factor to OH: ', OH_SF(I,J) - ENDIF - ENDIF +! ! Apply OH scale factors from a previous inversion +! IF ( Input_Opt%UseOHSF ) THEN +! C_OH = C_OH * OH_SF(I,J) +! IF ( Input_Opt%Verbose ) THEN +! !This will print over every grid box; comment out for now +! !Print*, 'Applying scale factor to OH: ', OH_SF(I,J) +! ENDIF +! ENDIF ! Cl in [molec/cm3] ! BCl from HEMCO in units of mol/mol, convert to molec/cm3 @@ -1213,16 +699,6 @@ SUBROUTINE CH4_Metrics( Input_Opt, State_Chm, State_Diag, & Ktrop = 1.64e-12_f8 * EXP( -1520.0_f8 / State_Met%T(I,J,L) ) LossOHbyMCF = LossOHbyMCF + ( Ktrop * OHconc_MCM3 * airMass_m ) - !--------------------------------------------------------------- - ! HISTORY (aka netCDF diagnostics) - ! - ! Keep track of CH4 emisisons [kg/s] for computing - ! the various lifetime metrics in post-processing - !--------------------------------------------------------------- - IF ( L == 1 .and. State_Diag%Archive_CH4emission ) THEN - State_Diag%CH4emission(I,J) = State_Chm%CH4_EMIS(I,J,id_CH4) & - * State_Grid%Area_M2(I,J) - ENDIF ENDIF ENDDO @@ -1447,7 +923,7 @@ END SUBROUTINE CH4_STRAT ! !IROUTINE: ch4_distrib ! ! !DESCRIPTION: Subroutine CH4\_DISTRIB allocates the chemistry sink to -! different emission species. (ccc, 10/2/09) +! different CH4 species. (ccc, 10/2/09) !\\ !\\ ! !INTERFACE: diff --git a/GeosCore/hco_interface_gc_mod.F90 b/GeosCore/hco_interface_gc_mod.F90 index ef6a63feb..b3ad50f84 100644 --- a/GeosCore/hco_interface_gc_mod.F90 +++ b/GeosCore/hco_interface_gc_mod.F90 @@ -4163,85 +4163,6 @@ SUBROUTINE CheckSettings( HcoConfig, Input_Opt, State_Met, State_Chm, RC ) ENDIF - !----------------------------------------------------------------------- - ! Input data for CH4 simulations only - ! - ! If we have turned on CH4 options in geoschem_config.yml, then we - ! also need to toggle switches so that HEMCO reads the appropriate data. - !----------------------------------------------------------------------- - IF ( Input_Opt%ITS_A_CH4_SIM .or. Input_Opt%ITS_A_TAGCH4_SIM) THEN - - IF ( Input_Opt%DoAnalyticalInv ) THEN - CALL GetExtOpt( HcoConfig, -999, 'AnalyticalInv', & - OptValBool=LTMP, FOUND=FOUND, RC=HMRC ) - - IF ( HMRC /= HCO_SUCCESS ) THEN - RC = HMRC - ErrMsg = 'Error encountered in "GetExtOpt( AnalyticalInv )"!' - CALL GC_Error( ErrMsg, RC, ThisLoc, Instr ) - RETURN - ENDIF - IF ( .not. FOUND ) THEN - ErrMsg = 'AnalyticalInv not found in HEMCO_Config.rc file!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - IF ( .not. LTMP ) THEN - ErrMsg = 'AnalyticalInv is set to false in HEMCO_Config.rc ' // & - 'but should be set to true for this simulation.' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - ENDIF - - IF ( Input_Opt%UseEmisSF ) THEN - CALL GetExtOpt( HcoConfig, -999, 'Emis_ScaleFactor', & - OptValBool=LTMP, FOUND=FOUND, RC=HMRC ) - - IF ( HMRC /= HCO_SUCCESS ) THEN - RC = HMRC - ErrMsg = 'Error encountered in "GetExtOpt( Emis_ScaleFactor )"!' - CALL GC_Error( ErrMsg, RC, ThisLoc, Instr ) - RETURN - ENDIF - IF ( .not. FOUND ) THEN - ErrMsg = 'Emis_ScaleFactor not found in HEMCO_Config.rc file!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - IF ( .not. LTMP ) THEN - ErrMsg = 'Emis_ScaleFactor is set to false in HEMCO_Config.rc '// & - 'but should be set to true for this simulation.' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - ENDIF - - IF ( Input_Opt%UseOHSF ) THEN - CALL GetExtOpt( HcoConfig, -999, 'OH_ScaleFactor', & - OptValBool=LTMP, FOUND=FOUND, RC=HMRC ) - - IF ( HMRC /= HCO_SUCCESS ) THEN - RC = HMRC - ErrMsg = 'Error encountered in "GetExtOpt( OH_ScaleFactor )"!' - CALL GC_Error( ErrMsg, RC, ThisLoc, Instr ) - RETURN - ENDIF - IF ( .not. FOUND ) THEN - ErrMsg = 'OH_ScaleFactor not found in HEMCO_Config.rc file!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - IF ( .not. LTMP ) THEN - ErrMsg = 'OH_ScaleFactor is set to false in HEMCO_Config.rc ' // & - 'but should be set to true for this simulation.' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - ENDIF - - ENDIF - !----------------------------------------------------------------------- ! RRTMG input data ! @@ -4781,19 +4702,7 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & ! Add total emissions in the PBL to the EFLX array ! which tracks emission fluxes. Units are [kg/m2/s]. !------------------------------------------------------------------ - IF ( Input_Opt%ITS_A_CH4_SIM ) THEN - - eflx(I,J,NA) = State_Chm%CH4_EMIS(I,J,1) - - ELSE IF ( Input_Opt%ITS_A_TAGCH4_SIM ) THEN - - ! CH4 emissions become stored in state_chm_mod.F90. - ! We use CH4_EMIS here instead of the HEMCO internal emissions - ! only to make sure that total CH4 emissions are properly defined - ! in a multi-tracer CH4 simulation. - eflx(I,J,NA) = State_Chm%CH4_EMIS(I,J,NA) - - ELSE IF ( EmisSpec ) THEN ! Are there emissions for these species? + IF ( EmisSpec ) THEN ! Are there emissions for these species? ! Compute emissions for all other simulation tmpFlx = 0.0_fp diff --git a/GeosCore/input_mod.F90 b/GeosCore/input_mod.F90 index 67613a24f..a02456f27 100644 --- a/GeosCore/input_mod.F90 +++ b/GeosCore/input_mod.F90 @@ -4888,46 +4888,6 @@ SUBROUTINE Config_CH4( Config, Input_Opt, RC ) ENDIF Input_Opt%TCCON_CH4_OBS = v_bool - !------------------------------------------------------------------------ - ! Do an analytical inversion? - !------------------------------------------------------------------------ - key = "CH4_simulation_options%analytical_inversion%activate" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, TRIM( key ), v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%DoAnalyticalInv = v_bool - - !------------------------------------------------------------------------ - ! Current state vector element number - !------------------------------------------------------------------------ - key = & - "CH4_simulation_options%analytical_inversion%state_vector_element_number" - v_int = MISSING_INT - CALL QFYAML_Add_Get( Config, TRIM( key ), v_int, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%StateVectorElement = v_int - - !------------------------------------------------------------------------ - ! Emission perturbation factor - !------------------------------------------------------------------------ - key = "CH4_simulation_options%analytical_inversion%emission_perturbation_factor" - v_str = MISSING_STR - CALL QFYAML_Add_Get( Config, TRIM( key ), v_str, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%EmisPerturbFactor = Cast_and_RoundOff( v_str, places=4 ) - !------------------------------------------------------------------------ ! Perturb CH4 boundary conditions? !------------------------------------------------------------------------ @@ -4957,33 +4917,6 @@ SUBROUTINE Config_CH4( Config, Input_Opt, RC ) Input_Opt%CH4BoundaryConditionIncreaseEast = Cast_and_RoundOff( a_str(3), places=4 ) Input_Opt%CH4BoundaryConditionIncreaseWest = Cast_and_RoundOff( a_str(4), places=4 ) - !------------------------------------------------------------------------ - ! Use emission scale factors from a previous inversion? - !------------------------------------------------------------------------ - key = & - "CH4_simulation_options%analytical_inversion%use_emission_scale_factor" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, TRIM( key ), v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%UseEmisSF = v_bool - - !------------------------------------------------------------------------ - ! Use OH scale factors from a previous inversion? - !------------------------------------------------------------------------ - key = "CH4_simulation_options%analytical_inversion%use_OH_scale_factors" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, TRIM( key ), v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%UseOHSF = v_bool - !======================================================================== ! Print to screen !======================================================================== @@ -4993,24 +4926,17 @@ SUBROUTINE Config_CH4( Config, Input_Opt, RC ) WRITE(6,100) 'Use AIRS obs operator? : ', Input_Opt%AIRS_CH4_OBS WRITE(6,100) 'Use GOSAT obs operator? : ', Input_Opt%GOSAT_CH4_OBS WRITE(6,100) 'Use TCCON obs operator? : ', Input_Opt%TCCON_CH4_OBS - WRITE(6,100) 'Do analytical inversion? : ', Input_Opt%DoAnalyticalInv - WRITE(6,120) 'Current state vector elem: ', Input_Opt%StateVectorElement - WRITE(6,110) 'Emiss perturbation factor: ', Input_Opt%EmisPerturbFactor WRITE(6,100) 'Perturb CH4 BCs? : ', Input_Opt%DoPerturbCH4BoundaryConditions WRITE(6,130) 'CH4 BC ppb increase NSEW : ', Input_Opt%CH4BoundaryConditionIncreaseNorth,& Input_Opt%CH4BoundaryConditionIncreaseSouth,& Input_Opt%CH4BoundaryConditionIncreaseEast,& Input_Opt%CH4BoundaryConditionIncreaseWest - WRITE(6,100) 'Use emis scale factors? : ', Input_Opt%UseEmisSF - WRITE(6,100) 'Use OH scale factors? : ', Input_Opt%UseOHSF ENDIF ! FORMAT statements 90 FORMAT( /, A ) 95 FORMAT( A ) 100 FORMAT( A, L5 ) -110 FORMAT( A, f6.2 ) -120 FORMAT( A, I5 ) 130 FORMAT( A, F10.4, 1X, F10.4, 1X, F10.4, 1X, F10.4) END SUBROUTINE Config_CH4 diff --git a/Headers/state_chm_mod.F90 b/Headers/state_chm_mod.F90 index df1a117a9..6a8029e7e 100644 --- a/Headers/state_chm_mod.F90 +++ b/Headers/state_chm_mod.F90 @@ -329,8 +329,6 @@ MODULE State_Chm_Mod !----------------------------------------------------------------------- REAL(fp), POINTER :: BOH (:,:,: ) ! OH values [molec/cm3] REAL(fp), POINTER :: BCl (:,:,: ) ! Cl values [v/v] - REAL(fp), POINTER :: CH4_EMIS (:,:,: ) ! CH4 emissions [kg/m2/s]. - ! third dim is cat, total 15 LOGICAL :: IsCH4BCPerturbed ! Is CH4 BC perturbed? #ifdef APM @@ -537,7 +535,6 @@ SUBROUTINE Zero_State_Chm( State_Chm, RC ) State_Chm%TOMS2 => NULL() State_Chm%BOH => NULL() State_Chm%BCl => NULL() - State_Chm%CH4_EMIS => NULL() State_Chm%SFC_CH4 => NULL() State_Chm%UCX_REGRID => NULL() @@ -2243,23 +2240,6 @@ SUBROUTINE Init_State_Chm( Input_Opt, State_Chm, State_Grid, RC ) ! Initialize State_Chm quantities pertinent to CH4 simulations !======================================================================= IF ( Input_Opt%ITS_A_CH4_SIM .or. Input_Opt%ITS_A_TAGCH4_SIM ) THEN - ! CH4_EMIS - chmId = 'CH4_EMIS' - CALL Init_and_Register( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - chmId = chmId, & - Ptr2Data = State_Chm%CH4_EMIS, & - nSlots = 16, & - RC = RC ) - - IF ( RC /= GC_SUCCESS ) THEN - errMsg = TRIM( errMsg_ir ) // TRIM( chmId ) - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - ! Global OH and Cl from HEMCO input chmId = 'BOH' CALL Init_and_Register( & @@ -3598,13 +3578,6 @@ SUBROUTINE Cleanup_State_Chm( State_Chm, RC ) State_Chm%BCl => NULL() ENDIF - IF ( ASSOCIATED( State_Chm%CH4_EMIS ) ) THEN - DEALLOCATE( State_Chm%CH4_EMIS, STAT=RC ) - CALL GC_CheckVar( 'State_Chm%CH4_EMIS', 2, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - State_Chm%CH4_EMIS => NULL() - ENDIF - #ifdef LUO_WETDEP IF ( ASSOCIATED( State_Chm%QQ3D ) ) THEN DEALLOCATE( State_Chm%QQ3D, STAT=RC ) @@ -4716,11 +4689,6 @@ SUBROUTINE Get_Metadata_State_Chm( am_I_Root, metadataID, Found, & IF ( isUnits ) Units = '' IF ( isRank ) Rank = 4 - CASE( 'CH4_EMIS' ) - IF ( isDesc ) Desc = 'CH4 emissions by sector, CH4 specialty simulation only' - IF ( isUnits ) Units = 'kg/m2/s' - IF ( isRank ) Rank = 3 - CASE( 'BOH' ) IF ( isDesc ) Desc = 'OH values, CH4 specialty simulation only' IF ( isUnits ) Units = 'molec/cm3' diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index 428f5fec5..d9150b511 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -89,9 +89,11 @@ VerboseOnCores: root # Accepted values: root all --> GLOBAL_CL : true # 2010-2019 --> OLSON_LANDMAP : true # 1985 --> YUAN_MODIS_LAI : true # 2000-2020 - --> AnalyticalInv : false - --> Emis_ScaleFactor : false - --> OH_ScaleFactor : false +# ----- OPTIONS FOR ANALYTICAL INVERSIONS ------------------------------------ + --> AnalyticalInversion : false + --> UseTotalPriorEmis : false # Skips global/regional inventories + --> Emis_PosteriorSF : false # Apply posterior scale factors to total emis? + --> OH_PosteriorSF : false # Apply posterior scale factor to global OH? # ----------------------------------------------------------------------------- 111 GFED : on CH4 --> GFED4 : true @@ -118,6 +120,22 @@ VerboseOnCores: root # Accepted values: root all (((EMISSIONS +#============================================================================== +# ---Total CH4 emissions (all sectors) from prior simulation --- +#============================================================================== +(((UseTotalPriorEmis + +(((Emis_PosteriorSF +0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 +)))Emis_PosteriorSF + +(((.not.Emis_PosteriorSF +0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 +))).not.Emis_PosteriorSF + +)))UseTotalPriorEmis + +(((.not.UseTotalPriorEmis #============================================================================== # --- Gridded GHGI v2 (Maasakkers et al., submitted to ES&T, 2023) --- # @@ -550,6 +568,8 @@ VerboseOnCores: root # Accepted values: root all 0 RCP85_CH4 $ROOT/RCP/v2020-07/RCP_85/RCPs_anthro_CH4_2005-2100_43533.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH4 - 1 1 )))RCP_85 +))).not.UseTotalPriorEmis + )))EMISSIONS ############################################################################### @@ -659,7 +679,15 @@ ${RUNDIR_CH4_LOSS} # --- Global OH from GEOS-Chem v5-07 [kg/m3] --- (((GLOBAL_OH + +(((OH_PosteriorSF +* GLOBAL_OH $ROOT/OH/v2014-09/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2/4 1 1 +)))OH_PosteriorSF + +(((.not.OH_PosteriorSF * GLOBAL_OH $ROOT/OH/v2014-09/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 +))).not.OH_PosteriorSF + )))GLOBAL_OH # --- Global Cl [mol/mol dry air] --- @@ -839,36 +867,10 @@ ${RUNDIR_GLOBAL_Cl} #============================================================================== # --- Files needed for analytical inversion --- -# -# These fields are are only used if analytical_inversion?' is activated in -# geoschem_config.yml. These fields are obtained from HEMCO and applied in -# GEOS-Chem/GeosCore/global_ch4_mod.F90. -# -# Entries below provided for examples only. Add your own here! #============================================================================== -(((AnalyticalInv - -# State vector file +(((AnalyticalInversion * CH4_STATE_VECTOR StateVector.nc StateVector 2009/1/1/0 C xy 1 * - 1 1 - -)))AnalyticalInv - -#============================================================================== -# --- Scale factors for posterior run --- -# -# Enable emission scale factors by setting the use_emission_scale_factor or -# use_OH_scale_factor options to true in geoschem_config.yml. These fields are -# obtained from HEMCO and applied in GEOS-Chem/GeosCore/global_ch4_mod.F90. -# -# Entries below are provided for examples only. Add your own here! -#============================================================================== -(((Emis_ScaleFactor -* EMIS_SF gridded_posterior.nc ScaleFactor 2000/1/1/0 C xy 1 * - 1 1 -)))Emis_ScaleFactor - -(((OH_ScaleFactor -* OH_SF Post_SF_OH.nc SF_OH 2010-2017/1/1/0 E xy 1 * - 1 1 -)))OH_ScaleFactor +)))AnalyticalInversion ### END SECTION BASE EMISSIONS ### @@ -893,8 +895,35 @@ ${RUNDIR_GLOBAL_Cl} #============================================================================== 2 OH_pert_factor 1.0 - - - xy 1 1 -(((EMISSIONS +#============================================================================== +# --- Scale factors for posterior run --- +# +# Enable emission scale factors by setting the use_emission_scale_factor or +# use_OH_scale_factor options to true in geoschem_config.yml. These fields are +# obtained from HEMCO and applied in GEOS-Chem/GeosCore/global_ch4_mod.F90. +# +# Entries below are provided for examples only. Add your own here! +#============================================================================== +(((Emis_PosteriorSF +3 EMIS_SF gridded_posterior.nc ScaleFactor 2000/1/1/0 C xy 1 1 +)))Emis_PosteriorSF + +(((OH_PosteriorSF +4 OH_SF Post_SF_OH.nc SF_OH 2010-2017/1/1/0 C xy 1 1 +)))OH_PosteriorSF + +#============================================================================== +# --- Scale factors for analytical inversions --- +#============================================================================== +(((AnalyticalInversion + +# Add perturbations to individual state vector element (N) following this format +# Start scale factor ID at 2000 to avoid conflicts with other SFs/masks +#200N SCALE_ELEM_000N ./Perturbations.txt - - - xy count 1 +)))AnalyticalInversion + +(((EMISSIONS #============================================================================== # --- Seasonal scaling factors ---- #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index d30c299fb..cc4cc333c 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -86,10 +86,6 @@ Mask fractions: false # ..... Non-Emissions Data ........... --> CH4_LOSS_FREQ : true # 1985 --> GLOBAL_CL : true # 2010-2019 -# ..... Options for the IMI .......... - --> AnalyticalInv : false - --> Emis_ScaleFactor : false - --> OH_ScaleFactor : false # ----- CO and CO2-only INVENTORIES AND DATA ---------------------------------- # ..... Global inventories ........... --> AEIC2019_DAILY : false # 2019 (daily data) @@ -138,6 +134,11 @@ Mask fractions: false --> YUAN_MODIS_LAI : true # 2000-2020 --> GLOBAL_OH_GC14 : false # 2010-2019 --> GLOBAL_OH_GCv5 : true # 1985 (recommended for CH4) +# ----- Options for analytical inversions ------------------------------------- + --> AnalyticalInversion : false + --> UseTotalPriorEmis : false # Skips global/regional inventories + --> Emis_PosteriorSF : false # Apply posterior scale factors to total emis? + --> OH_PosteriorSF : false # Apply posterior scale factor to global OH? # ----------------------------------------------------------------------------- 111 GFED : on CH4/CO/CO2 --> GFED4 : true @@ -160,6 +161,23 @@ Mask fractions: false #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% (((USE_CH4_DATA +#============================================================================== +# ---Total CH4 emissions (all sectors) from prior simulation --- +#============================================================================== +(((UseTotalPriorEmis + +(((Emis_PosteriorSF +0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 +)))Emis_PosteriorSF + +(((.not.Emis_PosteriorSF +0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 +))).not.Emis_PosteriorSF + +)))UseTotalPriorEmis + +(((.not.UseTotalPriorEmis + #============================================================================== # --- CH4: Gridded GHGI v2 (Maasakkers et al., submitted to ES&T, 2023) --- # @@ -577,6 +595,8 @@ Mask fractions: false 0 RCP85_CH4 $ROOT/RCP/v2020-07/RCP_85/RCPs_anthro_CH4_2005-2100_43533.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH4 - 1 1 )))RCP_85 +))).not.UseTotalPriorEmis + )))USE_CH4_DATA #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1259,36 +1279,10 @@ Mask fractions: false #------------------------------------------------------------------------------ # --- Files needed for analytical inversion --- -# -# These fields are are only used if analytical_inversion?' is activated in -# geoschem_config.yml. These fields are obtained from HEMCO and applied in -# GEOS-Chem/GeosCore/global_ch4_mod.F90. -# -# Entries below provided for examples only. Add your own here! -#------------------------------------------------------------------------------ -(((AnalyticalInv - -# State vector file -* CH4_STATE_VECTOR StateVector.nc StateVector 2009/1/1/0 C xy 1 * - 1 1 - -)))AnalyticalInv - -#------------------------------------------------------------------------------ -# --- Scale factors for posterior run --- -# -# Enable emission scale factors by setting the use_emission_scale_factor or -# use_OH_scale_factor options to true in geoschem_config.yml. These fields are -# obtained from HEMCO and applied in GEOS-Chem/GeosCore/global_ch4_mod.F90. -# -# Entries below are provided for examples only. Add your own here! #------------------------------------------------------------------------------ -(((Emis_ScaleFactor -* EMIS_SF gridded_posterior.nc ScaleFactor 2000/1/1/0 C xy 1 * - 1 1 -)))Emis_ScaleFactor - -(((OH_ScaleFactor -* OH_SF Post_SF_OH.nc SF_OH 2010-2017/1/1/0 E xy 1 * - 1 1 -)))OH_ScaleFactor +(((AnalyticalInversion +* CH4_STATE_VECTOR StateVector.nc StateVector 2009/1/1/0 C xy 1 * - 1 1 +)))AnalyticalInversion )))USE_CH4_DATA @@ -1302,7 +1296,15 @@ Mask fractions: false #------------------------------------------------------------------------------ # --- OH from GEOS-Chem v5-07 [kg/m3], needed for CH4/IMI --- (((GLOBAL_OH_GCv5 + +(((OH_PosteriorSF +* GLOBAL_OH $ROOT/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2/4 1 1 +)))OH_PosteriorSF + +(((.not.OH_PosteriorSF * GLOBAL_OH $ROOT/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 +))).not.OH_PosteriorSF + )))GLOBAL_OH_GCv5 # --- OH from the last 10-yr benchmark [mol/mol dry air] --- @@ -1390,8 +1392,35 @@ ${RUNDIR_CO2_COPROD} #============================================================================== 2 OH_pert_factor 1.0 - - - xy 1 1 -(((EMISSIONS +#============================================================================== +# --- Scale factors for posterior run --- +# +# Enable emission scale factors by setting the use_emission_scale_factor or +# use_OH_scale_factor options to true in geoschem_config.yml. These fields are +# obtained from HEMCO and applied in GEOS-Chem/GeosCore/global_ch4_mod.F90. +# +# Entries below are provided for examples only. Add your own here! +#============================================================================== +(((Emis_PosteriorSF +3 EMIS_SF gridded_posterior.nc ScaleFactor 2000/1/1/0 C xy 1 1 +)))Emis_PosteriorSF + +(((OH_PosteriorSF +4 OH_SF Post_SF_OH.nc SF_OH 2010-2017/1/1/0 C xy 1 1 +)))OH_PosteriorSF + +#============================================================================== +# --- Scale factors for analytical inversions --- +#============================================================================== +(((AnalyticalInversion + +# Add perturbations to individual state vector element (N) following this format +# Start scale factor ID at 2000 to avoid conflicts with other SFs/masks +#200N SCALE_ELEM_000N ./Perturbations.txt - - - xy count 1 +)))AnalyticalInversion + +(((EMISSIONS #============================================================================== # --- Seasonal scaling factors ---- #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index de0a3dc06..effca16ac 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -96,9 +96,11 @@ VerboseOnCores: root # Accepted values: root all --> GLOBAL_CL : true # 2010-2019 --> OLSON_LANDMAP : true # 1985 --> YUAN_MODIS_LAI : true # 2000-2020 - --> AnalyticalInv : false - --> Emis_ScaleFactor : false - --> OH_ScaleFactor : false +# ----- OPTIONS FOR ANALYTICAL INVERSIONS ------------------------------------ + --> AnalyticalInversion : false + --> UseTotalPriorEmis : false # Skips global/regional inventories + --> Emis_PosteriorSF : false # Apply posterior scale factors to total emis? + --> OH_PosteriorSF : false # Apply posterior scale factor to global OH? # ----------------------------------------------------------------------------- 111 GFED : on CH4/CH4_BBN --> GFED4 : true @@ -125,6 +127,22 @@ VerboseOnCores: root # Accepted values: root all (((EMISSIONS +#============================================================================== +# ---Total CH4 emissions (all sectors) from prior simulation --- +#============================================================================== +(((UseTotalPriorEmis + +(((Emis_PosteriorSF +0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 +)))Emis_PosteriorSF + +(((.not.Emis_PosteriorSF +0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 +))).not.Emis_PosteriorSF + +)))UseTotalPriorEmis + +(((.not.UseTotalPriorEmis #============================================================================== # --- Gridded GHGI v2 (Maasakkers et al., submitted to ES&T, 2023) --- # @@ -761,6 +779,8 @@ VerboseOnCores: root # Accepted values: root all 0 RCP85_CH4 $ROOT/RCP/v2020-07/RCP_85/RCPs_anthro_CH4_2005-2100_43533.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH4 - 1 1 )))RCP_85 +))).not.UseTotalPriorEmis + )))EMISSIONS ############################################################################### @@ -870,7 +890,15 @@ ${RUNDIR_CH4_LOSS} # --- Global OH from GEOS-Chem v5-07 [kg/m3] --- (((GLOBAL_OH + +(((OH_PosteriorSF +* GLOBAL_OH $ROOT/OH/v2014-09/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2/4 1 1 +)))OH_PosteriorSF + +(((.not.OH_PosteriorSF * GLOBAL_OH $ROOT/OH/v2014-09/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 +))).not.OH_PosteriorSF + )))GLOBAL_OH # --- Global Cl [mol/mol dry air] --- @@ -1050,36 +1078,10 @@ ${RUNDIR_GLOBAL_Cl} #============================================================================== # --- Files needed for analytical inversion --- -# -# These fields are are only used if analytical_inversion?' is activated in -# geoschem_config.yml. These fields are obtained from HEMCO and applied in -# GEOS-Chem/GeosCore/global_ch4_mod.F90. -# -# Entries below provided for examples only. Add your own here! #============================================================================== -(((AnalyticalInv - -# State vector file +(((AnalyticalInversion * CH4_STATE_VECTOR StateVector.nc StateVector 2009/1/1/0 C xy 1 * - 1 1 - -)))AnalyticalInv - -#============================================================================== -# --- Scale factors for posterior run --- -# -# Enable emission scale factors by setting the use_emission_scale_factor or -# use_OH_scale_factor options to true in geoschem_config.yml. These fields are -# obtained from HEMCO and applied in GEOS-Chem/GeosCore/global_ch4_mod.F90. -# -# Entries below are provided for examples only. Add your own here! -#============================================================================== -(((Emis_ScaleFactor -* EMIS_SF gridded_posterior.nc ScaleFactor 2000/1/1/0 C xy 1 * - 1 1 -)))Emis_ScaleFactor - -(((OH_ScaleFactor -* OH_SF Post_SF_OH.nc SF_OH 2010-2017/1/1/0 E xy 1 * - 1 1 -)))OH_ScaleFactor +)))AnalyticalInversion ### END SECTION BASE EMISSIONS ### @@ -1104,8 +1106,35 @@ ${RUNDIR_GLOBAL_Cl} #============================================================================== 2 OH_pert_factor 1.0 - - - xy 1 1 -(((EMISSIONS +#============================================================================== +# --- Scale factors for posterior run --- +# +# Enable emission scale factors by setting the use_emission_scale_factor or +# use_OH_scale_factor options to true in geoschem_config.yml. These fields are +# obtained from HEMCO and applied in GEOS-Chem/GeosCore/global_ch4_mod.F90. +# +# Entries below are provided for examples only. Add your own here! +#============================================================================== +(((Emis_PosteriorSF +3 EMIS_SF gridded_posterior.nc ScaleFactor 2000/1/1/0 C xy 1 1 +)))Emis_PosteriorSF + +(((OH_PosteriorSF +4 OH_SF Post_SF_OH.nc SF_OH 2010-2017/1/1/0 C xy 1 1 +)))OH_PosteriorSF +#============================================================================== +# --- Scale factors for analytical inversions --- +#============================================================================== +(((AnalyticalInversion + +# Add perturbations to individual state vector element (N) following this format +# Start scale factor ID at 2000 to avoid conflicts with other SFs/masks +#200N SCALE_ELEM_000N ./Perturbations.txt - - - xy count 1 + +)))AnalyticalInversion + +(((EMISSIONS #============================================================================== # --- Seasonal scaling factors ---- #============================================================================== @@ -1122,9 +1151,6 @@ ${RUNDIR_GLOBAL_Cl} 59 GHGI_OTH_BUR_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_3F_Field_Burning 2012-2018/1-12/1/0 C xy 1 1 )))GHGI_v2.or.GHGI_v2_Express_Ext -#============================================================================== -# --- Seasonal scaling factors ---- -#============================================================================== (((Scarpelli_Mexico.or.Scarpelli_Canada 10 MANURE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Manure_ScalingFactors.WithClimatology.nc sf_ch4 2008-2016/1-12/1/0 C xy 1 1 11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CH4 b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CH4 index 1c04432fa..731590b20 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CH4 +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CH4 @@ -75,13 +75,8 @@ CH4_simulation_options: TCCON: false analytical_inversion: - activate: false - state_vector_element_number: 0 - emission_perturbation_factor: 1.0 perturb_CH4_boundary_conditions: false CH4_boundary_condition_ppb_increase_NSEW: [0.0, 0.0, 0.0, 0.0] - use_emission_scale_factor: false - use_OH_scale_factors: false #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon index 36f5499cd..3eb7e5dad 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon @@ -78,13 +78,8 @@ CH4_simulation_options: TCCON: false analytical_inversion: - activate: false - state_vector_element_number: 0 - emission_perturbation_factor: 1.0 perturb_CH4_boundary_conditions: false CH4_boundary_condition_ppb_increase_NSEW: [0.0, 0.0, 0.0, 0.0] - use_emission_scale_factor: false - use_OH_scale_factors: false #============================================================================ # Options for CO diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.tagCH4 b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.tagCH4 index 68a3623eb..2c872a89a 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.tagCH4 +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.tagCH4 @@ -90,13 +90,8 @@ CH4_simulation_options: TCCON: false analytical_inversion: - activate: false - state_vector_element_number: 0 - emission_perturbation_factor: 1.0 perturb_CH4_boundary_conditions: false CH4_boundary_condition_ppb_increase_NSEW: [0.0, 0.0, 0.0, 0.0] - use_emission_scale_factor: false - use_OH_scale_factors: false #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 9dc36cfbd..6b869d107 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -86,10 +86,6 @@ Mask fractions: false # ..... Non-Emissions Data ........... --> CH4_LOSS_FREQ : true # 1985 --> GLOBAL_CL : true # 2010-2019 -# ..... Options for the IMI .......... - --> AnalyticalInv : false - --> Emis_ScaleFactor : false - --> OH_ScaleFactor : false # ----- CO and CO2-only INVENTORIES AND DATA ---------------------------------- # ..... Global inventories ........... --> AEIC2019_DAILY : false # 2019 (daily data) @@ -138,6 +134,11 @@ Mask fractions: false --> YUAN_MODIS_LAI : true # 2000-2020 --> GLOBAL_OH_GC14 : false # 2010-2019 --> GLOBAL_OH_GCv5 : true # 1985 (recommended for CH4) +# ----- Options for analytical inversions ------------------------------------- + --> AnalyticalInversion : false + --> UseTotalPriorEmis : false # Skips global/regional inventories + --> Emis_PosteriorSF : false # Apply posterior scale factors to total emis? + --> OH_PosteriorSF : false # Apply posterior scale factor to global OH? # ----------------------------------------------------------------------------- 111 GFED : on CH4/CO/CO2 --> GFED4 : true @@ -160,6 +161,23 @@ Mask fractions: false #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% (((USE_CH4_DATA +#============================================================================== +# ---Total CH4 emissions (all sectors) from prior simulation --- +#============================================================================== +(((UseTotalPriorEmis + +(((Emis_PosteriorSF +0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 +)))Emis_PosteriorSF + +(((.not.Emis_PosteriorSF +0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 +))).not.Emis_PosteriorSF + +)))UseTotalPriorEmis + +(((.not.UseTotalPriorEmis + #============================================================================== # --- CH4: Gridded GHGI v2 (Maasakkers et al., submitted to ES&T, 2023) --- # @@ -577,6 +595,8 @@ Mask fractions: false 0 RCP85_CH4 $ROOT/RCP/v2020-07/RCP_85/RCPs_anthro_CH4_2005-2100_43533.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH4 - 1 1 )))RCP_85 +))).not.UseTotalPriorEmis + )))USE_CH4_DATA #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1259,36 +1279,10 @@ Mask fractions: false #------------------------------------------------------------------------------ # --- Files needed for analytical inversion --- -# -# These fields are are only used if analytical_inversion?' is activated in -# geoschem_config.yml. These fields are obtained from HEMCO and applied in -# GEOS-Chem/GeosCore/global_ch4_mod.F90. -# -# Entries below provided for examples only. Add your own here! -#------------------------------------------------------------------------------ -(((AnalyticalInv - -# State vector file -* CH4_STATE_VECTOR StateVector.nc StateVector 2009/1/1/0 C xy 1 * - 1 1 - -)))AnalyticalInv - -#------------------------------------------------------------------------------ -# --- Scale factors for posterior run --- -# -# Enable emission scale factors by setting the use_emission_scale_factor or -# use_OH_scale_factor options to true in geoschem_config.yml. These fields are -# obtained from HEMCO and applied in GEOS-Chem/GeosCore/global_ch4_mod.F90. -# -# Entries below are provided for examples only. Add your own here! #------------------------------------------------------------------------------ -(((Emis_ScaleFactor -* EMIS_SF gridded_posterior.nc ScaleFactor 2000/1/1/0 C xy 1 * - 1 1 -)))Emis_ScaleFactor - -(((OH_ScaleFactor -* OH_SF Post_SF_OH.nc SF_OH 2010-2017/1/1/0 E xy 1 * - 1 1 -)))OH_ScaleFactor +(((AnalyticalInversion +* CH4_STATE_VECTOR StateVector.nc StateVector 2009/1/1/0 C xy 1 * - 1 1 +)))AnalyticalInversion )))USE_CH4_DATA @@ -1302,7 +1296,15 @@ Mask fractions: false #------------------------------------------------------------------------------ # --- OH from GEOS-Chem v5-07 [kg/m3], needed for CH4/IMI --- (((GLOBAL_OH_GCv5 + +(((OH_PosteriorSF +* GLOBAL_OH $ROOT/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2/4 1 1 +)))OH_PosteriorSF + +(((.not.OH_PosteriorSF * GLOBAL_OH $ROOT/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 +))).not.OH_PosteriorSF + )))GLOBAL_OH_GCv5 # --- OH from the last 10-yr benchmark [mol/mol dry air] --- @@ -1390,8 +1392,35 @@ ${RUNDIR_CO2_COPROD} #============================================================================== 2 OH_pert_factor 1.0 - - - xy 1 1 -(((EMISSIONS +#============================================================================== +# --- Scale factors for posterior run --- +# +# Enable emission scale factors by setting the use_emission_scale_factor or +# use_OH_scale_factor options to true in geoschem_config.yml. These fields are +# obtained from HEMCO and applied in GEOS-Chem/GeosCore/global_ch4_mod.F90. +# +# Entries below are provided for examples only. Add your own here! +#============================================================================== +(((Emis_PosteriorSF +3 EMIS_SF gridded_posterior.nc ScaleFactor 2000/1/1/0 C xy 1 1 +)))Emis_PosteriorSF + +(((OH_PosteriorSF +4 OH_SF Post_SF_OH.nc SF_OH 2010-2017/1/1/0 C xy 1 1 +)))OH_PosteriorSF + +#============================================================================== +# --- Scale factors for analytical inversions --- +#============================================================================== +(((AnalyticalInversion + +# Add perturbations to individual state vector element (N) following this format +# Start scale factor ID at 2000 to avoid conflicts with other SFs/masks +#200N SCALE_ELEM_000N ./Perturbations.txt - - - xy count 1 +)))AnalyticalInversion + +(((EMISSIONS #============================================================================== # --- Seasonal scaling factors ---- #============================================================================== From 6bb9561d3a98fef762163f8a69cdcf9d9b0a9657 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Wed, 3 Jan 2024 13:52:25 -0500 Subject: [PATCH 036/331] Loop over advected species in global_ch4_mod.F90 to allow for multiple CH4 tracers Subroutines CH4_DECAY and CH4_STRAT have been modified to loop over the number of advected species in the CH4 simulation. This allows for multiple CH4 tracers (as used in the analytical inversion framework to represent individual state vector elements). Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 1 + GeosCore/global_ch4_mod.F90 | 245 +++++++++++++++++------------------- 2 files changed, 118 insertions(+), 128 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30570f48e..adc99039f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] ### Changed - Removed emissions handling from `global_ch4_mod.F90` and `carbon_mod.F90` and instead apply scale factors to emissions directly in `HEMCO_Config.rc` +- Loop over advected species CH4 chemistry routines to allow for multiple CH4 tracers within analytical inversion framework ### Removed - Removed State_Chm%CH4_EMIS diff --git a/GeosCore/global_ch4_mod.F90 b/GeosCore/global_ch4_mod.F90 index e6612e636..c7725347f 100644 --- a/GeosCore/global_ch4_mod.F90 +++ b/GeosCore/global_ch4_mod.F90 @@ -248,8 +248,7 @@ SUBROUTINE CHEMCH4( Input_Opt, State_Chm, State_Diag, & State_Grid, State_Met, RC ) !================================================================= - ! Distribute the chemistry sink from total CH4 to other CH4 - ! species. (ccc, 2/10/09) + ! Distribute the chemistry sink from total CH4 to tagged species !================================================================= IF ( Input_Opt%ITS_A_TAGCH4_SIM ) THEN CALL CH4_DISTRIB( Input_Opt, State_Chm, State_Grid, PREVCH4 ) @@ -325,7 +324,7 @@ SUBROUTINE CH4_DECAY( Input_Opt, State_Chm, State_Diag, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L + INTEGER :: I, J, L, N, NA REAL(fp) :: DT, GCH4, Spc2GCH4 REAL(fp) :: KRATE, C_OH REAL(fp) :: KRATE_Cl, C_Cl @@ -334,9 +333,6 @@ SUBROUTINE CH4_DECAY( Input_Opt, State_Chm, State_Diag, & ! Pointers TYPE(SpcConc), POINTER :: Spc(:) -! ! Array of scale factors for OH (from HEMCO) -! REAL(fp) :: OH_SF(State_Grid%NX,State_Grid%NY) - !================================================================= ! CH4_DECAY begins here! !================================================================= @@ -350,21 +346,6 @@ SUBROUTINE CH4_DECAY( Input_Opt, State_Chm, State_Diag, & ! Point to the chemical species array Spc => State_Chm%Species -! ! ================================================================= -! ! Get fields for CH4 analytical inversions if needed -! ! ================================================================= -! IF ( Input_Opt%UseOHSF ) THEN -! -! ! Evaluate OH scale factors from HEMCO -! CALL HCO_GC_EvalFld( Input_Opt, State_Grid, 'OH_SF', OH_SF, RC) -! IF ( RC /= GC_SUCCESS ) THEN -! ErrMsg = 'OH_SF not found in HEMCO data list!' -! CALL GC_Error( ErrMsg, RC, ThisLoc ) -! RETURN -! ENDIF -! -! ENDIF - !================================================================= ! %%%%% HISTORY (aka netCDF diagnostics) %%%%% ! @@ -395,85 +376,86 @@ SUBROUTINE CH4_DECAY( Input_Opt, State_Chm, State_Diag, & ! ! This is from Kirschke et al., Nat. Geosci., 2013. !================================================================= + DO NA = 1, State_Chm%nAdvect - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( L, J, I, KRATE, Spc2GCH4, GCH4, C_OH ) & - !$OMP PRIVATE( C_Cl, KRATE_Cl ) & - !$OMP REDUCTION( +:TROPOCH4 ) - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX + ! Advected species ID + N = State_Chm%Map_Advect(NA) - ! Only consider tropospheric boxes - IF ( State_Met%InTroposphere(I,J,L) ) THEN - - ! Calculate rate coefficients - KRATE = 2.45e-12_fp * EXP( -1775e+0_fp / State_Met%T(I,J,L)) - KRATE_Cl = 9.60e-12_fp * EXP( -1360e+0_fp / State_Met%T(I,J,L)) - - ! Conversion from [kg/box] --> [molec/cm3] - ! [kg CH4/box] * [box/cm3] * XNUMOL_CH4 [molec CH4/kg CH4] - Spc2GCH4 = 1e+0_fp / State_Met%AIRVOL(I,J,L) / 1e+6_fp * XNUMOL_CH4 - - ! CH4 in [molec/cm3] - GCH4 = Spc(1)%Conc(I,J,L) * Spc2GCH4 - - ! OH in [molec/cm3] - ! BOH from HEMCO in units of kg/m3, convert to molec/cm3 - C_OH = State_Chm%BOH(I,J,L) * XNUMOL_OH / CM3PERM3 - -! ! Apply OH scale factors from a previous inversion -! IF ( Input_Opt%UseOHSF ) THEN -! C_OH = C_OH * OH_SF(I,J) -! IF ( Input_Opt%Verbose ) THEN -! !This will print over every grid box; comment out for now -! !Print*, 'Applying scale factor to OH: ', OH_SF(I,J) -! ENDIF -! ENDIF - - ! Cl in [molec/cm3] - ! BCl from HEMCO in units of mol/mol, convert to molec/cm3 - C_Cl = State_Chm%BCl(I,J,L) * State_Met%AIRNUMDEN(I,J,L) - - TROPOCH4 = TROPOCH4 + GCH4 * KRATE * C_OH * DT / Spc2GCH4 & - + GCH4 * KRATE_Cl * C_Cl * DT / Spc2GCH4 - - !----------------------------------------------------------- - ! %%%%% HISTORY (aka netCDF diagnostics) %%%%% - ! - ! Archive Loss of CH4 (kg/s) reactions with OH and Cl - !----------------------------------------------------------- - - ! Loss CH4 by reaction with Cl [kg/s] - IF ( State_Diag%Archive_LossCH4byClinTrop ) THEN - State_Diag%LossCH4byClinTrop(I,J,L) = & - ( GCH4 * KRATE_Cl * C_Cl ) / Spc2GCH4 - ENDIF + ! Only do chemistry for the total CH4 tracer in tagCH4 simulations + IF ( Input_Opt%ITS_A_TAGCH4_SIM .and. NA > 1 ) CYCLE - IF ( State_Diag%Archive_LossCH4byOHinTrop ) THEN - State_Diag%LossCH4byOHinTrop(I,J,L) = & - ( GCH4 * KRATE * C_OH ) / Spc2GCH4 - ENDIF + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED ) & + !$OMP PRIVATE( I, J, L, KRATE, Spc2GCH4, GCH4, C_OH ) & + !$OMP PRIVATE( C_Cl, KRATE_Cl ) & + !$OMP REDUCTION( +:TROPOCH4 ) + DO L = 1, State_Grid%NZ + DO J = 1, State_Grid%NY + DO I = 1, State_Grid%NX - ! Calculate new CH4 value: [CH4]=[CH4](1-k[OH]*delt) - GCH4 = GCH4 * & - ( 1.0_fp - ( KRATE * C_OH * DT ) - ( KRATE_Cl * C_Cl * DT ) ) + ! Only consider tropospheric boxes + IF ( State_Met%InTroposphere(I,J,L) ) THEN - ! Convert back from [molec/cm3] --> [kg/box] - Spc(1)%Conc(I,J,L) = GCH4 / Spc2GCH4 + ! Calculate rate coefficients + KRATE = 2.45e-12_fp * EXP( -1775e+0_fp / State_Met%T(I,J,L)) + KRATE_Cl = 9.60e-12_fp * EXP( -1360e+0_fp / State_Met%T(I,J,L)) + + ! Conversion from [kg/box] --> [molec/cm3] + ! [kg CH4/box] * [box/cm3] * XNUMOL_CH4 [molec CH4/kg CH4] + Spc2GCH4 = 1e+0_fp / State_Met%AIRVOL(I,J,L) / 1e+6_fp * XNUMOL_CH4 + + ! CH4 in [molec/cm3] + GCH4 = Spc(N)%Conc(I,J,L) * Spc2GCH4 + + ! OH in [molec/cm3] + ! BOH from HEMCO in units of kg/m3, convert to molec/cm3 + C_OH = State_Chm%BOH(I,J,L) * XNUMOL_OH / CM3PERM3 + + ! Cl in [molec/cm3] + ! BCl from HEMCO in units of mol/mol, convert to molec/cm3 + C_Cl = State_Chm%BCl(I,J,L) * State_Met%AIRNUMDEN(I,J,L) + + TROPOCH4 = TROPOCH4 + GCH4 * KRATE * C_OH * DT / Spc2GCH4 & + + GCH4 * KRATE_Cl * C_Cl * DT / Spc2GCH4 + + !----------------------------------------------------------- + ! %%%%% HISTORY (aka netCDF diagnostics) %%%%% + ! + ! Archive Loss of CH4 (kg/s) reactions with OH and Cl + !----------------------------------------------------------- + IF ( NA == 1 ) THEN + ! Loss CH4 by reaction with Cl [kg/s] + IF ( State_Diag%Archive_LossCH4byClinTrop ) THEN + State_Diag%LossCH4byClinTrop(I,J,L) = & + ( GCH4 * KRATE_Cl * C_Cl ) / Spc2GCH4 + ENDIF + + IF ( State_Diag%Archive_LossCH4byOHinTrop ) THEN + State_Diag%LossCH4byOHinTrop(I,J,L) = & + ( GCH4 * KRATE * C_OH ) / Spc2GCH4 + ENDIF + ENDIF + + ! Calculate new CH4 value: [CH4]=[CH4](1-k[OH]*delt) + GCH4 = GCH4 * & + ( 1.0_fp - ( KRATE * C_OH * DT ) - ( KRATE_Cl * C_Cl * DT ) ) + + ! Convert back from [molec/cm3] --> [kg/box] + Spc(N)%Conc(I,J,L) = GCH4 / Spc2GCH4 + ENDIF + ENDDO + ENDDO + ENDDO + !$OMP END PARALLEL DO + + IF ( Input_Opt%Verbose ) THEN + print*,'% --- CHEMCH4: CH4_DECAY: TROP DECAY (Tg): ',TROPOCH4/1e9 + print*,'Trop decay should be over 1Tg per day globally' + print*,' ~ 500Tg/365d ~ 1.37/d' ENDIF - ENDDO - ENDDO - ENDDO - !$OMP END PARALLEL DO - IF ( Input_Opt%Verbose ) THEN - print*,'% --- CHEMCH4: CH4_DECAY: TROP DECAY (Tg): ',TROPOCH4/1e9 - print*,'Trop decay should be over 1Tg per day globally' - print*,' ~ 500Tg/365d ~ 1.37/d' - ENDIF + ENDDO ! Free pointers Spc => NULL() @@ -818,7 +800,7 @@ SUBROUTINE CH4_STRAT( Input_Opt, State_Chm, State_Diag, & ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L + INTEGER :: I, J, L, N, NA REAL(fp) :: DT, GCH4, Spc2GCH4, LRATE ! Strings @@ -869,46 +851,56 @@ SUBROUTINE CH4_STRAT( Input_Opt, State_Chm, State_Diag, & !================================================================= ! Loop over stratospheric boxes only !================================================================= - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, Spc2GCH4, GCH4, LRATE ) - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX + DO NA = 1, State_Chm%nAdvect - ! Only proceed if we are outside of the chemistry grid - IF ( .not. State_Met%InTroposphere(I,J,L) ) THEN + ! Advected species ID + N = State_Chm%Map_Advect(NA) - ! Conversion factor [kg/box] --> [molec/cm3] - ! [kg/box] / [AIRVOL * 1e6 cm3] * [XNUMOL_CH4 molec/mole] - Spc2GCH4 = 1e+0_fp / State_Met%AIRVOL(I,J,L) / 1e+6_fp * XNUMOL_CH4 + ! Only do chemistry for the total CH4 tracer in tagCH4 simulations + IF ( Input_Opt%ITS_A_TAGCH4_SIM .and. NA > 1 ) CYCLE + + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED ) & + !$OMP PRIVATE( I, J, L, Spc2GCH4, GCH4, LRATE ) + DO L = 1, State_Grid%NZ + DO J = 1, State_Grid%NY + DO I = 1, State_Grid%NX - ! CH4 in [molec/cm3] - GCH4 = Spc(1)%Conc(I,J,L) * Spc2GCH4 + ! Only proceed if we are outside of the chemistry grid + IF ( .not. State_Met%InTroposphere(I,J,L) ) THEN - ! Loss rate [molec/cm3/s] - LRATE = GCH4 * CH4LOSS( I,J,L ) + ! Conversion factor [kg/box] --> [molec/cm3] + ! [kg/box] / [AIRVOL * 1e6 cm3] * [XNUMOL_CH4 molec/mole] + Spc2GCH4 = 1e+0_fp / State_Met%AIRVOL(I,J,L) / 1e+6_fp * XNUMOL_CH4 - ! Update Methane concentration in this grid box [molec/cm3] - GCH4 = GCH4 - ( LRATE * DT ) + ! CH4 in [molec/cm3] + GCH4 = Spc(N)%Conc(I,J,L) * Spc2GCH4 - ! Convert back from [molec CH4/cm3] --> [kg/box] - Spc(1)%Conc(I,J,L) = GCH4 / Spc2GCH4 + ! Loss rate [molec/cm3/s] + LRATE = GCH4 * CH4LOSS( I,J,L ) + + ! Update Methane concentration in this grid box [molec/cm3] + GCH4 = GCH4 - ( LRATE * DT ) + + ! Convert back from [molec CH4/cm3] --> [kg/box] + Spc(N)%Conc(I,J,L) = GCH4 / Spc2GCH4 + + !------------------------------------------------------------ + ! %%%%%% HISTORY (aka netCDF diagnostics) %%%%% + ! + ! Loss of CH4 by OH above tropopause [kg/s] + !------------------------------------------------------------ + IF ( State_Diag%Archive_LossCH4inStrat ) THEN + State_Diag%LossCH4inStrat(I,J,L) = LRATE / Spc2GCH4 + ENDIF - !------------------------------------------------------------ - ! %%%%%% HISTORY (aka netCDF diagnostics) %%%%% - ! - ! Loss of CH4 by OH above tropopause [kg/s] - !------------------------------------------------------------ - IF ( State_Diag%Archive_LossCH4inStrat ) THEN - State_Diag%LossCH4inStrat(I,J,L) = LRATE / Spc2GCH4 ENDIF + ENDDO + ENDDO + ENDDO + !$OMP END PARALLEL DO - ENDIF - ENDDO ENDDO - ENDDO - !$OMP END PARALLEL DO ! Free pointer Spc => NULL() @@ -961,7 +953,7 @@ SUBROUTINE CH4_DISTRIB( Input_Opt, State_Chm, State_Grid, PREVCH4 ) ! !LOCAL VARIABLES: ! ! Scalars - INTEGER :: I, J, L, N, NA, nAdvect + INTEGER :: I, J, L, N, NA ! Pointers TYPE(SpcConc), POINTER :: Spc(:) @@ -973,11 +965,8 @@ SUBROUTINE CH4_DISTRIB( Input_Opt, State_Chm, State_Grid, PREVCH4 ) ! Point to chemical species array [kg] Spc => State_Chm%Species - ! fix nAdvect (Xueying Yu, 12/10/2017) - nAdvect = State_Chm%nAdvect - ! Loop over the number of advected species - DO NA = 2, nAdvect + DO NA = 2, State_Chm%nAdvect ! Advected species ID N = State_Chm%Map_Advect(NA) From 8f1c36897123ca27c6866d83d1a9057856fb22cb Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 3 Jan 2024 13:55:48 -0500 Subject: [PATCH 037/331] Bug fix: Remove reference origUnit in GCHP_Chunk_Run routien Interfaces/GCHP/gchp_chunk_mod.F90 - In GCHP_Chunk_Run, replace a leftover reference to the obsolete "origUnit" variable with "previous_units". This was causing a compilation error. Signed-off-by: Bob Yantosca --- Interfaces/GCHP/gchp_chunk_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Interfaces/GCHP/gchp_chunk_mod.F90 b/Interfaces/GCHP/gchp_chunk_mod.F90 index 8179675a0..d4f765991 100644 --- a/Interfaces/GCHP/gchp_chunk_mod.F90 +++ b/Interfaces/GCHP/gchp_chunk_mod.F90 @@ -977,7 +977,7 @@ SUBROUTINE GCHP_Chunk_Run( GC, & State_Met = State_Met, & mapping = State_Chm%Map_All, & new_units = KG_SPECIES_PER_KG_DRY_AIR, & - previous_units = origUnit, & + previous_units = previous_units, & RC = RC ) _ASSERT(RC==GC_SUCCESS, 'Error calling CONVERT_SPC_UNITS') From 309567412227915996b1defe8e04a31427f2138d Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 4 Jan 2024 12:09:33 -0500 Subject: [PATCH 038/331] Update Harvard Cannon operation run scripts run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/*.sh run/GCHP/runScriptSamples/operational_examples/harvard_cannon/*.sh - Replace "huce_intel" partition name with "huce_cascade" - Update script header comments; delete obsolete information CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + .../harvard_cannon/geoschem.benchmark.run | 9 +++++---- .../harvard_cannon/geoschem.run | 18 +++++++++++++----- .../harvard_cannon/parallelTest.sh | 2 +- .../harvard_cannon/gchp.run | 13 ++++++++++++- 5 files changed, 32 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5d118d5c..7367266b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Now read the Hg restart file from `ExtData/GEOSCHEM_RESTARTS/v2023-12` - Increse requested time limits in GCHP integration tests (compile 2h30m, run 5h) +- Updated Harvard Cannon operational run scripts to use `huce_cascade` instead of `huce_intel`1 ### Fixed - Added missing units in comments of `KPP/fullchem/commonIncludeVars.H` diff --git a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.benchmark.run b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.benchmark.run index 206a92df1..ef328747a 100755 --- a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.benchmark.run +++ b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.benchmark.run @@ -3,7 +3,7 @@ #SBATCH -c 48 #SBATCH -N 1 #SBATCH -t 0-5:00 -#SBATCH -p huce_intel,seas_compute,shared +#SBATCH -p huce_cascade,seas_compute,shared #SBATCH --mem=16000 #SBATCH --mail-type=END @@ -15,12 +15,13 @@ # !MODULE: geoschem.benchmark.run # # !DESCRIPTION: This bash script submits a 1-month benchmark simulation +# to the SLURM scheduler. #\\ #\\ # !REMARKS: -# Designed to be used with the geosfp_4x5_standard run directory created -# by the GEOS-Chem Unit Tester. To use this script, you must first compile -# the GEOS-Chem code with CMake to create the gcclassic executable. +# Designed to be used with the gc_4x5_merra2_fullchem_benchmark folder +# generated by the ./createRunDir.sh script. To use this script, you must +# first compile GEOS-Chem with CMake to create the gcclassic executable. # # NOTES: # (1) This script is customized for the Harvard "Cannon" cluster. If you diff --git a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.run b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.run index c0191a454..8c3faaa31 100755 --- a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.run +++ b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.run @@ -3,14 +3,22 @@ #SBATCH -c 8 #SBATCH -N 1 #SBATCH -t 0-12:00 -#SBATCH -p huce_intel,seas_compute,shared +#SBATCH -p huce_cascade,seas_compute,shared #SBATCH --mem=15000 #SBATCH --mail-type=END ############################################################################### -### Sample GEOS-Chem run script for SLURM -### You can increase the number of cores with -c and memory with --mem, -### particularly if you are running at very fine resolution (e.g. nested-grid) +### Sample GEOS-Chem Classic run script for Harvard Cannon (using SLURM). +### +### If you are running a nested-grid simulation at fine resolution, you +### will likely need to request additional memory, cores, and time. +### +### -c : Requests this many cores +### -N : Requests a single node +### --mem : Requests this amount of memory in GB +### -p : Requests these partitions where the job can run +### -t : Requests time for the job (days-hours:minutes) +### --exclusive : Reserves entire nodes (i.e. to prevent backfilling jobs) ############################################################################### # Set the proper # of threads for OpenMP @@ -24,4 +32,4 @@ srun -c $OMP_NUM_THREADS time -p ./gcclassic >> GC.log # Exit normally exit 0 -#EOC + diff --git a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/parallelTest.sh b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/parallelTest.sh index 35d1f9bf6..d75373c86 100755 --- a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/parallelTest.sh +++ b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/parallelTest.sh @@ -3,7 +3,7 @@ #SBATCH -c 24 #SBATCH -N 1 #SBATCH -t 0-03:00 -#SBATCH -p huce_intel,seas_compute,shared +#SBATCH -p huce_cascade,seas_compute,shared #SBATCH --mem=30000 #SBATCH --mail-type=END diff --git a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run index 764626173..612d835dd 100755 --- a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run +++ b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run @@ -4,10 +4,21 @@ #SBATCH -N 2 #SBATCH --exclusive #SBATCH -t 0-8:00 -#SBATCH -p huce_intel,seas_compute,shared +#SBATCH -p huce_cascade,seas_compute,shared #SBATCH --mem=180000 #SBATCH --mail-type=END +############################################################################### +### Sample GCHP run script for Harvard Cannon cluster (using SLURM). +### +### -n : Requests this many cores (across all nodes) +### -N : Requests this number of nodes +### --mem : Requests this amount of memory in GB +### -p : Requests these partitions where the job can run +### -t : Requests time for the job (days-hours:minutes) +### --exclusive : Reserves entire nodes (i.e. to prevent backfilling jobs) +############################################################################### + # Exit if command fails, and log all commands set -xe From 46fec0188836f9ecdbb8f5e0876ac6893b65a77e Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Sun, 7 Jan 2024 19:39:51 -0500 Subject: [PATCH 039/331] Add fix to look for prior emissions in proper directory The file path to CH4_Emis_Prior is specific to the IMI. If users want to use this option in a different framework then they can modify the path manually. Signed-off-by: Melissa Sulprizio --- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 | 4 ++-- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 4 ++-- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 | 4 ++-- run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index d9150b511..74d6de020 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -126,11 +126,11 @@ VerboseOnCores: root # Accepted values: root all (((UseTotalPriorEmis (((Emis_PosteriorSF -0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 +0 CH4_Emis_Prior ../../prior_run/OutputDir/HEMCO_sa_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 )))Emis_PosteriorSF (((.not.Emis_PosteriorSF -0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 +0 CH4_Emis_Prior ../../prior_run/OutputDir/HEMCO_sa_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 ))).not.Emis_PosteriorSF )))UseTotalPriorEmis diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index cc4cc333c..e6ef39731 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -167,11 +167,11 @@ Mask fractions: false (((UseTotalPriorEmis (((Emis_PosteriorSF -0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 +0 CH4_Emis_Prior ../../prior_run/OutputDir/HEMCO_sa_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 )))Emis_PosteriorSF (((.not.Emis_PosteriorSF -0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 +0 CH4_Emis_Prior ../../prior_run/OutputDir/HEMCO_sa_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 ))).not.Emis_PosteriorSF )))UseTotalPriorEmis diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index effca16ac..d72b36a9f 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -133,11 +133,11 @@ VerboseOnCores: root # Accepted values: root all (((UseTotalPriorEmis (((Emis_PosteriorSF -0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 +0 CH4_Emis_Prior ../../prior_run/OutputDir/HEMCO_sa_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 )))Emis_PosteriorSF (((.not.Emis_PosteriorSF -0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 +0 CH4_Emis_Prior ../../prior_run/OutputDir/HEMCO_sa_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 ))).not.Emis_PosteriorSF )))UseTotalPriorEmis diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 6b869d107..314b4cc8b 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -167,11 +167,11 @@ Mask fractions: false (((UseTotalPriorEmis (((Emis_PosteriorSF -0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 +0 CH4_Emis_Prior ../../prior_run/OutputDir/HEMCO_sa_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 )))Emis_PosteriorSF (((.not.Emis_PosteriorSF -0 CH4_Emis_Prior ../prior_run/OutputDir/HEMCO_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 +0 CH4_Emis_Prior ../../prior_run/OutputDir/HEMCO_sa_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 ))).not.Emis_PosteriorSF )))UseTotalPriorEmis From ad4a49c017d0fd90d3760cb1eee1f91989d2c40b Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 9 Jan 2024 15:39:02 -0500 Subject: [PATCH 040/331] Update carbon simulation configuration files for consistency run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon - Change GHGI_COAST_LIVESTOCK__4A to GHGI_COAST_LIVESTOCK_ENT - Change GHGI_COAST_LIVESTOCK__4B to GHGI_COAST_LIVESTOCK_MAN - Change GHGI_EE_LIVESTOCK__4A to GHGI_EE_LIVESTOCK_ENT - Change GHGI_EE_LIVESTOCK__4B to GHGI_EE_LIVESTOCK_MAN - Change GHGI_EE_COAST_LIVESTOCK__4A to GHGI_EE_COAST_LIVESTOCK_ENT - Change GHGI_EE_COAST_LIVESTOCK__4b to GHGI_EE_COAST_LIVESTOCK_MAN - Remove ((( block around GFED data, GFED can be used for all emissions run/GCHP/ExtData.rc.templates/ExtData.rc.carbon - Rename GHGI v2 Express Extension entries from GHGI_* to GHGI_EE_* - Make sure GHGI_EE_* entries are consistent with HEMCO_Config.rc.carbon - Remove time refresh entry for CH4_RES_DAM, CH4_RES_SFC; these data are annual and only need to be read once - Add GHGI_*_*_SF scale factor entries to be consistent with HEMCO_Config.rc.carbon Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + .../HEMCO_Config.rc.carbon | 12 +- .../ExtData.rc.templates/ExtData.rc.carbon | 125 ++++++++++-------- .../HEMCO_Config.rc.carbon | 12 +- 4 files changed, 83 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ddad68933..2e1ad2002 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Added missing units in comments of `KPP/fullchem/commonIncludeVars.H` - Use run directory (not absolute path) to determine the executable file name in integration & parallel tests. - Fix issues that prevented single-species carbon simulations from running +- Update `HEMCO_Config.rc.carbon` and `ExtData.rc.carbon` templates for consistency ### Removed - Reduced timers saved out to essential list used for benchmarking model performance diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index fb4db71ab..f4c4d39e1 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -223,8 +223,8 @@ Mask fractions: false 0 GHGI_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 0 GHGI_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 0 GHGI_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 4 1 -0 GHGI_COAST_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1009 4 1 +0 GHGI_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 4 1 +0 GHGI_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1009 4 1 0 GHGI_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 0 GHGI_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 0 GHGI_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 @@ -269,8 +269,8 @@ Mask fractions: false 0 GHGI_EE_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 ### Livestock ### -0 GHGI_EE_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 -0 GHGI_EE_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_EE_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 +0 GHGI_EE_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 ### Landfills ### 0 GHGI_EE_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 @@ -305,8 +305,8 @@ Mask fractions: false 0 GHGI_EE_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 0 GHGI_EE_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 0 GHGI_EE_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 4 1 -0 GHGI_EE_COAST_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1009 4 1 +0 GHGI_EE_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 4 1 +0 GHGI_EE_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1009 4 1 0 GHGI_EE_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 0 GHGI_EE_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 0 GHGI_EE_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index e73634f2f..f43343287 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -137,59 +137,62 @@ XLAIMULTI cm2_cm-2 N Y %y4-%m2-%d2T00:00:00 none none XLAIMULTI ./HcoDir/Yuan_XL # %%%%% CH4 emissions %%%%% #============================================================================== -# --- CH4: Gridded GHGI Express Extension (Maasakkers et al., submitted to ES&T, 2023) --- -GHGI_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_OIL_TRANSPORT molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_GAS_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_GAS_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Transmission ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_LANDFILLS_MSQ molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_OTHER__MCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_OTHER__SCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_OIL_TRANSPORT molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_GAS_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_GAS_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Transmission ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_LANDFILLS_MSQ molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_OTHER__MCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_OTHER__SCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_COAST_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +# --- CH4: Gridded GHGI emissions --- +# --- add lines here --- + +# --- CH4: Gridded GHGI v2 Express Extension (Maasakkers et al., submitted to ES&T, 2023) --- +GHGI_EE_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OIL_TRANSPORT molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Transmission ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_MSQ molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__MCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__SCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_TRANSPORT molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Transmission ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LANDFILLS_MSQ molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__MCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__SCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc # --- Scarpelli Mexico --- MEX_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc @@ -287,8 +290,8 @@ CH4_SEEPS kg/m2/s N Y - none none emi_ch4 ./HcoDir/CH4/v2020-04/Seeps/Etiope_C #CH4_LAKES kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2022-11/Lakes/Maasakkers_Lakes_%y4.01x01.nc # --- Emissions from reservoirs (Delwich et al 2022) --- -CH4_RES_DAM kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Potential_Dam_Emissions.0.1x0.1.nc -CH4_RES_SFC kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Surface_Emissions.0.1x0.1.nc +CH4_RES_DAM kg/m2/s N Y - CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Potential_Dam_Emissions.0.1x0.1.nc +CH4_RES_SFC kg/m2/s N Y - CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Surface_Emissions.0.1x0.1.nc # --- Emissions from termites (Fung et al 1991) --- CH4_TERMITES kg/m2/s N Y - none none CH4 ./HcoDir/CH4/v2022-11/4x5/termites.geos.4x5.nc @@ -495,6 +498,18 @@ GMI_PROD_CO v/v/s 2005 Y F%y4-%m2-01T00:00:00 none none prod ./HcoDir/GMI/v2022 ### ############################################################################### +# GHGI seasonal scale factors +GHGI_OTH_STA_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc +GHGI_OIL_EXP_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc +GHGI_OIL_PRD_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc +GHGI_OIL_REF_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc +GHGI_OIL_TRA_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc +GHGI_GAS_EXP_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc +GHGI_GAS_PRD_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc +GHGI_LIV_MAN_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc +GHGI_RIC_CUL_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc +GHGI_OTH_BUR_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc + # --- CO2 diurnal and weekly scale factors --- CO2_DIURNAL 1 N Y F%y4-%m2-%d2T%h2:00:00 none none diurnal_scale_factors ./HcoDir/CO2/v2015-04/FOSSIL/TIMES_diurnal_scale_factors.nc CO2_WEEKLY 1 2006 Y F%y4-%m2-%d2T00:00:00 none none weekly_scale_factors ./HcoDir/CO2/v2015-04/FOSSIL/TIMES_weekly_scale_factors.nc diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 555ddcc2e..b446ba8b5 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -223,8 +223,8 @@ Mask fractions: false 0 GHGI_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 0 GHGI_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 0 GHGI_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 4 1 -0 GHGI_COAST_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1009 4 1 +0 GHGI_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 4 1 +0 GHGI_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1009 4 1 0 GHGI_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 0 GHGI_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 0 GHGI_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 @@ -269,8 +269,8 @@ Mask fractions: false 0 GHGI_EE_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 ### Livestock ### -0 GHGI_EE_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 -0 GHGI_EE_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_EE_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 +0 GHGI_EE_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 ### Landfills ### 0 GHGI_EE_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 @@ -305,8 +305,8 @@ Mask fractions: false 0 GHGI_EE_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 0 GHGI_EE_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 0 GHGI_EE_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 4 1 -0 GHGI_EE_COAST_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1009 4 1 +0 GHGI_EE_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 4 1 +0 GHGI_EE_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1009 4 1 0 GHGI_EE_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 0 GHGI_EE_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 0 GHGI_EE_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 From e03ea24c34fadd09927a8294dbe016c44ee2058b Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 11 Jan 2024 15:03:20 -0500 Subject: [PATCH 041/331] Further config file updates for the GCHP carbon simulation run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon - Set OLSON_LANDMAP to false (this is read by ExtData) - Set YUAN_MODIS_LAI to false (this is read by ExtData) - Wrap CO2_COPROD with (((USE_CO2_DATA and )))USE_CO2_DATA - Wrap CO2_DIURNAL with (((USE_CO2_DATA and )))USE_CO2_DATA - Wrap CO2_WEEKLY with (((USE_CO2_DATA and )))USE_CO2_DATA - Wrap AVIATION_SURF_CORR with (((USE_CO2_DATA and )))USE_CO2_DATA run/GCHP/ExtData.rc.templates/ExtData.rc.carbon - Fix typo: GHGI_EE_LANDFILLS_MSQ -> GHGI_EE_LANDFILLS_MSW - Fix typo: GHGI_EE_OTHER__MCOM -> GHGI_EE_OTHER__MCOMB - Fix typo: GHGI_EE_OTHER__SCOM -> GHGI_EE_OTHER__SCOMB - Fix typo: GHGI_EE_COAST_LANDFILLS_MSQ -> GHGI_EE_COAST_LANDFILLS_MSW - Fix typo: GHGI_EE_COAST_OTHER__MCOM -> GHGI_EE_OTHER__MCOMB - Fix typo: GHGI_EE_OTHER__SCOM -> GHGI_EE_OTHER__SCOMB - Add "none none" to CH4_RES_DAM and CH4_RES_SFC entries - Change $y4 to %y4 in GHGI scale factor entries Signed-off-by: Bob Yantosca --- .../ExtData.rc.templates/ExtData.rc.carbon | 36 +++++++++---------- .../HEMCO_Config.rc.carbon | 10 ++++-- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index f43343287..0013fea7e 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -156,13 +156,13 @@ GHGI_EE_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Aba GHGI_EE_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LANDFILLS_MSQ molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__MCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__SCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__SCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc @@ -182,13 +182,13 @@ GHGI_EE_COAST_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Aba GHGI_EE_COAST_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAST_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAST_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LANDFILLS_MSQ molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAST_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAST_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAST_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAST_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__MCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__SCOM molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__SCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAST_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAST_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAST_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc @@ -290,8 +290,8 @@ CH4_SEEPS kg/m2/s N Y - none none emi_ch4 ./HcoDir/CH4/v2020-04/Seeps/Etiope_C #CH4_LAKES kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2022-11/Lakes/Maasakkers_Lakes_%y4.01x01.nc # --- Emissions from reservoirs (Delwich et al 2022) --- -CH4_RES_DAM kg/m2/s N Y - CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Potential_Dam_Emissions.0.1x0.1.nc -CH4_RES_SFC kg/m2/s N Y - CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Surface_Emissions.0.1x0.1.nc +CH4_RES_DAM kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Dam_Emissions.0.1x0.1.nc +CH4_RES_SFC kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Surface_Emissions.0.1x0.1.nc # --- Emissions from termites (Fung et al 1991) --- CH4_TERMITES kg/m2/s N Y - none none CH4 ./HcoDir/CH4/v2022-11/4x5/termites.geos.4x5.nc @@ -499,16 +499,16 @@ GMI_PROD_CO v/v/s 2005 Y F%y4-%m2-01T00:00:00 none none prod ./HcoDir/GMI/v2022 ############################################################################### # GHGI seasonal scale factors -GHGI_OTH_STA_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc -GHGI_OIL_EXP_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc -GHGI_OIL_PRD_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc -GHGI_OIL_REF_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc -GHGI_OIL_TRA_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc -GHGI_GAS_EXP_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc -GHGI_GAS_PRD_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc -GHGI_LIV_MAN_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc -GHGI_RIC_CUL_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc -GHGI_OTH_BUR_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc +GHGI_OTH_STA_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_OIL_EXP_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_OIL_PRD_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_OIL_REF_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_OIL_TRA_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_GAS_EXP_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_GAS_PRD_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_LIV_MAN_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_RIC_CUL_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_OTH_BUR_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc # --- CO2 diurnal and weekly scale factors --- CO2_DIURNAL 1 N Y F%y4-%m2-%d2T%h2:00:00 none none diurnal_scale_factors ./HcoDir/CO2/v2015-04/FOSSIL/TIMES_diurnal_scale_factors.nc diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index b446ba8b5..501a12f9c 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -134,8 +134,8 @@ Mask fractions: false --> RCP_60 : false # 2005-2100 --> RCP_85 : false # 2005-2100 # ----- NON-EMISSIONS DATA ---------------------------------------------------- - --> OLSON_LANDMAP : true # 1985 - --> YUAN_MODIS_LAI : true # 2000-2020 + --> OLSON_LANDMAP : false # 1985 + --> YUAN_MODIS_LAI : false # 2000-2020 --> GLOBAL_OH_GC14 : false # 2010-2019 --> GLOBAL_OH_GCv5 : true # 1985 (recommended for CH4) # ----------------------------------------------------------------------------- @@ -1360,9 +1360,11 @@ ${RUNDIR_PCO_NMVOC} # --- Recommended for use in forward modelling --- # --- Optional for inversion/assimilation -------- +(((USE_CO2_DATA (((CO2_COPROD ${RUNDIR_CO2_COPROD} )))CO2_COPROD +)))USE_CO2_DATA )))CHEMISTRY_INPUT @@ -1625,10 +1627,12 @@ ${RUNDIR_CO2_COPROD} # # These temporal scale factors are described in Nassar et al. (2013) #============================================================================== +(((USE_CO2_DATA (((FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR 440 CO2_DIURNAL $ROOT/CO2/v2015-04/FOSSIL/TIMES_diurnal_scale_factors.nc diurnal_scale_factors 2006/1/1/1-24 C xy 1 1 441 CO2_WEEKLY $ROOT/CO2/v2015-04/FOSSIL/TIMES_weekly_scale_factors.nc weekly_scale_factors 2006/1/WD/0 C xy 1 1 )))FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR +)))USE_CO2_DATA #============================================================================== # --- DOMESTIC AVIATION SURFACE CORRECTION FACTOR --- @@ -1638,9 +1642,11 @@ ${RUNDIR_CO2_COPROD} # counted in the air as a 3D field. This scale factor should be applied to the # main/national fossil fuel emission field if using avaition emissions. #============================================================================== +(((USE_CO2_DATA (((FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR 480 AVIATION_SURF_CORR $ROOT/CO2/v2022-11/FOSSIL/Aviation_SurfCorr_SclFac.1x1.nc CO2 2004/1/1/0 C xy 1 1 )))FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR +)))USE_CO2_DATA #============================================================================== # --- CO: HTAP Annual scale factors --- From 906f1f14f14c16f70f55550e7efb673b84802cc8 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 12 Jan 2024 12:33:58 -0500 Subject: [PATCH 042/331] Fix incorrect entries for EDGARv7 in HEMCO_Config, ExtData templates This commit applies fixes for the problem described in #2115 run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 run/GCHP/ExtData.rc.templates/ExtData.rc.carbon - Remove EDGAR7_CH4_OIL__1B2a, EDGAR7_CH4_OIL__1B2c, and EDGAR7_CH4_COAL__1B1a. These entries read from files which do not exist in the EDGARv7 inventory. - Add entry for EDGAR7_CH4_OILGASCOAL__1B1_1B2, which is the replacement for the previous entries. - NOTE: Normally, these entries are superseded by GFEI, which has a higher hierarchy. But these modifications are necessary if a user should ever disable GFEI emissions. run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 - I wasn't sure how to update these entries, so I put a comment. Will get to this later. Signed-off-by: Bob Yantosca --- .../HEMCO_Config.rc.CH4 | 46 +++++++++--------- .../HEMCO_Config.rc.carbon | 48 ++++++++----------- .../HEMCO_Config.rc.tagCH4 | 1 + .../ExtData.rc.templates/ExtData.rc.carbon | 45 ++++++++--------- .../HEMCO_Config.rc.carbon | 48 ++++++++----------- 5 files changed, 89 insertions(+), 99 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index 428f5fec5..96e9c0962 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -400,43 +400,43 @@ VerboseOnCores: root # Accepted values: root all # computed from EDGARv6.0 monthly emissions. #============================================================================== (((EDGARv7 -### Oil ### -0 EDGAR7_CH4_OIL__1B2a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 32 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 34 1 1 +### Oil, gas, coal ### +0 EDGAR7_CH4_OILGASCOAL__1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 729 1 1 +0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 34 1 1 ### Gas ### -0 EDGAR7_CH4_OIL__1B2c $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 31 2 1 +0 EDGAR7_CH4_OIL__1B2c $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 31 2 1 ### Coal ### -0 EDGAR7_CH4_COAL__1B1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 30 3 1 +0 EDGAR7_CH4_COAL__1B1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 30 3 1 ### Livestock ### -0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 24 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 28 4 1 +0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 24 4 1 +0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 28 4 1 ### Landfills ### -0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 36 5 1 +0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 36 5 1 ### Wastewater ### -0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 43 6 1 +0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 43 6 1 ### Rice ### -0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 20 7 1 +0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 20 7 1 ### Other Anthro ### -0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 23 8 1 -0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 26 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 37 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 38 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 39 8 1 -0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 42 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 40 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 41 8 1 -0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 33 8 1 -0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 22 8 1 -0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 27 8 1 -0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 21 8 1 -0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 35 8 1 +0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 23 8 1 +0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 26 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 37 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 38 8 1 +0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 39 8 1 +0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 42 8 1 +0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 40 8 1 +0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 41 8 1 +0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 33 8 1 +0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 22 8 1 +0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 27 8 1 +0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 21 8 1 +0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 35 8 1 )))EDGARv7 #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index f4c4d39e1..f8118e8d5 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -427,43 +427,37 @@ Mask fractions: false # computed from EDGARv6.0 monthly emissions. #============================================================================== (((EDGARv7 -### Oil ### -0 EDGAR7_CH4_OIL__1B2a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 732 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 734 1 1 - -### Gas ### -0 EDGAR7_CH4_OIL__1B2c $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 731 2 1 - -### Coal ### -0 EDGAR7_CH4_COAL__1B1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 730 3 1 +### Oil. gas, coal ### +0 EDGAR7_CH4_OILGASCOAL__1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 729 1 1 +0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 734 1 1 ### Livestock ### -0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 724 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 728 4 1 +0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 724 4 1 +0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 728 4 1 ### Landfills ### -0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 736 5 1 +0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 736 5 1 ### Wastewater ### -0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 743 6 1 +0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 743 6 1 ### Rice ### -0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 720 7 1 +0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 720 7 1 ### Other Anthro ### -0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 723 8 1 -0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 726 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 737 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 738 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 739 8 1 -0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 742 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 740 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 741 8 1 -0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 733 8 1 -0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 722 8 1 -0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 727 8 1 -0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 721 8 1 -0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 735 8 1 +0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 723 8 1 +0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 726 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 737 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 738 8 1 +0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 739 8 1 +0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 742 8 1 +0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 740 8 1 +0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 741 8 1 +0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 733 8 1 +0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 722 8 1 +0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 727 8 1 +0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 721 8 1 +0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 735 8 1 )))EDGARv7 #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index de0a3dc06..ff6005226 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -571,6 +571,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== (((EDGARv7 ### Oil ### +#### NOTE: EDGARv7 has oil, gas, coal in the "PRO" sector file 0 EDGAR7_CH4_OIL__1B2a_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OIL 32 1 1 0 EDGAR7_CH4_OIL__1B2a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 32 1 1 0 EDGAR7_CH4_OTHER__1A1_1B1_1B2_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 34 1 1 diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index 0013fea7e..e66b713e8 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -237,29 +237,30 @@ GFEI_CH4_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Gl GFEI_CH4_GAS kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Gas_All.nc GFEI_CH4_COAL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Coal.nc +# --- EDGAR v6.0 --- +# Add files here + # --- EDGAR v7.0 --- -EDGAR7_CH4_OIL__1B2a kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_PRO_OIL.0.1x0.1.nc -EDGAR7_CH4_OIL__1B2c kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_PRO_GAS.0.1x0.1.nc -EDGAR7_CH4_COAL__1B1a kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_PRO_COAL.0.1x0.1.nc -EDGAR7_CH4_LIVESTOCK__4A kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENF.0.1x0.1.nc -EDGAR7_CH4_LIVESTOCK__4B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_MNM.0.1x0.1.nc -EDGAR7_CH4_LANDFILLS__6A_6D kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_SWD_LDF.0.1x0.1.nc -EDGAR7_CH4_WASTEWATER__6B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_WWT.0.1x0.1.nc -EDGAR7_CH4_RICE__4C_4D kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_AGS.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A1_1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_REF_TRF.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A1a kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENE.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_IND.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3a_CDS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_CDS.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3a_CRS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_CRS.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3a_LTO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_LTO.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3b kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TRO_noRES.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3c_1A3e kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Other.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3d_1C2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Ship.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A4 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_RCO.0.1x0.1.nc -EDGAR7_CH4_OTHER__2B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_CHE.0.1x0.1.nc -EDGAR7_CH4_OTHER__2C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_IRO.0.1x0.1.nc -EDGAR7_CH4_OTHER__4F kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_AWB.0.1x0.1.nc -EDGAR7_CH4_OTHER__6C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_SWD_INC.0.1x0.1.nc +EDGAR7_CH4_OILGASCOAL__1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_PRO.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A1_1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_REF_TRF.0.1x0.1.nc +EDGAR7_CH4_LIVESTOCK__4A kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENF.0.1x0.1.nc +EDGAR7_CH4_LIVESTOCK__4B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_MNM.0.1x0.1.nc +EDGAR7_CH4_LANDFILLS__6A_6D kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_SWD_LDF.0.1x0.1.nc +EDGAR7_CH4_WASTEWATER__6B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_WWT.0.1x0.1.nc +EDGAR7_CH4_RICE__4C_4D kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_AGS.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A1a kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENE.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_IND.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3a_CDS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_CDS.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3a_CRS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_CRS.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3a_LTO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_LTO.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3b kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TRO_noRES.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3c_1A3e kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Other.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3d_1C2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Ship.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A4 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_RCO.0.1x0.1.nc +EDGAR7_CH4_OTHER__2B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_CHE.0.1x0.1.nc +EDGAR7_CH4_OTHER__2C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_IRO.0.1x0.1.nc +EDGAR7_CH4_OTHER__4F kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_AWB.0.1x0.1.nc +EDGAR7_CH4_OTHER__6C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_SWD_INC.0.1x0.1.nc # --- CH4: CEDS (historical) or Shared Socioeconomic Pathways (future) --- # --- NOTE: This is only for GCAP2 meteorology, so we can comment out --- diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 501a12f9c..7e1e78c6b 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -427,43 +427,37 @@ Mask fractions: false # computed from EDGARv6.0 monthly emissions. #============================================================================== (((EDGARv7 -### Oil ### -0 EDGAR7_CH4_OIL__1B2a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 732 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 734 1 1 - -### Gas ### -0 EDGAR7_CH4_OIL__1B2c $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 731 2 1 - -### Coal ### -0 EDGAR7_CH4_COAL__1B1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 730 3 1 +### Oil. gas, coal ### +0 EDGAR7_CH4_OILGASCOAL__1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 729 1 1 +0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 734 1 1 ### Livestock ### -0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 724 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 728 4 1 +0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 724 4 1 +0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 728 4 1 ### Landfills ### -0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 736 5 1 +0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 736 5 1 ### Wastewater ### -0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 743 6 1 +0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 743 6 1 ### Rice ### -0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 720 7 1 +0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 720 7 1 ### Other Anthro ### -0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 723 8 1 -0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 726 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 737 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 738 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 739 8 1 -0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 742 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 740 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 741 8 1 -0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 733 8 1 -0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 722 8 1 -0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 727 8 1 -0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 721 8 1 -0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 735 8 1 +0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 723 8 1 +0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 726 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 737 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 738 8 1 +0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 739 8 1 +0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 742 8 1 +0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 740 8 1 +0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 741 8 1 +0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 733 8 1 +0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 722 8 1 +0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 727 8 1 +0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 721 8 1 +0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 735 8 1 )))EDGARv7 #============================================================================== From 63e7a153b7b69aff46a9ce310799b1071a868ad1 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 12 Jan 2024 17:20:44 -0500 Subject: [PATCH 043/331] Now read CO2_COPROD data at 72L for CO2, carbon simulations run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon - Wrap CO2_CO2PROD entry with (((USE_CO2_DATA and )))USE_CO2_DATA run/GCHP/ExtData.rc.templates/ExtData.rc.carbon - Now read CO2_COPROD data from CO2_prod_rates.GEOS5_2x25.72L.nc, which is vertically interpolated from the 47L file. run/shared/settings/gmao_hemco.txt - Edit RUNDIR_CO2_CO2PROD entry to read CO2_prod_rates.GEOS5_2x25.72L.nc --- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 2 ++ run/GCHP/ExtData.rc.templates/ExtData.rc.carbon | 2 +- run/shared/settings/gmao_hemco.txt | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index f8118e8d5..17bacf224 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1354,9 +1354,11 @@ ${RUNDIR_PCO_NMVOC} # --- Recommended for use in forward modelling --- # --- Optional for inversion/assimilation -------- +(((USE_CO2_DATA (((CO2_COPROD ${RUNDIR_CO2_COPROD} )))CO2_COPROD +)))USE_CO2_DATA )))CHEMISTRY_INPUT diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index e66b713e8..09a7cdcba 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -431,7 +431,7 @@ CO2_ISOPRENE kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none ISOP ./HcoDir/ CO2_MONOTERP kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none MONOT ./HcoDir/CO2/v2022-11/CHEM/Monoterpene-2004.geos.2x25.nc # --- CO2 production from CO --- -#CO2_COPROD kgC/m3/s N Y F%y2-%m2-01T00:00:00 none none LCO ./HcoDir/CO2/v2022-11/CHEM/CO2_prod_rates.GEOS5.2x25.47L.nc +#CO2_COPROD kgC/m3/s N Y F%y2-%m2-01T00:00:00 none none LCO ./HcoDir/CO2/v2022-11/CHEM/CO2_prod_rates.GEOS5.2x25.72L.nc #============================================================================== # --- OCS flux data ---- diff --git a/run/shared/settings/gmao_hemco.txt b/run/shared/settings/gmao_hemco.txt index b3f1be5ea..7441853b7 100644 --- a/run/shared/settings/gmao_hemco.txt +++ b/run/shared/settings/gmao_hemco.txt @@ -49,7 +49,7 @@ RUNDIR_JBrO='* JBrO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValu RUNDIR_JH2O2='* JH2O2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValues.$YYYY$MM$DD_0000z.nc4 Jval_H2O2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_JNO2='* JNO2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValues.$YYYY$MM$DD_0000z.nc4 Jval_NO2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_CH4_LOSS='* CH4_LOSS $ROOT/CH4/v2023-04/GC_CH4_LOSS/GCC14_72LM.ch4loss.4x5.nc4 CH4loss 1985/1-12/1/0 C xyz s-1 * - 1 1' -RUNDIR_CO2_COPROD='* CO2_COPROD $ROOT/CO2/v2022-11/CHEM/CO2_prod_rates.GEOS5.2x25.47L.nc LCO 2004-2009/1-12/1/0 C xyz kgC/m3/s * - 1 1' +RUNDIR_CO2_COPROD='* CO2_COPROD $ROOT/CO2/v2022-11/CHEM/CO2_prod_rates.GEOS5.2x25.72L.nc LCO 2004-2009/1-12/1/0 C xyz kgC/m3/s * - 1 1' RUNDIR_Br_TOMCAT='* Br_TOMCAT $ROOT/MERCURY/v2014-09/BrOx/BrOx.GMI.geos5.2x25.nc LBRO2N 1985/1-12/1/0 C xyz pptv * - 1 1' RUNDIR_BrO_TOMCAT='* BrO_TOMCAT $ROOT/MERCURY/v2014-09/BrOx/BrOx.GMI.geos5.2x25.nc LBRO2H 1985/1-12/1/0 C xyz pptv * - 1 1' RUNDIR_GLOBAL_OC='1002 GLOBAL_OC $ROOT/POPs/v2015-08/OCPO.$met.$RES.nc OCPO 2005-2009/1-12/1/0 C xyz 1 * - 1 1' From d64bfd6b12b6423e93b5df9dfa00d73bac524b43 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 16 Jan 2024 11:42:03 -0500 Subject: [PATCH 044/331] Fix entry for GHGI_EE_GAS_TRANSMISSION; Reactivate CO2_CO2PROD run/gchp/ExtData.rc.templates/ExtData.rc.carbon - Fix typo: emi_ch4_1B2b_Natural_Gas_Transmission should have been emi_ch4_1B2b_Natural_Gas_TransmissionStorage - Update indentation of GHGI_EE_* filenames for consistency - Reactivate the CO2_COPROD entry, and point to the 72L file (which was interpolated from the 47L file). Signed-off-by: Bob Yantosca --- .../ExtData.rc.templates/ExtData.rc.carbon | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index 09a7cdcba..fcc52cccc 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -141,25 +141,25 @@ XLAIMULTI cm2_cm-2 N Y %y4-%m2-%d2T00:00:00 none none XLAIMULTI ./HcoDir/Yuan_XL # --- add lines here --- # --- CH4: Gridded GHGI v2 Express Extension (Maasakkers et al., submitted to ES&T, 2023) --- -GHGI_EE_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OIL_TRANSPORT molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Transmission ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OIL_TRANSPORT molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_TransmissionStorage ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OTHER__SCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc @@ -431,7 +431,7 @@ CO2_ISOPRENE kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none ISOP ./HcoDir/ CO2_MONOTERP kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none MONOT ./HcoDir/CO2/v2022-11/CHEM/Monoterpene-2004.geos.2x25.nc # --- CO2 production from CO --- -#CO2_COPROD kgC/m3/s N Y F%y2-%m2-01T00:00:00 none none LCO ./HcoDir/CO2/v2022-11/CHEM/CO2_prod_rates.GEOS5.2x25.72L.nc +CO2_COPROD kgC/m3/s N Y F%y2-%m2-01T00:00:00 none none LCO ./HcoDir/CO2/v2022-11/CHEM/CO2_prod_rates.GEOS5.2x25.72L.nc #============================================================================== # --- OCS flux data ---- From 29d450a903979e249d351448cf44b1a1f6563640 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 16 Jan 2024 13:39:42 -0500 Subject: [PATCH 045/331] Fix entry for GHGI_EE_COAST_GAS_TRANSMISSION run/GCHP/ExtData.rc.templates/ExtData.rc.carbon - As in the prior commit (d64bfd6b), we needed to fix the variable name suffix (Transmission -> TransmissionStorage) for the GHGI_EE_COAST_GAS_TRANSMISSION entry. - Also adjusted indentation to line up filenames for GHGI_EE_* Signed-off-by: Bob Yantosca --- .../ExtData.rc.templates/ExtData.rc.carbon | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index fcc52cccc..f60c5e55c 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -160,39 +160,39 @@ GHGI_EE_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Land GHGI_EE_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__SCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_TRANSPORT molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Transmission ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__SCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__SCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_TRANSPORT molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_TransmissionStorage ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__SCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc # --- Scarpelli Mexico --- MEX_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc From faaa3d798ca41506c78572fdc96f81bbedfd67ff Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 16 Jan 2024 16:04:18 -0500 Subject: [PATCH 046/331] Remove $DD token from 14.0.0 RUNDIR_GLOBAL_* entries in HEMCO_Config.rc run/shared/settings/gmao_hemco.txt - Change filename suffix for RUNDIR_GLOBAL_* entries: $YYYY$MM$DD -> $YYYY$MM01. This is because these data are archived as monthly means and not daily files. run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon - The GLOBAL_OH entry now reads from OH_3Dglobal.geos5.72L.4x5.nc OH. NOTE: This file path is ignored by GCHP, but this edit was made for consistency with the entry in the ExtData.rc file. Signed-off-by: Bob Yantosca --- .../HEMCO_Config.rc.carbon | 2 +- run/shared/settings/gmao_hemco.txt | 72 +++++++++---------- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 7e1e78c6b..4d5981ea5 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1293,7 +1293,7 @@ Mask fractions: false #------------------------------------------------------------------------------ # --- OH from GEOS-Chem v5-07 [kg/m3], needed for CH4/IMI --- (((GLOBAL_OH_GCv5 -* GLOBAL_OH $ROOT/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 +* GLOBAL_OH $ROOT/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.72L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 )))GLOBAL_OH_GCv5 # --- OH from the last 10-yr benchmark [mol/mol dry air] --- diff --git a/run/shared/settings/gmao_hemco.txt b/run/shared/settings/gmao_hemco.txt index 7441853b7..aaa6dcb76 100644 --- a/run/shared/settings/gmao_hemco.txt +++ b/run/shared/settings/gmao_hemco.txt @@ -11,43 +11,43 @@ RUNDIR_GCAP2_VERTRES='47' RUNDIR_Bry_DIR='STRAT/v2015-01/Bry' RUNDIR_GMI_DIR='GMI/v2015-02' RUNDIR_UCX_DIR='UCX/v2018-02' -RUNDIR_GLOBAL_ACTA='* GLOBAL_ACTA $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_ACTA 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_Br_GC='* Br_GC $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_Br 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_BrO_GC='* BrO_GC $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_BrO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_ACTA='* GLOBAL_ACTA $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_ACTA 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_Br_GC='* Br_GC $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_Br 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_BrO_GC='* BrO_GC $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_BrO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_CH4='* GLOBAL_CH4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_CH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_Cl='* GLOBAL_Cl $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_Cl 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_ClO='* GLOBAL_ClO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_ClO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_CO='* GLOBAL_CO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_CO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_HCl='* GLOBAL_HCl $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_HCl 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_HCOOH='* GLOBAL_HCOOH $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_HCOOH 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_HNO3='* GLOBAL_HNO3 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_HNO3 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_HO2='* GLOBAL_HO2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_HO2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_HOCl='* GLOBAL_HOCl $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_HOCl 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_NIT='* GLOBAL_NIT $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_NIT 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_NO='* GLOBAL_NO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_NO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_NO2='* GLOBAL_NO2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_NO2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_NO3='* GLOBAL_NO3 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_NO3 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_O3='* GLOBAL_O3 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_O3 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_OH='* GLOBAL_OH $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_OH 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_PM25='* GLOBAL_PM25 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.AerosolMass.$YYYY$MM$DD_0000z.nc4 PM25 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_AERO_SO4='* AERO_SO4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_SO4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_AERO_NH4='* AERO_NH4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_NH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_AERO_NIT='* AERO_NIT $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_NIT 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_AERO_BCPI='* AERO_BCPI $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_BCPI 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_AERO_BCPO='* AERO_BCPO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_BCPO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_AERO_OCPI='* AERO_OCPI $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_OCPI 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_AERO_OCPO='* AERO_OCPO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_OCPO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_AERO_DST1='* AERO_DST1 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM$DD_0000z.nc4 SpeciesConc_DST1 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_OA='* GLOBAL_OA $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.AerosolMass.$YYYY$MM$DD_0000z.nc4 TotalOA 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_PCO_CH4='* PCO_CH4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM$DD_0000z.nc4 ProdCOfromCH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_PCO_NMVOC='* PCO_NMVOC $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM$DD_0000z.nc4 ProdCOfromNMVOC 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_PH2O2='* PH2O2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM$DD_0000z.nc4 Prod_H2O2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_O3_PROD='* O3_PROD $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM$DD_0000z.nc4 Prod_Ox 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_O3_LOSS='* O3_LOSS $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM$DD_0000z.nc4 Loss_Ox 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_JBrO='* JBrO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValues.$YYYY$MM$DD_0000z.nc4 Jval_BrO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_JH2O2='* JH2O2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValues.$YYYY$MM$DD_0000z.nc4 Jval_H2O2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_JNO2='* JNO2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValues.$YYYY$MM$DD_0000z.nc4 Jval_NO2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_CH4='* GLOBAL_CH4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_CH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_Cl='* GLOBAL_Cl $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_Cl 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_ClO='* GLOBAL_ClO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_ClO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_CO='* GLOBAL_CO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_CO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_HCl='* GLOBAL_HCl $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_HCl 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_HCOOH='* GLOBAL_HCOOH $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_HCOOH 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_HNO3='* GLOBAL_HNO3 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_HNO3 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_HO2='* GLOBAL_HO2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_HO2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_HOCl='* GLOBAL_HOCl $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_HOCl 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_NIT='* GLOBAL_NIT $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_NIT 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_NO='* GLOBAL_NO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_NO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_NO2='* GLOBAL_NO2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_NO2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_NO3='* GLOBAL_NO3 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_NO3 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_O3='* GLOBAL_O3 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_O3 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_OH='* GLOBAL_OH $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_OH 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_PM25='* GLOBAL_PM25 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.AerosolMass.$YYYY$MM01_0000z.nc4 PM25 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_AERO_SO4='* AERO_SO4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_SO4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_AERO_NH4='* AERO_NH4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_NH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_AERO_NIT='* AERO_NIT $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_NIT 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_AERO_BCPI='* AERO_BCPI $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_BCPI 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_AERO_BCPO='* AERO_BCPO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_BCPO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_AERO_OCPI='* AERO_OCPI $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_OCPI 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_AERO_OCPO='* AERO_OCPO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_OCPO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_AERO_DST1='* AERO_DST1 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_DST1 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_OA='* GLOBAL_OA $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.AerosolMass.$YYYY$MM01_0000z.nc4 TotalOA 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_PCO_CH4='* PCO_CH4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromCH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_PCO_NMVOC='* PCO_NMVOC $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromNMVOC 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_PH2O2='* PH2O2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 Prod_H2O2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_O3_PROD='* O3_PROD $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 Prod_Ox 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_O3_LOSS='* O3_LOSS $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 Loss_Ox 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_JBrO='* JBrO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValues.$YYYY$MM01_0000z.nc4 Jval_BrO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_JH2O2='* JH2O2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValues.$YYYY$MM01_0000z.nc4 Jval_H2O2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_JNO2='* JNO2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValues.$YYYY$MM01_0000z.nc4 Jval_NO2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_CH4_LOSS='* CH4_LOSS $ROOT/CH4/v2023-04/GC_CH4_LOSS/GCC14_72LM.ch4loss.4x5.nc4 CH4loss 1985/1-12/1/0 C xyz s-1 * - 1 1' RUNDIR_CO2_COPROD='* CO2_COPROD $ROOT/CO2/v2022-11/CHEM/CO2_prod_rates.GEOS5.2x25.72L.nc LCO 2004-2009/1-12/1/0 C xyz kgC/m3/s * - 1 1' RUNDIR_Br_TOMCAT='* Br_TOMCAT $ROOT/MERCURY/v2014-09/BrOx/BrOx.GMI.geos5.2x25.nc LBRO2N 1985/1-12/1/0 C xyz pptv * - 1 1' From 9baf788ada8f249cb99f9b551a607416ab809e15 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 17 Jan 2024 15:36:00 -0500 Subject: [PATCH 047/331] Rename NEI2016 mask in carbon config files to avoid name collision run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon - Renamed the NEI2016_MONMEAN "CONUS_MASK" to "NEI_CONUS_MASK" in order to avoid a namespace collision w/ the GHGI CONUS MASK that would occur if NEI2016_MONMEAN is ever activated. Signed-off-by: Bob Yantosca --- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 3 ++- run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 17bacf224..e76dde6c2 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1692,8 +1692,9 @@ ${RUNDIR_CO2_COPROD} 2002 CANADA_MASK $ROOT/MASKS/v2018-09/Canada_mask.geos.1x1.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))APEI +# Renamed to avoid a namespace collision w/ GHGI mask above!!! (((NEI2016_MONMEAN -2007 CONUS_MASK $ROOT/MASKS/v2018-09/CONUS_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +2007 NEI_CONUS_MASK $ROOT/MASKS/v2018-09/CONUS_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 )))NEI2016_MONMEAN (((DICE_Africa diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 4d5981ea5..533367da4 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1696,8 +1696,9 @@ ${RUNDIR_CO2_COPROD} 2002 CANADA_MASK $ROOT/MASKS/v2018-09/Canada_mask.geos.1x1.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))APEI +# Renamed to avoid a namespace collision w/ GHGI mask above!!! (((NEI2016_MONMEAN -2007 CONUS_MASK $ROOT/MASKS/v2018-09/CONUS_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +2007 NEI_CONUS_MASK $ROOT/MASKS/v2018-09/CONUS_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 )))NEI2016_MONMEAN (((DICE_Africa From 98435d78ff57e6e666b3caf2a3d817cc56f5370a Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 17 Jan 2024 15:55:19 -0500 Subject: [PATCH 048/331] Update singleCarbonSpecies.sh to remove non-emissions data entries run/shared/singleCarbonSpecies.sh - If CH4 is excluded, also remove these entries from ExtData.rc: - EMIS_SF, OH_SF, CH4_LOSS, GLOBAL_Cl, MANURE_SF, RICE_SF, EDGAR_SEASONAL_SF, CONUS_ - If CO2 is excluded, also remove these entries from ExtData.rc: - AVIATION_SURF_CORR - If CO is excluded, also remove these entries from ExtData.rc: - PCO_CH4, PCO_NMVOC, GMI_LOSS_CO, GMI_PROD_CO, NEI99_DOW_CO, LIQFUEL_ - If OCS is excluded, also remove these entries from ExtData.rc: - StoOCS This should prevent GCHP errors caused by ExtData.rc entries for other species except the one being kept in a single-species carbon simulation. Signed-off-by: Bob Yantosca --- run/shared/singleCarbonSpecies.sh | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/run/shared/singleCarbonSpecies.sh b/run/shared/singleCarbonSpecies.sh index 775a11574..5eb4b123c 100755 --- a/run/shared/singleCarbonSpecies.sh +++ b/run/shared/singleCarbonSpecies.sh @@ -253,17 +253,24 @@ function updateExtData() { sed -i "/^CAN_/d" "${file}" sed -i "/^GFEI_/d" "${file}" sed -i "/^EDGAR7_CH4_/d" "${file}" - sed -i "/^CAN_/d" "${file}" + sed -i "/CMIP6_CH4_/d" "${file}" + sed -i "/CMIP6_BB_CH4/d" "${file}" sed -i "/^UPDATED_GFED4_CH4/d" "${file}" sed -i "/^JPLW_CH4/d" "${file}" sed -i "/^CH4_/d" "${file}" sed -i "/^\#CH4_/d" "${file}" - sed -i "/CMIP6_CH4_/d" "${file}" - sed -i "/CMIP6_BB_CH4/d" "${file}" sed -i "/RCP3PD_CH4/d" "${file}" sed -i "/RCP45_CH4/d" "${file}" sed -i "/RCP60_CH4/d" "${file}" sed -i "/RCP85_CH4/d" "${file}" + sed -i "/^EMIS_SF/d" "${file}" + sed -i "/^OH_SF/d" "${file}" + sed -i "/^CH4_LOSS/d" "${file}" + sed -i "/^GLOBAL_Cl/d" "${file}" + sed -i "/^MANURE_SF/d" "${file}" + sed -i "/^RICE_SF/d" "${file}" + sed -i "/^EDGAR_SEASONAL_SF/d" "${file}" + sed -i "/^CONUS_/d" "${file}" fi # If CO2 is in the exclude list, remove CO2 entries. @@ -280,6 +287,7 @@ function updateExtData() { sed -i "/ICOADS_CO2_/d" "${file}" sed -i "/OCEANCO2_/d" "${file}" sed -i "/SIB_BBIO_CO2/d" "${file}" + sed -i "/AVIATION_SURF_CORR/d" "${file}" fi # If CO is in the exclude list, remove CO entries @@ -298,12 +306,19 @@ function updateExtData() { sed -i "/RCP45_CO/d" "${file}" sed -i "/RCP60_CO/d" "${file}" sed -i "/RCP85_CO/d" "${file}" + sed -i "/PCO_CH4/d" "${file}" + sed -i "/PCO_NMVOC/d" "${file}" + sed -i "/GMI_LOSS_CO/d" "${file}" + sed -i "/GMI_PROD_CO/d" "${file}" + sed -i "/NEI99_DOW_CO/d" "${file}" + sed -i "/LIQFUEL_/d" "${file}" fi # If OSC is in the exclude list, remove OCS entries isItemInList "OCS" "${1}" if [[ $? == 0 ]]; then sed -i "/^OCS_/d" "${file}" + sed -i "/^StoOCS_/d" "${file}" fi } From c3a0dd10720dc6e545415324a8db59e45475847a Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 18 Jan 2024 17:52:35 -0500 Subject: [PATCH 049/331] Further updates in the singleCarbonSpecies.sh script run/shared/singleCarbonSpecies.sh - Now only loop over the exclude list in function updateHistory - Do not remove CH4_LOSS, GLOBAL_Cl, PCO_CH4, PCO_NMVOC, GMI_LOSS_CO, GMI_PROD_CO containers from ExtData.rc. These are needed for chemistry inputs. Signed-off-by: Bob Yantosca --- run/shared/singleCarbonSpecies.sh | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/run/shared/singleCarbonSpecies.sh b/run/shared/singleCarbonSpecies.sh index 5eb4b123c..fdcdc11a3 100755 --- a/run/shared/singleCarbonSpecies.sh +++ b/run/shared/singleCarbonSpecies.sh @@ -219,12 +219,9 @@ function updateHistory() { file="${2}/HISTORY.rc" # For GCHP: remove entries for species to be excluded - for spc in ${ALL_SPECIES[@]}; do - isItemInList "${spc}" "${1}" - if [[ $? == 0 ]]; then - sed -i "/\_${spc}/d" "${file}" - sed -i "/Emis${spc}/d" "${file}" - fi + for spc in ${1}; do + sed -i "/\_${spc}/d" "${file}" + sed -i "/Emis${spc}/d" "${file}" done } @@ -265,8 +262,6 @@ function updateExtData() { sed -i "/RCP85_CH4/d" "${file}" sed -i "/^EMIS_SF/d" "${file}" sed -i "/^OH_SF/d" "${file}" - sed -i "/^CH4_LOSS/d" "${file}" - sed -i "/^GLOBAL_Cl/d" "${file}" sed -i "/^MANURE_SF/d" "${file}" sed -i "/^RICE_SF/d" "${file}" sed -i "/^EDGAR_SEASONAL_SF/d" "${file}" @@ -306,10 +301,6 @@ function updateExtData() { sed -i "/RCP45_CO/d" "${file}" sed -i "/RCP60_CO/d" "${file}" sed -i "/RCP85_CO/d" "${file}" - sed -i "/PCO_CH4/d" "${file}" - sed -i "/PCO_NMVOC/d" "${file}" - sed -i "/GMI_LOSS_CO/d" "${file}" - sed -i "/GMI_PROD_CO/d" "${file}" sed -i "/NEI99_DOW_CO/d" "${file}" sed -i "/LIQFUEL_/d" "${file}" fi From 0be488eca2d5cbaa2572161558dc6afc3385a340 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 19 Jan 2024 17:35:58 -0500 Subject: [PATCH 050/331] Update carbon simulation HEMCO_Config.rc and ExtData.rc templates run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon - Update file paths of certain inventories to use the corrected netCDF files in the HEMCO/CH4/v2024-01 subdirs - Reorder scale factors section by CH4, CO, CO2, and wrap with (((USE_CH4_DATA, (((USE_CO_DATA, (((USE_CO2_DATA blocks. - Comment out unused scale factors for EDGARv7 run/GCHP/ExtData.rc.templates/ExtData.rc.carbon - Remove entries that are not defaults - Also add comments to remind user to comment out entries when correspoinding entries in HEMCO_Config.rc are turned off Signed-off-by: Bob Yantosca --- .../HEMCO_Config.rc.carbon | 388 +++++++++-------- .../ExtData.rc.templates/ExtData.rc.carbon | 333 +++++++++------ .../HEMCO_Config.rc.carbon | 395 +++++++++--------- 3 files changed, 618 insertions(+), 498 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index e76dde6c2..8de5ee3fe 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -428,36 +428,36 @@ Mask fractions: false #============================================================================== (((EDGARv7 ### Oil. gas, coal ### -0 EDGAR7_CH4_OILGASCOAL__1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 729 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 734 1 1 +0 EDGAR7_CH4_OILGASCOAL__1B1_1B2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 729 1 1 +0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 734 1 1 ### Livestock ### -0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 724 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 728 4 1 +0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 724 4 1 +0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 728 4 1 ### Landfills ### -0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 736 5 1 +0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 736 5 1 ### Wastewater ### -0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 743 6 1 +0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 743 6 1 ### Rice ### -0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 720 7 1 +0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 720 7 1 ### Other Anthro ### -0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 723 8 1 -0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 726 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 737 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 738 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 739 8 1 -0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 742 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 740 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 741 8 1 -0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 733 8 1 -0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 722 8 1 -0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 727 8 1 -0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 721 8 1 -0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 735 8 1 +0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 723 8 1 +0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 726 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 737 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 738 8 1 +0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 739 8 1 +0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 742 8 1 +0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 740 8 1 +0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 741 8 1 +0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 733 8 1 +0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 722 8 1 +0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 727 8 1 +0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 721 8 1 +0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 735 8 1 )))EDGARv7 #============================================================================== @@ -497,7 +497,7 @@ Mask fractions: false # --- CH4: JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- #============================================================================== (((JPL_WETCHARTS -0 JPLW_CH4 $ROOT/CH4/v2020-09/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4 - 10 1 +0 JPLW_CH4 $ROOT/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4 - 10 1 )))JPL_WETCHARTS #============================================================================== @@ -518,8 +518,8 @@ Mask fractions: false # --- Emissions from Hydroelectric Reservoirs (Delwich et al., 2022) --- #============================================================================== (((RESERVOIRS -0 CH4_RES_DAM $ROOT/CH4/v2023-04/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 -0 CH4_RES_SFC $ROOT/CH4/v2023-04/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 +0 CH4_RES_DAM $ROOT/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 +0 CH4_RES_SFC $ROOT/CH4/v2024-01/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 )))RESERVOIRS #============================================================================== @@ -1313,8 +1313,10 @@ ${RUNDIR_CH4_LOSS} )))CH4_LOSS_FREQ # --- Global Cl [mol/mol dry air] --- +# NOTE: This file has all non-COARDS-compliant elements removed! +# GCHP cannot read this data otherwise. (Bob Yantosca, 19 Jan 2024) (((GLOBAL_CL -${RUNDIR_GLOBAL_Cl} +* GLOBAL_Cl $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_Cl 2010-2019/1-12/1/0 C xyz 1 * - 1 1 )))GLOBAL_CL #------------------------------------------------------------------------------ @@ -1322,11 +1324,13 @@ ${RUNDIR_GLOBAL_Cl} #------------------------------------------------------------------------------ # -- P(CO) from CH4 and NMVOC from the last 10-yr benchmark [molec/cm3/s] --- +# NOTE: These files has all non-COARDS-compliant elements removed! +# GCHP cannot read this data otherwise. (Bob Yantosca, 19 Jan 2024) (((PROD_CO_CH4 -${RUNDIR_PCO_CH4} +* PCO_CH4 $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromCH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1 )))PROD_CO_CH4 (((PROD_CO_NMVOC -${RUNDIR_PCO_NMVOC} +* PCO_NMVOC $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromNMVOC 2010-2019/1-12/1/0 C xyz 1 * - 1 1 )))PROD_CO_NMVOC # --- GMI chemistry: prod/loss rates (for strato-/mesosphere) --- @@ -1370,24 +1374,29 @@ ${RUNDIR_CO2_COPROD} # ScalID Name sourceFile sourceVar sourceTime C/R/E SrcDim SrcUnit Oper -#============================================================================== +#------------------------------------------------------------------------------ # --- Multiply by -1 to get a "negative" flux. -#============================================================================== +#------------------------------------------------------------------------------ 1 NEGATIVE -1.0 - - - xy 1 1 -#============================================================================== +#------------------------------------------------------------------------------ # --- Perturbation factors --- # # Add factors to perturb OH, emissions, and other fields here for # analytical inversions. -#============================================================================== +#------------------------------------------------------------------------------ 2 OH_pert_factor 1.0 - - - xy 1 1 (((EMISSIONS #============================================================================== -# --- Seasonal scaling factors ---- +# --- Scale factors for CH4 emissions ---- #============================================================================== +(((USE_CH4_DATA + +#------------------------------------------------------------------------------ +# --- GHGI monthly scaling factors --- +#------------------------------------------------------------------------------ (((GHGI_v2.or.GHGI_v2_Express_Ext 50 GHGI_OTH_STA_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1A_Combustion_Stationary 2012-2018/1-12/1/0 C xy 1 1 51 GHGI_OIL_EXP_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 C xy 1 1 @@ -1401,11 +1410,17 @@ ${RUNDIR_CO2_COPROD} 59 GHGI_OTH_BUR_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_3F_Field_Burning 2012-2018/1-12/1/0 C xy 1 1 )))GHGI_v2.or.GHGI_v2_Express_Ext -(((Scarpelli_Mexico.or.Scarpelli_Canada +#------------------------------------------------------------------------------ +# --- Scarpelli et al Mexico manure & rice scale factors --- +#------------------------------------------------------------------------------ +(((Scarpelli_Mexico 10 MANURE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Manure_ScalingFactors.WithClimatology.nc sf_ch4 2008-2016/1-12/1/0 C xy 1 1 -11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 -)))Scarpelli_Mexico.or.Scarpelli_Canada +11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 +)))Scarpelli_Mexico +#------------------------------------------------------------------------------ +# --- EDGAR scale factors --- +#------------------------------------------------------------------------------ (((EDGARv7 720 EDGAR_SEASONAL_SF_AGS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 721 EDGAR_SEASONAL_SF_AWB $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AWB.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 @@ -1417,9 +1432,10 @@ ${RUNDIR_CO2_COPROD} 727 EDGAR_SEASONAL_SF_IRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 728 EDGAR_SEASONAL_SF_MNM $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_MNM.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 729 EDGAR_SEASONAL_SF_PRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -730 EDGAR_SEASONAL_SF_PRO_COAL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -731 EDGAR_SEASONAL_SF_PRO_GAS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -732 EDGAR_SEASONAL_SF_PRO_OIL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +# These 3 fields are only needed for EDGARv6 (Bob Yantosca, 19 Jan 2024) +#730 EDGAR_SEASONAL_SF_PRO_COAL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +#731 EDGAR_SEASONAL_SF_PRO_GAS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +#732 EDGAR_SEASONAL_SF_PRO_OIL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 733 EDGAR_SEASONAL_SF_RCO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_RCO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 734 EDGAR_SEASONAL_SF_REF_TRF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_REF_TRF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 735 EDGAR_SEASONAL_SF_SWD_INC $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_INC.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 @@ -1433,85 +1449,143 @@ ${RUNDIR_CO2_COPROD} 743 EDGAR_SEASONAL_SF_WWT $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_WWT.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 )))EDGARv7 -#============================================================================== -# --- Diurnal scale factors --- -#============================================================================== -26 GEIA_TOD_FOSSIL 0.45/0.45/0.6/0.6/0.6/0.6/1.45/1.45/1.45/1.45/1.4/1.4/1.4/1.4/1.45/1.45/1.45/1.45/0.65/0.65/0.65/0.65/0.45/0.45 - - - xy 1 1 +)))USE_CH4_DATA #============================================================================== -# --- Seasonal scale factors --- +# --- Scale factors for CO2 emissions --- #============================================================================== -(((DICE_Africa -# from GEIA: -30 GEIA_SEASON_NOX $ROOT/GEIA/v2014-07/GEIA_monthscal.generic.1x1.nc NOXrat 1985/1-12/1/0 C xy unitless 1 -31 GEIA_SEASON_SO2 $ROOT/GEIA/v2014-07/GEIA_monthscal.generic.1x1.nc SO2rat 1985/1-12/1/0 C xy unitless 1 -)))DICE_Africa +(((USE_CO2_DATA -#============================================================================== -# Diurnal variablity of Chinese power plants from Liu et al. (EST, 2019) -#============================================================================== -33 PKU_pow_NOx 0.94/0.93/0.93/0.92/0.93/0.96/0.98/0.99/0.98/1.00/1.05/1.03/1.01/1.04/1.05/1.05/1.07/1.06/1.05/1.05/1.03/1.01/0.99/0.96 - - - xy unitless 1 2009 -34 PKU_pow_SO2 0.92/0.91/0.90/0.89/0.90/0.93/0.97/0.98/0.99/1.02/1.07/1.04/1.03/1.06/1.06/1.07/1.10/1.10/1.06/1.05/1.03/1.01/0.99/0.93 - - - xy unitless 1 2009 -35 PKU_pow_PM_BC_POC_VOC_CO 0.95/0.93/0.92/0.91/0.90/0.93/0.97/0.97/0.99/1.03/1.04/1.03/1.02/1.03/1.05/1.07/1.07/1.07/1.06/1.04/1.03/1.02/1.00/0.97 - - - xy unitless 1 2009 +#------------------------------------------------------------------------------ +# --- FOSSIL FUEL CO2 SURFACE CORRECTION FACTOR --- +# +# Fossil fuel CO2 emissions must be scaled down to avoid counting emissions +# already accounted for by CO and CH4 oxidation to CO2. +# +# The necssary annual reduction in emissions related to fossil fuels is +# determined as: global C mass from FF (CO+CH4) / global C mass from FF CO2 +# +# Note: GEOS-Chem v8-03-02 to v9-02, assumed: 0.0489 for all years but that +# value seems to correspond to mid-1980s fossil fuel combustion since CO +# emissions have held constant (Granier et al., 2011) while CO2 has risen. +# +# All scale factors for years 2000-2013 lumped into a single entry +#------------------------------------------------------------------------------ +(((CO2CORR +#410 CO2_FOSSFUEL_CORR 0.0489 - - - xy 1 1 -### These scale factors undo (Oper=-1) the global diurnal scale factors over China (Mask=2009) -#36 EDGAR_TODNOX_UNDO $ROOT/EDGARv42/v2015-02/NO/EDGAR_hourly_NOxScal.nc NOXscale 2000/1/1/* C xy unitless -1 2009 -37 GEIA_TOD_FOSSIL_UNDO 0.45/0.45/0.6/0.6/0.6/0.6/1.45/1.45/1.45/1.45/1.4/1.4/1.4/1.4/1.45/1.45/1.45/1.45/0.65/0.65/0.65/0.65/0.45/0.45 - - - xy unitless -1 2009 +## CO2 scale factors from CO oxidation by decade (comment out for now) +##410 CO2_FOSSFUEL_CORR 0.052815/0.054486/0.054902/0.055107/0.053166/0.051611/0.050065/0.048803/0.047060/0.046041 - 1980-1989/1/1/0 C xy 1 1 +##410 CO2_FOSSFUEL_CORR 0.045816/0.045153/0.045541/0.045556/0.044800/0.043875/0.042910/0.042206/0.042257/0.042468 - 1990-1999/1/1/0 C xy 1 1 +##410 CO2_FOSSFUEL_CORR 0.041495/0.040525/0.040125/0.037853/0.035957/0.034686/0.033538/0.032771/0.031961/0.032118 - 2000-2009/1/1/0 C xy 1 1 +##410 CO2_FOSSFUEL_CORR 0.030622/0.029674/0.029029/0.028355 - 2010-2013/1/1/0 C xy 1 1 + +410 CO2_FOSSFUEL_CORR 0.041495/0.040525/0.040125/0.037853/0.035957/0.034686/0.033538/0.032771/0.031961/0.032118/0.030622/0.029674/0.029029/0.028355 - 2000-2013/1/1/0 C xy 1 1 +)))CO2CORR + +# ----------------------------------------------------------------------------- +# --- CO2 conversion factors --- +# ----------------------------------------------------------------------------- +420 CH4TOCO2 2.75 - - - xy 1 1 +421 CTOCO2 3.6667 - - - xy 1 1 +430 NMHCSCALE 0.3333 - - - xy 1 1 + +#------------------------------------------------------------------------------ +# --- National fossil fuel CO2 scale factors (Nassar et al, 2013) --- +#------------------------------------------------------------------------------ +(((FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR +440 CO2_DIURNAL $ROOT/CO2/v2015-04/FOSSIL/TIMES_diurnal_scale_factors.nc diurnal_scale_factors 2006/1/1/1-24 C xy 1 1 +441 CO2_WEEKLY $ROOT/CO2/v2015-04/FOSSIL/TIMES_weekly_scale_factors.nc weekly_scale_factors 2006/1/WD/0 C xy 1 1 +)))FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR + +#------------------------------------------------------------------------------ +# --- DOMESTIC AVIATION SURFACE CORRECTION FACTOR --- +# +# Regional scale factors slightly less than 1 remove surface contribution from +# domestic aviation in national fossil fuel emisisons, which should instead be +# counted in the air as a 3D field. This scale factor should be applied to the +# main/national fossil fuel emission field if using avaition emissions. +#------------------------------------------------------------------------------ +(((FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR +480 AVIATION_SURF_CORR $ROOT/CO2/v2022-11/FOSSIL/Aviation_SurfCorr_SclFac.1x1.nc CO2 2004/1/1/0 C xy 1 1 +)))FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR + +)))USE_CO2_DATA #============================================================================== -# --- Scale factors used for species conversions --- +# --- Scale factors for CO emissions --- #============================================================================== +(((USE_CO_DATA + +#------------------------------------------------------------------------------ +# --- Diurnal scale factors for CO --- +#------------------------------------------------------------------------------ +26 GEIA_TOD_FOSSIL 0.45/0.45/0.6/0.6/0.6/0.6/1.45/1.45/1.45/1.45/1.4/1.4/1.4/1.4/1.45/1.45/1.45/1.45/0.65/0.65/0.65/0.65/0.45/0.45 - - - xy 1 1 -# VOC speciations +#------------------------------------------------------------------------------ +# --- Diurnal variablity of Chinese power plants from Liu et al. (EST, 2019) --- +# +# Also need to undo (Oper=-1) the global diurnal scale factors over China +#------------------------------------------------------------------------------ +35 PKU_pow_PM_BC_POC_VOC_CO 0.95/0.93/0.92/0.91/0.90/0.93/0.97/0.97/0.99/1.03/1.04/1.03/1.02/1.03/1.05/1.07/1.07/1.07/1.06/1.04/1.03/1.02/1.00/0.97 - - - xy unitless 1 2009 +37 GEIA_TOD_FOSSIL_UNDO 0.45/0.45/0.6/0.6/0.6/0.6/1.45/1.45/1.45/1.45/1.4/1.4/1.4/1.4/1.45/1.45/1.45/1.45/0.65/0.65/0.65/0.65/0.45/0.45 - - - xy unitless -1 2009 + +#------------------------------------------------------------------------------ +# --- Account for CO production by VOCs --- +#------------------------------------------------------------------------------ (((APEI.or.EDGARv43.or.DICE_Africa.or.QFED2 52 COPROD_FOSSIL 1.02 - - - xy unitless 1 54 COPROD_BIOMASS 1.05 - - - xy unitless 1 )))APEI.or.EDGARv43.or.DICE_Africa.or.QFED2 -# S to OCS ratio -70 StoOCS MATH:60.07/32.06 - - - xy unitless 1 +#------------------------------------------------------------------------------ +# --- DICE-Africa --- +# Charcoal production scale factor to reduce charcoal production +# by a factor of 5 after finding error in implementation of emission factors. +#------------------------------------------------------------------------------ +(((DICE_Africa +320 DICE_CP_SF 0.20 - - - xy 1 1 +)))DICE_Africa -# km-2 to m-2 -71 Km2ToM2 1.0e-6 - - - xy unitless 1 +#------------------------------------------------------------------------------ +# --- CO: HTAP Annual scale factors --- +#------------------------------------------------------------------------------ +(((HTAP +506 LIQFUEL_THISYR $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 1985-2010/1/1/0 C xy 1 1 +507 LIQFUEL_1985 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 1985/1/1/0 C xy 1 -1 +509 LIQFUEL_2006 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2006/1/1/0 C xy 1 -1 +510 LIQFUEL_2002 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2002/1/1/0 C xy 1 -1 +528 LIQFUEL_2008_2010 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2008-2010/1/1/0 C xy 1 -1 +)))HTAP -#============================================================================== -# --- QFED2 diurnal scale factors --- -# -# Fire diurnal scaling factors (% per hour) from WRAP Report to Project -# No. 178-6, July 2005 -#============================================================================== -(((QFED2.or.GFAS.or.BB4MIPS -75 QFED2_TOD 0.1392/0.1392/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.48/0.96/1.68/2.4/3.12/3.84/4.08/2.88/1.68/0.96/0.1368/0.1368/0.1368/0.1368/0.1368 - - - xy unitless 1 -)))QFED2.or.GFAS.or.BB4MIPS +)))USE_CO_DATA #============================================================================== -# --- EPA NEI day-of-week scale factors --- +# --- Scale factors for OCS emissions --- #============================================================================== -(((NEI2016_MONMEAN -211 NEI99_DOW_CO $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc CO 1999/1-12/WD/0 C xy 1 1 -)))NEI2016_MONMEAN +(((USE_OCS_DATA + +#------------------------------------------------------------------------------ +# --- S to OCS ratio --- +#------------------------------------------------------------------------------ +70 StoOCS MATH:60.07/32.06 - - - xy unitless 1 + +#------------------------------------------------------------------------------ +# --- km-2 to m-2 --- +#------------------------------------------------------------------------------ +71 Km2ToM2 1.0e-6 - - - xy unitless 1 + +)))USE_OCS_DATA + #============================================================================== -# --- EPA NEI2016 annual scale factors --- -# -# Annual scale factors were computed from the EPA Trends Report for Tier 1 CAPS -# (obtained 21 Sep 2021) using the "Total without wildfires" field. NH3 and -# PM2.5 only had values for 2002-2020, while the remaining species had yearly -# values for 1990-2020 (we include only 2002-2020 here). -# -# See NEI2016/v2021-06/national_tier1_caps+HEMCOscaling.xlsx for details. +# --- Inventory-specific scale factors --- #============================================================================== -(((NEI2016_MONMEAN -252 NEI2016_CO_YRSCALE 1.817/1.767/1.716/1.666/1.610/1.554/1.393/1.251/1.272/1.261/1.220/1.178/1.137/1.095/1.000/0.973/0.950/0.927/0.904 - 2002-2020/1/1/0 C xy 1 1 -)))NEI2016_MONMEAN -#============================================================================== +#------------------------------------------------------------------------------ # --- AEIC2019 aircraft emissions scale factors --- # # See http://geoschemdata.wustl.edu/ExtData/HEMCO/AEIC2019/v2022-03/AEIC_2019_technical_note.pdf -#============================================================================== -(((AEIC2019_DAILY.or.AEIC2019_MONMEAN - -#------------------------------------------------------------------------------ +# # Scaling factors for 1990-2019 derived from Lee et al. (2021). Lee et al. # (2021) only covers 1990 to 2018, so to get to 2019 it is assumed that the # growth from 2017 to 2018 is the same as that from 2018 to 2019. @@ -1529,6 +1603,9 @@ ${RUNDIR_CO2_COPROD} # # All scaling factors are included in here in HEMCO_Config.rc. #------------------------------------------------------------------------------ +(((AEIC2019_DAILY.or.AEIC2019_MONMEAN + +# If applying 1990-2019 scale factors (((AEIC_SCALE_1990_2019 241 AC_FBMULT 0.506/0.489/0.490/0.493/0.517/0.529/0.553/0.570/0.581/0.600/0.631/0.607/0.608/0.608/0.646/0.678/0.686/0.706/0.703/0.666/0.700/0.721/0.728/0.749/0.773/0.815/0.854/0.905/0.952/1.000 - 1990-2019/1/1/0 C xy 1 1 )))AEIC_SCALE_1990_2019 @@ -1538,116 +1615,63 @@ ${RUNDIR_CO2_COPROD} 241 AC_FBMULT 1.000000e+0 - - - xy 1 1 ))).not.AEIC_SCALE_1990_2019 -#------------------------------------------------------------------------------ # Assume 3.159 kg CO2 from every kg of fuel burned # cf Hileman, Stratton, & Donohoo, _J. Propul. Power_, 26(6), 1184–1196, 2010. -#------------------------------------------------------------------------------ 260 AEIC19_FBtoCO2 3.159 - - - xy unitless 1 )))AEIC2019_DAILY.or.AEIC2019_MONMEAN -#============================================================================== -# --- GFAS scale factors --- -#============================================================================== -(((GFAS -300 GFAS_EMITL $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc mami 2003-2021/1-12/1-31/0 C xy m 1 -)))GFAS - -#============================================================================== -# --- QFED vertical partitioning --- -# Following Fischer et al. (2014) and Travis et al. (2016), emit 35% of QFED -# emissions above the PBL. -#============================================================================== -(((QFED2 -311 QFED_PBL_FRAC 0.65 - - - xy 1 1 -312 QFED_FT_FRAC 0.35 - - - xy 1 1 -)))QFED2 - -#============================================================================== +#------------------------------------------------------------------------------ # --- CEDS vertical partitioning --- -#============================================================================== +#------------------------------------------------------------------------------ (((CEDSv2.or.CEDS_GBDMAPS 315 ENERGY_LEVS $ROOT/VerticalScaleFactors/v2021-05/gc_layers.nc g_energy 2017/1/1/0 C xyz 1 1 316 INDUSTRY_LEVS $ROOT/VerticalScaleFactors/v2021-05/gc_layers.nc g_industry 2017/1/1/0 C xyz 1 1 317 SHIP_LEVS $ROOT/VerticalScaleFactors/v2021-05/gc_layers.nc cmv_c3 2017/1/1/0 C xyz 1 1 )))CEDSv2.or.CEDS_GBDMAPS -#============================================================================== -# --- DICE-Africa --- -#============================================================================== -(((DICE_Africa -# Charcoal production scale factor to reduce charcoal production -# by a factor of 5 after finding error in implementation of emission factors. -320 DICE_CP_SF 0.20 - - - xy 1 1 -)))DICE_Africa - -#============================================================================== -# --- FOSSIL FUEL CO2 SURFACE CORRECTION FACTOR --- -# -# Fossil fuel CO2 emissions must be scaled down to avoid counting emissions -# already accounted for by CO and CH4 oxidation to CO2. -# -# The necssary annual reduction in emissions related to fossil fuels is -# determined as: global C mass from FF (CO+CH4) / global C mass from FF CO2 -# -# Note: GEOS-Chem v8-03-02 to v9-02, assumed: 0.0489 for all years but that -# value seems to correspond to mid-1980s fossil fuel combustion since CO -# emissions have held constant (Granier et al., 2011) while CO2 has risen. -# -# All scale factors for years 2000-2013 lumped into a single entry -#============================================================================== -(((CO2CORR - -#410 CO2_FOSSFUEL_CORR 0.0489 - - - xy 1 1 +#------------------------------------------------------------------------------ +# --- GFAS scale factors --- +#------------------------------------------------------------------------------ +(((GFAS +300 GFAS_EMITL $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc mami 2003-2021/1-12/1-31/0 C xy m 1 +)))GFAS -## CO2 scale factors from CO oxidation by decade (comment out for now) -##410 CO2_FOSSFUEL_CORR 0.052815/0.054486/0.054902/0.055107/0.053166/0.051611/0.050065/0.048803/0.047060/0.046041 - 1980-1989/1/1/0 C xy 1 1 -##410 CO2_FOSSFUEL_CORR 0.045816/0.045153/0.045541/0.045556/0.044800/0.043875/0.042910/0.042206/0.042257/0.042468 - 1990-1999/1/1/0 C xy 1 1 -##410 CO2_FOSSFUEL_CORR 0.041495/0.040525/0.040125/0.037853/0.035957/0.034686/0.033538/0.032771/0.031961/0.032118 - 2000-2009/1/1/0 C xy 1 1 -##410 CO2_FOSSFUEL_CORR 0.030622/0.029674/0.029029/0.028355 - 2010-2013/1/1/0 C xy 1 1 +#------------------------------------------------------------------------------ +# --- EPA NEI2016 (monthly-mean inventory) scale factors --- +#------------------------------------------------------------------------------ +(((NEI2016_MONMEAN -410 CO2_FOSSFUEL_CORR 0.041495/0.040525/0.040125/0.037853/0.035957/0.034686/0.033538/0.032771/0.031961/0.032118/0.030622/0.029674/0.029029/0.028355 - 2000-2013/1/1/0 C xy 1 1 -)))CO2CORR +# Weekday/Weekend scale factors +211 NEI99_DOW_CO $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc CO 1999/1-12/WD/0 C xy 1 1 -#============================================================================== -# --- CO2 CONVERSION FACTORS --- -#============================================================================== -420 CH4TOCO2 2.75 - - - xy 1 1 -421 CTOCO2 3.6667 - - - xy 1 1 -430 NMHCSCALE 0.3333 - - - xy 1 1 +# Annual scale factors were computed from the EPA Trends Report for Tier 1 CAPS +# (obtained 21 Sep 2021) using the "Total without wildfires" field. NH3 and +# PM2.5 only had values for 2002-2020, while the remaining species had yearly +# values for 1990-2020 (we include only 2002-2020 here). +# See NEI2016/v2021-06/national_tier1_caps+HEMCOscaling.xlsx for details. +252 NEI2016_CO_YRSCALE 1.817/1.767/1.716/1.666/1.610/1.554/1.393/1.251/1.272/1.261/1.220/1.178/1.137/1.095/1.000/0.973/0.950/0.927/0.904 - 2002-2020/1/1/0 C xy 1 1 -#============================================================================== -# ---- TIMES diurnal and weekly scale factors for national fossil fuel CO2 --- -# -# These temporal scale factors are described in Nassar et al. (2013) -#============================================================================== -(((FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR -440 CO2_DIURNAL $ROOT/CO2/v2015-04/FOSSIL/TIMES_diurnal_scale_factors.nc diurnal_scale_factors 2006/1/1/1-24 C xy 1 1 -441 CO2_WEEKLY $ROOT/CO2/v2015-04/FOSSIL/TIMES_weekly_scale_factors.nc weekly_scale_factors 2006/1/WD/0 C xy 1 1 -)))FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR +)))NEI2016_MONMEAN -#============================================================================== -# --- DOMESTIC AVIATION SURFACE CORRECTION FACTOR --- -# -# Regional scale factors slightly less than 1 remove surface contribution from -# domestic aviation in national fossil fuel emisisons, which should instead be -# counted in the air as a 3D field. This scale factor should be applied to the -# main/national fossil fuel emission field if using avaition emissions. -#============================================================================== -(((FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR -480 AVIATION_SURF_CORR $ROOT/CO2/v2022-11/FOSSIL/Aviation_SurfCorr_SclFac.1x1.nc CO2 2004/1/1/0 C xy 1 1 -)))FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR +#------------------------------------------------------------------------------ +# --- QFED2 diurnal scale factors --- +# Fire diurnal scaling factors (% per hour) from WRAP Report to Project +# No. 178-6, July 2005 +#------------------------------------------------------------------------------ +(((QFED2.or.GFAS.or.BB4MIPS +75 QFED2_TOD 0.1392/0.1392/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.48/0.96/1.68/2.4/3.12/3.84/4.08/2.88/1.68/0.96/0.1368/0.1368/0.1368/0.1368/0.1368 - - - xy unitless 1 +)))QFED2.or.GFAS.or.BB4MIPS -#============================================================================== -# --- CO: HTAP Annual scale factors --- -#============================================================================== -(((HTAP -506 LIQFUEL_THISYR $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 1985-2010/1/1/0 C xy 1 1 -507 LIQFUEL_1985 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 1985/1/1/0 C xy 1 -1 -509 LIQFUEL_2006 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2006/1/1/0 C xy 1 -1 -510 LIQFUEL_2002 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2002/1/1/0 C xy 1 -1 -528 LIQFUEL_2008_2010 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2008-2010/1/1/0 C xy 1 -1 -)))HTAP +#------------------------------------------------------------------------------ +# --- QFED vertical partitioning --- +# Following Fischer et al. (2014) and Travis et al. (2016), +# emit 35% of QFED emissions above the PBL. +#------------------------------------------------------------------------------ +(((QFED2 +311 QFED_PBL_FRAC 0.65 - - - xy 1 1 +312 QFED_FT_FRAC 0.35 - - - xy 1 1 +)))QFED2 )))EMISSIONS diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index f60c5e55c..445797477 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -135,12 +135,14 @@ XLAIMULTI cm2_cm-2 N Y %y4-%m2-%d2T00:00:00 none none XLAIMULTI ./HcoDir/Yuan_XL #============================================================================== # %%%%% CH4 emissions %%%%% +# +# Comment all entries in this section when +# "--> USE_CH4_DATA : false" is in HEMCO_Config.rc. #============================================================================== -# --- CH4: Gridded GHGI emissions --- -# --- add lines here --- - # --- CH4: Gridded GHGI v2 Express Extension (Maasakkers et al., submitted to ES&T, 2023) --- +# +# Comment these lines when "GHGI_v2_Express_Ext: false" is in HEMCO_Config.rc. GHGI_EE_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc @@ -194,7 +196,10 @@ GHGI_EE_COAST_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Indu GHGI_EE_COAST_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAST_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc + # --- Scarpelli Mexico --- +# +# Comment these when "--> Scarpelli_Mexico : false" is in HEMCO_Config.rc. MEX_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc MEX_GAS kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc MEX_COAL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc @@ -214,7 +219,11 @@ MEX_WASTEWATER_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v20 MEX_RICE_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc MEX_OTHER_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc + # --- Scarpelli Canada --- +# +# Comment these when "--> Scarpelli_Canada : false" is in HEMCO_Config.rc +# CAN_OIL_GAS_COMBUSTION kg/m2/s N Y - none none oil_gas_combustion_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc CAN_OIL_GAS_LEAKAGE kg/m2/s N Y - none none oil_gas_leakage_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc CAN_OIL_GAS_VENT_FLARE kg/m2/s N Y - none none oil_gas_vent_flare_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc @@ -232,15 +241,18 @@ CAN_SOLID_WASTE_COAST kg/m2/s N Y - none none solid_waste_total CAN_WASTEWATER_COAST kg/m2/s N Y - none none wastewater_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc CAN_OTHER_COAST kg/m2/s N Y - none none other_minor_sources_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc + # --- GFEI --- +# +# Comment these when "--> GFEIv2 : false" is in HEMCO_Config.rc GFEI_CH4_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Oil_All.nc GFEI_CH4_GAS kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Gas_All.nc GFEI_CH4_COAL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Coal.nc -# --- EDGAR v6.0 --- -# Add files here # --- EDGAR v7.0 --- +# +# Comment these when "--> EDGARv7 : false" is in HEMCO_Config.rc EDGAR7_CH4_OILGASCOAL__1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_PRO.0.1x0.1.nc EDGAR7_CH4_OTHER__1A1_1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_REF_TRF.0.1x0.1.nc EDGAR7_CH4_LIVESTOCK__4A kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENF.0.1x0.1.nc @@ -262,62 +274,85 @@ EDGAR7_CH4_OTHER__2C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi EDGAR7_CH4_OTHER__4F kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_AWB.0.1x0.1.nc EDGAR7_CH4_OTHER__6C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_SWD_INC.0.1x0.1.nc -# --- CH4: CEDS (historical) or Shared Socioeconomic Pathways (future) --- -# --- NOTE: This is only for GCAP2 meteorology, so we can comment out --- -##CMIP6_CH4_AGR kg/m2/s N Y %y4-%m2-01T00:00:00 none none CH4_agr ./HcoDir/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_%y4.nc4 -##CMIP6_CH4_ENE kg/m2/s N Y %y4-%m2-01T00:00:00 none none CH4_ene ./HcoDir/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_%y4.nc4 -##CMIP6_CH4_IND kg/m2/s N Y %y4-%m2-01T00:00:00 none none CH4_ind ./HcoDir/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_%y4.nc4 -##CMIP6_CH4_TRA kg/m2/s N Y %y4-%m2-01T00:00:00 none none CH4_tra ./HcoDir/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_%y4.nc4 -##CMIP6_CH4_RCO kg/m2/s N Y %y4-%m2-01T00:00:00 none none CH4_rco ./HcoDir/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_%y4.nc4 -##CMIP6_CH4_SLV kg/m2/s N Y %y4-%m2-01T00:00:00 none none CH4_slv ./HcoDir/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_%y4.nc4 -##CMIP6_CH4_WST kg/m2/s N Y %y4-%m2-01T00:00:00 none none CH4_wst ./HcoDir/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_%y4.nc4 -##CMIP6_CH4_SHP kg/m2/s N Y %y4-%m2-01T00:00:00 none none CH4_shp ./HcoDir/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_%y4.nc4 - -# --- CH4: BB4MIPs historical / SSP future biomass burning inventories --- -# CMIP6_BB_CH4 %y4-%m2-01T00:00:00 none none CH4_shp ./HcoDir/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_%y4.nc4 - -# --- CH4: Updated GFED4 biomass burning (Yuzhong Zhang) --- -UPDATED_GFED4_CH4 kg/m2/s N Y F%y4-%m2-%d2T00:00:00 none none CH4 ./HcoDir/CH4/v2020-09/GFED/GFED4_CH4_FIRE_%y4.nc - -# --- JPL WetCHARTs v1.0 --- -# --- (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- + +# --- JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- +# +# Comment this when "--> JPL_WETCHARTS: false" is in HEMCO_Config.rc. JPLW_CH4 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2020-09/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc + # --- Geological seeps --- +# +# Comment this when "--> SEEPS : false" is in HEMCO_Config.rc. CH4_SEEPS kg/m2/s N Y - none none emi_ch4 ./HcoDir/CH4/v2020-04/Seeps/Etiope_CH4GeologicalEmis_ScaledToHmiel.1x1.nc -# --- Emissions from lakes (Maasakkers et al 2019) --- -# --- NOTE: Superseded by WetCHARTs --- -#CH4_LAKES kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2022-11/Lakes/Maasakkers_Lakes_%y4.01x01.nc # --- Emissions from reservoirs (Delwich et al 2022) --- +# +# Comment these when "--> RESERVOIRS : false" is in HEMCO_Config.rc. CH4_RES_DAM kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4_RES_SFC kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Surface_Emissions.0.1x0.1.nc + # --- Emissions from termites (Fung et al 1991) --- +# +# Comment this when "--> FUNG_TERMITES : false" is in HEMCO_Config.rc. CH4_TERMITES kg/m2/s N Y - none none CH4 ./HcoDir/CH4/v2022-11/4x5/termites.geos.4x5.nc -# --- Soil absoprtion (Fung et al 1991) --- -# --- NOTE: Superseded by MeMo --- -#CH4_SOILABSORB kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CH4 ./HcoDir/CH4/v2019-10/Fung_SoilAbs/Soil_Absorption_4x5_%y4.nc # --- Soil absorption fro MeMo model (Murguia-Flores et al. 2018, GMD) --- -# --- Note; Use climatology by default --- +# +# Note; Use climatology by default +# Comment this when "--> MeMo_SOIL_ABSORPTION : false" is in HEMCO_Config.rc. CH4_SOILABSORB kg/m2/s 2009 Y F%y4-%m2-01T00:00:00 none none CH4uptake ./HcoDir/CH4/v2019-10/MeMo_SoilAbs/MeMo_CH4uptake_Climatology.nc +# +# Annual emissions are disabled by default #CH4_SOILABSORB kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CH4uptake ./HcoDir/CH4/v2019-10/MeMo_SoilAbs/MeMo_CH4uptake_1990-2009.nc +# --- BBMIPs --- +# Add entries here + +# --- CEDS (historical) or Shared Socioeconomic Pathways (future) --- +# Add entries here + +# --- EDGAR v6.0 --- +# Add entries here + +# --- Gridded GHGI emissions --- +# Add entries here + +# --- QFED v2.4r8 --- +# Add entries here + +# --- Emissions from lakes (Maasakkers et al 2019) --- +# Add entries here + +# --- Soil absoprtion (Fung et al 1991) --- +# Add entries here + # --- RCP future emission scenarios --- -#RCP3PD_CH4 kg/m2/s N Y %y4-01-01T00:00:00T00:00:00 none none CO ACCMIP ./HcoDir/v2020-07/RCP_3PD/RCPs_anthro_CH4_2005-2100_23474.nc -#RCP45_CH4 kg/m2/s N Y %y4-01-01T00:00:00T00:00:00 none none CO ACCMIP ./HcoDir/v2020-07/RCP_45/RCPs_anthro_CH4_2005-2100_27424.nc -#RCP60_CH4 kg/m2/s N Y %y4-01-01T00:00:00T00:00:00 none none CO ACCMIP ./HcoDir/v2020-07/RCP_60/RCPs_anthro_CH4_2005-2100_43190.nc -#RCP85_CH4 kg/m2/s N Y %y4-01-01T00:00:00T00:00:00 none none CO ACCMIP ./HcoDir/v2020-07/RCP_85/RCPs_anthro_CH4_2005-2100_43533.nc +# Add entries here + #============================================================================== # %%%%% CO emissions %%%%% +# +# Comment all entries in this section when +# "--> USE_CO_DATA : false" is in HEMCO_Config.rc. #============================================================================== -# --- CEDSv2 emissions --- -# --- Default global inventory --- +# --- AEIC 2019 aircraft (AEIC) --- +# +# Comment this when "--> AEIC2019_MONMEAN : false" is in HEMCO_Config.rc. +AEIC19_MONMEAN_CO kg/m2/s Y Y F2019-%m2-01T00:00:00 none none CO ./HcoDir/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019%m2.0.5x0.625.36L.nc +# +# Comment this when "--> AEIC2019_DAILY : false" is in HEMCO_Config.rc. +##AEIC19_DAILY_CO kg/m2/s 2019 Y F%y4-%m2-%d2T00:00:00 none none CO ./HcoDir/AEIC2019/v2022-03/2019/%m2/AEIC_2019%m2%d2.0.5x0.625.36L.nc + + +# --- CEDSv2 emissions --- +# +# Comment these when "--> CEDSv2 : false" is in HEMCO_Config.rc. CEDS_CO_AGR kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_agr ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc CEDS_CO_ENE kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_ene ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc CEDS_CO_IND kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_ind ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc @@ -325,102 +360,100 @@ CEDS_CO_TRA kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_tra ./HcoDir/CEDS/v2 CEDS_CO_RCO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_rco ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc CEDS_CO_SLV kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_slv ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc CEDS_CO_WST kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_wst ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc - -# --- CEDSv2 ship emisisons --- +# +# Comment this when "--> CEDSv2_SHIP : false" is in HEMCO_Config.rc. CEDS_CO_SHP kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_shp ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc -# --- APEI Canada (APEI) --- -#APEI_CO kg/m2/s N Y F%y4-01-01T00:00:00 none none CO ./HcoDir/APEI/v2016-11/APEI.0.1x0.1.nc - -# --- EPA NEI2016 USA monthly mean (NEI2016_MONMEAN) --- -#EPA16_CO__airportsCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_%m2.ncf -#EPA16_CO__nonptCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_%m2.ncf -#EPA16_CO__nonroadCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_%m2.ncf -#EPA16_CO__npogCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_%m2.ncf -#EPA16_CO__onroadCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_%m2.ncf -#EPA16_CO__onroad_caCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_%m2.ncf -#EPA16_CO__railCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_%m2.ncf -#EPA16_CO__rwcCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_%m2.ncf -#EPA16_CO__c1c2CO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_%m2.ncf -#EPA16_CO__c3CO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_emln_cmv_c3_12_0pt1degree_3D_month_%m2.ncf -#EPA16_CO__pteguCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_emln_ptegu_0pt1degree_3D_month_%m2.ncf -#EPA16_CO__ptogCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_emln_pt_oilgas_allinln_0pt1degree_3D_month_%m2.ncf -#EPA16_CO__ptnonipmCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_%m2.ncf -#EPA16_CO__onroad_canCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_%m2.ncf -#EPA16_CO__onroad_mexCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_%m2.ncf -#EPA16_CO__otharCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_%m2.ncf -#EPA16_CO__othptCO kg/m2/s Y Y F2016-%m2-01T00:00:00 none none CO ./HcoDir/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_%m2.ncf - -# --- DICE-Africa emission inventory (DICE_Africa) --- -## Scale factors convert from g/m2/yr to kg/m2/s -#DICE_CARS_CO g/m2/yr N Y - none 3.171e-11 CO ./HcoDir/DICE_Africa/v2016-10/DICE-Africa-cars-2013-v01-4Oct2016.nc -#DICE_MOTORCYCLES_CO g/m2/yr N Y - none 3.171e-11 CO ./HcoDir/DICE_Africa/v2016-10/DICE-Africa-motorcycles-2013-v01-4Oct2016.nc -#DICE_BACKUPGEN_CO g/m2/yr N Y - none 3.171e-11 CO ./HcoDir/DICE_Africa/v2016-10/DICE-Africa-generator-use-2013-v01-4Oct2016.nc -#DICE_CHARCOALPROD_CO g/m2/yr N Y - none 3.171e-11 CO ./HcoDir/DICE_Africa/v2016-10/DICE-Africa-charcoal-production-2013-v01-4Oct2016.nc -#DICE_GASFLARE_CO g/m2/yr N Y - none 3.171e-11 CO ./HcoDir/DICE_Africa/v2016-10/DICE-Africa-gas-flares-2013-v01-4Oct2016.nc -#DICE_AGBURNING_CO g/m2/yr N Y - none 3.171e-11 CO ./HcoDir/DICE_Africa/v2016-10/DICE-Africa-household-crop-residue-use-2013-v01-4Oct2016.nc -#DICE_CHARCOALUSE_CO g/m2/yr N Y - none 3.171e-11 CO ./HcoDir/DICE_Africa/v2016-10/DICE-Africa-charcoal-use-2013-v01-4Oct2016.nc -#DICE_KEROSENE_CO g/m2/yr N Y - none 3.171e-11 CO ./HcoDir/DICE_Africa/v2016-10/DICE-Africa-kerosene-use-2013-v01-4Oct2016.nc -#DICE_OILREFINING_CO g/m2/yr N Y - none 3.171e-11 CO ./HcoDir/DICE_Africa/v2016-10/DICE-Africa-adhoc-oil-refining-2006-v01-4Oct2016.nc -#DICE_HOUSEFUELWOOD_CO g/m2/yr N Y - none 3.171e-11 CO ./HcoDir/DICE_Africa/v2016-10/DICE-Africa-household-fuelwood-use-2013-v01-4Oct2016.nc -#DICE_OTHERFUELWOOD_CO g/m2/yr N Y - none 3.171e-11 CO ./HcoDir/DICE_Africa/v2016-10/DICE-Africa-other-fuelwood-use-2013-v01-4Oct2016.nc -## -## --- Efficient Combusions Emissions from EDGARv43 --- -## --- This covers sectors not included in DICE-Africa --- -#AF_EDGAR_CO_POW kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/EDGARv43/v2016-11/EDGAR_v43.CO.POW.0.1x0.1.nc -#AF_EDGAR_CO_ENG kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/EDGARv43/v2016-11/EDGAR_v43.CO.ENG.0.1x0.1.nc -#AF_EDGAR_CO_IND kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/EDGARv43/v2016-11/EDGAR_v43.CO.IND.0.1x0.1.nc -#AF_EDGAR_CO_TNG kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/EDGARv43/v2016-11/EDGAR_v43.CO.TNG.0.1x0.1.nc -#AF_EDGAR_CO_PPA kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/EDGARv43/v2016-11/EDGAR_v43.CO.PPA.0.1x0.1.nc -#AF_EDGAR_CO_SWD kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/EDGARv43/v2016-11/EDGAR_v43.CO.SWD.0.1x0.1.nc - -# --- HTAP v2 (HTAP) --- -#HTAP_CO_IND kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/HTAP/v2015-03/CO/EDGAR_HTAP_CO_INDUSTRY.generic.01x01.nc -#HTAP_CO_POW kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/HTAP/v2015-03/CO/EDGAR_HTAP_CO_ENERGY.generic.01x01.nc -#HTAP_CO_RES kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/HTAP/v2015-03/CO/EDGAR_HTAP_CO_RESIDENTIAL.generic.01x01.nc -#HTAP_CO_TRA kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/HTAP/v2015-03/CO/EDGAR_HTAP_CO_TRANSPORT.generic.01x01.nc -##HTAP_CO_AIR1 kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/HTAP/v2015-03/CO/EDGAR_HTAP_CO_AIR_LTO.generic.01x01.nc -##HTAP_CO_AIR2 kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/HTAP/v2015-03/CO/EDGAR_HTAP_CO_AIR_CDS.generic.01x01.nc -##HTAP_CO_AIR3 kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co ./HcoDir/HTAP/v2015-03/CO/EDGAR_HTAP_CO_AIR_CRS.generic.01x01.nc -# --- AEIC 2019 aircraft (AEIC) --- -#AEIC19_DAILY_CO kg/m2/s 2019 Y F%y4-%m2-%d2T00:00:00 none none CO ./HcoDir/AEIC2019/v2022-03/2019/%m2/AEIC_2019%m2%d2.0.5x0.625.36L.nc -AEIC19_MONMEAN_CO kg/m2/s Y Y F2019-%m2-01T00:00:00 none none CO ./HcoDir/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019%m2.0.5x0.625.36L.nc +# --- APEI (Canada) --- +# Add entries here + +# --- BB4MIPs --- +# Add entries here + +# --- CEDS GBD-MAPS --- +# Add entries here + +# --- CMIP6 --- +# Add entries here + +# --- DICE-Africa --- +# Add entries here + +# --- GFAS biomass burning --- +# Add entries here + +# --- HTAP --- +# Add entries here + +# --- NEI2016_MONMEAN (USA) --- +# Add entries here + +# --- QFED2 biomass burning --- +# Add entries here # --- RCP future emissions scenarios --- -#RCP3PD_CO kg/m2/s N Y %y4-01-01T00:00:00 none none ACCMIP ./HcoDir/RCP/v2020-07/RCP_3PD/RCPs_anthro_CO_2005-2100_23474.nc -#RCP45_CO kg/m2/s N Y %y4-01-01T00:00:00 none none ACCMIP ./HcoDir/RCP/v2020-07/RCP_45/RCPs_anthro_CO_2005-2100_27424.nc -#RCP60_CO kg/m2/s N Y %y4-01-01T00:00:00 none none ACCMIP ./HcoDir/RCP/v2020-07/RCP_60/RCPs_anthro_CO_2005-2100_43190.nc -#RCP85_CO kg/m2/s N Y %y4-01-01T00:00:00 none none ACCMIP ./HcoDir/RCP/v2020-07/RCP_85/RCPs_anthro_CO_2005-2100_43533.nc +# Add entries here + #============================================================================== # --- CO2 emissions --- +# +# Comment all entries in this section when +# "--> USE_CO2_DATA : false" is in HEMCO_Config.rc. #============================================================================== # --- CO2 Fossil Fuel --- -#FOSSILCO2_CDIAC kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO2 ./HcoDir/CO2/v2014-09/FOSSIL/CDIAC_v2014.monthly.generic.1x1.nc -FOSSILCO2_ODIAC kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO2 ./HcoDir/CO2/v2022-11/FOSSIL/ODIAC_CO2.monthly.generic.1x1.nc +# +# Comment this when "--> FOSSIL_CDIAC : false" is in HEMCO_Config.rc. +##FOSSILCO2_CDIAC kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO2 ./HcoDir/CO2/v2014-09/FOSSIL/CDIAC_v2014.monthly.generic.1x1.nc +# +# Comment this when "--> FOSSIL_ODIAC : false" is in HEMCO_Config.rc. +FOSSILCO2_ODIAC kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO2 ./HcoDir/CO2/v2022-11/FOSSIL/ODIAC_CO2.monthly.generic.1x1.nc + # --- CO2 Ocean Exchange --- -#OCEANCO2_TAKA_ANNUAL kg/m2/s N Y - none none CO2 ./HcoDir/CO2/v2022-11/OCEAN/Taka2009_CO2_Annual.nc +# +# Comment this when "--> OCEAN_EXCH_TAKA09 : false" is in HEMCO_Config.rc. +##OCEANCO2_TAKA_ANNUAL kg/m2/s N Y - none none CO2 ./HcoDir/CO2/v2022-11/OCEAN/Taka2009_CO2_Annual.nc +# +# Comment this when "--> OCEAN_EXCH_SCALED : false" is in HEMCO_Config.rc. OCEANCO2_TAKA_MONTHLY kg/m2/s 2000 Y F%y4-%m2-01T00:00:00 none none CO2 ./HcoDir/CO2/v2022-11/OCEAN/Taka2009_CO2_Monthly.nc + # --- Balanced biosphere exchange --- -#BBIOCO2_DIURNAL kg/m2/s N Y F%y4-%m2-%d2T%h2-01-01 none none CO2 ./HcoDir/CO2/v2014-09/BBIO/BBIO_diurnal_CO2.nc +# +# Comment this when "--> BBIO_DIURNAL : false" is in HEMCO_Config.rc. +##BBIOCO2_DIURNAL kg/m2/s N Y F%y4-%m2-%d2T%h2-01-01 none none CO2 ./HcoDir/CO2/v2014-09/BBIO/BBIO_diurnal_CO2.nc +# +# Comment this when "--> BBIO_SIB3 : false" is in HEMCO_Config.rc. SIB_BBIO_CO2 kg/m2/s N Y F%y4-%m2-%d2T%h2-01-01 none none CO2 ./HcoDir/CO2/v2022-11/BIO/SiB3_3hr_NEP.nc + # --- Net Terrestrial Exchange --- +# +# Comment this when "--> NET_TERR_EXCH : false" is in HEMCO_Config.rc. CO2_NET_TERRESTRIAL kg/m2/s N Y - none none CO2 ./HcoDir/CO2/v2022-11/BIO/Net_terrestrial_exch_5.29Pg.generic.1x1.nc + # --- CO2 Ship Emissions --- -#ICOADS_CO2_SHIP kg/m2/s N Y F2004-%m2-01T00:00:00 none none CO2 ./HcoDir/ICOADS_SHIP/v2014-07/ICOADS_ship_CO2_2004.generic.1x1.nc +# +# Comment this when "--> CEDS_v2_SHIP : false" is in HEMCO_Config.rc. CEDS_CO2_SHP kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO2_shp ./HcoDir/CEDS/v2018-08/%y4/CO2-em-anthro_CMIP_CEDS_%y4.nc + # --- CO2: AEIC 2019 aircraft emissions --- -#AEIC19_DAILY_CO2 kg/m2/s N Y F%y4-%m2-%d2T00:00:00 none none FUELBURN ./HcoDir/AEIC2019/v2022-03/2019/AEIC_2019%m2%d2.0.5x0.625.36L.nc +# +# Comment this when "--> AEIC2019_DAILY : false" is in HEMCO_Config.rc. +##AEIC19_DAILY_CO2 kg/m2/s 2019 Y F%y4-%m2-%d2T00:00:00 none none FUELBURN ./HcoDir/AEIC2019/v2022-03/2019/%m2/AEIC_2019%m2%d2.0.5x0.625.36L.nc +# +# Comment this when "--> AEIC2019_MONMEAN : false" is in HEMCO_Config.rc. AEIC19_MONMEAN_CO2 kg/m2/s 2019 Y F%y4-%m2-%d2T00:00:00 none none FUELBURN ./HcoDir/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019%m2.0.5x0.625.36L.nc + # --- CO2: Surface correction for CO oxidation --- +# +# Comment these when "--> CO2CORR : false" is in HEMCO_Config.rc. FOSSILCO2_MONTHLY kg/m/s N Y F%y4-%m2-01T01:00:00 none none CO2 ./HcoDir/CO2/v2022-11/FOSSIL/ODIAC_CO2.monthly.generic.1x1.nc CO2_LIVESTOCK kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none CH4_004 ./HcoDir/CO2/v2022-11/CHEM/CH4_source.geos.2x25.nc CO2_WASTE kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none CH4_005 ./HcoDir/CO2/v2022-11/CHEM/CH4_source.geos.2x25.nc @@ -430,17 +463,23 @@ CO2_NATURAL kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none CH4_012 ./HcoDir/ CO2_ISOPRENE kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none ISOP ./HcoDir/CO2/v2022-11/CHEM/Isoprene-2004.geos.2x25.nc CO2_MONOTERP kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none MONOT ./HcoDir/CO2/v2022-11/CHEM/Monoterpene-2004.geos.2x25.nc + # --- CO2 production from CO --- +# +# Comment this when "--> CO2_COPROD : false" is in HEMCO_Config.rc. CO2_COPROD kgC/m3/s N Y F%y2-%m2-01T00:00:00 none none LCO ./HcoDir/CO2/v2022-11/CHEM/CO2_prod_rates.GEOS5.2x25.72L.nc #============================================================================== -# --- OCS flux data ---- +# --- OCS emission fluxes --- +# +# If USE_OCS_DATA is set to "false" in HEMCO_Config.rc, +# then you must comment out all of these entries. #============================================================================== OCS_ANTHRO kgS/km2/s N Y F%y4-%m2-01T00:00:00 none none COS_Flux ./HcoDir/OCS_FLUX/v2022-11/anthro_v3/v3_anthro/%y4/%m2.nc OCS_BIOMASS kgS/km2/s N Y F%y4-%m2-01T00:00:00 none none COS_Flux ./HcoDir/OCS_FLUX/v2022-11/Biomassburn/CMSV2-CO2-GFED3-ZC/%y4/%m2.nc OCS_MISSING_OCEAN kgS/km2/s N Y F%y4-%m2-01T00:00:00 none none COS_Flux ./HcoDir/OCS_FLUX/v2022-11/MissingOcean/LUKAI/%y4/%m2.nc OCS_OCEAN kgS/km2/s N Y F%y4-%m2-01T00:00:00 none none COS_Flux ./HcoDir/OCS_FLUX/v2022-11/OceanCOS/Kettle/%y4/%m2.nc -# + ############################################################################### ### ### HEMCO Extension Data (update if HEMCO_Config.rc changes) @@ -448,19 +487,26 @@ OCS_OCEAN kgS/km2/s N Y F%y4-%m2-01T00:00:00 none none COS_Flux ./HcoDir ############################################################################### # --- GFED4 (Extension 111)--- +# +# Comment these when "111 GFEE : off" in HEMCO_Config.rc. GFED_TEMP kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_TEMP ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc GFED_AGRI kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_AGRI ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc GFED_DEFO kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_DEFO ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc GFED_BORF kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_BORF ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc GFED_PEAT kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_PEAT ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc GFED_SAVA kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_SAVA ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc - +# # --- GFED_daily scale factors --- +# +# Comment this when "--> GFED_daily : false" is in HEMCO_Config.rc. GFED_FRAC_DAY 1 N Y %y4-%m2-%d2T00:00:00 none none GFED_FRACDAY ./HcoDir/GFED4/v2023-03/%y4/GFED4_dailyfrac_gen.025x025.%y4%m2.nc - -# --- GFED_3hourly (off by default in HEMCO_Config.rc) --- +# +# --- GFED_3hourly -- +# +# Comment this when "--> GFED_hourly : false" is in HEMCO_Config.rc. #GFED_FRAC_3HOUR 1 N Y %y4-%m2-01T%h2:00:00 none none GFED_FRAC3HR ./HcoDir/GFED4/v2023-03/%y4/GFED4_3hrfrac_gen.025x025.%y4%m2.nc + ############################################################################### ### ### HEMCO Non-Emissions Data (update if HEMCO_Config.rc changes) @@ -470,26 +516,32 @@ GFED_FRAC_DAY 1 N Y %y4-%m2-%d2T00:00:00 none none GFED_FRACDAY ./HcoDir/GFED4/v # --- Time zones (offset to UTC) --- TIMEZONES count N V - none none UTC_OFFSET ./HcoDir/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc + # --- OH from the latest 10-year benchmark --- -#GLOBAL_OH kg/m3 N N %y4-%m2-01T00:00:00 none none SpeciesConc_OH ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.SpeciesConc.%y4%m2%d2_0000z.nc4 +# +# Comment this if "--> GLOBAL_OH_GC14 : false" is in HEMCO_Config.rc +##GLOBAL_OH kg/m3 N N %y4-%m2-01T00:00:00 none none SpeciesConc_OH ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.SpeciesConc.%y4%m2%d2_0000z.nc4 + # --- OH from GEOS-Chem v5-07-08 --- # --- NOTE: Use this for CH4/IMI --- +# +# Comment this if "--> GLOBAL_OH_GCv5 : false" is in HEMCO_Config.rc GLOBAL_OH kg/m3 1985 Y F%y4-%m2-01T00:00:00 none none OH ./HcoDir/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.72L.4x5.nc + # --- Global Cl concentrations GLOBAL_Cl mol/mol N Y F%y4-%m2-%d2T00:00:00 none none SpeciesConc_Cl ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.SpeciesConc.%y4%m201_0000z.nc4 # --- Stratospheric L(CO) from GMI --- CH4_LOSS s-1 1985 Y F%y4-%m2-01T00:00:00 none none CH4loss ./HcoDir/CH4/v2023-04/GC_CH4_LOSS/GCC14_72LM.ch4loss.4x5.nc4 + # --- P(CO) from CH4 and NMVOC from the last 10-yr benchmark --- PCO_CH4 molec/cm3/s N Y F%y4-%m2-01T00:00:00 none none ProdCOfromCH4 ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.ProdLoss.%y4%m201_0000z.nc4 PCO_NMVOC molec/cm3/s N Y F%y4-%m2-01T00:00:00 none none ProdCOfromNMVOC ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.ProdLoss.%y4%m201_0000z.nc4 #--- GMI chemistry: prod/loss rates (GMI_PROD_LOSS) --- -GMI_LOSS_CH4 s-1 2000 Y F%y4-%m2-01T00:00:00 none none loss ./HcoDir/GMI/v2022-11/gmi.clim.CH4.geos5.2x25.nc -GMI_PROD_CH4 v/v/s 2000 Y F%y4-%m2-01T00:00:00 none none prod ./HcoDir/GMI/v2022-11/gmi.clim.CH4.geos5.2x25.nc GMI_LOSS_CO s-1 2005 Y F%y4-%m2-01T00:00:00 none none loss ./HcoDir/GMI/v2022-11/gmi.clim.CO.geos5.2x25.nc GMI_PROD_CO v/v/s 2005 Y F%y4-%m2-01T00:00:00 none none prod ./HcoDir/GMI/v2022-11/gmi.clim.CO.geos5.2x25.nc @@ -499,7 +551,16 @@ GMI_PROD_CO v/v/s 2005 Y F%y4-%m2-01T00:00:00 none none prod ./HcoDir/GMI/v2022 ### ############################################################################### -# GHGI seasonal scale factors +#============================================================================== +# %%%%% Scale factors for CH4 emissions %%%%% +# +# Comment out all entries in this section if the USE_CH4_DATA switch +# is set to "false" in HEMCO_Config.rc. +#============================================================================== + +# --- GHGI seasonal scale factors --- +# +# Comment these if "--> GHGI_v2_Express_Ext : false" is in HEMCO_Config.rc, GHGI_OTH_STA_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc GHGI_OIL_EXP_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc GHGI_OIL_PRD_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc @@ -511,15 +572,17 @@ GHGI_LIV_MAN_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3B_M GHGI_RIC_CUL_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc GHGI_OTH_BUR_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc -# --- CO2 diurnal and weekly scale factors --- -CO2_DIURNAL 1 N Y F%y4-%m2-%d2T%h2:00:00 none none diurnal_scale_factors ./HcoDir/CO2/v2015-04/FOSSIL/TIMES_diurnal_scale_factors.nc -CO2_WEEKLY 1 2006 Y F%y4-%m2-%d2T00:00:00 none none weekly_scale_factors ./HcoDir/CO2/v2015-04/FOSSIL/TIMES_weekly_scale_factors.nc -# --- CH4 manure and rice scale factors --- +# --- Scarpelli_Mexico manure and rice scale factors --- +# +# Comment these if "--> Scarpelli_Mexico : false" is in HEMCO_Config.rc, MANURE_SF 1 N Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2017-10/Seasonal_SF/EMICH4_Manure_ScalingFactors.WithClimatology.nc RICE_SF 1 2012 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc -# --- Seasonal scale factors for EDGARv7 --- + +# --- Monthly scale factors for EDGARv7 --- +# +# Comment these if "--> EDGARv7 : false" is in HEMCO_Config.rc, EDGAR_SEASONAL_SF_AGS 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc EDGAR_SEASONAL_SF_AWB 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AWB.0.1x0.1.nc EDGAR_SEASONAL_SF_CHE 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_CHE.0.1x0.1.nc @@ -530,9 +593,6 @@ EDGAR_SEASONAL_SF_IND 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./Hc EDGAR_SEASONAL_SF_IRO 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IRO.0.1x0.1.nc EDGAR_SEASONAL_SF_MNM 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_MNM.0.1x0.1.nc EDGAR_SEASONAL_SF_PRO 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO.0.1x0.1.nc -EDGAR_SEASONAL_SF_PRO_COAL 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc -EDGAR_SEASONAL_SF_PRO_GAS 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc -EDGAR_SEASONAL_SF_PRO_OIL 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc EDGAR_SEASONAL_SF_RCO 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_RCO.0.1x0.1.nc EDGAR_SEASONAL_SF_REF_TRF 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_REF_TRF.0.1x0.1.nc EDGAR_SEASONAL_SF_SWD_INC 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_INC.0.1x0.1.nc @@ -545,20 +605,33 @@ EDGAR_SEASONAL_SF_TNR_SHIP 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./Hc EDGAR_SEASONAL_SF_TRO_noRes 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TRO_noRES.0.1x0.1.nc EDGAR_SEASONAL_SF_WWT 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_WWT.0.1x0.1.nc -#--- annual scale factors --- -## Need DC0360xPC0181_CFnnnnx6C.bin -#LIQFUEL_THISYR 1 N Y F%y4-01-01T00:00:00 none none COscalar ./HcoDir/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc -#LIQFUEL_1985 1 N Y F1985-01-01T00:00:00 none none COscalar ./HcoDir/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc -#LIQFUEL_2006 1 N Y F2006-01-01T00:00:00 none none COscalar ./HcoDir/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc -#LIQFUEL_2002 1 N Y F2002-01-01T00:00:00 none none COscalar ./HcoDir/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc -#LIQFUEL_2008_2010 1 N Y F%y4-01-01T00:00:00 none none COscalar ./HcoDir/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc +#============================================================================== +# %%%%% Scale factors for CO emissions %%%%% +# +# If USE_CO_DATA is set to "false" in HEMCO_Config.rc, +# then you must comment out all of these entries below. +#============================================================================== + +# --- HTAP annual scale factors --- +# Add entries here # --- CEDS vertical partitioning --- ENERGY_LEVS 1 N Y - none none g_energy ./HcoDir/VerticalScaleFactors/v2021-05/gc_layers.nc INDUSTRY_LEVS 1 N Y - none none g_industry ./HcoDir/VerticalScaleFactors/v2021-05/gc_layers.nc SHIP_LEVS 1 N Y - none none cmv_c3 ./HcoDir/VerticalScaleFactors/v2021-05/gc_layers.nc -# --- CO2 scale factors +#============================================================================== +# %%%%% Scale factors for CO2 emissions %%%%% +# +# If USE_CO2_DATA is set to "false" in HEMCO_Config.rc, +# then you must comment out all of these entries below. +#============================================================================== + +# --- National fossil fuel CO2 scale factors (Nassar et al, 2013) --- +CO2_DIURNAL 1 N Y F%y4-%m2-%d2T%h2:00:00 none none diurnal_scale_factors ./HcoDir/CO2/v2015-04/FOSSIL/TIMES_diurnal_scale_factors.nc +CO2_WEEKLY 1 2006 Y F%y4-%m2-%d2T00:00:00 none none weekly_scale_factors ./HcoDir/CO2/v2015-04/FOSSIL/TIMES_weekly_scale_factors.nc + +# --- Domestic aviation surface correction factor --- AVIATION_SURF_CORR 1 2004 Y F%y2-01-01T00:00:00 none none CO2 ./HcoDir/CO2/v2022-11/FOSSIL/Aviation_SurfCorr_SclFac.1x1.nc OCEANCO2_SCALED_MONTHLY kg/m2/s N Y F%y2-%m2-01T00:00:00 none none CO2 ./HcoDir/CO2/v2022-11/OCEAN/Scaled_Ocean_CO2_monthly.nc diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 533367da4..28a5b0ece 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -428,36 +428,36 @@ Mask fractions: false #============================================================================== (((EDGARv7 ### Oil. gas, coal ### -0 EDGAR7_CH4_OILGASCOAL__1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 729 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 734 1 1 +0 EDGAR7_CH4_OILGASCOAL__1B1_1B2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 729 1 1 +0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 734 1 1 ### Livestock ### -0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 724 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 728 4 1 +0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 724 4 1 +0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 728 4 1 ### Landfills ### -0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 736 5 1 +0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 736 5 1 ### Wastewater ### -0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 743 6 1 +0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 743 6 1 ### Rice ### -0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 720 7 1 +0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 720 7 1 ### Other Anthro ### -0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 723 8 1 -0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 726 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 737 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 738 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 739 8 1 -0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 742 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 740 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 741 8 1 -0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 733 8 1 -0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 722 8 1 -0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 727 8 1 -0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 721 8 1 -0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 735 8 1 +0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 723 8 1 +0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 726 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 737 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 738 8 1 +0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 739 8 1 +0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 742 8 1 +0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 740 8 1 +0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 741 8 1 +0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 733 8 1 +0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 722 8 1 +0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 727 8 1 +0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 721 8 1 +0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 735 8 1 )))EDGARv7 #============================================================================== @@ -497,7 +497,7 @@ Mask fractions: false # --- CH4: JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- #============================================================================== (((JPL_WETCHARTS -0 JPLW_CH4 $ROOT/CH4/v2020-09/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4 - 10 1 +0 JPLW_CH4 $ROOT/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4 - 10 1 )))JPL_WETCHARTS #============================================================================== @@ -518,8 +518,8 @@ Mask fractions: false # --- Emissions from Hydroelectric Reservoirs (Delwich et al., 2022) --- #============================================================================== (((RESERVOIRS -0 CH4_RES_DAM $ROOT/CH4/v2023-04/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 -0 CH4_RES_SFC $ROOT/CH4/v2023-04/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 +0 CH4_RES_DAM $ROOT/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 +0 CH4_RES_SFC $ROOT/CH4/v2024-01/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 )))RESERVOIRS #============================================================================== @@ -1313,8 +1313,10 @@ ${RUNDIR_CH4_LOSS} )))CH4_LOSS_FREQ # --- Global Cl [mol/mol dry air] --- +# NOTE: This file has all non-COARDS-compliant elements removed! +# GCHP cannot read this data otherwise. (Bob Yantosca, 19 Jan 2024) (((GLOBAL_CL -${RUNDIR_GLOBAL_Cl} +* GLOBAL_Cl $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_Cl 2010-2019/1-12/1/0 C xyz 1 * - 1 1 )))GLOBAL_CL #------------------------------------------------------------------------------ @@ -1322,11 +1324,13 @@ ${RUNDIR_GLOBAL_Cl} #------------------------------------------------------------------------------ # -- P(CO) from CH4 and NMVOC from the last 10-yr benchmark [molec/cm3/s] --- +# NOTE: These files has all non-COARDS-compliant elements removed! +# GCHP cannot read this data otherwise. (Bob Yantosca, 19 Jan 2024) (((PROD_CO_CH4 -${RUNDIR_PCO_CH4} +* PCO_CH4 $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromCH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1 )))PROD_CO_CH4 (((PROD_CO_NMVOC -${RUNDIR_PCO_NMVOC} +* PCO_NMVOC $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromNMVOC 2010-2019/1-12/1/0 C xyz 1 * - 1 1 )))PROD_CO_NMVOC # --- GMI chemistry: prod/loss rates (for strato-/mesosphere) --- @@ -1370,24 +1374,29 @@ ${RUNDIR_CO2_COPROD} # ScalID Name sourceFile sourceVar sourceTime C/R/E SrcDim SrcUnit Oper -#============================================================================== +#------------------------------------------------------------------------------ # --- Multiply by -1 to get a "negative" flux. -#============================================================================== +#------------------------------------------------------------------------------ 1 NEGATIVE -1.0 - - - xy 1 1 -#============================================================================== +#------------------------------------------------------------------------------ # --- Perturbation factors --- # # Add factors to perturb OH, emissions, and other fields here for # analytical inversions. -#============================================================================== +#------------------------------------------------------------------------------ 2 OH_pert_factor 1.0 - - - xy 1 1 (((EMISSIONS #============================================================================== -# --- Seasonal scaling factors ---- +# --- Scale factors for CH4 emissions ---- #============================================================================== +(((USE_CH4_DATA + +#------------------------------------------------------------------------------ +# --- GHGI monthly scaling factors --- +#------------------------------------------------------------------------------ (((GHGI_v2.or.GHGI_v2_Express_Ext 50 GHGI_OTH_STA_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1A_Combustion_Stationary 2012-2018/1-12/1/0 C xy 1 1 51 GHGI_OIL_EXP_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 C xy 1 1 @@ -1401,11 +1410,17 @@ ${RUNDIR_CO2_COPROD} 59 GHGI_OTH_BUR_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_3F_Field_Burning 2012-2018/1-12/1/0 C xy 1 1 )))GHGI_v2.or.GHGI_v2_Express_Ext -(((Scarpelli_Mexico.or.Scarpelli_Canada +#------------------------------------------------------------------------------ +# --- Scarpelli_Mexico manure & rice scale factors --- +#------------------------------------------------------------------------------ +(((Scarpelli_Mexico 10 MANURE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Manure_ScalingFactors.WithClimatology.nc sf_ch4 2008-2016/1-12/1/0 C xy 1 1 -11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 -)))Scarpelli_Mexico.or.Scarpelli_Canada +11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 +)))Scarpelli_Mexico +#------------------------------------------------------------------------------ +# --- EDGAR scale factors --- +#------------------------------------------------------------------------------ (((EDGARv7 720 EDGAR_SEASONAL_SF_AGS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 721 EDGAR_SEASONAL_SF_AWB $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AWB.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 @@ -1417,9 +1432,10 @@ ${RUNDIR_CO2_COPROD} 727 EDGAR_SEASONAL_SF_IRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 728 EDGAR_SEASONAL_SF_MNM $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_MNM.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 729 EDGAR_SEASONAL_SF_PRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -730 EDGAR_SEASONAL_SF_PRO_COAL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -731 EDGAR_SEASONAL_SF_PRO_GAS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -732 EDGAR_SEASONAL_SF_PRO_OIL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +# These 3 fields are only needed for EDGARv6 (Bob Yantosca, 19 Jan 2024) +#730 EDGAR_SEASONAL_SF_PRO_COAL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +#731 EDGAR_SEASONAL_SF_PRO_GAS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +#732 EDGAR_SEASONAL_SF_PRO_OIL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 733 EDGAR_SEASONAL_SF_RCO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_RCO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 734 EDGAR_SEASONAL_SF_REF_TRF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_REF_TRF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 735 EDGAR_SEASONAL_SF_SWD_INC $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_INC.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 @@ -1433,85 +1449,146 @@ ${RUNDIR_CO2_COPROD} 743 EDGAR_SEASONAL_SF_WWT $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_WWT.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 )))EDGARv7 -#============================================================================== -# --- Diurnal scale factors --- -#============================================================================== -26 GEIA_TOD_FOSSIL 0.45/0.45/0.6/0.6/0.6/0.6/1.45/1.45/1.45/1.45/1.4/1.4/1.4/1.4/1.45/1.45/1.45/1.45/0.65/0.65/0.65/0.65/0.45/0.45 - - - xy 1 1 +)))USE_CH4_DATA #============================================================================== -# --- Seasonal scale factors --- +# --- Scale factors for CO emissions --- #============================================================================== -(((DICE_Africa -# from GEIA: -30 GEIA_SEASON_NOX $ROOT/GEIA/v2014-07/GEIA_monthscal.generic.1x1.nc NOXrat 1985/1-12/1/0 C xy unitless 1 -31 GEIA_SEASON_SO2 $ROOT/GEIA/v2014-07/GEIA_monthscal.generic.1x1.nc SO2rat 1985/1-12/1/0 C xy unitless 1 -)))DICE_Africa +(((USE_CO_DATA -#============================================================================== -# Diurnal variablity of Chinese power plants from Liu et al. (EST, 2019) -#============================================================================== -33 PKU_pow_NOx 0.94/0.93/0.93/0.92/0.93/0.96/0.98/0.99/0.98/1.00/1.05/1.03/1.01/1.04/1.05/1.05/1.07/1.06/1.05/1.05/1.03/1.01/0.99/0.96 - - - xy unitless 1 2009 -34 PKU_pow_SO2 0.92/0.91/0.90/0.89/0.90/0.93/0.97/0.98/0.99/1.02/1.07/1.04/1.03/1.06/1.06/1.07/1.10/1.10/1.06/1.05/1.03/1.01/0.99/0.93 - - - xy unitless 1 2009 -35 PKU_pow_PM_BC_POC_VOC_CO 0.95/0.93/0.92/0.91/0.90/0.93/0.97/0.97/0.99/1.03/1.04/1.03/1.02/1.03/1.05/1.07/1.07/1.07/1.06/1.04/1.03/1.02/1.00/0.97 - - - xy unitless 1 2009 +#------------------------------------------------------------------------------ +# --- Diurnal scale factors for CO --- +#------------------------------------------------------------------------------ +26 GEIA_TOD_FOSSIL 0.45/0.45/0.6/0.6/0.6/0.6/1.45/1.45/1.45/1.45/1.4/1.4/1.4/1.4/1.45/1.45/1.45/1.45/0.65/0.65/0.65/0.65/0.45/0.45 - - - xy 1 1 -### These scale factors undo (Oper=-1) the global diurnal scale factors over China (Mask=2009) -#36 EDGAR_TODNOX_UNDO $ROOT/EDGARv42/v2015-02/NO/EDGAR_hourly_NOxScal.nc NOXscale 2000/1/1/* C xy unitless -1 2009 +#------------------------------------------------------------------------------ +# --- Diurnal variablity of Chinese power plants from Liu et al. (EST, 2019) --- +# +# Also need to undo (Oper=-1) the global diurnal scale factors over China +#------------------------------------------------------------------------------ +35 PKU_pow_PM_BC_POC_VOC_CO 0.95/0.93/0.92/0.91/0.90/0.93/0.97/0.97/0.99/1.03/1.04/1.03/1.02/1.03/1.05/1.07/1.07/1.07/1.06/1.04/1.03/1.02/1.00/0.97 - - - xy unitless 1 2009 37 GEIA_TOD_FOSSIL_UNDO 0.45/0.45/0.6/0.6/0.6/0.6/1.45/1.45/1.45/1.45/1.4/1.4/1.4/1.4/1.45/1.45/1.45/1.45/0.65/0.65/0.65/0.65/0.45/0.45 - - - xy unitless -1 2009 -#============================================================================== -# --- Scale factors used for species conversions --- -#============================================================================== - -# VOC speciations +#------------------------------------------------------------------------------ +# --- Account for CO production by VOCs --- +#------------------------------------------------------------------------------ (((APEI.or.EDGARv43.or.DICE_Africa.or.QFED2 52 COPROD_FOSSIL 1.02 - - - xy unitless 1 54 COPROD_BIOMASS 1.05 - - - xy unitless 1 )))APEI.or.EDGARv43.or.DICE_Africa.or.QFED2 -# S to OCS ratio -70 StoOCS MATH:60.07/32.06 - - - xy unitless 1 +#------------------------------------------------------------------------------ +# --- DICE-Africa --- +# Charcoal production scale factor to reduce charcoal production +# by a factor of 5 after finding error in implementation of emission factors. +#------------------------------------------------------------------------------ +(((DICE_Africa +320 DICE_CP_SF 0.20 - - - xy 1 1 +)))DICE_Africa -# km-2 to m-2 -71 Km2ToM2 1.0e-6 - - - xy unitless 1 +#------------------------------------------------------------------------------ +# --- CO: HTAP Annual scale factors --- +#------------------------------------------------------------------------------ +(((HTAP +506 LIQFUEL_THISYR $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 1985-2010/1/1/0 C xy 1 1 +507 LIQFUEL_1985 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 1985/1/1/0 C xy 1 -1 +509 LIQFUEL_2006 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2006/1/1/0 C xy 1 -1 +510 LIQFUEL_2002 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2002/1/1/0 C xy 1 -1 +528 LIQFUEL_2008_2010 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2008-2010/1/1/0 C xy 1 -1 +)))HTAP -#============================================================================== -# --- QFED2 diurnal scale factors --- -# -# Fire diurnal scaling factors (% per hour) from WRAP Report to Project -# No. 178-6, July 2005 -#============================================================================== -(((QFED2.or.GFAS.or.BB4MIPS -75 QFED2_TOD 0.1392/0.1392/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.48/0.96/1.68/2.4/3.12/3.84/4.08/2.88/1.68/0.96/0.1368/0.1368/0.1368/0.1368/0.1368 - - - xy unitless 1 -)))QFED2.or.GFAS.or.BB4MIPS +)))USE_CO_DATA #============================================================================== -# --- EPA NEI day-of-week scale factors --- +# --- Scale factors for CO2 emissions --- #============================================================================== -(((NEI2016_MONMEAN -211 NEI99_DOW_CO $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc CO 1999/1-12/WD/0 C xy 1 1 -)))NEI2016_MONMEAN -#============================================================================== -# --- EPA NEI2016 annual scale factors --- +(((USE_CO2_DATA + +#------------------------------------------------------------------------------ +# --- FOSSIL FUEL CO2 SURFACE CORRECTION FACTOR --- # -# Annual scale factors were computed from the EPA Trends Report for Tier 1 CAPS -# (obtained 21 Sep 2021) using the "Total without wildfires" field. NH3 and -# PM2.5 only had values for 2002-2020, while the remaining species had yearly -# values for 1990-2020 (we include only 2002-2020 here). +# Fossil fuel CO2 emissions must be scaled down to avoid counting emissions +# already accounted for by CO and CH4 oxidation to CO2. # -# See NEI2016/v2021-06/national_tier1_caps+HEMCOscaling.xlsx for details. +# The necssary annual reduction in emissions related to fossil fuels is +# determined as: global C mass from FF (CO+CH4) / global C mass from FF CO2 +# +# Note: GEOS-Chem v8-03-02 to v9-02, assumed: 0.0489 for all years but that +# value seems to correspond to mid-1980s fossil fuel combustion since CO +# emissions have held constant (Granier et al., 2011) while CO2 has risen. +# +# All scale factors for years 2000-2013 lumped into a single entry +#------------------------------------------------------------------------------ +(((CO2CORR +#410 CO2_FOSSFUEL_CORR 0.0489 - - - xy 1 1 + +## CO2 scale factors from CO oxidation by decade (comment out for now) +##410 CO2_FOSSFUEL_CORR 0.052815/0.054486/0.054902/0.055107/0.053166/0.051611/0.050065/0.048803/0.047060/0.046041 - 1980-1989/1/1/0 C xy 1 1 +##410 CO2_FOSSFUEL_CORR 0.045816/0.045153/0.045541/0.045556/0.044800/0.043875/0.042910/0.042206/0.042257/0.042468 - 1990-1999/1/1/0 C xy 1 1 +##410 CO2_FOSSFUEL_CORR 0.041495/0.040525/0.040125/0.037853/0.035957/0.034686/0.033538/0.032771/0.031961/0.032118 - 2000-2009/1/1/0 C xy 1 1 +##410 CO2_FOSSFUEL_CORR 0.030622/0.029674/0.029029/0.028355 - 2010-2013/1/1/0 C xy 1 1 + +410 CO2_FOSSFUEL_CORR 0.041495/0.040525/0.040125/0.037853/0.035957/0.034686/0.033538/0.032771/0.031961/0.032118/0.030622/0.029674/0.029029/0.028355 - 2000-2013/1/1/0 C xy 1 1 +)))CO2CORR + +# ----------------------------------------------------------------------------- +# --- CO2 conversion factors --- +# ----------------------------------------------------------------------------- +420 CH4TOCO2 2.75 - - - xy 1 1 +421 CTOCO2 3.6667 - - - xy 1 1 +430 NMHCSCALE 0.3333 - - - xy 1 1 + +#------------------------------------------------------------------------------ +# --- National fossil fuel CO2 scale factors (Nassar et al, 2013) --- +#------------------------------------------------------------------------------ +(((FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR +440 CO2_DIURNAL $ROOT/CO2/v2015-04/FOSSIL/TIMES_diurnal_scale_factors.nc diurnal_scale_factors 2006/1/1/1-24 C xy 1 1 +441 CO2_WEEKLY $ROOT/CO2/v2015-04/FOSSIL/TIMES_weekly_scale_factors.nc weekly_scale_factors 2006/1/WD/0 C xy 1 1 +)))FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR + +#------------------------------------------------------------------------------ +# --- DOMESTIC AVIATION SURFACE CORRECTION FACTOR --- +# +# Regional scale factors slightly less than 1 remove surface contribution from +# domestic aviation in national fossil fuel emisisons, which should instead be +# counted in the air as a 3D field. This scale factor should be applied to the +# main/national fossil fuel emission field if using avaition emissions. +#------------------------------------------------------------------------------ + +(((FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR +480 AVIATION_SURF_CORR $ROOT/CO2/v2022-11/FOSSIL/Aviation_SurfCorr_SclFac.1x1.nc CO2 2004/1/1/0 C xy 1 1 +)))FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR + +)))USE_CO2_DATA + + + #============================================================================== -(((NEI2016_MONMEAN -252 NEI2016_CO_YRSCALE 1.817/1.767/1.716/1.666/1.610/1.554/1.393/1.251/1.272/1.261/1.220/1.178/1.137/1.095/1.000/0.973/0.950/0.927/0.904 - 2002-2020/1/1/0 C xy 1 1 -)))NEI2016_MONMEAN +# --- Scale factors for OCS emissions --- +#============================================================================== +(((USE_OCS_DATA + +#------------------------------------------------------------------------------ +# --- S to OCS ratio --- +#------------------------------------------------------------------------------ +70 StoOCS MATH:60.07/32.06 - - - xy unitless 1 + +#------------------------------------------------------------------------------ +# --- km-2 to m-2 --- +#------------------------------------------------------------------------------ +71 Km2ToM2 1.0e-6 - - - xy unitless 1 + +)))USE_OCS_DATA #============================================================================== -# --- AEIC2019 aircraft emissions scale factors --- -# -# See http://geoschemdata.wustl.edu/ExtData/HEMCO/AEIC2019/v2022-03/AEIC_2019_technical_note.pdf +# --- Inventory-specific scale factors --- #============================================================================== -(((AEIC2019_DAILY.or.AEIC2019_MONMEAN #------------------------------------------------------------------------------ +# --- AEIC2019 aircraft emissions scale factors --- +# +# See http://geoschemdata.wustl.edu/ExtData/HEMCO/AEIC2019/v2022-03/AEIC_2019_technical_note.pdf +# # Scaling factors for 1990-2019 derived from Lee et al. (2021). Lee et al. # (2021) only covers 1990 to 2018, so to get to 2019 it is assumed that the # growth from 2017 to 2018 is the same as that from 2018 to 2019. @@ -1529,6 +1606,9 @@ ${RUNDIR_CO2_COPROD} # # All scaling factors are included in here in HEMCO_Config.rc. #------------------------------------------------------------------------------ +(((AEIC2019_DAILY.or.AEIC2019_MONMEAN + +# If applying 1990-2019 scale factors (((AEIC_SCALE_1990_2019 241 AC_FBMULT 0.506/0.489/0.490/0.493/0.517/0.529/0.553/0.570/0.581/0.600/0.631/0.607/0.608/0.608/0.646/0.678/0.686/0.706/0.703/0.666/0.700/0.721/0.728/0.749/0.773/0.815/0.854/0.905/0.952/1.000 - 1990-2019/1/1/0 C xy 1 1 )))AEIC_SCALE_1990_2019 @@ -1538,120 +1618,63 @@ ${RUNDIR_CO2_COPROD} 241 AC_FBMULT 1.000000e+0 - - - xy 1 1 ))).not.AEIC_SCALE_1990_2019 -#------------------------------------------------------------------------------ # Assume 3.159 kg CO2 from every kg of fuel burned # cf Hileman, Stratton, & Donohoo, _J. Propul. Power_, 26(6), 1184–1196, 2010. -#------------------------------------------------------------------------------ 260 AEIC19_FBtoCO2 3.159 - - - xy unitless 1 )))AEIC2019_DAILY.or.AEIC2019_MONMEAN -#============================================================================== -# --- GFAS scale factors --- -#============================================================================== -(((GFAS -300 GFAS_EMITL $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc mami 2003-2021/1-12/1-31/0 C xy m 1 -)))GFAS - -#============================================================================== -# --- QFED vertical partitioning --- -# Following Fischer et al. (2014) and Travis et al. (2016), emit 35% of QFED -# emissions above the PBL. -#============================================================================== -(((QFED2 -311 QFED_PBL_FRAC 0.65 - - - xy 1 1 -312 QFED_FT_FRAC 0.35 - - - xy 1 1 -)))QFED2 - -#============================================================================== +#------------------------------------------------------------------------------ # --- CEDS vertical partitioning --- -#============================================================================== +#------------------------------------------------------------------------------ (((CEDSv2.or.CEDS_GBDMAPS 315 ENERGY_LEVS $ROOT/VerticalScaleFactors/v2021-05/gc_layers.nc g_energy 2017/1/1/0 C xyz 1 1 316 INDUSTRY_LEVS $ROOT/VerticalScaleFactors/v2021-05/gc_layers.nc g_industry 2017/1/1/0 C xyz 1 1 317 SHIP_LEVS $ROOT/VerticalScaleFactors/v2021-05/gc_layers.nc cmv_c3 2017/1/1/0 C xyz 1 1 )))CEDSv2.or.CEDS_GBDMAPS -#============================================================================== -# --- DICE-Africa --- -#============================================================================== -(((DICE_Africa -# Charcoal production scale factor to reduce charcoal production -# by a factor of 5 after finding error in implementation of emission factors. -320 DICE_CP_SF 0.20 - - - xy 1 1 -)))DICE_Africa - -#============================================================================== -# --- FOSSIL FUEL CO2 SURFACE CORRECTION FACTOR --- -# -# Fossil fuel CO2 emissions must be scaled down to avoid counting emissions -# already accounted for by CO and CH4 oxidation to CO2. -# -# The necssary annual reduction in emissions related to fossil fuels is -# determined as: global C mass from FF (CO+CH4) / global C mass from FF CO2 -# -# Note: GEOS-Chem v8-03-02 to v9-02, assumed: 0.0489 for all years but that -# value seems to correspond to mid-1980s fossil fuel combustion since CO -# emissions have held constant (Granier et al., 2011) while CO2 has risen. -# -# All scale factors for years 2000-2013 lumped into a single entry -#============================================================================== -(((CO2CORR - -#410 CO2_FOSSFUEL_CORR 0.0489 - - - xy 1 1 +#------------------------------------------------------------------------------ +# --- GFAS scale factors --- +#------------------------------------------------------------------------------ +(((GFAS +300 GFAS_EMITL $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc mami 2003-2021/1-12/1-31/0 C xy m 1 +)))GFAS -## CO2 scale factors from CO oxidation by decade (comment out for now) -##410 CO2_FOSSFUEL_CORR 0.052815/0.054486/0.054902/0.055107/0.053166/0.051611/0.050065/0.048803/0.047060/0.046041 - 1980-1989/1/1/0 C xy 1 1 -##410 CO2_FOSSFUEL_CORR 0.045816/0.045153/0.045541/0.045556/0.044800/0.043875/0.042910/0.042206/0.042257/0.042468 - 1990-1999/1/1/0 C xy 1 1 -##410 CO2_FOSSFUEL_CORR 0.041495/0.040525/0.040125/0.037853/0.035957/0.034686/0.033538/0.032771/0.031961/0.032118 - 2000-2009/1/1/0 C xy 1 1 -##410 CO2_FOSSFUEL_CORR 0.030622/0.029674/0.029029/0.028355 - 2010-2013/1/1/0 C xy 1 1 +#------------------------------------------------------------------------------ +# --- EPA NEI2016 (monthly-mean inventory) scale factors --- +#------------------------------------------------------------------------------ +(((NEI2016_MONMEAN -410 CO2_FOSSFUEL_CORR 0.041495/0.040525/0.040125/0.037853/0.035957/0.034686/0.033538/0.032771/0.031961/0.032118/0.030622/0.029674/0.029029/0.028355 - 2000-2013/1/1/0 C xy 1 1 -)))CO2CORR +# Weekday/Weekend scale factors +211 NEI99_DOW_CO $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc CO 1999/1-12/WD/0 C xy 1 1 -#============================================================================== -# --- CO2 CONVERSION FACTORS --- -#============================================================================== -420 CH4TOCO2 2.75 - - - xy 1 1 -421 CTOCO2 3.6667 - - - xy 1 1 -430 NMHCSCALE 0.3333 - - - xy 1 1 +# Annual scale factors were computed from the EPA Trends Report for Tier 1 CAPS +# (obtained 21 Sep 2021) using the "Total without wildfires" field. NH3 and +# PM2.5 only had values for 2002-2020, while the remaining species had yearly +# values for 1990-2020 (we include only 2002-2020 here). +# See NEI2016/v2021-06/national_tier1_caps+HEMCOscaling.xlsx for details. +252 NEI2016_CO_YRSCALE 1.817/1.767/1.716/1.666/1.610/1.554/1.393/1.251/1.272/1.261/1.220/1.178/1.137/1.095/1.000/0.973/0.950/0.927/0.904 - 2002-2020/1/1/0 C xy 1 1 -#============================================================================== -# ---- TIMES diurnal and weekly scale factors for national fossil fuel CO2 --- -# -# These temporal scale factors are described in Nassar et al. (2013) -#============================================================================== -(((USE_CO2_DATA -(((FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR -440 CO2_DIURNAL $ROOT/CO2/v2015-04/FOSSIL/TIMES_diurnal_scale_factors.nc diurnal_scale_factors 2006/1/1/1-24 C xy 1 1 -441 CO2_WEEKLY $ROOT/CO2/v2015-04/FOSSIL/TIMES_weekly_scale_factors.nc weekly_scale_factors 2006/1/WD/0 C xy 1 1 -)))FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR -)))USE_CO2_DATA +)))NEI2016_MONMEAN -#============================================================================== -# --- DOMESTIC AVIATION SURFACE CORRECTION FACTOR --- -# -# Regional scale factors slightly less than 1 remove surface contribution from -# domestic aviation in national fossil fuel emisisons, which should instead be -# counted in the air as a 3D field. This scale factor should be applied to the -# main/national fossil fuel emission field if using avaition emissions. -#============================================================================== -(((USE_CO2_DATA -(((FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR -480 AVIATION_SURF_CORR $ROOT/CO2/v2022-11/FOSSIL/Aviation_SurfCorr_SclFac.1x1.nc CO2 2004/1/1/0 C xy 1 1 -)))FOSSIL_CDIAC.or.FOSSIL_ODIAC.or.CO2CORR -)))USE_CO2_DATA +#------------------------------------------------------------------------------ +# --- QFED2 diurnal scale factors --- +# Fire diurnal scaling factors (% per hour) from WRAP Report to Project +# No. 178-6, July 2005 +#------------------------------------------------------------------------------ +(((QFED2.or.GFAS.or.BB4MIPS +75 QFED2_TOD 0.1392/0.1392/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.48/0.96/1.68/2.4/3.12/3.84/4.08/2.88/1.68/0.96/0.1368/0.1368/0.1368/0.1368/0.1368 - - - xy unitless 1 +)))QFED2.or.GFAS.or.BB4MIPS -#============================================================================== -# --- CO: HTAP Annual scale factors --- -#============================================================================== -(((HTAP -506 LIQFUEL_THISYR $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 1985-2010/1/1/0 C xy 1 1 -507 LIQFUEL_1985 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 1985/1/1/0 C xy 1 -1 -509 LIQFUEL_2006 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2006/1/1/0 C xy 1 -1 -510 LIQFUEL_2002 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2002/1/1/0 C xy 1 -1 -528 LIQFUEL_2008_2010 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2008-2010/1/1/0 C xy 1 -1 -)))HTAP +#------------------------------------------------------------------------------ +# --- QFED vertical partitioning --- +# Following Fischer et al. (2014) and Travis et al. (2016), +# emit 35% of QFED emissions above the PBL. +#------------------------------------------------------------------------------ +(((QFED2 +311 QFED_PBL_FRAC 0.65 - - - xy 1 1 +312 QFED_FT_FRAC 0.35 - - - xy 1 1 +)))QFED2 )))EMISSIONS From 71f5e9a8b0e03aed6b0d50a3d20214dc72b5b114 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Wed, 24 Jan 2024 10:09:10 -0500 Subject: [PATCH 051/331] Modify CH4 boundary condition code so that an offset can be added to the regular boundary condition concentrations. A python script is provided to produce the boundary condition netCDF files that can be ingested by ExtData. For now, this feature is within a GEOS compiler bracket but it would be trivial to make it available to GEOS-Chem classic --- GeosCore/set_global_ch4_mod.F90 | 16 ++- run/GEOS/GEOSCHEMchem_ExtData.yaml | 10 ++ run/GEOS/HEMCO_Config.rc | 11 +- run/GEOS/scripts/create_ch4_offset_file.py | 119 +++++++++++++++++++++ 4 files changed, 154 insertions(+), 2 deletions(-) create mode 100755 run/GEOS/scripts/create_ch4_offset_file.py diff --git a/GeosCore/set_global_ch4_mod.F90 b/GeosCore/set_global_ch4_mod.F90 index 334cd88c6..34d3884b3 100644 --- a/GeosCore/set_global_ch4_mod.F90 +++ b/GeosCore/set_global_ch4_mod.F90 @@ -108,6 +108,7 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & #if defined( MODEL_GEOS ) REAL(hp), ALLOCATABLE :: GEOS_CH4(:,:,:) + REAL(hp), ALLOCATABLE :: CH4_OFFSET(:,:) LOGICAL :: USE_GEOS_CH4 #endif LOGICAL, SAVE :: FIRST = .TRUE. @@ -136,6 +137,13 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & FOUND = .FALSE. SRCNAME = '' #if defined( MODEL_GEOS ) + ! Check for CH4 offset first + ALLOCATE(CH4_OFFSET(State_Grid%NX,State_Grid%NY)) + CH4_OFFSET(:,:) = 0.0 + CALL HCO_GC_EvalFld( Input_Opt, State_Grid, 'CH4_OFFSET', & + CH4_OFFSET, RC, FOUND=FOUND ) + IF ( .NOT. FOUND ) CH4_OFFSET = 0.0 + ! Now get CH4 concentrations ALLOCATE(GEOS_CH4(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) GEOS_CH4(:,:,:) = 0.0 CALL HCO_GC_EvalFld( Input_Opt, State_Grid, 'GEOS_CH4', & @@ -215,7 +223,7 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & ! In GEOS, we may be getting CH4 from a 3D field #if defined( MODEL_GEOS ) - IF ( USE_GEOS_CH4 ) CH4 = GEOS_CH4(I,J,L) + IF ( USE_GEOS_CH4 ) CH4 = GEOS_CH4(I,J,L) + CH4_OFFSET(I,J) #endif ! Compute implied CH4 flux if diagnostic is on @@ -242,6 +250,12 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & CALL Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, State_Met, & OrigUnit, RC ) + ! Cleanup +#if defined( MODEL_GEOS ) + IF(ALLOCATED(GEOS_CH4)) DEALLOCATE(GEOS_CH4) + IF(ALLOCATED(CH4_OFFSET)) DEALLOCATE(CH4_OFFSET) +#endif + ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Unit conversion error at end of "SET_CH4"!' diff --git a/run/GEOS/GEOSCHEMchem_ExtData.yaml b/run/GEOS/GEOSCHEMchem_ExtData.yaml index 0e4d58f6f..8a7fc3d6e 100644 --- a/run/GEOS/GEOSCHEMchem_ExtData.yaml +++ b/run/GEOS/GEOSCHEMchem_ExtData.yaml @@ -265,6 +265,11 @@ Collections: ref_time: "2001-01-01T00:00" freq: "PT3H" valid_range: "2001-01-01T00:00/2020-12-31T21:00" + GEOSCHEMchem_CH4_scaling: + template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CH4/v0.0.0/ch4_offset_to_2021_x144_y91_%y4%m2.nc + valid_range: "2021-01-01T00:00/2022-12-01T00:00" + ref_time: "2021-01-01T00:00" + freq: "P1M" GCC_CMAM_CO: template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CMAM/v0.0.0/vmrco_monChem_CMAM_CMAM30-SD_r1i1p1.monthly_clim_0.015hPa.1979_2010.nc @@ -2681,6 +2686,11 @@ Exports: regrid: BILINEAR sample: gcc_3hr variable: CH4_total_dry + CH4_OFFSET: + collection: GEOSCHEMchem_CH4_scaling + regrid: BILINEAR + sample: gcc_monthly_clim + variable: CH4_offset CO_CMAM: collection: GCC_CMAM_CO regrid: BILINEAR diff --git a/run/GEOS/HEMCO_Config.rc b/run/GEOS/HEMCO_Config.rc index b317a7633..4d8368d61 100644 --- a/run/GEOS/HEMCO_Config.rc +++ b/run/GEOS/HEMCO_Config.rc @@ -80,8 +80,9 @@ VerboseOnCores: root # Accepted values: root all --> GMI_PROD_LOSS : false --> UCX_PROD_LOSS : false --> OMOC_RATIO : false - --> GMD_SFC_CH4 : true + --> GMD_SFC_CH4 : false --> CMIP6_SFC_CH4 : false + --> GEOS_3HR_CH4 : true # OLSON and MODIS read via MAPL not HEMCO in GEOS --> OLSON_LANDMAP : false --> YUAN_MODIS_LAI : false @@ -1359,6 +1360,14 @@ VerboseOnCores: root # Accepted values: root all * NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2018-01/monthly.gridded.surface.methane.1979-2020.1x1.nc SFC_CH4 1979-2020/1-12/1/0 C xy ppbv * - 1 1 )))GMD_SFC_CH4 +#============================================================================== +# --- GEOS 3-hourly CH4 (within PBL) --- +#============================================================================== +(((GEOS_3HR_CH4 +* GEOS_CH4 /see/extdata CH4_total_dry 1979-2024/1-12/1-31/0 C xyz v/v * - 1 1 +* CH4_OFFSET /see/extdata CH4_offset 2021-2024/1-12/1/0 C xy v/v * - 1 1 +)))GEOS_3HR_CH4 + (((SfcVMR #============================================================================== # --- CMIP6 files --- diff --git a/run/GEOS/scripts/create_ch4_offset_file.py b/run/GEOS/scripts/create_ch4_offset_file.py new file mode 100755 index 000000000..83778d329 --- /dev/null +++ b/run/GEOS/scripts/create_ch4_offset_file.py @@ -0,0 +1,119 @@ +#!/usr/local/other/python/GEOSpyD/2019.03_py3.7/2019-04-22/bin/python +''' +Script to create uniform CH4 offset file that can be read by GEOS to +add a universal offset to CH4 boundary conditions. +The offset value can be either passed as input argument or calculated +online as the difference between the target year and the reference year. +In case of the latter, the values from the following source are used to +determine the CH4 increase: +- https://gml.noaa.gov/webdata/ccgg/trends/ch4/ch4_mm_gl.txt + +EXAMPLES: +1. Create CH4 growth files relative to 2021 passing explicit values: + +Create y/y offset file for January 2022 relative to 2021, using prescribed offset +python create_ch4_offset_file.py -y 2022 -m 1 -v 17.97e-9 -o 'ch4_offset_to_2021_%Y%m.nc' + +Create y/y offset file for January 2023 relative to 2022, using prescribed offset +python create_ch4_offset_file.py -y 2023 -m 1 -v 14.62e-9 -o 'ch4_offset_to_2022_%Y%m.nc' + +Create y/y offset file for January 2023 relative to 2021 by adding y/y offset to 2022/2021 file +python create_ch4_offset_file.py -y 2023 -m 1 -v 14.62e-9 -i 'ch4_offset_to_2021_2022%m.nc' -o 'ch4_offset_to_2021_%Y%m.nc' + +2. Create CH4 growth file relative to 2021 using online computed offset: +python create_ch4_offset_file.py -y 2023 -m 1 -r 2021 -o 'ch4_offset_to_2021_%Y%m.nc' + +HISTORY: +20240118 - christoph.a.keller@nasa.gov - initial version +''' +import sys +import argparse +import logging +import datetime as dt +import time +import numpy as np +import xarray as xr +import pandas as pd + +# NOAA CH4 data +URL="https://gml.noaa.gov/webdata/ccgg/trends/ch4/ch4_mm_gl.txt" + +def main(args): + ''' + Create a netCDF file with the given offset values. + ''' + log = logging.getLogger(__name__) + # output time + otime = dt.datetime(args.year,args.month,1) + # offset value: read from online table if not provided + offset = np.nan + if args.value is None: + log.info('Reading CH4 trends from {}'.format(URL)) + dat = pd.read_csv(URL,comment="#",header=None,sep='\s+') + # get reference values in ppb + refconc = dat.loc[(dat[0]==args.refyear)&(dat[1]==args.month),3].values[0] + targetconc = dat.loc[(dat[0]==args.year)&(dat[1]==args.month),3].values[0] + offset = (targetconc-refconc)*1.0e-9 + log.info("Calculated offset from URL: {}".format(URL)) + log.info("reference concentration ({}-{}): {}".format(args.refyear,args.month,refconc)) + log.info("target concentration ({}-{}): {}".format(args.year,args.month,targetconc)) + log.info("offset (mol/mol): {}".format(offset)) + else: + offset = args.value + + # define lat/lon coordinates and output array with offsets. + if args.ifile is not None: + # Read input file and inherit coordinates from it. Add offset to values in that file + ifile = otime.strftime(args.ifile) + log.info('reading {}'.format(ifile)) + dsi = xr.open_dataset(ifile) + lons = dsi.lon.values + lats = dsi.lat.values + assert args.varname in dsi,"variable {} not found in {}".format(args.varname,args.ifile) + assert len(dsi[args.varname].shape)==3,"variable {} must have 3 dimensions (time,lat,lon)".format(args.varname) + arr = dsi[args.varname].values[:,:,:] + offset + else: + # Create from scratch + lons = np.arange(-180.,180.,2.5) + lats = np.arange(-90.,90.1,2.) + arr = np.zeros((1,len(lats),len(lons))) + arr[:] = offset + + # Create output dataset + ds = xr.Dataset() + ds[args.varname] = (('time','lat','lon'),arr) + ds[args.varname].attrs = {'standard_name':'CH4_offset','long_name':'CH4_offset','units':"mol/mol"} + ds.coords['lat'] = (('lat'),lats) + ds['lat'].attrs = {'standard_name':'latitude','long_name':'latitude','units':'degrees_north'} + ds.coords['lon'] = (('lon'),lons) + ds['lon'].attrs = {'standard_name':'longitude','long_name':'longitude','units':'degrees_east'} + tunit = otime.strftime('days since %Y-%m-%d %H:%M:%S') + ds.coords['time'] = (('time'),np.zeros((1,))) + ds['time'].attrs = {'standard_name':'time','long_name':'time','units':tunit,'calendar':'standard'} + ofile = otime.strftime(args.ofile) + ds.to_netcdf(ofile) + log.info('file written to {}'.format(ofile)) + ds.close() + return + + +def parse_args(): + p = argparse.ArgumentParser(description='Undef certain variables') + p.add_argument('-y', '--year',type=int,help='output year',default=2023) + p.add_argument('-m', '--month',type=int,help='output month',default=1) + p.add_argument('-v', '--value',type=float,help='CH4 offset, in mol/mol dry',default=None) + p.add_argument('-r', '--refyear',type=int,help='reference year',default=2021) + p.add_argument('-i', '--ifile',type=str,help='input file, will add offset to values in that file',default=None) + p.add_argument('-o', '--ofile',type=str,help='output file',default="ch4_offset_to_2021_x144_y91_%Y%m.nc") + p.add_argument('-n', '--varname',type=str,help='variable name for offset',default="CH4_offset") + return p.parse_args() + + +if __name__ == '__main__': + log = logging.getLogger() + log.setLevel(logging.INFO) + handler = logging.StreamHandler(sys.stdout) + handler.setLevel(logging.INFO) + log.addHandler(handler) + main(parse_args()) + From 778f992830b7dbd879960b0d3914f7690da652f3 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Wed, 24 Jan 2024 10:10:25 -0500 Subject: [PATCH 052/331] Update CH4 boundary condition file to updated run that goes through 2021 --- run/GEOS/GEOSCHEMchem_ExtData.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/run/GEOS/GEOSCHEMchem_ExtData.yaml b/run/GEOS/GEOSCHEMchem_ExtData.yaml index 8a7fc3d6e..7b3c4521a 100644 --- a/run/GEOS/GEOSCHEMchem_ExtData.yaml +++ b/run/GEOS/GEOSCHEMchem_ExtData.yaml @@ -265,6 +265,11 @@ Collections: ref_time: "2001-01-01T00:00" freq: "PT3H" valid_range: "2001-01-01T00:00/2020-12-31T21:00" + Jason_10.18.0_carbon_c90_2023: + template: /discover/nobackup/projects/gmao/geos_carb/sbasu1/runs/GCM/Jason_10.18.0_carbon_c90_2023/holding/methane_tags/Jason_10.18.0_carbon_c90_2023.methane_tags.%y4%m2%d2_%h200z.nc + ref_time: "2001-01-01T00:00" + freq: "PT3H" + valid_range: "2001-01-01T00:00/2021-12-31T21:00" GEOSCHEMchem_CH4_scaling: template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CH4/v0.0.0/ch4_offset_to_2021_x144_y91_%y4%m2.nc valid_range: "2021-01-01T00:00/2022-12-01T00:00" @@ -2682,7 +2687,7 @@ Exports: sample: gcc_persist variable: s_mn GEOS_CH4: - collection: Jason_10.18.0_carbon_c90 + collection: Jason_10.18.0_carbon_c90_2023 regrid: BILINEAR sample: gcc_3hr variable: CH4_total_dry From a27adc6ac2e0fca6dfc5dce6bf027a321bba5d54 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 24 Jan 2024 15:04:55 -0500 Subject: [PATCH 053/331] Use same files in carbon, CH4, tagCH4 configuration files run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon run/GCHP/ExtData.rc.templates/ExtData.rc.carbon - Ensure that config files for CO2, CH4, tagCH4 use the same file paths for the carbon simulation. This now includes COARDS-compliant files for GCHP. run/shared/settings/gmao_hemco.txt - Changed file paths for RUNDIR_GLOBAL_Cl, RUNDIR_PCO_CH4, RUNDIR_PCO_NMVOC, RUNDIR_CH4_LOSS, RUNDIR_CO2_COPROD, RUNDIR_GLOBAL_OH so that they point to COARDS-compliant files. Otherwise GCHP cannot read these data. Signed-off-by: Bob Yantosca --- .../HEMCO_Config.rc.CH4 | 156 ++++++++++-------- .../HEMCO_Config.rc.carbon | 18 +- .../HEMCO_Config.rc.tagCH4 | 123 +++++++------- .../ExtData.rc.templates/ExtData.rc.carbon | 84 ++++++---- .../HEMCO_Config.rc.carbon | 29 ++-- run/shared/settings/gmao_hemco.txt | 12 +- 6 files changed, 233 insertions(+), 189 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index 96e9c0962..ae9f2e990 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -181,8 +181,8 @@ VerboseOnCores: root # Accepted values: root all 0 GHGI_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 0 GHGI_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 0 GHGI_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 4 1 -0 GHGI_COAST_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1009 4 1 +0 GHGI_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 4 1 +0 GHGI_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1009 4 1 0 GHGI_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 0 GHGI_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 0 GHGI_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 @@ -227,8 +227,8 @@ VerboseOnCores: root # Accepted values: root all 0 GHGI_EE_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 ### Livestock ### -0 GHGI_EE_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 -0 GHGI_EE_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_EE_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 +0 GHGI_EE_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 ### Landfills ### 0 GHGI_EE_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 @@ -263,8 +263,8 @@ VerboseOnCores: root # Accepted values: root all 0 GHGI_EE_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 0 GHGI_EE_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 0 GHGI_EE_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 4 1 -0 GHGI_EE_COAST_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1009 4 1 +0 GHGI_EE_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 4 1 +0 GHGI_EE_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1009 4 1 0 GHGI_EE_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 0 GHGI_EE_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 0 GHGI_EE_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 @@ -398,45 +398,41 @@ VerboseOnCores: root # Accepted values: root all # NOTES: # - These are annual emissions. Seasonality is applied via scale factors # computed from EDGARv6.0 monthly emissions. +# +# - Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((EDGARv7 -### Oil, gas, coal ### -0 EDGAR7_CH4_OILGASCOAL__1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 729 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 34 1 1 - -### Gas ### -0 EDGAR7_CH4_OIL__1B2c $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 31 2 1 - -### Coal ### -0 EDGAR7_CH4_COAL__1B1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 30 3 1 +### Oil. gas, coal ### +0 EDGAR7_CH4_OILGASCOAL__1B1_1B2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 729 1 1 +0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 734 1 1 ### Livestock ### -0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 24 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 28 4 1 +0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 724 4 1 +0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 728 4 1 ### Landfills ### -0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 36 5 1 +0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 736 5 1 ### Wastewater ### -0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 43 6 1 +0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 743 6 1 ### Rice ### -0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 20 7 1 +0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 720 7 1 ### Other Anthro ### -0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 23 8 1 -0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 26 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 37 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 38 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 39 8 1 -0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 42 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 40 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 41 8 1 -0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 33 8 1 -0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 22 8 1 -0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 27 8 1 -0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 21 8 1 -0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 35 8 1 +0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 723 8 1 +0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 726 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 737 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 738 8 1 +0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 739 8 1 +0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 742 8 1 +0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 740 8 1 +0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 741 8 1 +0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 733 8 1 +0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 722 8 1 +0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 727 8 1 +0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 721 8 1 +0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 735 8 1 )))EDGARv7 #============================================================================== @@ -473,10 +469,12 @@ VerboseOnCores: root # Accepted values: root all )))QFED2 #============================================================================== -# --- JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- +# --- CH4: JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- +# +# # Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((JPL_WETCHARTS -0 JPLW_CH4 $ROOT/CH4/v2020-09/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4 - 10 1 +0 JPLW_CH4 $ROOT/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4 - 10 1 )))JPL_WETCHARTS #============================================================================== @@ -495,10 +493,12 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Emissions from Hydroelectric Reservoirs (Delwich et al., 2022) --- +# +# Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((RESERVOIRS -0 CH4_RES_DAM $ROOT/CH4/v2023-04/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 -0 CH4_RES_SFC $ROOT/CH4/v2023-04/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 +0 CH4_RES_DAM $ROOT/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 +0 CH4_RES_SFC $ROOT/CH4/v2024-01/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 )))RESERVOIRS #============================================================================== @@ -659,7 +659,7 @@ ${RUNDIR_CH4_LOSS} # --- Global OH from GEOS-Chem v5-07 [kg/m3] --- (((GLOBAL_OH -* GLOBAL_OH $ROOT/OH/v2014-09/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 +* GLOBAL_OH $ROOT/OH/v2014-09/v5-07-08/OH_3Dglobal.geos5.72L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 )))GLOBAL_OH # --- Global Cl [mol/mol dry air] --- @@ -898,6 +898,11 @@ ${RUNDIR_GLOBAL_Cl} #============================================================================== # --- Seasonal scaling factors ---- #============================================================================== +(((USE_CH4_DATA + +#------------------------------------------------------------------------------ +# --- GHGI monthly scaling factors --- +#------------------------------------------------------------------------------ (((GHGI_v2.or.GHGI_v2_Express_Ext 50 GHGI_OTH_STA_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1A_Combustion_Stationary 2012-2018/1-12/1/0 C xy 1 1 51 GHGI_OIL_EXP_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 C xy 1 1 @@ -911,36 +916,43 @@ ${RUNDIR_GLOBAL_Cl} 59 GHGI_OTH_BUR_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_3F_Field_Burning 2012-2018/1-12/1/0 C xy 1 1 )))GHGI_v2.or.GHGI_v2_Express_Ext -(((Scarpelli_Mexico.or.Scarpelli_Canada +#------------------------------------------------------------------------------ +# --- Scarpelli_Mexico manure & rice scale factors --- +#------------------------------------------------------------------------------ +(((Scarpelli_Mexico 10 MANURE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Manure_ScalingFactors.WithClimatology.nc sf_ch4 2008-2016/1-12/1/0 C xy 1 1 -11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 -)))Scarpelli_Mexico.or.Scarpelli_Canada +11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 +)))Scarpelli_Mexico +#------------------------------------------------------------------------------ +# --- EDGAR scale factors --- +#------------------------------------------------------------------------------ (((EDGARv7 -20 EDGAR_SEASONAL_SF_AGS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -21 EDGAR_SEASONAL_SF_AWB $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AWB.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -22 EDGAR_SEASONAL_SF_CHE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_CHE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -23 EDGAR_SEASONAL_SF_ENE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -24 EDGAR_SEASONAL_SF_ENF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -25 EDGAR_SEASONAL_SF_FFF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_FFF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -26 EDGAR_SEASONAL_SF_IND $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IND.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -27 EDGAR_SEASONAL_SF_IRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -28 EDGAR_SEASONAL_SF_MNM $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_MNM.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -29 EDGAR_SEASONAL_SF_PRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -30 EDGAR_SEASONAL_SF_PRO_COAL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -31 EDGAR_SEASONAL_SF_PRO_GAS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -32 EDGAR_SEASONAL_SF_PRO_OIL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -33 EDGAR_SEASONAL_SF_RCO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_RCO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -34 EDGAR_SEASONAL_SF_REF_TRF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_REF_TRF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -35 EDGAR_SEASONAL_SF_SWD_INC $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_INC.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -36 EDGAR_SEASONAL_SF_SWD_LDF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_LDF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -37 EDGAR_SEASONAL_SF_TNR_AV_CDS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CDS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -38 EDGAR_SEASONAL_SF_TNR_AV_CRS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CRS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -39 EDGAR_SEASONAL_SF_TNR_AV_LTO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_LTO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -40 EDGAR_SEASONAL_SF_TNR_Other $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Other.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -41 EDGAR_SEASONAL_SF_TNR_SHIP $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Ship.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -42 EDGAR_SEASONAL_SF_TRO_noRes $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TRO_noRES.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -43 EDGAR_SEASONAL_SF_WWT $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_WWT.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +720 EDGAR_SEASONAL_SF_AGS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +721 EDGAR_SEASONAL_SF_AWB $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AWB.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +722 EDGAR_SEASONAL_SF_CHE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_CHE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +723 EDGAR_SEASONAL_SF_ENE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +724 EDGAR_SEASONAL_SF_ENF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +725 EDGAR_SEASONAL_SF_FFF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_FFF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +726 EDGAR_SEASONAL_SF_IND $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IND.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +727 EDGAR_SEASONAL_SF_IRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +728 EDGAR_SEASONAL_SF_MNM $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_MNM.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +729 EDGAR_SEASONAL_SF_PRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +# These 3 fields are only needed for EDGARv6 (Bob Yantosca, 19 Jan 2024) +#730 EDGAR_SEASONAL_SF_PRO_COAL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +#731 EDGAR_SEASONAL_SF_PRO_GAS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +#732 EDGAR_SEASONAL_SF_PRO_OIL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +733 EDGAR_SEASONAL_SF_RCO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_RCO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +734 EDGAR_SEASONAL_SF_REF_TRF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_REF_TRF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +735 EDGAR_SEASONAL_SF_SWD_INC $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_INC.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +736 EDGAR_SEASONAL_SF_SWD_LDF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_LDF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +737 EDGAR_SEASONAL_SF_TNR_AV_CDS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CDS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +738 EDGAR_SEASONAL_SF_TNR_AV_CRS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CRS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +739 EDGAR_SEASONAL_SF_TNR_AV_LTO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_LTO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +740 EDGAR_SEASONAL_SF_TNR_Other $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Other.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +741 EDGAR_SEASONAL_SF_TNR_SHIP $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Ship.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +742 EDGAR_SEASONAL_SF_TRO_noRes $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TRO_noRES.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 +743 EDGAR_SEASONAL_SF_WWT $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_WWT.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 )))EDGARv7 #============================================================================== @@ -968,19 +980,21 @@ ${RUNDIR_GLOBAL_Cl} #============================================================================== # Country/region masks #============================================================================== + +# Use updated files (v2024-01); these are COARDS-compliant. (((Scarpelli_Mexico -1001 MEXICO_MASK $ROOT/MASKS/v2018-09/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -1010 MEX_MASK_MIRROR $ROOT/MASKS/v2018-09/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1001 MEX_MASK $ROOT/MASKS/v2024-01/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-01/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 )))Scarpelli_Mexico (((Scarpelli_Canada -1002 CANADA_MASK $ROOT/MASKS/v2018-09/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v2018-09/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1002 CAN_MASK $ROOT/MASKS/v2024-01/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-01/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))Scarpelli_Canada (((GHGI_v2.or.GHGI_v2_Express_Ext -1008 CONUS_MASK $ROOT/MASKS/v2018-09/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 -1009 CONUS_MIRROR $ROOT/MASKS/v2018-09/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1008 CONUS_MASK $ROOT/MASKS/v2018-09/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2018-09/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 )))GHGI_v2.or.GHGI_v2_Express_Ext )))EMISSIONS diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 8de5ee3fe..0b8128fd1 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -425,6 +425,8 @@ Mask fractions: false # NOTES: # - These are annual emissions. Seasonality is applied via scale factors # computed from EDGARv6.0 monthly emissions. +# +# - Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((EDGARv7 ### Oil. gas, coal ### @@ -495,6 +497,8 @@ Mask fractions: false #============================================================================== # --- CH4: JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- +# +# Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((JPL_WETCHARTS 0 JPLW_CH4 $ROOT/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4 - 10 1 @@ -516,6 +520,8 @@ Mask fractions: false #============================================================================== # --- Emissions from Hydroelectric Reservoirs (Delwich et al., 2022) --- +# +# Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((RESERVOIRS 0 CH4_RES_DAM $ROOT/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 @@ -1293,7 +1299,7 @@ Mask fractions: false #------------------------------------------------------------------------------ # --- OH from GEOS-Chem v5-07 [kg/m3], needed for CH4/IMI --- (((GLOBAL_OH_GCv5 -* GLOBAL_OH $ROOT/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 +* GLOBAL_OH $ROOT/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.72L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 )))GLOBAL_OH_GCv5 # --- OH from the last 10-yr benchmark [mol/mol dry air] --- @@ -1313,10 +1319,8 @@ ${RUNDIR_CH4_LOSS} )))CH4_LOSS_FREQ # --- Global Cl [mol/mol dry air] --- -# NOTE: This file has all non-COARDS-compliant elements removed! -# GCHP cannot read this data otherwise. (Bob Yantosca, 19 Jan 2024) (((GLOBAL_CL -* GLOBAL_Cl $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_Cl 2010-2019/1-12/1/0 C xyz 1 * - 1 1 +${RUNDIR_GLOBAL_Cl} )))GLOBAL_CL #------------------------------------------------------------------------------ @@ -1324,13 +1328,11 @@ ${RUNDIR_CH4_LOSS} #------------------------------------------------------------------------------ # -- P(CO) from CH4 and NMVOC from the last 10-yr benchmark [molec/cm3/s] --- -# NOTE: These files has all non-COARDS-compliant elements removed! -# GCHP cannot read this data otherwise. (Bob Yantosca, 19 Jan 2024) (((PROD_CO_CH4 -* PCO_CH4 $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromCH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1 +${RUNDIR_PCO_CH4} )))PROD_CO_CH4 (((PROD_CO_NMVOC -* PCO_NMVOC $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromNMVOC 2010-2019/1-12/1/0 C xyz 1 * - 1 1 +${RUNDIR_PCO_NMVOC} )))PROD_CO_NMVOC # --- GMI chemistry: prod/loss rates (for strato-/mesosphere) --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index ff6005226..9f5f8d558 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -568,68 +568,70 @@ VerboseOnCores: root # Accepted values: root all # NOTES: # - These are annual emissions. Seasonality is applied via scale factors # computed from EDGARv6.0 monthly emissions. +# +# - Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((EDGARv7 ### Oil ### #### NOTE: EDGARv7 has oil, gas, coal in the "PRO" sector file -0 EDGAR7_CH4_OIL__1B2a_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OIL 32 1 1 -0 EDGAR7_CH4_OIL__1B2a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 32 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 34 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 34 1 1 +0 EDGAR7_CH4_OIL__1B2a_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OIL 32 1 1 +0 EDGAR7_CH4_OIL__1B2a $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 32 1 1 +0 EDGAR7_CH4_OTHER__1A1_1B1_1B2_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 34 1 1 +0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 34 1 1 ### Gas ### -0 EDGAR7_CH4_OIL__1B2c_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_GAS 31 2 1 -0 EDGAR7_CH4_OIL__1B2c $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 31 2 1 +0 EDGAR7_CH4_OIL__1B2c_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_GAS 31 2 1 +0 EDGAR7_CH4_OIL__1B2c $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 31 2 1 ### Coal ### -0 EDGAR7_CH4_COAL__1B1a_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_COL 30 3 1 -0 EDGAR7_CH4_COAL__1B1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 30 3 1 +0 EDGAR7_CH4_COAL__1B1a_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_COL 30 3 1 +0 EDGAR7_CH4_COAL__1B1a $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 30 3 1 ### Livestock ### -0 EDGAR7_CH4_LIVESTOCK__4A_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_LIV 24 4 1 -0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 24 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_LIV 28 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 28 4 1 +0 EDGAR7_CH4_LIVESTOCK__4A_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_LIV 24 4 1 +0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 24 4 1 +0 EDGAR7_CH4_LIVESTOCK__4B_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_LIV 28 4 1 +0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 28 4 1 ### Landfills ### -0 EDGAR7_CH4_LANDFILLS__6A_6D_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_LDF 36 5 1 -0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 36 5 1 +0 EDGAR7_CH4_LANDFILLS__6A_6D_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_LDF 36 5 1 +0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 36 5 1 ### Wastewater ### -0 EDGAR7_CH4_WASTEWATER__6B_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_WST 43 6 1 -0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 43 6 1 +0 EDGAR7_CH4_WASTEWATER__6B_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_WST 43 6 1 +0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 43 6 1 ### Rice ### -0 EDGAR7_CH4_RICE__4C_4D_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_RIC 20 7 1 -0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 20 7 1 +0 EDGAR7_CH4_RICE__4C_4D_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_RIC 20 7 1 +0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 20 7 1 ### Other Anthro ### -0 EDGAR7_CH4_OTHER__1A1a_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 23 8 1 -0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 23 8 1 -0 EDGAR7_CH4_OTHER__1A2_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 26 8 1 -0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 26 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 37 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 37 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 38 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 38 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 39 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 39 8 1 -0 EDGAR7_CH4_OTHER__1A3b_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 42 8 1 -0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 42 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 40 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 40 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 41 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 41 8 1 -0 EDGAR7_CH4_OTHER__1A4_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 33 8 1 -0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 33 8 1 -0 EDGAR7_CH4_OTHER__2B_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 22 8 1 -0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 22 8 1 -0 EDGAR7_CH4_OTHER__2C_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 27 8 1 -0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 27 8 1 -0 EDGAR7_CH4_OTHER__4F_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 21 8 1 -0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 21 8 1 -0 EDGAR7_CH4_OTHER__6C_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 35 8 1 -0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 35 8 1 +0 EDGAR7_CH4_OTHER__1A1a_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 23 8 1 +0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 23 8 1 +0 EDGAR7_CH4_OTHER__1A2_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 26 8 1 +0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 26 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CDS_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 37 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 37 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CRS_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 38 8 1 +0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 38 8 1 +0 EDGAR7_CH4_OTHER__1A3a_LTO_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 39 8 1 +0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 39 8 1 +0 EDGAR7_CH4_OTHER__1A3b_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 42 8 1 +0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 42 8 1 +0 EDGAR7_CH4_OTHER__1A3c_1A3e_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 40 8 1 +0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 40 8 1 +0 EDGAR7_CH4_OTHER__1A3d_1C2_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 41 8 1 +0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 41 8 1 +0 EDGAR7_CH4_OTHER__1A4_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 33 8 1 +0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 33 8 1 +0 EDGAR7_CH4_OTHER__2B_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 22 8 1 +0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 22 8 1 +0 EDGAR7_CH4_OTHER__2C_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 27 8 1 +0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 27 8 1 +0 EDGAR7_CH4_OTHER__4F_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 21 8 1 +0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 21 8 1 +0 EDGAR7_CH4_OTHER__6C_T $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 35 8 1 +0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2024-01/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 35 8 1 )))EDGARv7 #============================================================================== @@ -677,10 +679,12 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- +# +# # Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((JPL_WETCHARTS -0 JPLW_CH4_T $ROOT/CH4/v2020-09/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4_WTL - 10 1 -0 JPLW_CH4 $ROOT/CH4/v2020-09/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4 - 10 1 +0 JPLW_CH4_T $ROOT/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4_WTL - 10 1 +0 JPLW_CH4 $ROOT/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4 - 10 1 )))JPL_WETCHARTS #============================================================================== @@ -701,12 +705,14 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Emissions from Hydroelectric Reservoirs (Delwich et al., 2022) --- +# +# Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((RESERVOIRS -0 CH4_RES_DAM_T $ROOT/CH4/v2023-04/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4_RES - 15 1 -0 CH4_RES_DAM $ROOT/CH4/v2023-04/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 -0 CH4_RES_SFC_T $ROOT/CH4/v2023-04/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4_RES - 15 1 -0 CH4_RES_SFC $ROOT/CH4/v2023-04/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 +0 CH4_RES_DAM_T $ROOT/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4_RES - 15 1 +0 CH4_RES_DAM $ROOT/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 +0 CH4_RES_SFC_T $ROOT/CH4/v2024-01/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4_RES - 15 1 +0 CH4_RES_SFC $ROOT/CH4/v2024-01/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 )))RESERVOIRS #============================================================================== @@ -871,7 +877,7 @@ ${RUNDIR_CH4_LOSS} # --- Global OH from GEOS-Chem v5-07 [kg/m3] --- (((GLOBAL_OH -* GLOBAL_OH $ROOT/OH/v2014-09/v5-07-08/OH_3Dglobal.geos5.47L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 +* GLOBAL_OH $ROOT/OH/v2014-09/v5-07-08/OH_3Dglobal.geos5.72L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 )))GLOBAL_OH # --- Global Cl [mol/mol dry air] --- @@ -1126,10 +1132,10 @@ ${RUNDIR_GLOBAL_Cl} #============================================================================== # --- Seasonal scaling factors ---- #============================================================================== -(((Scarpelli_Mexico.or.Scarpelli_Canada +(((Scarpelli_Mexico 10 MANURE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Manure_ScalingFactors.WithClimatology.nc sf_ch4 2008-2016/1-12/1/0 C xy 1 1 11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 -)))Scarpelli_Mexico.or.Scarpelli_Canada +)))Scarpelli_Mexico (((EDGARv7 20 EDGAR_SEASONAL_SF_AGS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 @@ -1183,14 +1189,17 @@ ${RUNDIR_GLOBAL_Cl} #============================================================================== # Country/region masks #============================================================================== + +# Use updated files (v2024-01); these are COARDS-compliant. (((Scarpelli_Mexico -1001 MEXICO_MASK $ROOT/MASKS/v2018-09/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -1010 MEX_MASK_MIRROR $ROOT/MASKS/v2018-09/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1001 MEXICO_MASK $ROOT/MASKS/v2024-01/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-01/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 )))Scarpelli_Mexico +# Use updated files (v2024-01); these are COARDS-compliant. (((Scarpelli_Canada -1002 CANADA_MASK $ROOT/MASKS/v2018-09/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v2018-09/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1002 CANADA_MASK $ROOT/MASKS/v2024-01/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1011 CAN_MASK_MIRROR $ROOT/MASKS/v20/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))Scarpelli_Canada (((GHGI_v2.or.GHGI_v2_Express_Ext diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index 445797477..bcc3351c4 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -252,33 +252,37 @@ GFEI_CH4_COAL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Gl # --- EDGAR v7.0 --- # +# Use updated files (v2024-01); these are COARDS-compliant. +# # Comment these when "--> EDGARv7 : false" is in HEMCO_Config.rc -EDGAR7_CH4_OILGASCOAL__1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_PRO.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A1_1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_REF_TRF.0.1x0.1.nc -EDGAR7_CH4_LIVESTOCK__4A kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENF.0.1x0.1.nc -EDGAR7_CH4_LIVESTOCK__4B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_MNM.0.1x0.1.nc -EDGAR7_CH4_LANDFILLS__6A_6D kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_SWD_LDF.0.1x0.1.nc -EDGAR7_CH4_WASTEWATER__6B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_WWT.0.1x0.1.nc -EDGAR7_CH4_RICE__4C_4D kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_AGS.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A1a kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENE.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_IND.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3a_CDS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_CDS.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3a_CRS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_CRS.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3a_LTO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_LTO.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3b kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TRO_noRES.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3c_1A3e kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Other.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3d_1C2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Ship.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A4 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_RCO.0.1x0.1.nc -EDGAR7_CH4_OTHER__2B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_CHE.0.1x0.1.nc -EDGAR7_CH4_OTHER__2C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_IRO.0.1x0.1.nc -EDGAR7_CH4_OTHER__4F kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_AWB.0.1x0.1.nc -EDGAR7_CH4_OTHER__6C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_SWD_INC.0.1x0.1.nc +EDGAR7_CH4_OILGASCOAL__1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_PRO.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A1_1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_REF_TRF.0.1x0.1.nc +EDGAR7_CH4_LIVESTOCK__4A kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENF.0.1x0.1.nc +EDGAR7_CH4_LIVESTOCK__4B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_MNM.0.1x0.1.nc +EDGAR7_CH4_LANDFILLS__6A_6D kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_SWD_LDF.0.1x0.1.nc +EDGAR7_CH4_WASTEWATER__6B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_WWT.0.1x0.1.nc +EDGAR7_CH4_RICE__4C_4D kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_AGS.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A1a kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENE.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_IND.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3a_CDS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_CDS.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3a_CRS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_CRS.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3a_LTO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_LTO.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3b kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TRO_noRES.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3c_1A3e kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Other.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A3d_1C2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Ship.0.1x0.1.nc +EDGAR7_CH4_OTHER__1A4 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_RCO.0.1x0.1.nc +EDGAR7_CH4_OTHER__2B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_CHE.0.1x0.1.nc +EDGAR7_CH4_OTHER__2C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_IRO.0.1x0.1.nc +EDGAR7_CH4_OTHER__4F kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_AWB.0.1x0.1.nc +EDGAR7_CH4_OTHER__6C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_SWD_INC.0.1x0.1.nc # --- JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- # +# Use updated files (v2024-01); these are COARDS-compliant. +# # Comment this when "--> JPL_WETCHARTS: false" is in HEMCO_Config.rc. -JPLW_CH4 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2020-09/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc +JPLW_CH4 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc # --- Geological seeps --- @@ -289,9 +293,11 @@ CH4_SEEPS kg/m2/s N Y - none none emi_ch4 ./HcoDir/CH4/v2020-04/Seeps/Etiope_C # --- Emissions from reservoirs (Delwich et al 2022) --- # +# Use updated files (v2024-01); these are COARDS-compliant. +# # Comment these when "--> RESERVOIRS : false" is in HEMCO_Config.rc. -CH4_RES_DAM kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Dam_Emissions.0.1x0.1.nc -CH4_RES_SFC kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2023-04/ResME/ResME_Surface_Emissions.0.1x0.1.nc +CH4_RES_DAM kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc +CH4_RES_SFC kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2024-01/ResME/ResME_Surface_Emissions.0.1x0.1.nc # --- Emissions from termites (Fung et al 1991) --- @@ -466,8 +472,10 @@ CO2_MONOTERP kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none MONOT ./HcoDir/ # --- CO2 production from CO --- # +# Use updated files (v2024-01); these are COARDS-compliant. +# # Comment this when "--> CO2_COPROD : false" is in HEMCO_Config.rc. -CO2_COPROD kgC/m3/s N Y F%y2-%m2-01T00:00:00 none none LCO ./HcoDir/CO2/v2022-11/CHEM/CO2_prod_rates.GEOS5.2x25.72L.nc +CO2_COPROD kgC/m3/s N Y F%y2-%m2-01T00:00:00 none none LCO ./HcoDir/CO2/v2024-01/CHEM/CO2_prod_rates.GEOS5.2x25.72L.nc #============================================================================== # --- OCS emission fluxes --- @@ -520,7 +528,7 @@ TIMEZONES count N V - none none UTC_OFFSET ./HcoDir/TIMEZONES/v2015-02/timezones # --- OH from the latest 10-year benchmark --- # # Comment this if "--> GLOBAL_OH_GC14 : false" is in HEMCO_Config.rc -##GLOBAL_OH kg/m3 N N %y4-%m2-01T00:00:00 none none SpeciesConc_OH ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.SpeciesConc.%y4%m2%d2_0000z.nc4 +##GLOBAL_OH kg/m3 N N %y4-%m2-01T00:00:00 none none SpeciesConc_OH ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.SpeciesConc.%y4%m201_0000z.nc4 # --- OH from GEOS-Chem v5-07-08 --- @@ -530,16 +538,22 @@ TIMEZONES count N V - none none UTC_OFFSET ./HcoDir/TIMEZONES/v2015-02/timezones GLOBAL_OH kg/m3 1985 Y F%y4-%m2-01T00:00:00 none none OH ./HcoDir/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.72L.4x5.nc -# --- Global Cl concentrations -GLOBAL_Cl mol/mol N Y F%y4-%m2-%d2T00:00:00 none none SpeciesConc_Cl ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.SpeciesConc.%y4%m201_0000z.nc4 +# --- Global Cl concentrations --- +# +# Use updated files (v2024-01); these are COARDS-compliant. +GLOBAL_Cl mol/mol N Y F%y4-%m2-%d2T00:00:00 none none SpeciesConc_Cl ./HcoDir/CH4/v2024-01/GCC_14_Output/GEOSChem.SpeciesConc.%y4%m201_0000z.nc4 + # --- Stratospheric L(CO) from GMI --- +# +# Use updated files (v2024-01); these are COARDS-compliant. CH4_LOSS s-1 1985 Y F%y4-%m2-01T00:00:00 none none CH4loss ./HcoDir/CH4/v2023-04/GC_CH4_LOSS/GCC14_72LM.ch4loss.4x5.nc4 - # --- P(CO) from CH4 and NMVOC from the last 10-yr benchmark --- -PCO_CH4 molec/cm3/s N Y F%y4-%m2-01T00:00:00 none none ProdCOfromCH4 ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.ProdLoss.%y4%m201_0000z.nc4 -PCO_NMVOC molec/cm3/s N Y F%y4-%m2-01T00:00:00 none none ProdCOfromNMVOC ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.ProdLoss.%y4%m201_0000z.nc4 +# +# Use updated files (v2024-01); these are COARDS-compliant. +PCO_CH4 molec/cm3/s N Y F%y4-%m2-01T00:00:00 none none ProdCOfromCH4 ./HcoDir/CH4/v2024-01/GCC_14_Output/%y4/GEOSChem.ProdLoss.%y4%m201_0000z.nc4 +PCO_NMVOC molec/cm3/s N Y F%y4-%m2-01T00:00:00 none none ProdCOfromNMVOC ./HcoDir/CH4/v2024-01/GCC_14_Output/%y4/GEOSChem.ProdLoss.%y4%m201_0000z.nc4 #--- GMI chemistry: prod/loss rates (GMI_PROD_LOSS) --- GMI_LOSS_CO s-1 2005 Y F%y4-%m2-01T00:00:00 none none loss ./HcoDir/GMI/v2022-11/gmi.clim.CO.geos5.2x25.nc @@ -641,13 +655,15 @@ OCEANCO2_SCALED_MONTHLY kg/m2/s N Y F%y2-%m2-01T00:00:00 none none CO2 ./HcoD ### ############################################################################### -CAN_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/Canada_Mask.001x001.nc -CAN_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/Canada_Mask_Mirror.001x001.nc +# Use updated files (v2024-01); these are COARDS-compliant. +MEX_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Mexico_Mask.001x001.nc +MEX_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Mexico_Mask_Mirror.001x001.nc +CAN_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Canada_Mask.001x001.nc +CAN_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Canada_Mask_Mirror.001x001.nc +# CHINA_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/China_mask.generic.1x1.nc CONUS_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/CONUS_Mask.001x001.nc CONUS_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/CONUS_Mask_Mirror.001x001.nc -MEX_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/Mexico_Mask.001x001.nc -MEX_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/Mexico_Mask_Mirror.001x001.nc # %% diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 28a5b0ece..5c52be536 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -425,6 +425,8 @@ Mask fractions: false # NOTES: # - These are annual emissions. Seasonality is applied via scale factors # computed from EDGARv6.0 monthly emissions. +# +# - Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((EDGARv7 ### Oil. gas, coal ### @@ -495,6 +497,8 @@ Mask fractions: false #============================================================================== # --- CH4: JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- +# +# Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((JPL_WETCHARTS 0 JPLW_CH4 $ROOT/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4 - 10 1 @@ -516,6 +520,8 @@ Mask fractions: false #============================================================================== # --- Emissions from Hydroelectric Reservoirs (Delwich et al., 2022) --- +# +# Use updated files (v2024-01); these are COARDS-compliant. #============================================================================== (((RESERVOIRS 0 CH4_RES_DAM $ROOT/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 @@ -1296,7 +1302,7 @@ Mask fractions: false * GLOBAL_OH $ROOT/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.72L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 )))GLOBAL_OH_GCv5 -# --- OH from the last 10-yr benchmark [mol/mol dry air] --- +# --- OH from the last 10-yr benchmark [mol/mol dry] --- (((GLOBAL_OH_GC14 (((.not.GLOBAL_OH_GCv5 ${RUNDIR_GLOBAL_OH} @@ -1313,10 +1319,8 @@ ${RUNDIR_CH4_LOSS} )))CH4_LOSS_FREQ # --- Global Cl [mol/mol dry air] --- -# NOTE: This file has all non-COARDS-compliant elements removed! -# GCHP cannot read this data otherwise. (Bob Yantosca, 19 Jan 2024) (((GLOBAL_CL -* GLOBAL_Cl $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_Cl 2010-2019/1-12/1/0 C xyz 1 * - 1 1 +${RUNDIR_GLOBAL_Cl} )))GLOBAL_CL #------------------------------------------------------------------------------ @@ -1324,13 +1328,11 @@ ${RUNDIR_CH4_LOSS} #------------------------------------------------------------------------------ # -- P(CO) from CH4 and NMVOC from the last 10-yr benchmark [molec/cm3/s] --- -# NOTE: These files has all non-COARDS-compliant elements removed! -# GCHP cannot read this data otherwise. (Bob Yantosca, 19 Jan 2024) (((PROD_CO_CH4 -* PCO_CH4 $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromCH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1 +${RUNDIR_PCO_CH4} )))PROD_CO_CH4 (((PROD_CO_NMVOC -* PCO_NMVOC $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromNMVOC 2010-2019/1-12/1/0 C xyz 1 * - 1 1 +${RUNDIR_PCO_NMVOC} )))PROD_CO_NMVOC # --- GMI chemistry: prod/loss rates (for strato-/mesosphere) --- @@ -1562,7 +1564,6 @@ ${RUNDIR_CO2_COPROD} )))USE_CO2_DATA - #============================================================================== # --- Scale factors for OCS emissions --- #============================================================================== @@ -1693,14 +1694,16 @@ ${RUNDIR_CO2_COPROD} #============================================================================== (((USE_CH4_DATA +# Use updated files (v2024-01); these are COARDS-compliant. (((Scarpelli_Mexico -1001 MEX_MASK $ROOT/MASKS/v2018-09/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -1010 MEX_MASK_MIRROR $ROOT/MASKS/v2018-09/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1001 MEX_MASK $ROOT/MASKS/v2024-01/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-01/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 )))Scarpelli_Mexico +# Use updated files (v2024-01); these are COARDS-compliant. (((Scarpelli_Canada -1002 CAN_MASK $ROOT/MASKS/v2018-09/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v2018-09/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1002 CAN_MASK $ROOT/MASKS/v2024-01/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-01/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))Scarpelli_Canada (((GHGI_v2.or.GHGI_v2_Express_Ext diff --git a/run/shared/settings/gmao_hemco.txt b/run/shared/settings/gmao_hemco.txt index aaa6dcb76..80c598f92 100644 --- a/run/shared/settings/gmao_hemco.txt +++ b/run/shared/settings/gmao_hemco.txt @@ -16,7 +16,7 @@ RUNDIR_Br_GC='* Br_GC $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.Spec RUNDIR_BrO_GC='* BrO_GC $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_BrO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_GLOBAL_CH4='* GLOBAL_CH4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_CH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_Cl='* GLOBAL_Cl $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_Cl 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_Cl='* GLOBAL_Cl $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_Cl 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_GLOBAL_ClO='* GLOBAL_ClO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_ClO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_GLOBAL_CO='* GLOBAL_CO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_CO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_GLOBAL_HCl='* GLOBAL_HCl $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_HCl 2010-2019/1-12/1/0 C xyz 1 * - 1 1' @@ -29,7 +29,7 @@ RUNDIR_GLOBAL_NO='* GLOBAL_NO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem. RUNDIR_GLOBAL_NO2='* GLOBAL_NO2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_NO2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_GLOBAL_NO3='* GLOBAL_NO3 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_NO3 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_GLOBAL_O3='* GLOBAL_O3 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_O3 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_GLOBAL_OH='* GLOBAL_OH $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_OH 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_GLOBAL_OH='* GLOBAL_OH $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_OH 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_GLOBAL_PM25='* GLOBAL_PM25 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.AerosolMass.$YYYY$MM01_0000z.nc4 PM25 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_AERO_SO4='* AERO_SO4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_SO4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_AERO_NH4='* AERO_NH4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_NH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' @@ -40,16 +40,16 @@ RUNDIR_AERO_OCPI='* AERO_OCPI $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem. RUNDIR_AERO_OCPO='* AERO_OCPO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_OCPO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_AERO_DST1='* AERO_DST1 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.SpeciesConc.$YYYY$MM01_0000z.nc4 SpeciesConc_DST1 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_GLOBAL_OA='* GLOBAL_OA $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.AerosolMass.$YYYY$MM01_0000z.nc4 TotalOA 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_PCO_CH4='* PCO_CH4 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromCH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_PCO_NMVOC='* PCO_NMVOC $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromNMVOC 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_PCO_CH4='* PCO_CH4 $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromCH4 2010-2019/1-12/1/0 C xyz 1 * - 1 1' +RUNDIR_PCO_NMVOC='* PCO_NMVOC $ROOT/CH4/v2024-01/GCC_14_Output/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 ProdCOfromNMVOC 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_PH2O2='* PH2O2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 Prod_H2O2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_O3_PROD='* O3_PROD $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 Prod_Ox 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_O3_LOSS='* O3_LOSS $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.ProdLoss.$YYYY$MM01_0000z.nc4 Loss_Ox 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_JBrO='* JBrO $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValues.$YYYY$MM01_0000z.nc4 Jval_BrO 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_JH2O2='* JH2O2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValues.$YYYY$MM01_0000z.nc4 Jval_H2O2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' RUNDIR_JNO2='* JNO2 $ROOT/GCClassic_Output/14.0.0/$YYYY/GEOSChem.JValues.$YYYY$MM01_0000z.nc4 Jval_NO2 2010-2019/1-12/1/0 C xyz 1 * - 1 1' -RUNDIR_CH4_LOSS='* CH4_LOSS $ROOT/CH4/v2023-04/GC_CH4_LOSS/GCC14_72LM.ch4loss.4x5.nc4 CH4loss 1985/1-12/1/0 C xyz s-1 * - 1 1' -RUNDIR_CO2_COPROD='* CO2_COPROD $ROOT/CO2/v2022-11/CHEM/CO2_prod_rates.GEOS5.2x25.72L.nc LCO 2004-2009/1-12/1/0 C xyz kgC/m3/s * - 1 1' +RUNDIR_CH4_LOSS='* CH4_LOSS $ROOT/CH4/v2024-01/GC_CH4_LOSS/GCC14_72LM.ch4loss.4x5.nc4 CH4loss 1985/1-12/1/0 C xyz s-1 * - 1 1' +RUNDIR_CO2_COPROD='* CO2_COPROD $ROOT/CO2/v2024-01/CHEM/CO2_prod_rates.GEOS5.2x25.72L.nc LCO 2004-2009/1-12/1/0 C xyz kgC/m3/s * - 1 1' RUNDIR_Br_TOMCAT='* Br_TOMCAT $ROOT/MERCURY/v2014-09/BrOx/BrOx.GMI.geos5.2x25.nc LBRO2N 1985/1-12/1/0 C xyz pptv * - 1 1' RUNDIR_BrO_TOMCAT='* BrO_TOMCAT $ROOT/MERCURY/v2014-09/BrOx/BrOx.GMI.geos5.2x25.nc LBRO2H 1985/1-12/1/0 C xyz pptv * - 1 1' RUNDIR_GLOBAL_OC='1002 GLOBAL_OC $ROOT/POPs/v2015-08/OCPO.$met.$RES.nc OCPO 2005-2009/1-12/1/0 C xyz 1 * - 1 1' From 7fb0d64a0b69c004387f809286413cfeadbd6512 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 25 Jan 2024 14:42:39 -0500 Subject: [PATCH 054/331] Fix incorrect entry for CEDS_CO2_SHP in carbon config files run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon run/GCHP/HEMCO_Config.rc.templates/HEMCO/Config.rc.carbon - Now read CEDS_CO2_SHP file from CEDS/v2021-06 folder run/GCHP/ExtData.rc.templates/ExtData.rc.carbon - Now read CEDS_CO2_SHP file from CEDS/v2021-06 folder - Also read CH4_LOSS from CH4/v2024-01 folder - Also update time refresh for GLOBAL_Cl (remove %d2) Signed-off-by: Bob Yantosca --- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 2 +- run/GCHP/ExtData.rc.templates/ExtData.rc.carbon | 9 ++++----- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 0b8128fd1..bd3132dd8 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -937,7 +937,7 @@ Mask fractions: false )))ICOADS_SHIP (((CEDSv2_SHIP -0 CEDS_CO2_SHP $ROOT/CEDS/v2018-08/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_shp 1750-2014/1-12/1/0 C xy kg/m2/s CO2 - 6 1 +0 CEDS_CO2_SHP $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_shp 1750-2014/1-12/1/0 C xy kg/m2/s CO2 - 6 1 )))CEDSv2_SHIP )))SHIP diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index bcc3351c4..a3ba8e6eb 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -445,12 +445,11 @@ CO2_NET_TERRESTRIAL kg/m2/s N Y - none none CO2 ./HcoDir/CO2/v2022-11/BIO/Net_te # --- CO2 Ship Emissions --- # # Comment this when "--> CEDS_v2_SHIP : false" is in HEMCO_Config.rc. -CEDS_CO2_SHP kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO2_shp ./HcoDir/CEDS/v2018-08/%y4/CO2-em-anthro_CMIP_CEDS_%y4.nc +CEDS_CO2_SHP kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO2_shp ./HcoDir/CEDS/v2021-06/%y4/CO2-em-anthro_CMIP_CEDS_%y4.nc # --- CO2: AEIC 2019 aircraft emissions --- -# -# Comment this when "--> AEIC2019_DAILY : false" is in HEMCO_Config.rc. +## Comment this when "--> AEIC2019_DAILY : false" is in HEMCO_Config.rc. ##AEIC19_DAILY_CO2 kg/m2/s 2019 Y F%y4-%m2-%d2T00:00:00 none none FUELBURN ./HcoDir/AEIC2019/v2022-03/2019/%m2/AEIC_2019%m2%d2.0.5x0.625.36L.nc # # Comment this when "--> AEIC2019_MONMEAN : false" is in HEMCO_Config.rc. @@ -541,13 +540,13 @@ GLOBAL_OH kg/m3 1985 Y F%y4-%m2-01T00:00:00 none none OH ./HcoDir/OH/v2022-11/v5 # --- Global Cl concentrations --- # # Use updated files (v2024-01); these are COARDS-compliant. -GLOBAL_Cl mol/mol N Y F%y4-%m2-%d2T00:00:00 none none SpeciesConc_Cl ./HcoDir/CH4/v2024-01/GCC_14_Output/GEOSChem.SpeciesConc.%y4%m201_0000z.nc4 +GLOBAL_Cl mol/mol N Y F%y4-%m2-01T00:00:00 none none SpeciesConc_Cl ./HcoDir/CH4/v2024-01/GCC_14_Output/%y4/GEOSChem.SpeciesConc.%y4%m201_0000z.nc4 # --- Stratospheric L(CO) from GMI --- # # Use updated files (v2024-01); these are COARDS-compliant. -CH4_LOSS s-1 1985 Y F%y4-%m2-01T00:00:00 none none CH4loss ./HcoDir/CH4/v2023-04/GC_CH4_LOSS/GCC14_72LM.ch4loss.4x5.nc4 +CH4_LOSS s-1 1985 Y F%y4-%m2-01T00:00:00 none none CH4loss ./HcoDir/CH4/v2024-01/GC_CH4_LOSS/GCC14_72LM.ch4loss.4x5.nc4 # --- P(CO) from CH4 and NMVOC from the last 10-yr benchmark --- # diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 5c52be536..3308627b7 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -937,7 +937,7 @@ Mask fractions: false )))ICOADS_SHIP (((CEDSv2_SHIP -0 CEDS_CO2_SHP $ROOT/CEDS/v2018-08/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_shp 1750-2014/1-12/1/0 C xy kg/m2/s CO2 - 6 1 +0 CEDS_CO2_SHP $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_shp 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 6 1 )))CEDSv2_SHIP )))SHIP From 7fb1345704d95e957d44bef691561ba7036e79c5 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Fri, 26 Jan 2024 15:03:58 -0500 Subject: [PATCH 055/331] Fixes to enable building in GEOSgcm Signed-off-by: Lizzie Lundgren --- Interfaces/GCHP/Chem_GridCompMod.F90 | 1 + Interfaces/GEOS/Includes_After_Run.H | 2 +- Interfaces/GEOS/Includes_Before_Run.H | 2 +- Interfaces/GEOS/geos_CarbonInterface.F90 | 2 +- Interfaces/GEOS/geos_interface.F90 | 14 +++++++------- KPP/fullchem/gckpp_Rates.F90 | 2 +- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Interfaces/GCHP/Chem_GridCompMod.F90 b/Interfaces/GCHP/Chem_GridCompMod.F90 index ea18b6753..669dac187 100644 --- a/Interfaces/GCHP/Chem_GridCompMod.F90 +++ b/Interfaces/GCHP/Chem_GridCompMod.F90 @@ -2075,6 +2075,7 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) USE GEOS_AeroCoupler, ONLY : GEOS_FillAeroBundle USE GEOS_CarbonInterface, ONLY : GEOS_CarbonSetConc, & GEOS_CarbonRunPhoto + USE UnitConv_Mod, ONLY : KG_SPECIES_PER_KG_TOTAL_AIR #endif ! diff --git a/Interfaces/GEOS/Includes_After_Run.H b/Interfaces/GEOS/Includes_After_Run.H index d3bcb5c00..cedf4289b 100644 --- a/Interfaces/GEOS/Includes_After_Run.H +++ b/Interfaces/GEOS/Includes_After_Run.H @@ -55,7 +55,7 @@ ! testing only !if(MAPL_am_I_Root()) write(*,*) 'Copied to internal: ',I,Int2Spc(I)%ID,trim(Int2Spc(I)%Name),MINVAL(State_Chm%Species(Int2Spc(I)%ID)%Conc(:,:,LM:1:-1)),MAXVAL(State_Chm%Species(Int2Spc(I)%ID)%Conc(:,:,LM:1:-1)),SUM(State_Chm%Species(Int2Spc(I)%ID)%Conc(:,:,LM:1:-1))/IM/JM/LM ENDDO - State_Chm%Spc_Units = 'kg/kg total' + State_Chm%Spc_Units = KG_SPECIES_PER_KG_TOTAL_AIR !========================================================================= ! Various other archived variables needed in internal state. diff --git a/Interfaces/GEOS/Includes_Before_Run.H b/Interfaces/GEOS/Includes_Before_Run.H index e2352edd0..37a6d9888 100644 --- a/Interfaces/GEOS/Includes_Before_Run.H +++ b/Interfaces/GEOS/Includes_Before_Run.H @@ -247,7 +247,7 @@ ENDIF !IF ( MAPL_am_I_Root() ) WRITE(*,*) 'Copying from internal: ',I,Int2Spc(I)%ID,MINVAL(Int2Spc(I)%Internal(:,:,:)),MAXVAL(Int2Spc(I)%Internal(:,:,:)),SUM(Int2Spc(I)%Internal(:,:,:))/IM/JM/LM ENDDO - State_Chm%Spc_Units = 'kg/kg total' + State_Chm%Spc_Units = KG_SPECIES_PER_KG_TOTAL_AIR !========================================================================= ! Various other archived variables needed in internal state. Eventually, diff --git a/Interfaces/GEOS/geos_CarbonInterface.F90 b/Interfaces/GEOS/geos_CarbonInterface.F90 index 6bfe50564..7704362eb 100644 --- a/Interfaces/GEOS/geos_CarbonInterface.F90 +++ b/Interfaces/GEOS/geos_CarbonInterface.F90 @@ -504,7 +504,7 @@ SUBROUTINE GEOS_CarbonSetConc( Import, Input_Opt, State_Chm, & ! CHARACTER(LEN=*), PARAMETER :: myname = 'GEOS_CarbonSetConc' CHARACTER(LEN=*), PARAMETER :: Iam = myname - CHARACTER(LEN=63) :: OrigUnit + INTEGER :: OrigUnit INTEGER :: I, LM, indCO2, indCO, STATUS REAL, POINTER :: CO2(:,:,:) => null() REAL, POINTER :: COmeso(:,:) => null() diff --git a/Interfaces/GEOS/geos_interface.F90 b/Interfaces/GEOS/geos_interface.F90 index 968689854..ec14c8882 100644 --- a/Interfaces/GEOS/geos_interface.F90 +++ b/Interfaces/GEOS/geos_interface.F90 @@ -278,7 +278,7 @@ SUBROUTINE GEOS_RATSandOxDiags( GC, Internal, Export, Input_Opt, State_Met, & ! ! !USES: ! - USE UnitConv_Mod, ONLY : Convert_Spc_Units + USE UnitConv_Mod ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -326,7 +326,7 @@ SUBROUTINE GEOS_RATSandOxDiags( GC, Internal, Export, Input_Opt, State_Met, & REAL, POINTER :: PTR_O1D(:,:,:) => NULL() REAL, ALLOCATABLE :: OXLOCAL(:,:,:) LOGICAL :: NeedO3 - CHARACTER(LEN=ESMF_MAXSTR) :: OrigUnit + INTEGER :: OrigUnit __Iam__('GEOS_RATSandOxDiags') @@ -461,7 +461,7 @@ SUBROUTINE GEOS_SetH2O( GC, Input_Opt, State_Met, & ! ! !USES: ! - USE UnitConv_Mod, ONLY : Convert_Spc_Units + USE UnitConv_Mod ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -488,8 +488,8 @@ SUBROUTINE GEOS_SetH2O( GC, Input_Opt, State_Met, & ! ! LOCAL VARIABLES: ! - INTEGER :: IndH2O, LM - CHARACTER(LEN=ESMF_MAXSTR) :: OrigUnit + INTEGER :: IndH2O, LM + INTEGER :: OrigUnit __Iam__('GEOS_SetH2O') @@ -1218,7 +1218,7 @@ SUBROUTINE GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, & ! !USES: ! USE Diagnostics_Mod, ONLY : Set_Diagnostics_EndofTimestep - USE UnitConv_Mod, ONLY : Convert_Spc_Units + USE UnitConv_Mod ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1276,7 +1276,7 @@ SUBROUTINE GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, & REAL, POINTER :: LFR(:,:) => NULL() REAL, POINTER :: CNV_FRC(:,:) => NULL() - CHARACTER(LEN=ESMF_MAXSTR) :: OrigUnit + INTEGER :: OrigUnit __Iam__('GEOS_Diagnostics') diff --git a/KPP/fullchem/gckpp_Rates.F90 b/KPP/fullchem/gckpp_Rates.F90 index cab999442..0578f4b2e 100644 --- a/KPP/fullchem/gckpp_Rates.F90 +++ b/KPP/fullchem/gckpp_Rates.F90 @@ -619,7 +619,7 @@ SUBROUTINE Update_RCONST ( ) RCONST(186) = (2.40d-10) RCONST(187) = (GCARR_ac(2.10d-11,-2200.0d0)) RCONST(188) = (GCARR_ac(7.20d-14,-1070.0d0)) - RCONST(189) = (GCJPLAC_ababac(3.4e-31,1.6d0,2.3d-11,0.2d0,5.3d-12,2.0d2,0.6d0)) + RCONST(189) = (GCJPLAC_ababac(3.4d-31,1.6d0,2.3d-11,0.2d0,5.3d-12,2.0d2,0.6d0)) RCONST(190) = (1.30d-11) RCONST(191) = (GCJPLPR_aba(9.00d-32,1.5d+00,3.0d-11,0.6d0)) RCONST(192) = (GCJPLPR_abab(3.4d-31,1.6d0,2.3d-11,0.2d0,0.6d0)) From dd834827d15a9808536302dba654e2bd8220c9b9 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 30 Jan 2024 12:01:28 -0500 Subject: [PATCH 056/331] Also add sapphire to the Harvard operational run scripts Added "sapphire" partition name to: - run/GCClassic/runScriptSamples/operational_examples/harvard_cannon: - geoschem.benchmark.run - geoschem.run - parallelTest.sh - run/GCHP/runScriptSamples/operational_examples/harvard_cannon: - gchp.run CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 +- .../operational_examples/harvard_cannon/geoschem.benchmark.run | 2 +- .../operational_examples/harvard_cannon/geoschem.run | 2 +- .../operational_examples/harvard_cannon/parallelTest.sh | 2 +- .../operational_examples/harvard_cannon/gchp.run | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7367266b6..ee0cd5e70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Now read the Hg restart file from `ExtData/GEOSCHEM_RESTARTS/v2023-12` - Increse requested time limits in GCHP integration tests (compile 2h30m, run 5h) -- Updated Harvard Cannon operational run scripts to use `huce_cascade` instead of `huce_intel`1 +- Updated Harvard Cannon operational run scripts to use `huce_cascade` instead of `huce_intel`; also added `sapphire` ### Fixed - Added missing units in comments of `KPP/fullchem/commonIncludeVars.H` diff --git a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.benchmark.run b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.benchmark.run index ef328747a..6dfdc0f17 100755 --- a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.benchmark.run +++ b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.benchmark.run @@ -3,7 +3,7 @@ #SBATCH -c 48 #SBATCH -N 1 #SBATCH -t 0-5:00 -#SBATCH -p huce_cascade,seas_compute,shared +#SBATCH -p sapphire,huce_cascade,seas_compute,shared #SBATCH --mem=16000 #SBATCH --mail-type=END diff --git a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.run b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.run index 8c3faaa31..2a26cb860 100755 --- a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.run +++ b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/geoschem.run @@ -3,7 +3,7 @@ #SBATCH -c 8 #SBATCH -N 1 #SBATCH -t 0-12:00 -#SBATCH -p huce_cascade,seas_compute,shared +#SBATCH -p sapphire,huce_cascade,seas_compute,shared #SBATCH --mem=15000 #SBATCH --mail-type=END diff --git a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/parallelTest.sh b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/parallelTest.sh index d75373c86..0390bc258 100755 --- a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/parallelTest.sh +++ b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/parallelTest.sh @@ -3,7 +3,7 @@ #SBATCH -c 24 #SBATCH -N 1 #SBATCH -t 0-03:00 -#SBATCH -p huce_cascade,seas_compute,shared +#SBATCH -p sapphire,huce_cascade,seas_compute,shared #SBATCH --mem=30000 #SBATCH --mail-type=END diff --git a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run index 612d835dd..536b21b81 100755 --- a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run +++ b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run @@ -4,7 +4,7 @@ #SBATCH -N 2 #SBATCH --exclusive #SBATCH -t 0-8:00 -#SBATCH -p huce_cascade,seas_compute,shared +#SBATCH -p sapphire,huce_cascade,seas_compute,shared #SBATCH --mem=180000 #SBATCH --mail-type=END From daf1ea41478d378590118fe2a0260d7e26078610 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 31 Jan 2024 10:49:32 -0500 Subject: [PATCH 057/331] Update path in GEOS-Chem config file to Cloud-J directory Signed-off-by: Lizzie Lundgren --- run/GEOS/geoschem_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/GEOS/geoschem_config.yml b/run/GEOS/geoschem_config.yml index e035a2b08..0d75cdf8a 100644 --- a/run/GEOS/geoschem_config.yml +++ b/run/GEOS/geoschem_config.yml @@ -61,7 +61,7 @@ operations: activate: true input_directories: fastjx_input_dir: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/FAST_JX/v2023-10/ - cloudj_input_dir: /discover/nobackup/ewlundgr/data/ExtData/CLOUD_J/v2023-05/ + cloudj_input_dir: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/CLOUD_J/v2023-05/ overhead_O3: use_online_O3_from_model: true use_column_O3_from_met: true From 2fa4fa0f715abf28c5b5663f7b8b4c7053e655d3 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 31 Jan 2024 13:00:40 -0500 Subject: [PATCH 058/331] Add optional ##SBATCH -t tag in Harvard Cannon GCHP runscript run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run - Add disabled ##SBATCH -t 1-0:00 to request 1-day of runtime for 1-year GCHP benchmark simulations. The user can activate by removing one of the # characters (and also adding an extra # character in front of the default #SBATCH -t tag. Signed-off-by: Bob Yantosca --- .../operational_examples/harvard_cannon/gchp.run | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run index 536b21b81..4ea912e4f 100755 --- a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run +++ b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run @@ -3,7 +3,13 @@ #SBATCH -n 96 #SBATCH -N 2 #SBATCH --exclusive +##------------------------------------- +## Use this for 1-month runs (default) #SBATCH -t 0-8:00 +##------------------------------------ +## Use this for 1-year runs +##SBATCH -t 1-0:00 +##------------------------------------ #SBATCH -p sapphire,huce_cascade,seas_compute,shared #SBATCH --mem=180000 #SBATCH --mail-type=END From 05cb80e4bb49f20c54a558f4dcd61bb8e47d971b Mon Sep 17 00:00:00 2001 From: "Sebastian D. Eastham" Date: Thu, 1 Feb 2024 14:26:37 +0000 Subject: [PATCH 059/331] Run scripts and environment for the Imperial College London HPC --- .../operational_examples/icl_rcshpc/README | 11 ++++ .../operational_examples/icl_rcshpc/gchp.env | 2 + .../operational_examples/icl_rcshpc/gchp.run | 63 +++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/README create mode 100644 run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.env create mode 100644 run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.run diff --git a/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/README b/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/README new file mode 100644 index 000000000..70db46009 --- /dev/null +++ b/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/README @@ -0,0 +1,11 @@ +For use with the PBS Pro system at Imperial College London's campus-wide HPC. + +To submit a job, type: + +qsub gchp.run + +Instructions are given to modify node/core/memory requirements in gchp.run. + +Contact: +Sebastian Eastham at Imperial College London +s.eastham@imperial.ac.uk diff --git a/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.env b/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.env new file mode 100644 index 000000000..d76d952e4 --- /dev/null +++ b/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.env @@ -0,0 +1,2 @@ +module load tools/prod +module load ESMF/8.4.2-foss-2022a diff --git a/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.run b/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.run new file mode 100644 index 000000000..1e4135468 --- /dev/null +++ b/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.run @@ -0,0 +1,63 @@ +#!/bin/bash +#PBS -N GCHP +#PBS -l select=1:ncpus=6:mem=48gb +#PBS -l walltime=1:00:00 +#PBS -j oe + +cd $PBS_O_WORKDIR + +# Unlimit resources (to prevent OS killing GCHP due to resource usage) +ulimit -c 0 # coredumpsize +ulimit -l unlimited # memorylocked +ulimit -u 50000 # maxproc +ulimit -v unlimited # vmemoryuse +ulimit -s unlimited # stacksize + +# Exit if command fails, and log all commands +set -xe + +# Define log name to include simulation start date +start_str=$(sed 's/ /_/g' cap_restart) +log=gchp.${start_str:0:13}z.log +echo "Writing output to ${log}" + +# Update config files, set restart symlink, load run env, and do sanity checks +source setCommonRunSettings.sh > ${log} +source setRestartLink.sh >> ${log} +source gchp.env >> ${log} +source checkRunSettings.sh >> ${log} + +# Run the code +mpirun ./gchp >> $log + +# Rename mid-run checkpoint files, if any. Discard file if time corresponds +# to run start time since duplicate with initial restart file. +chkpnts=$(ls Restarts) +for chkpnt in ${chkpnts} +do + if [[ "$chkpnt" == *"gcchem_internal_checkpoint."* ]]; then + chkpnt_time=${chkpnt:27:13} + if [[ "${chkpnt_time}" = "${start_str:0:13}" ]]; then + rm ./Restarts/${chkpnt} + else + new_chkpnt=./Restarts/GEOSChem.Restart.${chkpnt_time}z.c${N}.nc4 + mv ./Restarts/${chkpnt} ${new_chkpnt} + fi + fi +done + +# Rename restart file and update restart symlink if new start time ok +new_start_str=$(sed 's/ /_/g' cap_restart) +if [[ "${new_start_str}" = "${start_str}" || "${new_start_str}" = "" ]]; then + echo "ERROR: GCHP failed to run to completion. Check the log file for more information." + rm -f Restarts/gcchem_internal_checkpoint + exit 1 +else + N=$(grep "CS_RES=" setCommonRunSettings.sh | cut -c 8- | xargs ) + mv Restarts/gcchem_internal_checkpoint Restarts/GEOSChem.Restart.${new_start_str:0:13}z.c${N}.nc4 + source setRestartLink.sh +fi + +trap times EXIT + + From bc938fc430deee688245abd4b685a9812e9caf0e Mon Sep 17 00:00:00 2001 From: "Sebastian D. Eastham" Date: Thu, 1 Feb 2024 14:32:40 +0000 Subject: [PATCH 060/331] Added guidance to gchp.run --- .../operational_examples/icl_rcshpc/gchp.run | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.run b/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.run index 1e4135468..503892db0 100644 --- a/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.run +++ b/run/GCHP/runScriptSamples/operational_examples/icl_rcshpc/gchp.run @@ -4,6 +4,12 @@ #PBS -l walltime=1:00:00 #PBS -j oe +# Run script is for use with PBS Pro +# To modify your resource request, change the "-l select..." line to: +# #PBS -l select=X:ncpus=Y:mem=Zgb +# This requests X nodes, EACH of which has Y CPUs and Z GB of memory +# Change the total run time request using the walltime line (H:MM:SS) + cd $PBS_O_WORKDIR # Unlimit resources (to prevent OS killing GCHP due to resource usage) From e9d4ca0f4b60d743f5af6e5024ef7cafa7623161 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 8 Feb 2024 16:16:46 -0500 Subject: [PATCH 061/331] Update Cloud-J module name which is changed to prevent namespace issues Signed-off-by: Lizzie Lundgren --- GeosCore/cldj_interface_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeosCore/cldj_interface_mod.F90 b/GeosCore/cldj_interface_mod.F90 index 0b3fe4fcc..818a22214 100644 --- a/GeosCore/cldj_interface_mod.F90 +++ b/GeosCore/cldj_interface_mod.F90 @@ -160,7 +160,7 @@ SUBROUTINE Run_CloudJ( Input_Opt, State_Chm, State_Diag, & USE Cldj_Cmn_Mod, ONLY : L_, L1_, W_, S_, LWEPAR USE Cldj_Cmn_Mod, ONLY : JVN_, AN_, NQD_, W_r USE Cldj_Cmn_Mod, ONLY : JIND, JFACTA, FL, QAA, RAA, SAA - USE Cld_Sub_Mod, ONLY : Cloud_JX + USE CldJ_Sub_Mod, ONLY : Cloud_JX USE Cmn_Size_Mod, ONLY : NRHAER, NRH, NDUST USE ErrCode_Mod USE Input_Opt_Mod, ONLY : OptInput From 6064d611d1fcf5d1629ab2670c046d9d909e0d27 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 9 Feb 2024 15:35:41 -0500 Subject: [PATCH 062/331] Updated changelog for Imperial College London runscript update CHANGELOG.md - Added note about new operational example run scripts for ICL cluster Signed-off-by: Bob Yantosca --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 696e1ea23..2c0c03658 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] - TBD +### Added +- Added operational run scripts for the Imperial College London (ICL) cluster + ### Changed - Updated Harvard Cannon operational run scripts to use `huce_cascade` instead of `huce_intel`; also added `sapphire` From 08bf8389380823fed0f1d63a7225a06224e46162 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 12 Feb 2024 10:11:49 -0500 Subject: [PATCH 063/331] Change "e" to "d" exponent in fullchem.eqn and custom.eqn KPP/fullchem/fullchem.eqn KPP/custom/custom.eqn - Change 3.4e-31 to 3.4d-31 in the NO2 + O = NO + O2 CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- KPP/custom/custom.eqn | 2 +- KPP/fullchem/CHANGELOG_fullchem.md | 1 + KPP/fullchem/fullchem.eqn | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/KPP/custom/custom.eqn b/KPP/custom/custom.eqn index 6f5c6700d..b212aadd0 100644 --- a/KPP/custom/custom.eqn +++ b/KPP/custom/custom.eqn @@ -705,7 +705,7 @@ HO2 + O = OH + O2 : GCARR_ac(3.00d-11, 200.0d0); O1D + O3 = O + 1.500O2 : 2.40d-10; {2014/02/03; Eastham2014; SDE} OCS + O = CO + SO2 : GCARR_ac(2.10d-11, -2200.0d0); {2014/02/03; Eastham2014; SDE} OCS + OH = CO2 + SO2 : GCARR_ac(7.20d-14, -1070.0d0); {2023/04/18; JPL 19-5; KHB} -NO2 + O = NO + O2 : GCJPLAC_ababac(3.4e-31, 1.6d0, 2.3d-11, 0.2d0, 5.3d-12, 2.0d2, 0.6d0); {2023/04/18; JPL 19-5; KHB} +NO2 + O = NO + O2 : GCJPLAC_ababac(3.4d-31, 1.6d0, 2.3d-11, 0.2d0, 5.3d-12, 2.0d2, 0.6d0); {2023/04/18; JPL 19-5; KHB} NO3 + O = NO2 + O2 : 1.30d-11; {2023/04/18; JPL 19-5; KHB} NO + O {+M} = NO2 {+M} : GCJPLPR_aba(9.00d-32, 1.5d+00, 3.0d-11, 0.6d0); {2014/02/03; Eastham2014; SDE} NO2 + O {+M} = NO3 {+M} : GCJPLPR_abab(3.4d-31, 1.6d0, 2.3d-11, 0.2d0, 0.6d0); {2023/04/18; JPL 19-5; KHB} diff --git a/KPP/fullchem/CHANGELOG_fullchem.md b/KPP/fullchem/CHANGELOG_fullchem.md index cc5cce942..e28b273e2 100644 --- a/KPP/fullchem/CHANGELOG_fullchem.md +++ b/KPP/fullchem/CHANGELOG_fullchem.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated rate coefficients and products in 63 reactions per JPL / IUPAC recommendations (JPL 19-5; Bates2023) - Consolidated product branches to remove 25 reactions (Bates2023 Table S4) - Update rxns with zero Arrhenius `B` parameters to use function `GCARR_ac` instead of `GCARR_abc` +- Bug fix: Change `3.4.e-31` to `3.4.d-31` in `NO2 + O = NO + O2` rxn ### Fixed - Fixed C and N balance in 63 reactions (Bates2023 Table S2) diff --git a/KPP/fullchem/fullchem.eqn b/KPP/fullchem/fullchem.eqn index c9d066ade..eff4664b4 100644 --- a/KPP/fullchem/fullchem.eqn +++ b/KPP/fullchem/fullchem.eqn @@ -703,7 +703,7 @@ HO2 + O = OH + O2 : GCARR_ac(3.00d-11, 200.0d0); O1D + O3 = O + 1.500O2 : 2.40d-10; {2014/02/03; Eastham2014; SDE} OCS + O = CO + SO2 : GCARR_ac(2.10d-11, -2200.0d0); {2014/02/03; Eastham2014; SDE} OCS + OH = CO2 + SO2 : GCARR_ac(7.20d-14, -1070.0d0); {2023/04/18; JPL 19-5; KHB} -NO2 + O = NO + O2 : GCJPLAC_ababac(3.4e-31, 1.6d0, 2.3d-11, 0.2d0, 5.3d-12, 2.0d2, 0.6d0); {2023/04/18; JPL 19-5; KHB} +NO2 + O = NO + O2 : GCJPLAC_ababac(3.4d-31, 1.6d0, 2.3d-11, 0.2d0, 5.3d-12, 2.0d2, 0.6d0); {2023/04/18; JPL 19-5; KHB} NO3 + O = NO2 + O2 : 1.30d-11; {2023/04/18; JPL 19-5; KHB} NO + O {+M} = NO2 {+M} : GCJPLPR_aba(9.00d-32, 1.5d+00, 3.0d-11, 0.6d0); {2014/02/03; Eastham2014; SDE} NO2 + O {+M} = NO3 {+M} : GCJPLPR_abab(3.4d-31, 1.6d0, 2.3d-11, 0.2d0, 0.6d0); {2023/04/18; JPL 19-5; KHB} From e6effb1416337f3c531534eb1c085c6945c39d0d Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 11 Jan 2024 17:13:38 -0500 Subject: [PATCH 064/331] Add fixed level budget diagnostic arrays to State_Diag object Signed-off-by: Lizzie Lundgren --- Headers/state_diag_mod.F90 | 273 +++++++++++++++++++++++++++++++++++-- 1 file changed, 265 insertions(+), 8 deletions(-) diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index 1b5fbe67d..410551e43 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -151,6 +151,10 @@ MODULE State_Diag_Mod TYPE(DgnMap), POINTER :: Map_BudgetEmisDryDepPBL LOGICAL :: Archive_BudgetEmisDryDepPBL + REAL(f8), POINTER :: BudgetEmisDryDepLevs(:,:,:) + TYPE(DgnMap), POINTER :: Map_BudgetEmisDryDepLevs + LOGICAL :: Archive_BudgetEmisDryDepLevs + REAL(f8), POINTER :: BudgetTransportFull(:,:,:) TYPE(DgnMap), POINTER :: Map_BudgetTransportFull LOGICAL :: Archive_BudgetTransportFull @@ -163,6 +167,10 @@ MODULE State_Diag_Mod TYPE(DgnMap), POINTER :: Map_BudgetTransportPBL LOGICAL :: Archive_BudgetTransportPBL + REAL(f8), POINTER :: BudgetTransportLevs(:,:,:) + TYPE(DgnMap), POINTER :: Map_BudgetTransportLevs + LOGICAL :: Archive_BudgetTransportLevs + REAL(f8), POINTER :: BudgetMixingFull(:,:,:) TYPE(DgnMap), POINTER :: Map_BudgetMixingFull LOGICAL :: Archive_BudgetMixingFull @@ -175,6 +183,10 @@ MODULE State_Diag_Mod TYPE(DgnMap), POINTER :: Map_BudgetMixingPBL LOGICAL :: Archive_BudgetMixingPBL + REAL(f8), POINTER :: BudgetMixingLevs(:,:,:) + TYPE(DgnMap), POINTER :: Map_BudgetMixingLevs + LOGICAL :: Archive_BudgetMixingLevs + REAL(f8), POINTER :: BudgetConvectionFull(:,:,:) TYPE(DgnMap), POINTER :: Map_BudgetConvectionFull LOGICAL :: Archive_BudgetConvectionFull @@ -187,6 +199,10 @@ MODULE State_Diag_Mod TYPE(DgnMap), POINTER :: Map_BudgetConvectionPBL LOGICAL :: Archive_BudgetConvectionPBL + REAL(f8), POINTER :: BudgetConvectionLevs(:,:,:) + TYPE(DgnMap), POINTER :: Map_BudgetConvectionLevs + LOGICAL :: Archive_BudgetConvectionLevs + REAL(f8), POINTER :: BudgetChemistryFull(:,:,:) TYPE(DgnMap), POINTER :: Map_BudgetChemistryFull LOGICAL :: Archive_BudgetChemistryFull @@ -199,6 +215,10 @@ MODULE State_Diag_Mod TYPE(DgnMap), POINTER :: Map_BudgetChemistryPBL LOGICAL :: Archive_BudgetChemistryPBL + REAL(f8), POINTER :: BudgetChemistryLevs(:,:,:) + TYPE(DgnMap), POINTER :: Map_BudgetChemistryLevs + LOGICAL :: Archive_BudgetChemistryLevs + REAL(f8), POINTER :: BudgetWetDepFull(:,:,:) TYPE(DgnMap), POINTER :: Map_BudgetWetDepFull LOGICAL :: Archive_BudgetWetDepFull @@ -211,6 +231,10 @@ MODULE State_Diag_Mod TYPE(DgnMap), POINTER :: Map_BudgetWetDepPBL LOGICAL :: Archive_BudgetWetDepPBL + REAL(f8), POINTER :: BudgetWetDepLevs(:,:,:) + TYPE(DgnMap), POINTER :: Map_BudgetWetDepLevs + LOGICAL :: Archive_BudgetWetDepLevs + REAL(f8), POINTER :: BudgetColumnMass(:,:,:,:) LOGICAL :: Archive_BudgetEmisDryDep LOGICAL :: Archive_BudgetTransport @@ -1567,6 +1591,10 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%Map_BudgetEmisDryDepPBL => NULL() State_Diag%Archive_BudgetEmisDryDepPBL = .FALSE. + State_Diag%BudgetEmisDryDepLevs => NULL() + State_Diag%Map_BudgetEmisDryDepLevs => NULL() + State_Diag%Archive_BudgetEmisDryDepLevs = .FALSE. + State_Diag%BudgetTransportFull => NULL() State_Diag%Map_BudgetTransportFull => NULL() State_Diag%Archive_BudgetTransportFull = .FALSE. @@ -1580,6 +1608,10 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%Map_BudgetTransportPBL => NULL() State_Diag%Archive_BudgetTransportPBL = .FALSE. + State_Diag%BudgetTransportLevs => NULL() + State_Diag%Map_BudgetTransportLevs => NULL() + State_Diag%Archive_BudgetTransportLevs = .FALSE. + State_Diag%BudgetMixingFull => NULL() State_Diag%Map_BudgetMixingFull => NULL() State_Diag%Archive_BudgetMixingFull = .FALSE. @@ -1593,6 +1625,10 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%Map_BudgetMixingPBL => NULL() State_Diag%Archive_BudgetMixingPBL = .FALSE. + State_Diag%BudgetMixingLevs => NULL() + State_Diag%Map_BudgetMixingLevs => NULL() + State_Diag%Archive_BudgetMixingLevs = .FALSE. + State_Diag%BudgetConvectionFull => NULL() State_Diag%Map_BudgetConvectionFull => NULL() State_Diag%Archive_BudgetConvectionFull = .FALSE. @@ -1606,6 +1642,10 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%Map_BudgetConvectionPBL => NULL() State_Diag%Archive_BudgetConvectionPBL = .FALSE. + State_Diag%BudgetConvectionLevs => NULL() + State_Diag%Map_BudgetConvectionLevs => NULL() + State_Diag%Archive_BudgetConvectionLevs = .FALSE. + State_Diag%BudgetChemistryFull => NULL() State_Diag%Map_BudgetChemistryFull => NULL() State_Diag%Archive_BudgetChemistryFull = .FALSE. @@ -1619,6 +1659,10 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%Map_BudgetChemistryPBL => NULL() State_Diag%Archive_BudgetChemistryPBL = .FALSE. + State_Diag%BudgetChemistryLevs => NULL() + State_Diag%Map_BudgetChemistryLevs => NULL() + State_Diag%Archive_BudgetChemistryLevs = .FALSE. + State_Diag%BudgetWetDepFull => NULL() State_Diag%Map_BudgetWetDepFull => NULL() State_Diag%Archive_BudgetWetDepFull = .FALSE. @@ -1632,6 +1676,10 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%Map_BudgetWetDepPBL => NULL() State_Diag%Archive_BudgetWetDepPBL = .FALSE. + State_Diag%BudgetWetDepLevs => NULL() + State_Diag%Map_BudgetWetDepLevs => NULL() + State_Diag%Archive_BudgetWetDepLevs = .FALSE. + State_Diag%BudgetColumnMass => NULL() State_Diag%Archive_Budget = .FALSE. @@ -3032,7 +3080,7 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & TaggedDiagList = TaggedDiag_List, & Ptr2Data = State_Diag%ScaleICsAdj, & archiveData = State_Diag%Archive_ScaleICsAdj, & - mapData = State_Diag%Map_ScaleICsAdj, & + mapData = State_Diag%Map_ScaleICsAdj, & diagId = diagId, & diagFlag = 'S', & RC = RC ) @@ -3136,10 +3184,33 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Levs-only emissions + diagID = 'BudgetEmisDryDepLevs' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%BudgetEmisDryDepLevs, & + archiveData = State_Diag%Archive_BudgetEmisDryDepLevs, & + mapData = State_Diag%Map_BudgetEmisDryDepLevs, & + diagId = diagId, & + diagFlag = 'A', & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + ! High-level logical for emissions budget IF ( State_Diag%Archive_BudgetEmisDryDepFull .OR. & State_Diag%Archive_BudgetEmisDryDepTrop .OR. & - State_Diag%Archive_BudgetEmisDryDepPBL ) THEN + State_Diag%Archive_BudgetEmisDryDepLevs .OR. & + State_Diag%Archive_BudgetEmisDryDepLevs ) THEN State_Diag%Archive_BudgetEmisDryDep = .TRUE. ENDIF @@ -3211,10 +3282,33 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Levs-only transport + diagID = 'BudgetTransportLevs' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%BudgetTransportLevs, & + archiveData = State_Diag%Archive_BudgetTransportLevs, & + mapData = State_Diag%Map_BudgetTransportLevs, & + diagId = diagId, & + diagFlag = 'A', & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + ! High-level logical for transport budget IF ( State_Diag%Archive_BudgetTransportFull .OR. & State_Diag%Archive_BudgetTransportTrop .OR. & - State_Diag%Archive_BudgetTransportPBL ) THEN + State_Diag%Archive_BudgetTransportPBL .OR. & + State_Diag%Archive_BudgetTransportLevs ) THEN State_Diag%Archive_BudgetTransport = .TRUE. ENDIF @@ -3286,10 +3380,33 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Levs-only mixing + diagID = 'BudgetMixingLevs' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%BudgetMixingLevs, & + archiveData = State_Diag%Archive_BudgetMixingLevs, & + mapData = State_Diag%Map_BudgetMixingLevs, & + diagId = diagId, & + diagFlag = 'A', & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + ! High-level logical for mixing budget IF ( State_Diag%Archive_BudgetMixingFull .OR. & State_Diag%Archive_BudgetMixingTrop .OR. & - State_Diag%Archive_BudgetMixingPBL ) THEN + State_Diag%Archive_BudgetMixingPBL .OR. & + State_Diag%Archive_BudgetMixingLevs ) THEN State_Diag%Archive_BudgetMixing = .TRUE. ENDIF @@ -3361,10 +3478,33 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Levs-only convection + diagID = 'BudgetConvectionLevs' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%BudgetConvectionLevs, & + archiveData = State_Diag%Archive_BudgetConvectionLevs, & + mapData = State_Diag%Map_BudgetConvectionLevs, & + diagId = diagId, & + diagFlag = 'A', & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + ! High-level logical for convection budget IF ( State_Diag%Archive_BudgetConvectionFull .OR. & State_Diag%Archive_BudgetConvectionTrop .OR. & - State_Diag%Archive_BudgetConvectionPBL ) THEN + State_Diag%Archive_BudgetConvectionPBL .OR. & + State_Diag%Archive_BudgetConvectionLevs ) THEN State_Diag%Archive_BudgetConvection = .TRUE. ENDIF @@ -3436,10 +3576,33 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Levs-only chemistry + diagID = 'BudgetChemistryLevs' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%BudgetChemistryLevs, & + archiveData = State_Diag%Archive_BudgetChemistryLevs, & + mapData = State_Diag%Map_BudgetChemistryLevs, & + diagId = diagId, & + diagFlag = 'A', & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + ! Set high-level logical for archiving chemistry budget IF ( State_Diag%Archive_BudgetChemistryFull .OR. & State_Diag%Archive_BudgetChemistryTrop .OR. & - State_Diag%Archive_BudgetChemistryPBL ) THEN + State_Diag%Archive_BudgetChemistryPBL .OR. & + State_Diag%Archive_BudgetChemistryLevs ) THEN State_Diag%Archive_BudgetChemistry = .TRUE. ENDIF @@ -3511,10 +3674,33 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + ! Levs-only wet deposition + diagID = 'BudgetWetDepLevs' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%BudgetWetDepLevs, & + archiveData = State_Diag%Archive_BudgetWetDepLevs, & + mapData = State_Diag%Map_BudgetWetDepLevs, & + diagId = diagId, & + diagFlag = 'W', & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + ! High-level logical for wet deposition budget IF ( State_Diag%Archive_BudgetWetDepFull .OR. & State_Diag%Archive_BudgetWetDepTrop .OR. & - State_Diag%Archive_BudgetWetDepPBL ) THEN + State_Diag%Archive_BudgetWetDepPBL .OR. & + State_Diag%Archive_BudgetWetDepLevs ) THEN State_Diag%Archive_BudgetWetDep = .TRUE. ENDIF @@ -11894,21 +12080,27 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & ( State_Diag%Archive_BudgetEmisDryDepFull .or. & State_Diag%Archive_BudgetEmisDryDepTrop .or. & State_Diag%Archive_BudgetEmisDryDepPBL .or. & + State_Diag%Archive_BudgetEmisDryDepLevs .or. & State_Diag%Archive_BudgetTransportFull .or. & State_Diag%Archive_BudgetTransportTrop .or. & State_Diag%Archive_BudgetTransportPBL .or. & + State_Diag%Archive_BudgetTransportLevs .or. & State_Diag%Archive_BudgetMixingFull .or. & State_Diag%Archive_BudgetMixingTrop .or. & State_Diag%Archive_BudgetMixingPBL .or. & + State_Diag%Archive_BudgetMixingLevs .or. & State_Diag%Archive_BudgetConvectionFull .or. & State_Diag%Archive_BudgetConvectionTrop .or. & State_Diag%Archive_BudgetConvectionPBL .or. & + State_Diag%Archive_BudgetConvectionLevs .or. & State_Diag%Archive_BudgetChemistryFull .or. & State_Diag%Archive_BudgetChemistryTrop .or. & State_Diag%Archive_BudgetChemistryPBL .or. & + State_Diag%Archive_BudgetChemistryLevs .or. & State_Diag%Archive_BudgetWetDepFull .or. & State_Diag%Archive_BudgetWetDepTrop .or. & - State_Diag%Archive_BudgetWetDepPBL ) + State_Diag%Archive_BudgetWetDepPBL .or. & + State_Diag%Archive_BudgetWetDepLevs ) State_Diag%Archive_AerMass = ( State_Diag%Archive_AerMassASOA .or. & State_Diag%Archive_AerMassBC .or. & @@ -12172,6 +12364,12 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'BudgetEmisDryDepLevs', & + Ptr2Data = State_Diag%BudgetEmisDryDepLevs, & + mapData = State_Diag%Map_BudgetEmisDryDepLevs, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'BudgetTransportFull', & Ptr2Data = State_Diag%BudgetTransportFull, & mapData = State_Diag%Map_BudgetTransportFull, & @@ -12190,6 +12388,12 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'BudgetTransportLevs', & + Ptr2Data = State_Diag%BudgetTransportLevs, & + mapData = State_Diag%Map_BudgetTransportLevs, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'BudgetMixingFull', & Ptr2Data = State_Diag%BudgetMixingFull, & mapData = State_Diag%Map_BudgetMixingFull, & @@ -12208,6 +12412,12 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'BudgetMixingLevs', & + Ptr2Data = State_Diag%BudgetMixingLevs, & + mapData = State_Diag%Map_BudgetMixingLevs, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'BudgetConvectionFull', & Ptr2Data = State_Diag%BudgetConvectionFull, & mapData = State_Diag%Map_BudgetConvectionFull, & @@ -12226,6 +12436,12 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'BudgetConvectionLevs', & + Ptr2Data = State_Diag%BudgetConvectionLevs, & + mapData = State_Diag%Map_BudgetConvectionLevs, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'BudgetChemistryFull', & Ptr2Data = State_Diag%BudgetChemistryFull, & mapData = State_Diag%Map_BudgetChemistryFull, & @@ -12244,6 +12460,12 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'BudgetChemistryLevs', & + Ptr2Data = State_Diag%BudgetChemistryLevs, & + mapData = State_Diag%Map_BudgetChemistryLevs, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'BudgetWetDepFull', & Ptr2Data = State_Diag%BudgetWetDepFull, & mapData = State_Diag%Map_BudgetWetDepFull, & @@ -12262,6 +12484,12 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'BudgetWetDepLevs', & + Ptr2Data = State_Diag%BudgetWetDepLevs, & + mapData = State_Diag%Map_BudgetWetDepLevs, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'DryDepChm', & Ptr2Data = State_Diag%DryDepChm, & mapData = State_Diag%Map_DryDepChm, & @@ -14126,6 +14354,11 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & 'in column for emissions and dry ' // & 'deposition' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETEMISDRYDEPLEVS' ) THEN + IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & + 'in column for emissions and dry ' // & + 'deposition' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETTRANSPORTFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & 'for transport' @@ -14138,6 +14371,10 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for transport' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETTRANSPORTLEVS' ) THEN + IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & + ' in column for transport' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETDRYDEPFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & 'for dry deposition' @@ -14150,6 +14387,10 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for dry deposition' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETDRYDEPLEVS' ) THEN + IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & + ' in column for dry deposition' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETMIXINGFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & 'for mixing' @@ -14162,6 +14403,10 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for mixing' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETMIXINGLEVS' ) THEN + IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & + ' in column for mixing' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCONVECTIONFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & 'for convection' @@ -14174,6 +14419,10 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for convection' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCONVECTIONLEVS' ) THEN + IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & + ' in column for convection' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCHEMISTRYFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & ' for chemistry' @@ -14186,6 +14435,10 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for chemistry' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCHEMISTRYLEVS' ) THEN + IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & + ' in column for chemistry' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETWETDEPFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & 'for wet deposition' @@ -14197,6 +14450,10 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETWETDEPPBL' ) THEN IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for wet deposition ' + + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETWETDEPLEVS' ) THEN + IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & + ' in column for wet deposition ' ENDIF ELSE IF ( TRIM( Name_AllCaps ) == 'DRYDEPCHM' ) THEN From e2bb1f50f211e4dd3238d5e6ec0b3428714cfa8f Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 11 Jan 2024 17:13:55 -0500 Subject: [PATCH 065/331] Add fixed level diagnostic computation to Compute_Budget_Diagnostics Signed-off-by: Lizzie Lundgren --- GeosCore/diagnostics_mod.F90 | 82 +++++++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 7 deletions(-) diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index ba47d7472..848b580cd 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -927,12 +927,14 @@ END SUBROUTINE Set_SpcConc_Diags_MND !\\ ! !INTERFACE: ! - SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Grid, & - State_Met, isFull, diagFull, & - mapDataFull, isTrop, diagTrop, & - mapDataTrop, isPBL, diagPBL, & - mapDataPBL, colMass, RC, & - timeStep, isWetDep, before_op ) + SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, & + State_Grid, State_Met, & + isFull, diagFull, mapDataFull, & + isTrop, diagTrop, mapDataTrop, & + isPBL, diagPBL, mapDataPBL, & + isLevs, diagLevs, mapDataLevs, & + colMass, RC, timeStep, & + isWetDep, before_op ) ! ! !USES: ! @@ -955,6 +957,8 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Grid, & TYPE(DgnMap), POINTER :: mapDataTrop ! Map to species indexes LOGICAL, INTENT(IN) :: isPBL ! T if PBL col diag on TYPE(DgnMap), POINTER :: mapDataPBL ! Map to species indexes + LOGICAL, INTENT(IN) :: isLevs ! T if fixed levels diag on + TYPE(DgnMap), POINTER :: mapDataLevs ! Map to species indexes LOGICAL, OPTIONAL :: isWetDep ! T = wetdep budgets LOGICAL, OPTIONAL :: before_op ! T = before operation REAL(f8), OPTIONAL :: timestep ! F = after operation @@ -965,6 +969,7 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Grid, & REAL(f8), POINTER :: diagFull(:,:,:) ! ptr to full col diag REAL(f8), POINTER :: diagTrop(:,:,:) ! ptr to trop col diag REAL(f8), POINTER :: diagPBL(:,:,:) ! ptr to pbl col diag + REAL(f8), POINTER :: diagLevs(:,:,:) ! ptr to levs col diag REAL(f8), POINTER :: colMass(:,:,:,:) ! Initial column mass ! (I,J,spc,col region) ! 1:full, 2:trop, 3:pbl @@ -1078,6 +1083,20 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Grid, & ENDIF ENDIF + ! Make sure mapDataLevs and diagLevs are not undefined + IF ( isLevs ) THEN + IF ( .not. ASSOCIATED( mapDataLevs ) ) THEN + errMsg = 'The mapDataLevs object is undefined!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + IF ( after .and. ( .not. ASSOCIATED( diagLevs ) ) ) THEN + errMsg = 'The diagLevs array is undefined!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + ENDIF + ! Make sure the colMass array is not undefined IF ( .not. ASSOCIATED( colMass ) ) THEN errMsg = 'The colMass array is undefined!' @@ -1086,7 +1105,7 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Grid, & ENDIF !==================================================================== - ! Before operation: Compute column masses (full, trop, PBL) + ! Before operation: Compute column masses (full, trop, PBL, levs) ! ! After operation: Compute column differences (final-initial) ! and them update diagnostic arrays @@ -1251,6 +1270,55 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Grid, & ENDDO ENDIF + !--------------------------------------------------------------------- + ! Levs-only budget for each requested species + !--------------------------------------------------------------------- + IF ( isLevs ) THEN + + ! Top and bottom levels of column + topLev = State_Diag%BudgetLevsTop + botLev = State_diag%BudgetLevsBot + + ! Loop over # of diagnostic slots + DO S = 1, mapDataLevs%nSlots + + ! Initialize column-specfic variables + colSum = 0.0_f8 + spcMass = 0.0_f8 + + ! For wetdep budgets, translate wetdep ID to modelId + ! Otherwise, get the modelId from the slotId + IF ( wetDep ) THEN + N = State_Chm%Map_WetDep(mapDataLevs%slot2Id(S)) + ELSE + N = mapDataLevs%slot2Id(S) + ENDIF + + ! Compute mass at each grid box in the column [kg] + DO L = botLev, topLev + spcMass(L) = State_Chm%Species(N)%Conc(I,J,L) * & + State_Met%AD(I,J,L) + ENDDO + + ! Compute column mass in Levs region [kg] + colSum = SUM( spcMass(botLev:topLev) ) + + ! Before operation: Compute initial Levs-column mass + ! After operation: Compute change in column mass (final-initial), + ! convert to [kg/s], and store in the diagLevs array. + IF ( before ) THEN + colMass(I,J,N,3) = colSum + ELSE +#ifdef MODEL_GEOS + diagLevs(I,J,S) = ( colSum - colMass(I,J,N,3) ) / timeStep & + / State_Grid%AREA_M2(I,J) +#else + diagLevs(I,J,S) = ( colSum - colMass(I,J,N,3) ) / timeStep +#endif + ENDIF + ENDDO + ENDIF + ENDDO ENDDO !$OMP END PARALLEL DO From 82e0f3fe081ac1b8a0780b019db461f573441182 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Fri, 12 Jan 2024 11:42:30 -0500 Subject: [PATCH 066/331] Add fixed level region budget diagnostic to all compute budget calls Signed-off-by: Lizzie Lundgren --- GeosCore/chemistry_mod.F90 | 6 ++++++ GeosCore/convection_mod.F90 | 6 ++++++ GeosCore/mixing_mod.F90 | 6 ++++++ GeosCore/pbl_mix_mod.F90 | 6 ++++++ GeosCore/transport_mod.F90 | 6 ++++++ GeosCore/vdiff_mod.F90 | 6 ++++++ GeosCore/wetscav_mod.F90 | 6 ++++++ 7 files changed, 42 insertions(+) diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index 3972956ef..e5cbf943c 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -179,6 +179,9 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetChemistryPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetChemistryPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = NULL(), & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & RC = RC ) @@ -1112,6 +1115,9 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetChemistryPBL, & diagPBL = State_Diag%BudgetChemistryPBL, & mapDataPBL = State_Diag%Map_BudgetChemistryPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = State_Diag%BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Chem, & RC = RC ) diff --git a/GeosCore/convection_mod.F90 b/GeosCore/convection_mod.F90 index fefe7868f..b1db77e97 100644 --- a/GeosCore/convection_mod.F90 +++ b/GeosCore/convection_mod.F90 @@ -148,6 +148,9 @@ SUBROUTINE DO_CONVECTION( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetConvectionPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetConvectionPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = NULL(), & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & RC = RC ) @@ -361,6 +364,9 @@ SUBROUTINE DO_CONVECTION( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetConvectionPBL, & diagPBL = State_Diag%BudgetConvectionPBL, & mapDataPBL = State_Diag%Map_BudgetConvectionPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = State_Diag%BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Conv, & RC = RC ) diff --git a/GeosCore/mixing_mod.F90 b/GeosCore/mixing_mod.F90 index 0605eea1c..e8f981c9d 100644 --- a/GeosCore/mixing_mod.F90 +++ b/GeosCore/mixing_mod.F90 @@ -335,6 +335,9 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & isPBL = State_Diag%Archive_BudgetEmisDryDepPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetEmisDryDepPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = NULL(), & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & RC = RC ) @@ -994,6 +997,9 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & isPBL = State_Diag%Archive_BudgetEmisDryDepPBL, & diagPBL = State_Diag%BudgetEmisDryDepPBL, & mapDataPBL = State_Diag%Map_BudgetEmisDryDepPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = State_Diag%BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Tend, & RC = RC ) diff --git a/GeosCore/pbl_mix_mod.F90 b/GeosCore/pbl_mix_mod.F90 index 021006bd1..75d1752cf 100644 --- a/GeosCore/pbl_mix_mod.F90 +++ b/GeosCore/pbl_mix_mod.F90 @@ -130,6 +130,9 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetMixingPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetMixingPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = NULL(), & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & RC = RC ) @@ -228,6 +231,9 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetMixingPBL, & diagPBL = State_Diag%BudgetMixingPBL, & mapDataPBL = State_Diag%Map_BudgetMixingPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = State_Diag%BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Dyn, & RC = RC ) diff --git a/GeosCore/transport_mod.F90 b/GeosCore/transport_mod.F90 index 738bb22c3..356b3f219 100644 --- a/GeosCore/transport_mod.F90 +++ b/GeosCore/transport_mod.F90 @@ -148,6 +148,9 @@ SUBROUTINE DO_TRANSPORT( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetTransportPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetTransportPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = NULL(), & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & RC = RC ) @@ -265,6 +268,9 @@ SUBROUTINE DO_TRANSPORT( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetTransportPBL, & diagPBL = State_Diag%BudgetTransportPBL, & mapDataPBL = State_Diag%Map_BudgetTransportPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = State_Diag%BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Dyn, & RC = RC ) diff --git a/GeosCore/vdiff_mod.F90 b/GeosCore/vdiff_mod.F90 index d201dcef2..201238284 100644 --- a/GeosCore/vdiff_mod.F90 +++ b/GeosCore/vdiff_mod.F90 @@ -2284,6 +2284,9 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetMixingPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetMixingPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = NULL(), & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & RC = RC ) @@ -2407,6 +2410,9 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetMixingPBL, & diagPBL = State_Diag%BudgetMixingPBL, & mapDataPBL = State_Diag%Map_BudgetMixingPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = State_Diag%BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Dyn, & RC = RC ) diff --git a/GeosCore/wetscav_mod.F90 b/GeosCore/wetscav_mod.F90 index c8c01ffb8..5bc7c01bb 100644 --- a/GeosCore/wetscav_mod.F90 +++ b/GeosCore/wetscav_mod.F90 @@ -204,6 +204,9 @@ SUBROUTINE DO_WETDEP( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetWetDepPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetWetDepPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = NULL(), & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & isWetDep = .TRUE., & @@ -309,6 +312,9 @@ SUBROUTINE DO_WETDEP( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetWetDepPBL, & diagPBL = State_Diag%BudgetWetDepPBL, & mapDataPBL = State_Diag%Map_BudgetWetDepPBL, & + isLevs = State_Diag%Archive_BudgetConvectionLevs, & + diagLevs = State_Diag%BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Dyn, & isWetDep = .TRUE., & From b50eb6e393c7315d08e39092ba334530e7e8f20a Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Tue, 16 Jan 2024 13:03:15 -0500 Subject: [PATCH 067/331] Pass state_diag to subroutine that computes budget diagnostics Signed-off-by: Lizzie Lundgren --- GeosCore/chemistry_mod.F90 | 2 ++ GeosCore/convection_mod.F90 | 2 ++ GeosCore/diagnostics_mod.F90 | 3 ++- GeosCore/mixing_mod.F90 | 2 ++ GeosCore/pbl_mix_mod.F90 | 2 ++ GeosCore/transport_mod.F90 | 2 ++ GeosCore/vdiff_mod.F90 | 2 ++ GeosCore/wetscav_mod.F90 | 2 ++ 8 files changed, 16 insertions(+), 1 deletion(-) diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index e5cbf943c..17cba9a2a 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -168,6 +168,7 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetChemistryFull, & @@ -1104,6 +1105,7 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetChemistryFull, & diff --git a/GeosCore/convection_mod.F90 b/GeosCore/convection_mod.F90 index b1db77e97..61916a7db 100644 --- a/GeosCore/convection_mod.F90 +++ b/GeosCore/convection_mod.F90 @@ -137,6 +137,7 @@ SUBROUTINE DO_CONVECTION( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetConvectionFull, & @@ -353,6 +354,7 @@ SUBROUTINE DO_CONVECTION( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetConvectionFull, & diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index 848b580cd..8b5cf3fe9 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -927,7 +927,7 @@ END SUBROUTINE Set_SpcConc_Diags_MND !\\ ! !INTERFACE: ! - SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, & + SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Diag, & State_Grid, State_Met, & isFull, diagFull, mapDataFull, & isTrop, diagTrop, mapDataTrop, & @@ -949,6 +949,7 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, & ! !INPUT PARAMETERS: ! TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input options object + TYPE(DgnState), INTENT(IN) :: State_Diag ! Diagnostic state object TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid state object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state obj LOGICAL, INTENT(IN) :: isFull ! T if full col diag on diff --git a/GeosCore/mixing_mod.F90 b/GeosCore/mixing_mod.F90 index e8f981c9d..bbfc0efbb 100644 --- a/GeosCore/mixing_mod.F90 +++ b/GeosCore/mixing_mod.F90 @@ -324,6 +324,7 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetEmisDryDepFull, & @@ -986,6 +987,7 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetEmisDryDepFull, & diff --git a/GeosCore/pbl_mix_mod.F90 b/GeosCore/pbl_mix_mod.F90 index 75d1752cf..659271d50 100644 --- a/GeosCore/pbl_mix_mod.F90 +++ b/GeosCore/pbl_mix_mod.F90 @@ -119,6 +119,7 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetMixingFull, & @@ -220,6 +221,7 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetMixingFull, & diff --git a/GeosCore/transport_mod.F90 b/GeosCore/transport_mod.F90 index 356b3f219..e3ca04f9b 100644 --- a/GeosCore/transport_mod.F90 +++ b/GeosCore/transport_mod.F90 @@ -137,6 +137,7 @@ SUBROUTINE DO_TRANSPORT( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetTransportFull, & @@ -257,6 +258,7 @@ SUBROUTINE DO_TRANSPORT( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetTransportFull, & diff --git a/GeosCore/vdiff_mod.F90 b/GeosCore/vdiff_mod.F90 index 201238284..1548736f8 100644 --- a/GeosCore/vdiff_mod.F90 +++ b/GeosCore/vdiff_mod.F90 @@ -2273,6 +2273,7 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetMixingFull, & @@ -2399,6 +2400,7 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetMixingFull, & diff --git a/GeosCore/wetscav_mod.F90 b/GeosCore/wetscav_mod.F90 index 5bc7c01bb..bf7c7d196 100644 --- a/GeosCore/wetscav_mod.F90 +++ b/GeosCore/wetscav_mod.F90 @@ -193,6 +193,7 @@ SUBROUTINE DO_WETDEP( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetWetDepFull, & @@ -301,6 +302,7 @@ SUBROUTINE DO_WETDEP( Input_Opt, State_Chm, State_Diag, & CALL Compute_Budget_Diagnostics( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & + State_Diag = State_Diag, & State_Grid = State_Grid, & State_Met = State_Met, & isFull = State_Diag%Archive_BudgetWetDepFull, & From 55f58e6a9f5e42949039a9b1aeb4f61999a19fff Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Tue, 16 Jan 2024 13:06:17 -0500 Subject: [PATCH 068/331] Use int and str suffixes for budget diagnostic top and bottom level vars Signed-off-by: Lizzie Lundgren --- GeosCore/diagnostics_mod.F90 | 15 ++-- Headers/diaglist_mod.F90 | 35 +++++++--- Headers/state_diag_mod.F90 | 130 ++++++++++++++++++++++++----------- 3 files changed, 123 insertions(+), 57 deletions(-) diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index 8b5cf3fe9..d056f9af3 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -990,8 +990,8 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Diag, & ! ! Scalars LOGICAL :: after, before, wetDep - INTEGER :: I, J, L, N - INTEGER :: numSpc, region, topLev, S + INTEGER :: I, J, L, N, S + INTEGER :: numSpc, region, topLev, botLev REAL(f8) :: colSum, dt ! Arrays @@ -1119,9 +1119,10 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Diag, & ENDIF ! Loop over NX and NY dimensions - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, colSum, spcMass, topLev, S, N, L ) + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, S, N, L )& + !$OMP PRIVATE( colSum, spcMass, topLev, botLev ) DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX @@ -1277,8 +1278,8 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Diag, & IF ( isLevs ) THEN ! Top and bottom levels of column - topLev = State_Diag%BudgetLevsTop - botLev = State_diag%BudgetLevsBot + topLev = State_Diag%BudgetTopLev_int + botLev = State_Diag%BudgetBotLev_int ! Loop over # of diagnostic slots DO S = 1, mapDataLevs%nSlots diff --git a/Headers/diaglist_mod.F90 b/Headers/diaglist_mod.F90 index abc2edbd5..a428b66dd 100644 --- a/Headers/diaglist_mod.F90 +++ b/Headers/diaglist_mod.F90 @@ -81,13 +81,15 @@ MODULE DiagList_Mod !========================================================================= ! Configurable Settings Used for Diagnostic Names at Run-time !========================================================================= - CHARACTER(LEN=5), PUBLIC :: RadWL(3) ! Wavelengths in radiation menu - CHARACTER(LEN=4), PUBLIC :: RadOut(17) ! Names of RRTMG outputs (tags) - INTEGER, PUBLIC :: nRadOut ! # of selected RRTMG outputs - LOGICAL, PUBLIC :: IsFullChem ! Is it a fullchem simulation? - LOGICAL, PUBLIC :: IsHg ! Is it a Hg simulation? - LOGICAL, PUBLIC :: IsCarbon ! Is it a carbon sim? - CHARACTER(LEN=10), PUBLIC :: AltAboveSfc ! Alt for O3, HNO3 diagnostics + CHARACTER(LEN=3), PUBLIC :: budgetBotLev_str ! Budget diag level range bottom + CHARACTER(LEN=3), PUBLIC :: budgetTopLev_str ! Budget diag level range top + CHARACTER(LEN=5), PUBLIC :: RadWL(3) ! Wavelengths in radiation menu + CHARACTER(LEN=4), PUBLIC :: RadOut(17) ! Names of RRTMG outputs (tags) + INTEGER, PUBLIC :: nRadOut ! # of selected RRTMG outputs + LOGICAL, PUBLIC :: IsFullChem ! Is it a fullchem simulation? + LOGICAL, PUBLIC :: IsHg ! Is it a Hg simulation? + LOGICAL, PUBLIC :: IsCarbon ! Is it a carbon sim? + CHARACTER(LEN=10), PUBLIC :: AltAboveSfc ! Alt for O3, HNO3 diagnostics !========================================================================= ! Derived type for Collections List @@ -188,7 +190,7 @@ SUBROUTINE Init_DiagList ( am_I_Root, historyConfigFile, DiagList, RC ) INTEGER :: LineNum, LineLen, LineInd, LineInd2 INTEGER :: fId, IOS, N, N1, N2, N3, I, J INTEGER :: WLIndMax, WLIndMaxLoc(1), WLInd(3) - INTEGER :: strIndMax, strInd(5) + INTEGER :: strIndMax, strIndMin, strInd(5) INTEGER :: numSpcWords, numIDWords INTEGER :: NFIELDS @@ -225,6 +227,8 @@ SUBROUTINE Init_DiagList ( am_I_Root, historyConfigFile, DiagList, RC ) EOF = .FALSE. found = .FALSE. NewDiagItem => NULL() + budgetBotLev_str= '' + budgetTopLev_str= '' RadWL = '' RadOut = '' nRadOut = 0 @@ -834,6 +838,21 @@ SUBROUTINE Init_DiagList ( am_I_Root, historyConfigFile, DiagList, RC ) metadataID = metadataID(1:strInd(2)-1) // TRIM( AltAboveSfc ) ENDIF + ! Special handling for the budget fixed level range diagnostic + strInd(1) = INDEX( TRIM(metadataID), 'BUDGET' ) + strInd(2) = INDEX( TRIM(metadataID), 'LEVS' ) + strInd(3) = INDEX( TRIM(metadataID), 'TO' ) + strIndMin = MIN( strInd(1), strInd(2), strInd(3) ) + ! Set budget diagnostic level range top and bottom if not already set + ! ewl TODO: only do this once. Beyond that check that consistent. + IF ( strIndMin > 0 ) THEN + ! Need to parse the metadataID name to set budget fixed level ranges + budgetBotLev_str = TRIM( metadataID( strInd(2)+4:strInd(3)-1 ) ) + print *, "ewl: budgetBotLev is ", TRIM(budgetBotLev_str) + budgetTopLev_str = TRIM( metadataID( strInd(3)+2:LEN(TRIM(metadataID)) ) ) + print *, "ewl: budgetTopLev is ", TRIM(budgetTopLev_str) + ENDIF + !==================================================================== ! Create a new DiagItem object !==================================================================== diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index 410551e43..8b65916dc 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -236,6 +236,8 @@ MODULE State_Diag_Mod LOGICAL :: Archive_BudgetWetDepLevs REAL(f8), POINTER :: BudgetColumnMass(:,:,:,:) + INTEGER :: BudgetBotLev_int + INTEGER :: BudgetTopLev_int LOGICAL :: Archive_BudgetEmisDryDep LOGICAL :: Archive_BudgetTransport LOGICAL :: Archive_BudgetMixing @@ -1683,6 +1685,9 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%BudgetColumnMass => NULL() State_Diag%Archive_Budget = .FALSE. + State_Diag%BudgetTopLev_int = -999 + State_Diag%BudgetBotLev_int = -999 + !%%%%% Drydep diagnostics %%%%% State_Diag%DryDepChm => NULL() @@ -3115,7 +3120,6 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF - !----------------------------------------------------------------------- ! Budget for emissions (average kg/m2/s across single timestep) !----------------------------------------------------------------------- @@ -3184,8 +3188,9 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF - ! Levs-only emissions - diagID = 'BudgetEmisDryDepLevs' + ! Fixed level range emissions + diagID = 'BudgetEmisDryDepLevs' // & + TRIM( budgetBotLev_str ) // 'to' // TRIM( budgetTopLev_str ) CALL Init_and_Register( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -3282,8 +3287,9 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF - ! Levs-only transport - diagID = 'BudgetTransportLevs' + ! Fixed level range transport + diagID = 'BudgetTransportLevs' // & + TRIM( budgetBotLev_str ) // 'to' // TRIM( budgetTopLev_str ) CALL Init_and_Register( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -3380,8 +3386,9 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF - ! Levs-only mixing - diagID = 'BudgetMixingLevs' + ! Fixed level range mixing + diagID = 'BudgetMixingLevs' // & + TRIM( budgetBotLev_str ) // 'to' // TRIM( budgetTopLev_str ) CALL Init_and_Register( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -3478,8 +3485,9 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF - ! Levs-only convection - diagID = 'BudgetConvectionLevs' + ! Fixed level range convection + diagID = 'BudgetConvectionLevs' // & + TRIM( budgetBotLev_str ) // 'to' // TRIM( budgetTopLev_str ) CALL Init_and_Register( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -3576,8 +3584,9 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF - ! Levs-only chemistry - diagID = 'BudgetChemistryLevs' + ! Fixed level range chemistry + diagID = 'BudgetChemistryLevs' // & + TRIM( budgetBotLev_str ) // 'to' // TRIM( budgetTopLev_str ) CALL Init_and_Register( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -3674,8 +3683,9 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF - ! Levs-only wet deposition - diagID = 'BudgetWetDepLevs' + ! Fixed level range wet deposition + diagID = 'BudgetWetDepLevs' // & + TRIM( budgetBotLev_str ) // 'to' // TRIM( budgetTopLev_str ) CALL Init_and_Register( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -3704,6 +3714,19 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & State_Diag%Archive_BudgetWetDep = .TRUE. ENDIF + !------------------------------------------------------------------------ + ! Top and bottom levels for budget level range diagnostics + !------------------------------------------------------------------------ + IF (State_Diag%Archive_BudgetEmisDryDepLevs .or. & + State_Diag%Archive_BudgetTransportLevs .or. & + State_Diag%Archive_BudgetMixingLevs .or. & + State_Diag%Archive_BudgetConvectionLevs .or. & + State_Diag%Archive_BudgetChemistryLevs .or. & + State_Diag%Archive_BudgetWetDepLevs ) THEN + State_Diag%BudgetTopLev_int = 1 !READ((i3),BudgetTopLev_str) + State_Diag%BudgetBotLev_int = 32 !READ((i3),BudgetBotLev_str) + ENDIF + !------------------------------------------------------------------------ ! Total dry deposition flux !------------------------------------------------------------------------ @@ -14186,6 +14209,7 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & ! USE Charpak_Mod, ONLY : StrSplit, To_UpperCase USE DiagList_Mod, ONLY : IsFullChem, IsCarbon, IsHg + USE DiagList_Mod, ONLY : budgetTopLev_str, budgetBotLev_str USE Registry_Params_Mod ! ! !INPUT PARAMETERS: @@ -14353,11 +14377,14 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & 'in column for emissions and dry ' // & 'deposition' - - ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETEMISDRYDEPLEVS' ) THEN - IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & - 'in column for emissions and dry ' // & - 'deposition' + + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETEMISDRYDEPLEVS' & + // TRIM(budgetBotLev_str) // 'TO' & + // TRIM(budgetTopLev_str) ) THEN + IF ( isDesc ) Desc = 'Total mass rate of change in column levels ' & + // TRIM(budgetBotLev_str) // ' to ' & + // TRIM(budgetTopLev_str) & + // ' for emissions and dry deposition' ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETTRANSPORTFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & @@ -14371,9 +14398,12 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for transport' - ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETTRANSPORTLEVS' ) THEN - IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & - ' in column for transport' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETTRANSPORTLEVS' & + // TRIM(budgetBotLev_str) // 'TO' & + // TRIM(budgetTopLev_str) ) THEN + IF ( isDesc ) Desc = 'Total mass rate of change in column levels ' & + // TRIM(budgetBotLev_str) // ' to ' & + // TRIM(budgetTopLev_str) // ' for transport' ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETDRYDEPFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & @@ -14387,9 +14417,12 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for dry deposition' - ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETDRYDEPLEVS' ) THEN - IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & - ' in column for dry deposition' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETDRYDEPLEVS' & + // TRIM(budgetBotLev_str) // 'TO' & + // TRIM(budgetTopLev_str) ) THEN + IF ( isDesc ) Desc = 'Total mass rate of change in column levels ' & + // TRIM(budgetBotLev_str) // ' to ' & + // TRIM(budgetTopLev_str) // ' for dry deposition' ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETMIXINGFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & @@ -14402,11 +14435,14 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETMIXINGPBL' ) THEN IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for mixing' - - ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETMIXINGLEVS' ) THEN - IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & - ' in column for mixing' - + + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETMIXINGLEVS' & + // TRIM(budgetBotLev_str) // 'TO' & + // TRIM(budgetTopLev_str) ) THEN + IF ( isDesc ) Desc = 'Total mass rate of change in column levels ' & + // TRIM(budgetBotLev_str) // ' to ' & + // TRIM(budgetTopLev_str) // ' for mixing' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCONVECTIONFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & 'for convection' @@ -14418,11 +14454,14 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCONVECTIONPBL' ) THEN IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for convection' - - ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCONVECTIONLEVS' ) THEN - IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & - ' in column for convection' - + + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCONVECTIONLEVS' & + // TRIM(budgetBotLev_str) // 'TO' & + // TRIM(budgetTopLev_str) ) THEN + IF ( isDesc ) Desc = 'Total mass rate of change in column levels ' & + // TRIM(budgetBotLev_str) // ' to ' & + // TRIM(budgetTopLev_str) // ' for convection' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCHEMISTRYFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & ' for chemistry' @@ -14434,11 +14473,14 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCHEMISTRYPBL' ) THEN IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for chemistry' - - ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCHEMISTRYLEVS' ) THEN - IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & - ' in column for chemistry' - + + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETCHEMISTRYLEVS' & + // TRIM(budgetBotLev_str) // 'TO' & + // TRIM(budgetTopLev_str) ) THEN + IF ( isDesc ) Desc = 'Total mass rate of change in column levels ' & + // TRIM(budgetBotLev_str) // ' to ' & + // TRIM(budgetTopLev_str) // ' for chemistry' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETWETDEPFULL' ) THEN IF ( isDesc ) Desc = 'Total mass rate of change in column ' // & 'for wet deposition' @@ -14451,9 +14493,13 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isDesc ) Desc = 'PBL-only total mass rate of change ' // & ' in column for wet deposition ' - ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETWETDEPLEVS' ) THEN - IF ( isDesc ) Desc = 'Fixed levels total mass rate of change ' // & - ' in column for wet deposition ' + ELSE IF ( TRIM( Name_AllCaps ) == 'BUDGETWETDEPLEVS' & + // TRIM(budgetBotLev_str) // 'TO' & + // TRIM(budgetTopLev_str) ) THEN + IF ( isDesc ) Desc = 'Total mass rate of change in column levels ' & + // TRIM(budgetBotLev_str) // ' to ' & + // TRIM(budgetTopLev_str) // ' for wet deposition' + ENDIF ELSE IF ( TRIM( Name_AllCaps ) == 'DRYDEPCHM' ) THEN From 7638f23b78805db721bf5bf06fe4c6e362185759 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 17 Jan 2024 17:11:37 -0500 Subject: [PATCH 069/331] Updates HISTORY.rc templates to include fixed level range budget diagnostic Default setting in all templates is levels 1 to 35. Users can change the name to change the levels. Signed-off-by: Lizzie Lundgren --- run/CESM/HISTORY.rc | 1 + .../HISTORY.rc.templates/HISTORY.rc.CH4 | 6 + .../HISTORY.rc.templates/HISTORY.rc.CO2 | 6 + .../HISTORY.rc.templates/HISTORY.rc.Hg | 6 + .../HISTORY.rc.templates/HISTORY.rc.POPs | 6 + .../HISTORY.rc.TransportTracers | 6 + .../HISTORY.rc.templates/HISTORY.rc.aerosol | 6 + .../HISTORY.rc.templates/HISTORY.rc.carbon | 44 +- .../HISTORY.rc.templates/HISTORY.rc.fullchem | 6 + .../HISTORY.rc.templates/HISTORY.rc.metals | 6 + .../HISTORY.rc.templates/HISTORY.rc.tagCH4 | 6 + .../HISTORY.rc.templates/HISTORY.rc.tagCO | 6 + .../HISTORY.rc.templates/HISTORY.rc.tagO3 | 6 + run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 | 44 +- .../HISTORY.rc.TransportTracers | 83 ++ .../HISTORY.rc.templates/HISTORY.rc.carbon | 95 +- .../HISTORY.rc.templates/HISTORY.rc.fullchem | 1036 +++++++++++++++++ run/GEOS/TransportTracers/HISTORY.rc | 83 ++ run/WRF/ch4/HISTORY.rc | 5 + run/WRF/co2/HISTORY.rc | 5 + run/WRF/fullchem/HISTORY.rc | 5 + 21 files changed, 1394 insertions(+), 73 deletions(-) diff --git a/run/CESM/HISTORY.rc b/run/CESM/HISTORY.rc index 7500b5a6a..670a97f7d 100644 --- a/run/CESM/HISTORY.rc +++ b/run/CESM/HISTORY.rc @@ -266,6 +266,7 @@ COLLECTIONS: 'Metrics', Budget.fields: 'BudgetChemistryFull_O3 ', 'BudgetChemistryTrop_O3 ', 'BudgetChemistryPBL_O3 ', + 'BudgetChemistryLevs1to35_O3 ', :: #============================================================================== # %%%%% THE ConcAboveSfc COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 index 9cbe2df53..d92d95b99 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 @@ -119,21 +119,27 @@ COLLECTIONS: 'Restart', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CH4 COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 index 35e077cbe..19c256ab1 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 @@ -94,21 +94,27 @@ COLLECTIONS: 'Restart', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CO2 COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg index 3c80782c5..fcd95a976 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg @@ -108,21 +108,27 @@ COLLECTIONS: 'Restart', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CloudConvFlux COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.POPs b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.POPs index 67cc67bfc..b1c87292d 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.POPs +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.POPs @@ -95,21 +95,27 @@ COLLECTIONS: 'Restart', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CloudConvFlux COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers index f73245a83..f7ca9a770 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers @@ -97,21 +97,27 @@ COLLECTIONS: 'Restart', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CloudConvFlux COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol index e384479f2..0935c3ca5 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol @@ -105,21 +105,27 @@ COLLECTIONS: 'Restart', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE AerosolMass COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon index db19ba89b..df5e77b09 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon @@ -1,4 +1,4 @@ -############################################################################### +b############################################################################### ### HISTORY.rc file for GEOS-Chem carbon simulation ### ### Contact: GEOS-Chem Support Team (geos-chem-support@g.harvard.edu) ### ############################################################################### @@ -116,24 +116,30 @@ COLLECTIONS: 'Restart', Budget.frequency: ${RUNDIR_HIST_TIME_AVG_FREQ} Budget.duration: ${RUNDIR_HIST_TIME_AVG_DUR} Budget.mode: 'time-averaged' - Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', - 'BudgetEmisDryDepTrop_?ADV? ', - 'BudgetEmisDryDepPBL_?ADV? ', - 'BudgetChemistryFull_?ADV? ', - 'BudgetChemistryTrop_?ADV? ', - 'BudgetChemistryPBL_?ADV? ', - 'BudgetTransportFull_?ADV? ', - 'BudgetTransportTrop_?ADV? ', - 'BudgetTransportPBL_?ADV? ', - 'BudgetMixingFull_?ADV? ', - 'BudgetMixingTrop_?ADV? ', - 'BudgetMixingPBL_?ADV? ', - 'BudgetConvectionFull_?ADV? ', - 'BudgetConvectionTrop_?ADV? ', - 'BudgetConvectionPBL_?ADV? ', - 'BudgetWetDepFull_?WET? ', - 'BudgetWetDepTrop_?WET? ', - 'BudgetWetDepPBL_?WET? ', + Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', + 'BudgetEmisDryDepTrop_?ADV? ', + 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', + 'BudgetChemistryFull_?ADV? ', + 'BudgetChemistryTrop_?ADV? ', + 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', + 'BudgetTransportFull_?ADV? ', + 'BudgetTransportTrop_?ADV? ', + 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', + 'BudgetMixingFull_?ADV? ', + 'BudgetMixingTrop_?ADV? ', + 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', + 'BudgetConvectionFull_?ADV? ', + 'BudgetConvectionTrop_?ADV? ', + 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', + 'BudgetWetDepFull_?WET? ', + 'BudgetWetDepTrop_?WET? ', + 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE Carbon COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem index e7498a145..8835b7d30 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem @@ -282,21 +282,27 @@ COLLECTIONS: 'Restart', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CloudConvFlux COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals index 2ba3002c1..daae44a53 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals @@ -95,21 +95,27 @@ COLLECTIONS: 'Restart', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CloudConvFlux COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 index 98ca6b504..b4417d230 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 @@ -95,21 +95,27 @@ COLLECTIONS: 'Restart', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CloudConvFlux COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO index d3a9ae1c9..ff5aad1e8 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO @@ -95,21 +95,27 @@ COLLECTIONS: 'Restart', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CloudConvFlux COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 index 9c58dc52d..a2048c4df 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 @@ -96,21 +96,27 @@ COLLECTIONS: 'Restart', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CloudConvFlux COLLECTION %%%%% diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 index f6260b9f6..59d4271a2 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 @@ -146,24 +146,32 @@ COLLECTIONS: 'Emissions', Budget.frequency: 010000 Budget.duration: 010000 Budget.mode: 'time-averaged' - Budget.fields: 'BudgetEmisDryDepFull_CO2 ', 'GCHPchem', - 'BudgetEmisDryDepFull_PassiveTracer ', 'GCHPchem', - 'BudgetEmisDryDepTrop_CO2 ', 'GCHPchem', - 'BudgetEmisDryDepTrop_PassiveTracer ', 'GCHPchem', - 'BudgetEmisDryDepPBL_CO2 ', 'GCHPchem', - 'BudgetEmisDryDepPBL_PassiveTracer ', 'GCHPchem', - 'BudgetMixingFull_CO2 ', 'GCHPchem', - 'BudgetMixingFull_PassiveTracer ', 'GCHPchem', - 'BudgetMixingTrop_CO2 ', 'GCHPchem', - 'BudgetMixingTrop_PassiveTracer ', 'GCHPchem', - 'BudgetMixingPBL_CO2 ', 'GCHPchem', - 'BudgetMixingPBL_PassiveTracer ', 'GCHPchem', - 'BudgetConvectionFull_CO2 ', 'GCHPchem', - 'BudgetConvectionFull_PassiveTracer ', 'GCHPchem', - 'BudgetConvectionTrop_CO2 ', 'GCHPchem', - 'BudgetConvectionTrop_PassiveTracer ', 'GCHPchem', - 'BudgetConvectionPBL_CO2 ', 'GCHPchem', - 'BudgetConvectionPBL_PassiveTracer ', 'GCHPchem', + Budget.fields: 'BudgetEmisDryDepFull_CO2 ', 'GCHPchem', + 'BudgetEmisDryDepFull_PassiveTracer ', 'GCHPchem', + 'BudgetEmisDryDepTrop_CO2 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_PassiveTracer ', 'GCHPchem', + 'BudgetEmisDryDepPBL_CO2 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_PassiveTracer ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_CO2 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_PassiveTracer', 'GCHPchem', + # + 'BudgetMixingFull_CO2 ', 'GCHPchem', + 'BudgetMixingFull_PassiveTracer ', 'GCHPchem', + 'BudgetMixingTrop_CO2 ', 'GCHPchem', + 'BudgetMixingTrop_PassiveTracer ', 'GCHPchem', + 'BudgetMixingPBL_CO2 ', 'GCHPchem', + 'BudgetMixingPBL_PassiveTracer ', 'GCHPchem', + 'BudgetMixingLevs1to35_CO2 ', 'GCHPchem', + 'BudgetMixingLevs1to35_PassiveTracer ', 'GCHPchem', + # + 'BudgetConvectionFull_CO2 ', 'GCHPchem', + 'BudgetConvectionFull_PassiveTracer ', 'GCHPchem', + 'BudgetConvectionTrop_CO2 ', 'GCHPchem', + 'BudgetConvectionTrop_PassiveTracer ', 'GCHPchem', + 'BudgetConvectionPBL_CO2 ', 'GCHPchem', + 'BudgetConvectionPBL_PassiveTracer ', 'GCHPchem', + 'BudgetConvectionLevs1to35_CO2 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_PassiveTracer', 'GCHPchem', :: #=============================================================================== CloudConvFlux.template: '%y4%m2%d2_%h2%n2z.nc4', diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers index 1d9c81740..fa794aeb9 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers @@ -192,6 +192,25 @@ COLLECTIONS: 'Emissions', 'BudgetChemistryPBL_SF6 ', 'GCHPchem', 'BudgetChemistryPBL_st80_25 ', 'GCHPchem', # + 'BudgetChemistryLevs1to35_Rn222 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Pb210 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Pb210s ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Be7 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Be7s ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Be10 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Be10s ', 'GCHPchem', + 'BudgetChemistryLevs1to35_CH3I ', 'GCHPchem', + 'BudgetChemistryLevs1to35_CO_25 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_CO_50 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_e90 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_e90_n ', 'GCHPchem', + 'BudgetChemistryLevs1to35_e90_s ', 'GCHPchem', + 'BudgetChemistryLevs1to35_nh_5 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_nh_50 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_PassiveTracer ', 'GCHPchem', + 'BudgetChemistryLevs1to35_SF6 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_st80_25 ', 'GCHPchem', + # 'BudgetEmisDryDepFull_Rn222 ', 'GCHPchem', 'BudgetEmisDryDepFull_Pb210 ', 'GCHPchem', 'BudgetEmisDryDepFull_Pb210s ', 'GCHPchem', @@ -248,6 +267,25 @@ COLLECTIONS: 'Emissions', 'BudgetEmisDryDepPBL_PassiveTracer ', 'GCHPchem', 'BudgetEmisDryDepPBL_SF6 ', 'GCHPchem', 'BudgetEmisDryDepPBL_st80_25 ', 'GCHPchem', + # + 'BudgetEmisDryDepLevs1to35_Rn222 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_Pb210 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_Pb210s ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_Be7 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_Be7s ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_Be10 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_Be10s ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_CH3I ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_CO_25 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_CO_50 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_e90 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_e90_n ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_e90_s ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_nh_5 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_nh_50 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_PassiveTracer', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_SF6 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_st80_25 ', 'GCHPchem', # 'BudgetMixingFull_Rn222 ', 'GCHPchem', 'BudgetMixingFull_Pb210 ', 'GCHPchem', @@ -305,6 +343,25 @@ COLLECTIONS: 'Emissions', 'BudgetMixingPBL_PassiveTracer ', 'GCHPchem', 'BudgetMixingPBL_SF6 ', 'GCHPchem', 'BudgetMixingPBL_st80_25 ', 'GCHPchem', + # + 'BudgetMixingLevs1to35_Rn222 ', 'GCHPchem', + 'BudgetMixingLevs1to35_Pb210 ', 'GCHPchem', + 'BudgetMixingLevs1to35_Pb210s ', 'GCHPchem', + 'BudgetMixingLevs1to35_Be7 ', 'GCHPchem', + 'BudgetMixingLevs1to35_Be7s ', 'GCHPchem', + 'BudgetMixingLevs1to35_Be10 ', 'GCHPchem', + 'BudgetMixingLevs1to35_Be10s ', 'GCHPchem', + 'BudgetMixingLevs1to35_CH3I ', 'GCHPchem', + 'BudgetMixingLevs1to35_CO_25 ', 'GCHPchem', + 'BudgetMixingLevs1to35_CO_50 ', 'GCHPchem', + 'BudgetMixingLevs1to35_e90 ', 'GCHPchem', + 'BudgetMixingLevs1to35_e90_n ', 'GCHPchem', + 'BudgetMixingLevs1to35_e90_s ', 'GCHPchem', + 'BudgetMixingLevs1to35_nh_5 ', 'GCHPchem', + 'BudgetMixingLevs1to35_nh_50 ', 'GCHPchem', + 'BudgetMixingLevs1to35_PassiveTracer ', 'GCHPchem', + 'BudgetMixingLevs1to35_SF6 ', 'GCHPchem', + 'BudgetMixingLevs1to35_st80_25 ', 'GCHPchem', # 'BudgetConvectionFull_Rn222 ', 'GCHPchem', 'BudgetConvectionFull_Pb210 ', 'GCHPchem', @@ -363,6 +420,25 @@ COLLECTIONS: 'Emissions', 'BudgetConvectionPBL_SF6 ', 'GCHPchem', 'BudgetConvectionPBL_st80_25 ', 'GCHPchem', # + 'BudgetConvectionLevs1to35_Rn222 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Pb210 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Pb210s ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Be7 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Be7s ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Be10 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Be10s ', 'GCHPchem', + 'BudgetConvectionLevs1to35_CH3I ', 'GCHPchem', + 'BudgetConvectionLevs1to35_CO_25 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_CO_50 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_e90 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_e90_n ', 'GCHPchem', + 'BudgetConvectionLevs1to35_e90_s ', 'GCHPchem', + 'BudgetConvectionLevs1to35_nh_5 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_nh_50 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_PassiveTracer', 'GCHPchem', + 'BudgetConvectionLevs1to35_SF6 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_st80_25 ', 'GCHPchem', + # 'BudgetWetDepFull_Pb210 ', 'GCHPchem', 'BudgetWetDepFull_Pb210s ', 'GCHPchem', 'BudgetWetDepFull_Be7 ', 'GCHPchem', @@ -383,6 +459,13 @@ COLLECTIONS: 'Emissions', 'BudgetWetDepPBL_Be7s ', 'GCHPchem', 'BudgetWetDepPBL_Be10 ', 'GCHPchem', 'BudgetWetDepPBL_Be10s ', 'GCHPchem', + # + 'BudgetWetDepLevs1to35_Pb210 ', 'GCHPchem', + 'BudgetWetDepLevs1to35_Pb210s ', 'GCHPchem', + 'BudgetWetDepLevs1to35_Be7 ', 'GCHPchem', + 'BudgetWetDepLevs1to35_Be7s ', 'GCHPchem', + 'BudgetWetDepLevs1to35_Be10 ', 'GCHPchem', + 'BudgetWetDepLevs1to35_Be10s ', 'GCHPchem', :: #=============================================================================== CloudConvFlux.template: '%y4%m2%d2_%h2%n2z.nc4', diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon index 690b02fea..9e93bbef0 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon @@ -153,42 +153,65 @@ COLLECTIONS: 'Emissions', Budget.frequency: 010000 Budget.duration: 010000 Budget.mode: 'time-averaged' - Budget.fields: 'BudgetEmisDryDepFull_CH4', 'GCHPchem', - 'BudgetEmisDryDepTrop_CH4', 'GCHPchem', - 'BudgetEmisDryDepPBL_CH4 ', 'GCHPchem', - 'BudgetMixingFull_CH4 ', 'GCHPchem', - 'BudgetMixingTrop_CH4 ', 'GCHPchem', - 'BudgetMixingPBL_CH4 ', 'GCHPchem', - 'BudgetConvectionFull_CH4', 'GCHPchem', - 'BudgetConvectionTrop_CH4', 'GCHPchem', - 'BudgetConvectionPBL_CH4 ', 'GCHPchem', - 'BudgetEmisDryDepFull_CO ', 'GCHPchem', - 'BudgetEmisDryDepTrop_CO ', 'GCHPchem', - 'BudgetEmisDryDepPBL_CO ', 'GCHPchem', - 'BudgetMixingFull_CO ', 'GCHPchem', - 'BudgetMixingTrop_CO ', 'GCHPchem', - 'BudgetMixingPBL_CO ', 'GCHPchem', - 'BudgetConvectionFull_CO ', 'GCHPchem', - 'BudgetConvectionTrop_CO ', 'GCHPchem', - 'BudgetConvectionPBL_CO ', 'GCHPchem', - 'BudgetEmisDryDepFull_CO2', 'GCHPchem', - 'BudgetEmisDryDepTrop_CO2', 'GCHPchem', - 'BudgetEmisDryDepPBL_CO2 ', 'GCHPchem', - 'BudgetMixingFull_CO2 ', 'GCHPchem', - 'BudgetMixingTrop_CO2 ', 'GCHPchem', - 'BudgetMixingPBL_CO2 ', 'GCHPchem', - 'BudgetConvectionFull_CO2', 'GCHPchem', - 'BudgetConvectionTrop_CO2', 'GCHPchem', - 'BudgetConvectionPBL_CO2 ', 'GCHPchem', - 'BudgetEmisDryDepFull_OCS', 'GCHPchem', - 'BudgetEmisDryDepTrop_OCS', 'GCHPchem', - 'BudgetEmisDryDepPBL_OCS ', 'GCHPchem', - 'BudgetMixingFull_OCS ', 'GCHPchem', - 'BudgetMixingTrop_OCS ', 'GCHPchem', - 'BudgetMixingPBL_OCS ', 'GCHPchem', - 'BudgetConvectionFull_OCS', 'GCHPchem', - 'BudgetConvectionTrop_OCS', 'GCHPchem', - 'BudgetConvectionPBL_OCS ', 'GCHPchem', + Budget.fields: 'BudgetEmisDryDepFull_CH4 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_CH4 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_CH4 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_CH4 ', 'GCHPchem', + # + 'BudgetMixingFull_CH4 ', 'GCHPchem', + 'BudgetMixingTrop_CH4 ', 'GCHPchem', + 'BudgetMixingPBL_CH4 ', 'GCHPchem', + 'BudgetMixingLevs1to35_CH4 ', 'GCHPchem', + # + 'BudgetConvectionFull_CH4 ', 'GCHPchem', + 'BudgetConvectionTrop_CH4 ', 'GCHPchem', + 'BudgetConvectionPBL_CH4 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_CH4 ', 'GCHPchem', + # + 'BudgetEmisDryDepFull_CO ', 'GCHPchem', + 'BudgetEmisDryDepTrop_CO ', 'GCHPchem', + 'BudgetEmisDryDepPBL_CO ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_CO ', 'GCHPchem', + # + 'BudgetMixingFull_CO ', 'GCHPchem', + 'BudgetMixingTrop_CO ', 'GCHPchem', + 'BudgetMixingPBL_CO ', 'GCHPchem', + 'BudgetMixingLevs1to35_CO ', 'GCHPchem', + # + 'BudgetConvectionFull_CO ', 'GCHPchem', + 'BudgetConvectionTrop_CO ', 'GCHPchem', + 'BudgetConvectionPBL_CO ', 'GCHPchem', + 'BudgetConvectionLevs1to35_CO ', 'GCHPchem', + # + 'BudgetEmisDryDepFull_CO2 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_CO2 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_CO2 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_CO2 ', 'GCHPchem', + # + 'BudgetMixingFull_CO2 ', 'GCHPchem', + 'BudgetMixingTrop_CO2 ', 'GCHPchem', + 'BudgetMixingPBL_CO2 ', 'GCHPchem', + 'BudgetMixingLevs1to35_CO2 ', 'GCHPchem', + # + 'BudgetConvectionFull_CO2 ', 'GCHPchem', + 'BudgetConvectionTrop_CO2 ', 'GCHPchem', + 'BudgetConvectionPBL_CO2 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_CO2 ', 'GCHPchem', + # + 'BudgetEmisDryDepFull_OCS ', 'GCHPchem', + 'BudgetEmisDryDepTrop_OCS ', 'GCHPchem', + 'BudgetEmisDryDepPBL_OCS ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_OCS ', 'GCHPchem', + # + 'BudgetMixingFull_OCS ', 'GCHPchem', + 'BudgetMixingTrop_OCS ', 'GCHPchem', + 'BudgetMixingPBL_OCS ', 'GCHPchem', + 'BudgetMixingLevs1to35_OCS ', 'GCHPchem', + # + 'BudgetConvectionFull_OCS ', 'GCHPchem', + 'BudgetConvectionTrop_OCS ', 'GCHPchem', + 'BudgetConvectionPBL_OCS ', 'GCHPchem', + 'BudgetConvectionLevs1to35_OCS ', 'GCHPchem', :: #============================================================================== # Prod and loss terms from the carbon simulation (plus OH conc) diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem index f07528ff5..be99e3408 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem @@ -873,6 +873,151 @@ COLLECTIONS: @#'DefaultCollection', # #'BudgetWetDepPBL_ASOA3 ', 'GCHPchem', # #'BudgetWetDepPBL_ASOA2 ', 'GCHPchem', # #'BudgetWetDepPBL_ASOA1 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SOAS ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SOAIE ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SOAGX ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SO4s ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SO4 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SO2 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SALCCL ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SALCAL ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SALC ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SALACL ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SALAAL ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_SALA ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_RP ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_RIPD ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_RIPC ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_RIPB ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_RIPA ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_RB3P ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_RA3P ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_R4P ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_R4N2 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_PYAC ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_PRPN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_PRPE ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_PROPNN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_PPN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_PP ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_pFe ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_PAN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_OCPO ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_OCPI ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_NITs ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_NIT ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_NH4 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_NH3 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MVKPC ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MVKN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MVKHP ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MVKHCB ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MVKHC ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MVKDH ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MVK ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MTPO ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MTPA ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MSA ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MPN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MPAN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MP ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MONITU ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MONITS ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MONITA ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MOH ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MGLY ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MEK ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MCRHP ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MCRHNB ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MCRHN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MCRENOL ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MCRDH ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MAP ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_MACR1OOH ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_LVOCOA ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_LVOC ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_LIMO ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ITHN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ITCN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ISALC ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ISALA ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IONO2 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IONO ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IONITA ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_INPD ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_INPB ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_INDIOL ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IHN4 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IHN3 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IHN2 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IHN1 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IEPOXD ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IEPOXB ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IEPOXA ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IDN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IDHPE ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IDHDP ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IDCHP ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ICPDH ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ICN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ICl ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ICHE ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_IBr ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_I2O4 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_I2O3 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_I2O2 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_I2 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HPETHNL ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HONIT ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HOI ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HOCl ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HOBr ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HNO3 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HMML ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HMS ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HMHP ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HI ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HCOOH ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HCl ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HC5A ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HBr ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_HAC ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_H2O2 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_GLYX ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_GLYC ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ETP ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ETHP ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ETHN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ETHLN ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_EOH ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_DST4 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_DST3 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_DST2 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_DST1 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_CH2O ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_BrSALC ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_BrSALA ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_BrCl ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_Br2 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_BCPO ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_BCPI ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ATOOH ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ALD2 ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_AERI ', 'GCHPchem', +# 'BudgetWetDepLevs1to35_ACTA ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_TSOG1 ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_TSOG0 ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_TSOA3 ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_TSOA2 ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_TSOA1 ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_TSOA0 ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_ASOG3 ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_ASOG2 ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_ASOG1 ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_ASOAN ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_ASOA3 ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_ASOA2 ', 'GCHPchem', +# #'BudgetWetDepLevs1to35_ASOA1 ', 'GCHPchem', # 'BudgetWetDepTrop_SOAS ', 'GCHPchem', # 'BudgetWetDepTrop_SOAIE ', 'GCHPchem', # 'BudgetWetDepTrop_SOAGX ', 'GCHPchem', @@ -1390,6 +1535,229 @@ COLLECTIONS: @#'DefaultCollection', # #'BudgetChemistryPBL_ASOA3 ', 'GCHPchem', # #'BudgetChemistryPBL_ASOA2 ', 'GCHPchem', # #'BudgetChemistryPBL_ASOA1 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_XYLE ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_TOLU ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SOAS ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SOAP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SOAIE ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SOAGX ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SO4s ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SO4 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SO2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SALCCL ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SALCAL ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SALC ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SALACL ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SALAAL ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_SALA ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_RP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_RIPD ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_RIPC ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_RIPB ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_RIPA ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_RCHO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_RB3P ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_RA3P ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_R4P ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_R4N2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_PYAC ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_PRPN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_PRPE ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_PROPNN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_PPN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_PP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_PIP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_pFe ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_PAN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_OIO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_OCS ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_OCPO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_OCPI ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_OClO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_O3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_NPRNO3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_NO3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_NO2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_NO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_NITs ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_NIT ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_NH4 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_NH3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_N2O5 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_N2O ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MVKPC ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MVKN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MVKHP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MVKHCB ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MVKHC ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MVKDH ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MVK ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MTPO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MTPA ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MSA ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MPN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MPAN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MONITU ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MONITS ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MONITA ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MOH ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MGLY ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MENO3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MEK ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MCRHP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MCRHNB ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MCRHN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MCRENOL ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MCRDH ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MAP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MACR1OOH ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_MACR ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_LVOCOA ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_LVOC ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_LIMO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ITHN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ITCN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ISOP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ISALC ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ISALA ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IPRNO3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IONO2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IONO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IONITA ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_INPD ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_INPB ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_INO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_INDIOL ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IHN4 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IHN3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IHN2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IHN1 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IEPOXD ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IEPOXB ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IEPOXA ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IDN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IDHPE ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IDHDP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IDCHP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IDC ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ICPDH ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ICN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ICl ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ICHE ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_IBr ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_I2O4 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_I2O3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_I2O2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_I2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_I ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HPETHNL ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HPALD4 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HPALD3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HPALD2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HPALD1 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HONIT ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HOI ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HOCl ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HOBr ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HNO4 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HNO3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HNO2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HMML ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HMHP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HMS ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HI ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HCOOH ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HCl ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HCFC22 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HCFC142b ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HCFC141b ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HCFC123 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HC5A ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HBr ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_HAC ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_H2O2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_H2O ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_H2402 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_H1301 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_H1211 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_GLYX ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_GLYC ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ETP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ETNO3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ETHP ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ETHN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ETHLN ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_EOH ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_DST4 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_DST3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_DST2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_DST1 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_DMS ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ClOO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ClO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ClNO3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ClNO2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_Cl2O2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_Cl2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_Cl ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CHCl3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CHBr3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CH4 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CH3I ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CH3Cl ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CH3CCl3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CH3Br ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CH2O ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CH2ICl ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CH2IBr ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CH2I2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CH2Cl2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CH2Br2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CFC12 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CFC115 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CFC114 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CFC113 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CFC11 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_CCl4 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_C3H8 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_C2H6 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_C2H4 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_C2H2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_BrSALC ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_BrSALA ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_BrO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_BrNO3 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_BrNO2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_BrCl ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_Br2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_Br ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_BENZ ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_BCPO ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_BCPI ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ATOOH ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ALK4 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ALD2 ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_AERI ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ACTA ', 'GCHPchem', +# 'BudgetChemistryLevs1to35_ACET ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_TSOG3 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_TSOG2 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_TSOG1 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_TSOG0 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_TSOA3 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_TSOA2 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_TSOA1 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_TSOA0 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_ASOG3 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_ASOG2 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_ASOG1 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_ASOAN ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_ASOA3 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_ASOA2 ', 'GCHPchem', +# #'BudgetChemistryLevs1to35_ASOA1 ', 'GCHPchem', # 'BudgetChemistryTrop_XYLE ', 'GCHPchem', # 'BudgetChemistryTrop_TOLU ', 'GCHPchem', # 'BudgetChemistryTrop_SOAS ', 'GCHPchem', @@ -2057,6 +2425,229 @@ COLLECTIONS: @#'DefaultCollection', # #'BudgetConvectionPBL_ASOA3 ', 'GCHPchem', # #'BudgetConvectionPBL_ASOA2 ', 'GCHPchem', # #'BudgetConvectionPBL_ASOA1 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_XYLE ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_TOLU ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SOAS ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SOAP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SOAIE ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SOAGX ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SO4s ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SO4 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SO2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SALCCl ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SALCAL ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SALC ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SALACl ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SALAAL ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_SALA ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_RP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_RIPD ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_RIPC ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_RIPB ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_RIPA ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_RCHO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_RB3P ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_RA3P ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_R4P ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_R4N2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_PYAC ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_PRPN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_PRPE ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_PROPNN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_PPN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_PP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_PIP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_pFe ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_PAN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_OIO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_OCS ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_OCPO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_OCPI ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_OClO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_O3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_NPRNO3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_NO3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_NO2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_NO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_NITs ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_NIT ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_NH4 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_NH3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_N2O5 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_N2O ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MVKPC ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MVKN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MVKHP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MVKHCB ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MVKHC ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MVKDH ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MVK ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MTPO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MTPA ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MSA ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MPN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MPAN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MONITU ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MONITS ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MONITA ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MOH ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MGLY ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MENO3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MEK ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MCRHP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MCRHNB ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MCRHN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MCRENOL ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MCRDH ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MAP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MACR1OOH ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_MACR ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_LVOCOA ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_LVOC ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_LIMO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ITHN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ITCN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ISOP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ISALC ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ISALA ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IPRNO3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IONO2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IONO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IONITA ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_INPD ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_INPB ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_INO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_INDIOL ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IHN4 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IHN3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IHN2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IHN1 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IEPOXD ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IEPOXB ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IEPOXA ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IDN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IDHPE ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IDHDP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IDCHP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IDC ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ICPDH ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ICN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ICl ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ICHE ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_IBr ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_I2O4 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_I2O3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_I2O2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_I2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_I ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HPETHNL ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HPALD4 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HPALD3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HPALD2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HPALD1 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HONIT ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HOI ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HOCl ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HOBr ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HNO4 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HNO3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HNO2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HMS ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HMML ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HMHP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HI ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HCOOH ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HCl ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HCFC22 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HCFC142b ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HCFC141b ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HCFC123 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HC5A ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HBr ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_HAC ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_H2O2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_H2O ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_H2402 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_H1301 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_H1211 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_GLYX ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_GLYC ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ETP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ETNO3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ETHP ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ETHN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ETHLN ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_EOH ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_DST4 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_DST3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_DST2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_DST1 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_DMS ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ClOO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ClO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ClNO3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ClNO2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_Cl2O2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_Cl2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_Cl ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CHCl3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CHBr3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CH4 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CH3I ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CH3Cl ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CH3CCl3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CH3Br ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CH2O ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CH2ICl ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CH2IBr ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CH2I2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CH2Cl2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CH2Br2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CFC12 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CFC115 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CFC114 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CFC113 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CFC11 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_CCl4 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_C3H8 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_C2H6 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_C2H4 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_C2H2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_BrSALC ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_BrSALA ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_BrO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_BrNO3 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_BrNO2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_BrCl ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_Br2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_Br ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_BENZ ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_BCPO ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_BCPI ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ATOOH ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ALK4 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ALD2 ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_AERI ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ACTA ', 'GCHPchem', +# 'BudgetConvectionLevs1to35_ACET ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_TSOG3 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_TSOG2 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_TSOG1 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_TSOG0 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_TSOA3 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_TSOA2 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_TSOA1 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_TSOA0 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_ASOG3 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_ASOG2 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_ASOG1 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_ASOAN ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_ASOA3 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_ASOA2 ', 'GCHPchem', +# #'BudgetConvectionLevs1to35_ASOA1 ', 'GCHPchem', # 'BudgetConvectionTrop_XYLE ', 'GCHPchem', # 'BudgetConvectionTrop_TOLU ', 'GCHPchem', # 'BudgetConvectionTrop_SOAS ', 'GCHPchem', @@ -2726,6 +3317,229 @@ COLLECTIONS: @#'DefaultCollection', # #'BudgetMixingPBL_ASOA3 ', 'GCHPchem', # #'BudgetMixingPBL_ASOA2 ', 'GCHPchem', # #'BudgetMixingPBL_ASOA1 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_XYLE ', 'GCHPchem', +# 'BudgetMixingLevs1to35_TOLU ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SOAS ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SOAP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SOAIE ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SOAGX ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SO4s ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SO4 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SO2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SALCCL ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SALCAL ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SALC ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SALACL ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SALAAL ', 'GCHPchem', +# 'BudgetMixingLevs1to35_SALA ', 'GCHPchem', +# 'BudgetMixingLevs1to35_RP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_RIPD ', 'GCHPchem', +# 'BudgetMixingLevs1to35_RIPC ', 'GCHPchem', +# 'BudgetMixingLevs1to35_RIPB ', 'GCHPchem', +# 'BudgetMixingLevs1to35_RIPA ', 'GCHPchem', +# 'BudgetMixingLevs1to35_RCHO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_RB3P ', 'GCHPchem', +# 'BudgetMixingLevs1to35_RA3P ', 'GCHPchem', +# 'BudgetMixingLevs1to35_R4P ', 'GCHPchem', +# 'BudgetMixingLevs1to35_R4N2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_PYAC ', 'GCHPchem', +# 'BudgetMixingLevs1to35_PRPN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_PRPE ', 'GCHPchem', +# 'BudgetMixingLevs1to35_PROPNN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_PPN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_PP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_PIP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_pFe ', 'GCHPchem', +# 'BudgetMixingLevs1to35_PAN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_OIO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_OCS ', 'GCHPchem', +# 'BudgetMixingLevs1to35_OCPO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_OCPI ', 'GCHPchem', +# 'BudgetMixingLevs1to35_OClO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_O3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_NPRNO3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_NO3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_NO2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_NO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_NITs ', 'GCHPchem', +# 'BudgetMixingLevs1to35_NIT ', 'GCHPchem', +# 'BudgetMixingLevs1to35_NH4 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_NH3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_N2O5 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_N2O ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MVKPC ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MVKN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MVKHP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MVKHCB ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MVKHC ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MVKDH ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MVK ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MTPO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MTPA ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MSA ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MPN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MPAN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MONITU ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MONITS ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MONITA ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MOH ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MGLY ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MENO3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MEK ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MCRHP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MCRHNB ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MCRHN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MCRENOL ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MCRDH ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MAP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MACR1OOH ', 'GCHPchem', +# 'BudgetMixingLevs1to35_MACR ', 'GCHPchem', +# 'BudgetMixingLevs1to35_LVOCOA ', 'GCHPchem', +# 'BudgetMixingLevs1to35_LVOC ', 'GCHPchem', +# 'BudgetMixingLevs1to35_LIMO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ITHN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ITCN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ISOP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ISALC ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ISALA ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IPRNO3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IONO2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IONO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IONITA ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_INPD ', 'GCHPchem', +# 'BudgetMixingLevs1to35_INPB ', 'GCHPchem', +# 'BudgetMixingLevs1to35_INO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_INDIOL ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IHN4 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IHN3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IHN2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IHN1 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IEPOXD ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IEPOXB ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IEPOXA ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IDN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IDHPE ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IDHDP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IDCHP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IDC ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ICPDH ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ICN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ICl ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ICHE ', 'GCHPchem', +# 'BudgetMixingLevs1to35_IBr ', 'GCHPchem', +# 'BudgetMixingLevs1to35_I2O4 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_I2O3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_I2O2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_I2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_I ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HPETHNL ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HPALD4 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HPALD3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HPALD2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HPALD1 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HONIT ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HOI ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HOCl ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HOBr ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HNO4 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HNO3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HNO2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HMS ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HMML ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HMHP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HI ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HCOOH ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HCl ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HCFC22 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HCFC142b ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HCFC141b ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HCFC123 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HC5A ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HBr ', 'GCHPchem', +# 'BudgetMixingLevs1to35_HAC ', 'GCHPchem', +# 'BudgetMixingLevs1to35_H2O2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_H2O ', 'GCHPchem', +# 'BudgetMixingLevs1to35_H2402 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_H1301 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_H1211 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_GLYX ', 'GCHPchem', +# 'BudgetMixingLevs1to35_GLYC ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ETP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ETNO3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ETHP ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ETHN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ETHLN ', 'GCHPchem', +# 'BudgetMixingLevs1to35_EOH ', 'GCHPchem', +# 'BudgetMixingLevs1to35_DST4 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_DST3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_DST2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_DST1 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_DMS ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ClOO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ClO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ClNO3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ClNO2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_Cl2O2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_Cl2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_Cl ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CHCl3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CHBr3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CH4 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CH3I ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CH3Cl ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CH3CCl3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CH3Br ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CH2O ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CH2ICl ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CH2IBr ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CH2I2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CH2Cl2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CH2Br2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CFC12 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CFC115 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CFC114 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CFC113 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CFC11 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_CCl4 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_C3H8 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_C2H6 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_C2H4 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_C2H2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_BrSALC ', 'GCHPchem', +# 'BudgetMixingLevs1to35_BrSALA ', 'GCHPchem', +# 'BudgetMixingLevs1to35_BrO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_BrNO3 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_BrNO2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_BrCl ', 'GCHPchem', +# 'BudgetMixingLevs1to35_Br2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_Br ', 'GCHPchem', +# 'BudgetMixingLevs1to35_BENZ ', 'GCHPchem', +# 'BudgetMixingLevs1to35_BCPO ', 'GCHPchem', +# 'BudgetMixingLevs1to35_BCPI ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ATOOH ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ALK4 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ALD2 ', 'GCHPchem', +# 'BudgetMixingLevs1to35_AERI ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ACTA ', 'GCHPchem', +# 'BudgetMixingLevs1to35_ACET ', 'GCHPchem', +# #'BudgetMixingLevs1to35_TSOG3 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_TSOG2 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_TSOG1 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_TSOG0 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_TSOA3 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_TSOA2 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_TSOA1 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_TSOA0 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_ASOG3 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_ASOG2 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_ASOG1 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_ASOAN ', 'GCHPchem', +# #'BudgetMixingLevs1to35_ASOA3 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_ASOA2 ', 'GCHPchem', +# #'BudgetMixingLevs1to35_ASOA1 ', 'GCHPchem', # 'BudgetMixingTrop_XYLE ', 'GCHPchem', # 'BudgetMixingTrop_TOLU ', 'GCHPchem', # 'BudgetMixingTrop_SOAS ', 'GCHPchem', @@ -3393,6 +4207,228 @@ COLLECTIONS: @#'DefaultCollection', # #'BudgetEmisDryDepPBL_ASOA3 ', 'GCHPchem', # #'BudgetEmisDryDepPBL_ASOA2 ', 'GCHPchem', # #'BudgetEmisDryDepPBL_ASOA1 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_XYLE ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_TOLU ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SOAS ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SOAP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SOAIE ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SOAGX ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SO4s ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SO4 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SO2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SALCCL ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SALCAL ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SALC ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SALACL ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SALAAL ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_SALA ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_RP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_RIPD ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_RIPC ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_RIPB ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_RIPA ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_RCHO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_RB3P ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_RA3P ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_R4P ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_R4N2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_PYAC ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_PRPN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_PRPE ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_PROPNN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_PPN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_PP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_PIP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_pFe ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_PAN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_OIO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_OCS ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_OCPO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_OCPI ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_OClO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_O3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_NPRNO3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_NO3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_NO2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_NO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_NITs ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_NIT ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_NH4 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_NH3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_N2O5 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_N2O ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MVKPC ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MVKN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MVKHP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MVKHCB ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MVKHC ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MVKDH ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MVK ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MTPO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MTPA ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MSA ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MPN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MPAN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MONITU ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MONITS ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MONITA ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MOH ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MGLY ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MENO3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MEK ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MCRHP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MCRHNB ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MCRHN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MCRENOL ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MCRDH ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MAP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MACR1OOH ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_MACR ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_LVOCOA ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_LVOC ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_LIMO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ITHN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ITCN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ISOP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ISALC ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ISALA ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IPRNO3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IONO2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IONO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IONITA ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_INPD ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_INPB ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_INO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_INDIOL ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IHN4 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IHN3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IHN2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IHN1 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IEPOXD ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IEPOXB ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IEPOXA ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IDN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IDHPE ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IDHDP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IDCHP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IDC ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ICPDH ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ICN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ICl ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ICHE ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_IBr ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_I2O4 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_I2O3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_I2O2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_I2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_I ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HPETHNL ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HPALD4 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HPALD3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HPALD2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HPALD1 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HONIT ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HOI ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HOCl ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HOBr ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HNO4 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HNO3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HNO2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HMML ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HMHP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HI ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HCOOH ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HCl ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HCFC22 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HCFC142b ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HCFC141b ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HCFC123 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HC5A ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HBr ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_HAC ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_H2O2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_H2O ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_H2402 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_H1301 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_H1211 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_GLYX ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_GLYC ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ETP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ETNO3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ETHP ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ETHN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ETHLN ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_EOH ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_DST4 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_DST3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_DST2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_DST1 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_DMS ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ClOO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ClO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ClNO3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ClNO2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_Cl2O2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_Cl2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_Cl ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CHCl3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CHBr3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CH4 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CH3I ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CH3Cl ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CH3CCl3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CH3Br ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CH2O ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CH2ICl ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CH2IBr ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CH2I2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CH2Cl2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CH2Br2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CFC12 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CFC115 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CFC114 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CFC113 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CFC11 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_CCl4 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_C3H8 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_C2H6 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_C2H4 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_C2H2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_BrSALC ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_BrSALA ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_BrO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_BrNO3 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_BrNO2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_BrCl ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_Br2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_Br ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_BENZ ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_BCPO ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_BCPI ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ATOOH ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ALK4 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ALD2 ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_AERI ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ACTA ', 'GCHPchem', +# 'BudgetEmisDryDepLevs1to35_ACET ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_TSOG3 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_TSOG2 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_TSOG1 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_TSOG0 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_TSOA3 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_TSOA2 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_TSOA1 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_TSOA0 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_ASOG3 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_ASOG2 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_ASOG1 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_ASOAN ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_ASOA3 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_ASOA2 ', 'GCHPchem', +# #'BudgetEmisDryDepLevs1to35_ASOA1 ', 'GCHPchem', # 'BudgetEmisDryDepTrop_XYLE ', 'GCHPchem', # 'BudgetEmisDryDepTrop_TOLU ', 'GCHPchem', # 'BudgetEmisDryDepTrop_SOAS ', 'GCHPchem', diff --git a/run/GEOS/TransportTracers/HISTORY.rc b/run/GEOS/TransportTracers/HISTORY.rc index 665d6eb72..260f5b7ea 100644 --- a/run/GEOS/TransportTracers/HISTORY.rc +++ b/run/GEOS/TransportTracers/HISTORY.rc @@ -1414,6 +1414,25 @@ PC360x181-DC.LM: 72 'BudgetChemistryPBL_SF6 ', 'GEOSCHEMCHEM', 'BudgetChemistryPBL_st80_25 ', 'GEOSCHEMCHEM', # + 'BudgetChemistryLevs1to35_Rn222 ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_Pb210 ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_Pb210s ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_Be7 ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_Be7s ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_Be10 ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_Be10s ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_CH3I ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_CO_25 ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_CO_50 ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_e90 ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_e90_n ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_e90_s ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_nh_5 ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_nh_50 ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_PassiveTracer ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_SF6 ', 'GEOSCHEMCHEM', + 'BudgetChemistryLevs1to35_st80_25 ', 'GEOSCHEMCHEM', + # 'BudgetEmisDryDepFull_Rn222 ', 'GEOSCHEMCHEM', 'BudgetEmisDryDepFull_Pb210 ', 'GEOSCHEMCHEM', 'BudgetEmisDryDepFull_Pb210s ', 'GEOSCHEMCHEM', @@ -1470,6 +1489,25 @@ PC360x181-DC.LM: 72 'BudgetEmisDryDepPBL_PassiveTracer ', 'GEOSCHEMCHEM', 'BudgetEmisDryDepPBL_SF6 ', 'GEOSCHEMCHEM', 'BudgetEmisDryDepPBL_st80_25 ', 'GEOSCHEMCHEM', + # + 'BudgetEmisDryDepLevs1to35_Rn222 ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_Pb210 ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_Pb210s ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_Be7 ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_Be7s ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_Be10 ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_Be10s ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_CH3I ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_CO_25 ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_CO_50 ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_e90 ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_e90_n ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_e90_s ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_nh_5 ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_nh_50 ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_PassiveTracer', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_SF6 ', 'GEOSCHEMCHEM', + 'BudgetEmisDryDepLevs1to35_st80_25 ', 'GEOSCHEMCHEM', # 'BudgetMixingFull_Rn222 ', 'GEOSCHEMCHEM', 'BudgetMixingFull_Pb210 ', 'GEOSCHEMCHEM', @@ -1527,6 +1565,25 @@ PC360x181-DC.LM: 72 'BudgetMixingPBL_PassiveTracer ', 'GEOSCHEMCHEM', 'BudgetMixingPBL_SF6 ', 'GEOSCHEMCHEM', 'BudgetMixingPBL_st80_25 ', 'GEOSCHEMCHEM', + # + 'BudgetMixingLevs1to35_Rn222 ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_Pb210 ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_Pb210s ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_Be7 ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_Be7s ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_Be10 ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_Be10s ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_CH3I ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_CO_25 ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_CO_50 ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_e90 ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_e90_n ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_e90_s ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_nh_5 ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_nh_50 ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_PassiveTracer ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_SF6 ', 'GEOSCHEMCHEM', + 'BudgetMixingLevs1to35_st80_25 ', 'GEOSCHEMCHEM', # 'BudgetConvectionFull_Rn222 ', 'GEOSCHEMCHEM', 'BudgetConvectionFull_Pb210 ', 'GEOSCHEMCHEM', @@ -1585,6 +1642,25 @@ PC360x181-DC.LM: 72 'BudgetConvectionPBL_SF6 ', 'GEOSCHEMCHEM', 'BudgetConvectionPBL_st80_25 ', 'GEOSCHEMCHEM', # + 'BudgetConvectionLevs1to35_Rn222 ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_Pb210 ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_Pb210s ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_Be7 ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_Be7s ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_Be10 ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_Be10s ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_CH3I ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_CO_25 ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_CO_50 ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_e90 ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_e90_n ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_e90_s ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_nh_5 ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_nh_50 ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_PassiveTracer', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_SF6 ', 'GEOSCHEMCHEM', + 'BudgetConvectionLevs1to35_st80_25 ', 'GEOSCHEMCHEM', + # 'BudgetWetDepFull_Pb210 ', 'GEOSCHEMCHEM', 'BudgetWetDepFull_Pb210s ', 'GEOSCHEMCHEM', 'BudgetWetDepFull_Be7 ', 'GEOSCHEMCHEM', @@ -1605,6 +1681,13 @@ PC360x181-DC.LM: 72 'BudgetWetDepPBL_Be7s ', 'GEOSCHEMCHEM', 'BudgetWetDepPBL_Be10 ', 'GEOSCHEMCHEM', 'BudgetWetDepPBL_Be10s ', 'GEOSCHEMCHEM', + # + 'BudgetWetDepLevs1to35_Pb210 ', 'GEOSCHEMCHEM', + 'BudgetWetDepLevs1to35_Pb210s ', 'GEOSCHEMCHEM', + 'BudgetWetDepLevs1to35_Be7 ', 'GEOSCHEMCHEM', + 'BudgetWetDepLevs1to35_Be7s ', 'GEOSCHEMCHEM', + 'BudgetWetDepLevs1to35_Be10 ', 'GEOSCHEMCHEM', + 'BudgetWetDepLevs1to35_Be10s ', 'GEOSCHEMCHEM', :: #=============================================================================== CloudConvFlux.template: '%y4%m2%d2_%h2%n2z.nc4', diff --git a/run/WRF/ch4/HISTORY.rc b/run/WRF/ch4/HISTORY.rc index 14a8dc642..de460927b 100644 --- a/run/WRF/ch4/HISTORY.rc +++ b/run/WRF/ch4/HISTORY.rc @@ -93,18 +93,23 @@ COLLECTIONS: 'CH4', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', :: #============================================================================== # %%%%% THE CH4 COLLECTION %%%%% diff --git a/run/WRF/co2/HISTORY.rc b/run/WRF/co2/HISTORY.rc index a52e92900..9d2f30834 100644 --- a/run/WRF/co2/HISTORY.rc +++ b/run/WRF/co2/HISTORY.rc @@ -71,18 +71,23 @@ COLLECTIONS: 'CO2', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetTransportFull_?ADV? ', 'BudgetTransportTrop_?ADV? ', 'BudgetTransportPBL_?ADV? ', + 'BudgetTransportLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', :: #============================================================================== # %%%%% THE CO2 COLLECTION %%%%% diff --git a/run/WRF/fullchem/HISTORY.rc b/run/WRF/fullchem/HISTORY.rc index 402f49440..e1b2f21cf 100644 --- a/run/WRF/fullchem/HISTORY.rc +++ b/run/WRF/fullchem/HISTORY.rc @@ -81,18 +81,23 @@ COLLECTIONS: 'SpeciesConc', Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', 'BudgetEmisDryDepTrop_?ADV? ', 'BudgetEmisDryDepPBL_?ADV? ', + 'BudgetEmisDryDepLevs1to35_?ADV? ', 'BudgetChemistryFull_?ADV? ', 'BudgetChemistryTrop_?ADV? ', 'BudgetChemistryPBL_?ADV? ', + 'BudgetChemistryLevs1to35_?ADV? ', 'BudgetMixingFull_?ADV? ', 'BudgetMixingTrop_?ADV? ', 'BudgetMixingPBL_?ADV? ', + 'BudgetMixingLevs1to35_?ADV? ', 'BudgetConvectionFull_?ADV? ', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', + 'BudgetConvectionLevs1to35_?ADV? ', 'BudgetWetDepFull_?WET? ', 'BudgetWetDepTrop_?WET? ', 'BudgetWetDepPBL_?WET? ', + 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE AerosolMass COLLECTION %%%%% From 4dc1a62981300535ea494dde34b027e740c35b13 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 17 Jan 2024 17:15:04 -0500 Subject: [PATCH 070/331] Convert HISTORY.rc budget fixed level diagnostic strings to integers The top and bottom levels strings are read from the diagnostic names in HISTORY.rc and use to loop over levels in the vertical region when computing budget diagnostics. Signed-off-by: Lizzie Lundgren --- Headers/state_diag_mod.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index 8b65916dc..24427b136 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -3723,8 +3723,8 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & State_Diag%Archive_BudgetConvectionLevs .or. & State_Diag%Archive_BudgetChemistryLevs .or. & State_Diag%Archive_BudgetWetDepLevs ) THEN - State_Diag%BudgetTopLev_int = 1 !READ((i3),BudgetTopLev_str) - State_Diag%BudgetBotLev_int = 32 !READ((i3),BudgetBotLev_str) + READ( BudgetTopLev_str, '(i3)') State_Diag%BudgetTopLev_int + READ( BudgetBotLev_str, '(i3)') State_Diag%BudgetBotLev_int ENDIF !------------------------------------------------------------------------ From 2bfe5685a94d3dd648b91c4b89db8e053b5109ba Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 18 Jan 2024 15:12:59 -0500 Subject: [PATCH 071/331] Fix bug where only convection budget levs diag updated Signed-off-by: Lizzie Lundgren --- GeosCore/chemistry_mod.F90 | 10 +++++----- GeosCore/mixing_mod.F90 | 10 +++++----- GeosCore/pbl_mix_mod.F90 | 10 +++++----- GeosCore/transport_mod.F90 | 10 +++++----- GeosCore/vdiff_mod.F90 | 10 +++++----- GeosCore/wetscav_mod.F90 | 10 +++++----- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index 17cba9a2a..16fe1e00b 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -180,9 +180,9 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetChemistryPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetChemistryPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetChemistryLevs, & diagLevs = NULL(), & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetChemistryLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & RC = RC ) @@ -1117,9 +1117,9 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetChemistryPBL, & diagPBL = State_Diag%BudgetChemistryPBL, & mapDataPBL = State_Diag%Map_BudgetChemistryPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & - diagLevs = State_Diag%BudgetConvectionLevs, & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetChemistryLevs, & + diagLevs = State_Diag%BudgetChemistryLevs, & + mapDataLevs = State_Diag%Map_BudgetChemistryLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Chem, & RC = RC ) diff --git a/GeosCore/mixing_mod.F90 b/GeosCore/mixing_mod.F90 index bbfc0efbb..fdd59d417 100644 --- a/GeosCore/mixing_mod.F90 +++ b/GeosCore/mixing_mod.F90 @@ -336,9 +336,9 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & isPBL = State_Diag%Archive_BudgetEmisDryDepPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetEmisDryDepPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetEmisDryDepLevs, & diagLevs = NULL(), & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetEmisDryDepLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & RC = RC ) @@ -999,9 +999,9 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & isPBL = State_Diag%Archive_BudgetEmisDryDepPBL, & diagPBL = State_Diag%BudgetEmisDryDepPBL, & mapDataPBL = State_Diag%Map_BudgetEmisDryDepPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & - diagLevs = State_Diag%BudgetConvectionLevs, & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetEmisDryDepLevs, & + diagLevs = State_Diag%BudgetEmisDryDepLevs, & + mapDataLevs = State_Diag%Map_BudgetEmisDryDepLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Tend, & RC = RC ) diff --git a/GeosCore/pbl_mix_mod.F90 b/GeosCore/pbl_mix_mod.F90 index 659271d50..97fa2918e 100644 --- a/GeosCore/pbl_mix_mod.F90 +++ b/GeosCore/pbl_mix_mod.F90 @@ -131,9 +131,9 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetMixingPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetMixingPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetMixingLevs, & diagLevs = NULL(), & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetMixingLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & RC = RC ) @@ -233,9 +233,9 @@ SUBROUTINE Do_Full_Pbl_Mixing( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetMixingPBL, & diagPBL = State_Diag%BudgetMixingPBL, & mapDataPBL = State_Diag%Map_BudgetMixingPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & - diagLevs = State_Diag%BudgetConvectionLevs, & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetMixingLevs, & + diagLevs = State_Diag%BudgetMixingLevs, & + mapDataLevs = State_Diag%Map_BudgetMixingLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Dyn, & RC = RC ) diff --git a/GeosCore/transport_mod.F90 b/GeosCore/transport_mod.F90 index e3ca04f9b..fa6d88340 100644 --- a/GeosCore/transport_mod.F90 +++ b/GeosCore/transport_mod.F90 @@ -149,9 +149,9 @@ SUBROUTINE DO_TRANSPORT( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetTransportPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetTransportPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetTransportLevs, & diagLevs = NULL(), & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetTransportLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & RC = RC ) @@ -270,9 +270,9 @@ SUBROUTINE DO_TRANSPORT( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetTransportPBL, & diagPBL = State_Diag%BudgetTransportPBL, & mapDataPBL = State_Diag%Map_BudgetTransportPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & - diagLevs = State_Diag%BudgetConvectionLevs, & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetTransportLevs, & + diagLevs = State_Diag%BudgetTransportLevs, & + mapDataLevs = State_Diag%Map_BudgetTransportLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Dyn, & RC = RC ) diff --git a/GeosCore/vdiff_mod.F90 b/GeosCore/vdiff_mod.F90 index 1548736f8..f2e495b25 100644 --- a/GeosCore/vdiff_mod.F90 +++ b/GeosCore/vdiff_mod.F90 @@ -2285,9 +2285,9 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetMixingPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetMixingPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetMixingLevs, & diagLevs = NULL(), & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetMixingLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & RC = RC ) @@ -2412,9 +2412,9 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetMixingPBL, & diagPBL = State_Diag%BudgetMixingPBL, & mapDataPBL = State_Diag%Map_BudgetMixingPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & - diagLevs = State_Diag%BudgetConvectionLevs, & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetMixingLevs, & + diagLevs = State_Diag%BudgetMixingLevs, & + mapDataLevs = State_Diag%Map_BudgetMixingLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Dyn, & RC = RC ) diff --git a/GeosCore/wetscav_mod.F90 b/GeosCore/wetscav_mod.F90 index bf7c7d196..e42952b1e 100644 --- a/GeosCore/wetscav_mod.F90 +++ b/GeosCore/wetscav_mod.F90 @@ -205,9 +205,9 @@ SUBROUTINE DO_WETDEP( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetWetDepPBL, & diagPBL = NULL(), & mapDataPBL = State_Diag%Map_BudgetWetDepPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetWetDepLevs, & diagLevs = NULL(), & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + mapDataLevs = State_Diag%Map_BudgetWetDepLevs, & colMass = State_Diag%BudgetColumnMass, & before_op = .TRUE., & isWetDep = .TRUE., & @@ -314,9 +314,9 @@ SUBROUTINE DO_WETDEP( Input_Opt, State_Chm, State_Diag, & isPBL = State_Diag%Archive_BudgetWetDepPBL, & diagPBL = State_Diag%BudgetWetDepPBL, & mapDataPBL = State_Diag%Map_BudgetWetDepPBL, & - isLevs = State_Diag%Archive_BudgetConvectionLevs, & - diagLevs = State_Diag%BudgetConvectionLevs, & - mapDataLevs = State_Diag%Map_BudgetConvectionLevs, & + isLevs = State_Diag%Archive_BudgetWetDepLevs, & + diagLevs = State_Diag%BudgetWetDepLevs, & + mapDataLevs = State_Diag%Map_BudgetWetDepLevs, & colMass = State_Diag%BudgetColumnMass, & timeStep = DT_Dyn, & isWetDep = .TRUE., & From 8bb895dde5d6cb47c814dc8fb9ec16469e4b785a Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 18 Jan 2024 15:56:04 -0500 Subject: [PATCH 072/331] Add error handling for budget level diagnostic configuration mistakes Error traps are now set to catch the following problems in HISTORY.rc: - Missing bottom or top level - Mismatch between either bottom or top across all diagnostics (Level range must be the same for all of the budget level range diags) - Bottom level less than or equal to 0 - Bottom level greater than top level - Top level greater than number of model levels --- Headers/diaglist_mod.F90 | 32 ++++++++++++++++++++++++-------- Headers/state_diag_mod.F90 | 13 +++++++++++-- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/Headers/diaglist_mod.F90 b/Headers/diaglist_mod.F90 index a428b66dd..2eaf6c9fa 100644 --- a/Headers/diaglist_mod.F90 +++ b/Headers/diaglist_mod.F90 @@ -203,6 +203,7 @@ SUBROUTINE Init_DiagList ( am_I_Root, historyConfigFile, DiagList, RC ) CHARACTER(LEN=255) :: collname, AttName, AttValue CHARACTER(LEN=255) :: AttComp, FieldName CHARACTER(LEN=2) :: rrtmgOutputs(10) + CHARACTER(LEN=3) :: topLev, botLev CHARACTER(LEN=255) :: names(100) CHARACTER(LEN=QFYAML_NamLen) :: key CHARACTER(LEN=QFYAML_StrLen) :: v_str, a_str(3) @@ -227,6 +228,8 @@ SUBROUTINE Init_DiagList ( am_I_Root, historyConfigFile, DiagList, RC ) EOF = .FALSE. found = .FALSE. NewDiagItem => NULL() + topLev = '' + botLev = '' budgetBotLev_str= '' budgetTopLev_str= '' RadWL = '' @@ -843,16 +846,29 @@ SUBROUTINE Init_DiagList ( am_I_Root, historyConfigFile, DiagList, RC ) strInd(2) = INDEX( TRIM(metadataID), 'LEVS' ) strInd(3) = INDEX( TRIM(metadataID), 'TO' ) strIndMin = MIN( strInd(1), strInd(2), strInd(3) ) - ! Set budget diagnostic level range top and bottom if not already set - ! ewl TODO: only do this once. Beyond that check that consistent. + ! Set budget diagnostic level range top and bottom from entry in HISTORY.rc + ! All budget level diagnostics must have the same range IF ( strIndMin > 0 ) THEN - ! Need to parse the metadataID name to set budget fixed level ranges - budgetBotLev_str = TRIM( metadataID( strInd(2)+4:strInd(3)-1 ) ) - print *, "ewl: budgetBotLev is ", TRIM(budgetBotLev_str) - budgetTopLev_str = TRIM( metadataID( strInd(3)+2:LEN(TRIM(metadataID)) ) ) - print *, "ewl: budgetTopLev is ", TRIM(budgetTopLev_str) + botLev = TRIM( metadataID( strInd(2)+4:strInd(3)-1 ) ) + topLev = TRIM( metadataID( strInd(3)+2:LEN(TRIM(metadataID)) ) ) + IF ( budgetBotLev_str == '' .AND. budgetTopLev_str == '' ) THEN + budgetBotLev_str = botLev + budgetTopLev_str = topLev + ELSE IF ( ( budgetBotLev_str == '' ) .OR. & + ( budgetTopLev_str == '' ) ) THEN + ErrMsg = 'Missing level in budget diagnostic name: ' // TRIM(name) + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ELSE IF ( ( budgetBotLev_str /= botLev ) .OR. & + ( budgetTopLev_str /= topLev ) ) THEN + ErrMsg = 'Budget diagnostic level ranges do not match: ' // & + TRIM(budgetBotLev_str) // ' and ' // TRIM(budgetTopLev_str) & + // ' versus ' // TRIM(botLev) // ' and ' // TRIM(TopLev) // & + '. Check budget diagnostic entries in HISTORY.rc' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF ENDIF - !==================================================================== ! Create a new DiagItem object !==================================================================== diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index 24427b136..cf85ddf7e 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -3723,8 +3723,17 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & State_Diag%Archive_BudgetConvectionLevs .or. & State_Diag%Archive_BudgetChemistryLevs .or. & State_Diag%Archive_BudgetWetDepLevs ) THEN - READ( BudgetTopLev_str, '(i3)') State_Diag%BudgetTopLev_int - READ( BudgetBotLev_str, '(i3)') State_Diag%BudgetBotLev_int + READ( BudgetTopLev_str, '(i3)') State_Diag%BudgetTopLev_int + READ( BudgetBotLev_str, '(i3)') State_Diag%BudgetBotLev_int + IF ( ( State_Diag%BudgetBotLev_int <= 0 ) .OR. & + ( State_Diag%BudgetBotLev_int > State_Diag%BudgetTopLev_int ) .OR. & + ( State_Diag%BudgetTopLev_int > State_Grid%NZ ) ) THEN + errMsg = 'Budget diagnostic level range is not valid: ' // & + TRIM(BudgetBotLev_str) // ' to ' // & + TRIM(BudgetTopLev_str) // '. Check HISTORY.rc.' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF ENDIF !------------------------------------------------------------------------ From ffe676999576b40cdfa98dd0a148220da10a43a3 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 5 Feb 2024 15:00:52 -0500 Subject: [PATCH 073/331] Reorganize the GCHP transport tracer budget entries in HISTORY.rc Signed-off-by: Lizzie Lundgren --- .../HISTORY.rc.TransportTracers | 419 +++++++++--------- 1 file changed, 211 insertions(+), 208 deletions(-) diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers index fa794aeb9..a72db0d26 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers @@ -153,63 +153,6 @@ COLLECTIONS: 'Emissions', 'BudgetChemistryFull_PassiveTracer ', 'GCHPchem', 'BudgetChemistryFull_SF6 ', 'GCHPchem', 'BudgetChemistryFull_st80_25 ', 'GCHPchem', - # - 'BudgetChemistryTrop_Rn222 ', 'GCHPchem', - 'BudgetChemistryTrop_Pb210 ', 'GCHPchem', - 'BudgetChemistryTrop_Pb210s ', 'GCHPchem', - 'BudgetChemistryTrop_Be7 ', 'GCHPchem', - 'BudgetChemistryTrop_Be7s ', 'GCHPchem', - 'BudgetChemistryTrop_Be10 ', 'GCHPchem', - 'BudgetChemistryTrop_Be10s ', 'GCHPchem', - 'BudgetChemistryTrop_CH3I ', 'GCHPchem', - 'BudgetChemistryTrop_CO_25 ', 'GCHPchem', - 'BudgetChemistryTrop_CO_50 ', 'GCHPchem', - 'BudgetChemistryTrop_e90 ', 'GCHPchem', - 'BudgetChemistryTrop_e90_n ', 'GCHPchem', - 'BudgetChemistryTrop_e90_s ', 'GCHPchem', - 'BudgetChemistryTrop_nh_5 ', 'GCHPchem', - 'BudgetChemistryTrop_nh_50 ', 'GCHPchem', - 'BudgetChemistryTrop_PassiveTracer ', 'GCHPchem', - 'BudgetChemistryTrop_SF6 ', 'GCHPchem', - 'BudgetChemistryTrop_st80_25 ', 'GCHPchem', - # - 'BudgetChemistryPBL_Rn222 ', 'GCHPchem', - 'BudgetChemistryPBL_Pb210 ', 'GCHPchem', - 'BudgetChemistryPBL_Pb210s ', 'GCHPchem', - 'BudgetChemistryPBL_Be7 ', 'GCHPchem', - 'BudgetChemistryPBL_Be7s ', 'GCHPchem', - 'BudgetChemistryPBL_Be10 ', 'GCHPchem', - 'BudgetChemistryPBL_Be10s ', 'GCHPchem', - 'BudgetChemistryPBL_CH3I ', 'GCHPchem', - 'BudgetChemistryPBL_CO_25 ', 'GCHPchem', - 'BudgetChemistryPBL_CO_50 ', 'GCHPchem', - 'BudgetChemistryPBL_e90 ', 'GCHPchem', - 'BudgetChemistryPBL_e90_n ', 'GCHPchem', - 'BudgetChemistryPBL_e90_s ', 'GCHPchem', - 'BudgetChemistryPBL_nh_5 ', 'GCHPchem', - 'BudgetChemistryPBL_nh_50 ', 'GCHPchem', - 'BudgetChemistryPBL_PassiveTracer ', 'GCHPchem', - 'BudgetChemistryPBL_SF6 ', 'GCHPchem', - 'BudgetChemistryPBL_st80_25 ', 'GCHPchem', - # - 'BudgetChemistryLevs1to35_Rn222 ', 'GCHPchem', - 'BudgetChemistryLevs1to35_Pb210 ', 'GCHPchem', - 'BudgetChemistryLevs1to35_Pb210s ', 'GCHPchem', - 'BudgetChemistryLevs1to35_Be7 ', 'GCHPchem', - 'BudgetChemistryLevs1to35_Be7s ', 'GCHPchem', - 'BudgetChemistryLevs1to35_Be10 ', 'GCHPchem', - 'BudgetChemistryLevs1to35_Be10s ', 'GCHPchem', - 'BudgetChemistryLevs1to35_CH3I ', 'GCHPchem', - 'BudgetChemistryLevs1to35_CO_25 ', 'GCHPchem', - 'BudgetChemistryLevs1to35_CO_50 ', 'GCHPchem', - 'BudgetChemistryLevs1to35_e90 ', 'GCHPchem', - 'BudgetChemistryLevs1to35_e90_n ', 'GCHPchem', - 'BudgetChemistryLevs1to35_e90_s ', 'GCHPchem', - 'BudgetChemistryLevs1to35_nh_5 ', 'GCHPchem', - 'BudgetChemistryLevs1to35_nh_50 ', 'GCHPchem', - 'BudgetChemistryLevs1to35_PassiveTracer ', 'GCHPchem', - 'BudgetChemistryLevs1to35_SF6 ', 'GCHPchem', - 'BudgetChemistryLevs1to35_st80_25 ', 'GCHPchem', # 'BudgetEmisDryDepFull_Rn222 ', 'GCHPchem', 'BudgetEmisDryDepFull_Pb210 ', 'GCHPchem', @@ -230,43 +173,70 @@ COLLECTIONS: 'Emissions', 'BudgetEmisDryDepFull_SF6 ', 'GCHPchem', 'BudgetEmisDryDepFull_st80_25 ', 'GCHPchem', # - 'BudgetEmisDryDepTrop_Rn222 ', 'GCHPchem', - 'BudgetEmisDryDepTrop_Pb210 ', 'GCHPchem', - 'BudgetEmisDryDepTrop_Pb210s ', 'GCHPchem', - 'BudgetEmisDryDepTrop_Be7 ', 'GCHPchem', - 'BudgetEmisDryDepTrop_Be7s ', 'GCHPchem', - 'BudgetEmisDryDepTrop_Be10 ', 'GCHPchem', - 'BudgetEmisDryDepTrop_Be10s ', 'GCHPchem', - 'BudgetEmisDryDepTrop_CH3I ', 'GCHPchem', - 'BudgetEmisDryDepTrop_CO_25 ', 'GCHPchem', - 'BudgetEmisDryDepTrop_CO_50 ', 'GCHPchem', - 'BudgetEmisDryDepTrop_e90 ', 'GCHPchem', - 'BudgetEmisDryDepTrop_e90_n ', 'GCHPchem', - 'BudgetEmisDryDepTrop_e90_s ', 'GCHPchem', - 'BudgetEmisDryDepTrop_nh_5 ', 'GCHPchem', - 'BudgetEmisDryDepTrop_nh_50 ', 'GCHPchem', - 'BudgetEmisDryDepTrop_PassiveTracer ', 'GCHPchem', - 'BudgetEmisDryDepTrop_SF6 ', 'GCHPchem', - 'BudgetEmisDryDepTrop_st80_25 ', 'GCHPchem', + 'BudgetMixingFull_Rn222 ', 'GCHPchem', + 'BudgetMixingFull_Pb210 ', 'GCHPchem', + 'BudgetMixingFull_Pb210s ', 'GCHPchem', + 'BudgetMixingFull_Be7 ', 'GCHPchem', + 'BudgetMixingFull_Be7s ', 'GCHPchem', + 'BudgetMixingFull_Be10 ', 'GCHPchem', + 'BudgetMixingFull_Be10s ', 'GCHPchem', + 'BudgetMixingFull_CH3I ', 'GCHPchem', + 'BudgetMixingFull_CO_25 ', 'GCHPchem', + 'BudgetMixingFull_CO_50 ', 'GCHPchem', + 'BudgetMixingFull_e90 ', 'GCHPchem', + 'BudgetMixingFull_e90_n ', 'GCHPchem', + 'BudgetMixingFull_e90_s ', 'GCHPchem', + 'BudgetMixingFull_nh_5 ', 'GCHPchem', + 'BudgetMixingFull_nh_50 ', 'GCHPchem', + 'BudgetMixingFull_PassiveTracer ', 'GCHPchem', + 'BudgetMixingFull_SF6 ', 'GCHPchem', + 'BudgetMixingFull_st80_25 ', 'GCHPchem', # - 'BudgetEmisDryDepPBL_Rn222 ', 'GCHPchem', - 'BudgetEmisDryDepPBL_Pb210 ', 'GCHPchem', - 'BudgetEmisDryDepPBL_Pb210s ', 'GCHPchem', - 'BudgetEmisDryDepPBL_Be7 ', 'GCHPchem', - 'BudgetEmisDryDepPBL_Be7s ', 'GCHPchem', - 'BudgetEmisDryDepPBL_Be10 ', 'GCHPchem', - 'BudgetEmisDryDepPBL_Be10s ', 'GCHPchem', - 'BudgetEmisDryDepPBL_CH3I ', 'GCHPchem', - 'BudgetEmisDryDepPBL_CO_25 ', 'GCHPchem', - 'BudgetEmisDryDepPBL_CO_50 ', 'GCHPchem', - 'BudgetEmisDryDepPBL_e90 ', 'GCHPchem', - 'BudgetEmisDryDepPBL_e90_n ', 'GCHPchem', - 'BudgetEmisDryDepPBL_e90_s ', 'GCHPchem', - 'BudgetEmisDryDepPBL_nh_5 ', 'GCHPchem', - 'BudgetEmisDryDepPBL_nh_50 ', 'GCHPchem', - 'BudgetEmisDryDepPBL_PassiveTracer ', 'GCHPchem', - 'BudgetEmisDryDepPBL_SF6 ', 'GCHPchem', - 'BudgetEmisDryDepPBL_st80_25 ', 'GCHPchem', + 'BudgetConvectionFull_Rn222 ', 'GCHPchem', + 'BudgetConvectionFull_Pb210 ', 'GCHPchem', + 'BudgetConvectionFull_Pb210s ', 'GCHPchem', + 'BudgetConvectionFull_Be7 ', 'GCHPchem', + 'BudgetConvectionFull_Be7s ', 'GCHPchem', + 'BudgetConvectionFull_Be10 ', 'GCHPchem', + 'BudgetConvectionFull_Be10s ', 'GCHPchem', + 'BudgetConvectionFull_CH3I ', 'GCHPchem', + 'BudgetConvectionFull_CO_25 ', 'GCHPchem', + 'BudgetConvectionFull_CO_50 ', 'GCHPchem', + 'BudgetConvectionFull_e90 ', 'GCHPchem', + 'BudgetConvectionFull_e90_n ', 'GCHPchem', + 'BudgetConvectionFull_e90_s ', 'GCHPchem', + 'BudgetConvectionFull_nh_5 ', 'GCHPchem', + 'BudgetConvectionFull_nh_50 ', 'GCHPchem', + 'BudgetConvectionFull_PassiveTracer ', 'GCHPchem', + 'BudgetConvectionFull_SF6 ', 'GCHPchem', + 'BudgetConvectionFull_st80_25 ', 'GCHPchem', + # + 'BudgetWetDepFull_Pb210 ', 'GCHPchem', + 'BudgetWetDepFull_Pb210s ', 'GCHPchem', + 'BudgetWetDepFull_Be7 ', 'GCHPchem', + 'BudgetWetDepFull_Be7s ', 'GCHPchem', + 'BudgetWetDepFull_Be10 ', 'GCHPchem', + 'BudgetWetDepFull_Be10s ', 'GCHPchem', + # + # + 'BudgetChemistryLevs1to35_Rn222 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Pb210 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Pb210s ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Be7 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Be7s ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Be10 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_Be10s ', 'GCHPchem', + 'BudgetChemistryLevs1to35_CH3I ', 'GCHPchem', + 'BudgetChemistryLevs1to35_CO_25 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_CO_50 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_e90 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_e90_n ', 'GCHPchem', + 'BudgetChemistryLevs1to35_e90_s ', 'GCHPchem', + 'BudgetChemistryLevs1to35_nh_5 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_nh_50 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_PassiveTracer ', 'GCHPchem', + 'BudgetChemistryLevs1to35_SF6 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_st80_25 ', 'GCHPchem', # 'BudgetEmisDryDepLevs1to35_Rn222 ', 'GCHPchem', 'BudgetEmisDryDepLevs1to35_Pb210 ', 'GCHPchem', @@ -287,63 +257,6 @@ COLLECTIONS: 'Emissions', 'BudgetEmisDryDepLevs1to35_SF6 ', 'GCHPchem', 'BudgetEmisDryDepLevs1to35_st80_25 ', 'GCHPchem', # - 'BudgetMixingFull_Rn222 ', 'GCHPchem', - 'BudgetMixingFull_Pb210 ', 'GCHPchem', - 'BudgetMixingFull_Pb210s ', 'GCHPchem', - 'BudgetMixingFull_Be7 ', 'GCHPchem', - 'BudgetMixingFull_Be7s ', 'GCHPchem', - 'BudgetMixingFull_Be10 ', 'GCHPchem', - 'BudgetMixingFull_Be10s ', 'GCHPchem', - 'BudgetMixingFull_CH3I ', 'GCHPchem', - 'BudgetMixingFull_CO_25 ', 'GCHPchem', - 'BudgetMixingFull_CO_50 ', 'GCHPchem', - 'BudgetMixingFull_e90 ', 'GCHPchem', - 'BudgetMixingFull_e90_n ', 'GCHPchem', - 'BudgetMixingFull_e90_s ', 'GCHPchem', - 'BudgetMixingFull_nh_5 ', 'GCHPchem', - 'BudgetMixingFull_nh_50 ', 'GCHPchem', - 'BudgetMixingFull_PassiveTracer ', 'GCHPchem', - 'BudgetMixingFull_SF6 ', 'GCHPchem', - 'BudgetMixingFull_st80_25 ', 'GCHPchem', - # - 'BudgetMixingTrop_Rn222 ', 'GCHPchem', - 'BudgetMixingTrop_Pb210 ', 'GCHPchem', - 'BudgetMixingTrop_Pb210s ', 'GCHPchem', - 'BudgetMixingTrop_Be7 ', 'GCHPchem', - 'BudgetMixingTrop_Be7s ', 'GCHPchem', - 'BudgetMixingTrop_Be10 ', 'GCHPchem', - 'BudgetMixingTrop_Be10s ', 'GCHPchem', - 'BudgetMixingTrop_CH3I ', 'GCHPchem', - 'BudgetMixingTrop_CO_25 ', 'GCHPchem', - 'BudgetMixingTrop_CO_50 ', 'GCHPchem', - 'BudgetMixingTrop_e90 ', 'GCHPchem', - 'BudgetMixingTrop_e90_n ', 'GCHPchem', - 'BudgetMixingTrop_e90_s ', 'GCHPchem', - 'BudgetMixingTrop_nh_5 ', 'GCHPchem', - 'BudgetMixingTrop_nh_50 ', 'GCHPchem', - 'BudgetMixingTrop_PassiveTracer ', 'GCHPchem', - 'BudgetMixingTrop_SF6 ', 'GCHPchem', - 'BudgetMixingTrop_st80_25 ', 'GCHPchem', - # - 'BudgetMixingPBL_Rn222 ', 'GCHPchem', - 'BudgetMixingPBL_Pb210 ', 'GCHPchem', - 'BudgetMixingPBL_Pb210s ', 'GCHPchem', - 'BudgetMixingPBL_Be7 ', 'GCHPchem', - 'BudgetMixingPBL_Be7s ', 'GCHPchem', - 'BudgetMixingPBL_Be10 ', 'GCHPchem', - 'BudgetMixingPBL_Be10s ', 'GCHPchem', - 'BudgetMixingPBL_CH3I ', 'GCHPchem', - 'BudgetMixingPBL_CO_25 ', 'GCHPchem', - 'BudgetMixingPBL_CO_50 ', 'GCHPchem', - 'BudgetMixingPBL_e90 ', 'GCHPchem', - 'BudgetMixingPBL_e90_n ', 'GCHPchem', - 'BudgetMixingPBL_e90_s ', 'GCHPchem', - 'BudgetMixingPBL_nh_5 ', 'GCHPchem', - 'BudgetMixingPBL_nh_50 ', 'GCHPchem', - 'BudgetMixingPBL_PassiveTracer ', 'GCHPchem', - 'BudgetMixingPBL_SF6 ', 'GCHPchem', - 'BudgetMixingPBL_st80_25 ', 'GCHPchem', - # 'BudgetMixingLevs1to35_Rn222 ', 'GCHPchem', 'BudgetMixingLevs1to35_Pb210 ', 'GCHPchem', 'BudgetMixingLevs1to35_Pb210s ', 'GCHPchem', @@ -363,24 +276,89 @@ COLLECTIONS: 'Emissions', 'BudgetMixingLevs1to35_SF6 ', 'GCHPchem', 'BudgetMixingLevs1to35_st80_25 ', 'GCHPchem', # - 'BudgetConvectionFull_Rn222 ', 'GCHPchem', - 'BudgetConvectionFull_Pb210 ', 'GCHPchem', - 'BudgetConvectionFull_Pb210s ', 'GCHPchem', - 'BudgetConvectionFull_Be7 ', 'GCHPchem', - 'BudgetConvectionFull_Be7s ', 'GCHPchem', - 'BudgetConvectionFull_Be10 ', 'GCHPchem', - 'BudgetConvectionFull_Be10s ', 'GCHPchem', - 'BudgetConvectionFull_CH3I ', 'GCHPchem', - 'BudgetConvectionFull_CO_25 ', 'GCHPchem', - 'BudgetConvectionFull_CO_50 ', 'GCHPchem', - 'BudgetConvectionFull_e90 ', 'GCHPchem', - 'BudgetConvectionFull_e90_n ', 'GCHPchem', - 'BudgetConvectionFull_e90_s ', 'GCHPchem', - 'BudgetConvectionFull_nh_5 ', 'GCHPchem', - 'BudgetConvectionFull_nh_50 ', 'GCHPchem', - 'BudgetConvectionFull_PassiveTracer ', 'GCHPchem', - 'BudgetConvectionFull_SF6 ', 'GCHPchem', - 'BudgetConvectionFull_st80_25 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Rn222 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Pb210 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Pb210s ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Be7 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Be7s ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Be10 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_Be10s ', 'GCHPchem', + 'BudgetConvectionLevs1to35_CH3I ', 'GCHPchem', + 'BudgetConvectionLevs1to35_CO_25 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_CO_50 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_e90 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_e90_n ', 'GCHPchem', + 'BudgetConvectionLevs1to35_e90_s ', 'GCHPchem', + 'BudgetConvectionLevs1to35_nh_5 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_nh_50 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_PassiveTracer', 'GCHPchem', + 'BudgetConvectionLevs1to35_SF6 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_st80_25 ', 'GCHPchem', + # + 'BudgetWetDepLevs1to35_Pb210 ', 'GCHPchem', + 'BudgetWetDepLevs1to35_Pb210s ', 'GCHPchem', + 'BudgetWetDepLevs1to35_Be7 ', 'GCHPchem', + 'BudgetWetDepLevs1to35_Be7s ', 'GCHPchem', + 'BudgetWetDepLevs1to35_Be10 ', 'GCHPchem', + 'BudgetWetDepLevs1to35_Be10s ', 'GCHPchem', + # + # + 'BudgetChemistryTrop_Rn222 ', 'GCHPchem', + 'BudgetChemistryTrop_Pb210 ', 'GCHPchem', + 'BudgetChemistryTrop_Pb210s ', 'GCHPchem', + 'BudgetChemistryTrop_Be7 ', 'GCHPchem', + 'BudgetChemistryTrop_Be7s ', 'GCHPchem', + 'BudgetChemistryTrop_Be10 ', 'GCHPchem', + 'BudgetChemistryTrop_Be10s ', 'GCHPchem', + 'BudgetChemistryTrop_CH3I ', 'GCHPchem', + 'BudgetChemistryTrop_CO_25 ', 'GCHPchem', + 'BudgetChemistryTrop_CO_50 ', 'GCHPchem', + 'BudgetChemistryTrop_e90 ', 'GCHPchem', + 'BudgetChemistryTrop_e90_n ', 'GCHPchem', + 'BudgetChemistryTrop_e90_s ', 'GCHPchem', + 'BudgetChemistryTrop_nh_5 ', 'GCHPchem', + 'BudgetChemistryTrop_nh_50 ', 'GCHPchem', + 'BudgetChemistryTrop_PassiveTracer ', 'GCHPchem', + 'BudgetChemistryTrop_SF6 ', 'GCHPchem', + 'BudgetChemistryTrop_st80_25 ', 'GCHPchem', + # + 'BudgetEmisDryDepTrop_Rn222 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_Pb210 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_Pb210s ', 'GCHPchem', + 'BudgetEmisDryDepTrop_Be7 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_Be7s ', 'GCHPchem', + 'BudgetEmisDryDepTrop_Be10 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_Be10s ', 'GCHPchem', + 'BudgetEmisDryDepTrop_CH3I ', 'GCHPchem', + 'BudgetEmisDryDepTrop_CO_25 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_CO_50 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_e90 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_e90_n ', 'GCHPchem', + 'BudgetEmisDryDepTrop_e90_s ', 'GCHPchem', + 'BudgetEmisDryDepTrop_nh_5 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_nh_50 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_PassiveTracer ', 'GCHPchem', + 'BudgetEmisDryDepTrop_SF6 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_st80_25 ', 'GCHPchem', + # + 'BudgetMixingTrop_Rn222 ', 'GCHPchem', + 'BudgetMixingTrop_Pb210 ', 'GCHPchem', + 'BudgetMixingTrop_Pb210s ', 'GCHPchem', + 'BudgetMixingTrop_Be7 ', 'GCHPchem', + 'BudgetMixingTrop_Be7s ', 'GCHPchem', + 'BudgetMixingTrop_Be10 ', 'GCHPchem', + 'BudgetMixingTrop_Be10s ', 'GCHPchem', + 'BudgetMixingTrop_CH3I ', 'GCHPchem', + 'BudgetMixingTrop_CO_25 ', 'GCHPchem', + 'BudgetMixingTrop_CO_50 ', 'GCHPchem', + 'BudgetMixingTrop_e90 ', 'GCHPchem', + 'BudgetMixingTrop_e90_n ', 'GCHPchem', + 'BudgetMixingTrop_e90_s ', 'GCHPchem', + 'BudgetMixingTrop_nh_5 ', 'GCHPchem', + 'BudgetMixingTrop_nh_50 ', 'GCHPchem', + 'BudgetMixingTrop_PassiveTracer ', 'GCHPchem', + 'BudgetMixingTrop_SF6 ', 'GCHPchem', + 'BudgetMixingTrop_st80_25 ', 'GCHPchem', # 'BudgetConvectionTrop_Rn222 ', 'GCHPchem', 'BudgetConvectionTrop_Pb210 ', 'GCHPchem', @@ -400,6 +378,71 @@ COLLECTIONS: 'Emissions', 'BudgetConvectionTrop_PassiveTracer ', 'GCHPchem', 'BudgetConvectionTrop_SF6 ', 'GCHPchem', 'BudgetConvectionTrop_st80_25 ', 'GCHPchem', + # + 'BudgetWetDepTrop_Pb210 ', 'GCHPchem', + 'BudgetWetDepTrop_Pb210s ', 'GCHPchem', + 'BudgetWetDepTrop_Be7 ', 'GCHPchem', + 'BudgetWetDepTrop_Be7s ', 'GCHPchem', + 'BudgetWetDepTrop_Be10 ', 'GCHPchem', + 'BudgetWetDepTrop_Be10s ', 'GCHPchem', + # + # + 'BudgetChemistryPBL_Rn222 ', 'GCHPchem', + 'BudgetChemistryPBL_Pb210 ', 'GCHPchem', + 'BudgetChemistryPBL_Pb210s ', 'GCHPchem', + 'BudgetChemistryPBL_Be7 ', 'GCHPchem', + 'BudgetChemistryPBL_Be7s ', 'GCHPchem', + 'BudgetChemistryPBL_Be10 ', 'GCHPchem', + 'BudgetChemistryPBL_Be10s ', 'GCHPchem', + 'BudgetChemistryPBL_CH3I ', 'GCHPchem', + 'BudgetChemistryPBL_CO_25 ', 'GCHPchem', + 'BudgetChemistryPBL_CO_50 ', 'GCHPchem', + 'BudgetChemistryPBL_e90 ', 'GCHPchem', + 'BudgetChemistryPBL_e90_n ', 'GCHPchem', + 'BudgetChemistryPBL_e90_s ', 'GCHPchem', + 'BudgetChemistryPBL_nh_5 ', 'GCHPchem', + 'BudgetChemistryPBL_nh_50 ', 'GCHPchem', + 'BudgetChemistryPBL_PassiveTracer ', 'GCHPchem', + 'BudgetChemistryPBL_SF6 ', 'GCHPchem', + 'BudgetChemistryPBL_st80_25 ', 'GCHPchem', + # + 'BudgetEmisDryDepPBL_Rn222 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_Pb210 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_Pb210s ', 'GCHPchem', + 'BudgetEmisDryDepPBL_Be7 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_Be7s ', 'GCHPchem', + 'BudgetEmisDryDepPBL_Be10 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_Be10s ', 'GCHPchem', + 'BudgetEmisDryDepPBL_CH3I ', 'GCHPchem', + 'BudgetEmisDryDepPBL_CO_25 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_CO_50 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_e90 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_e90_n ', 'GCHPchem', + 'BudgetEmisDryDepPBL_e90_s ', 'GCHPchem', + 'BudgetEmisDryDepPBL_nh_5 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_nh_50 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_PassiveTracer ', 'GCHPchem', + 'BudgetEmisDryDepPBL_SF6 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_st80_25 ', 'GCHPchem', + # + 'BudgetMixingPBL_Rn222 ', 'GCHPchem', + 'BudgetMixingPBL_Pb210 ', 'GCHPchem', + 'BudgetMixingPBL_Pb210s ', 'GCHPchem', + 'BudgetMixingPBL_Be7 ', 'GCHPchem', + 'BudgetMixingPBL_Be7s ', 'GCHPchem', + 'BudgetMixingPBL_Be10 ', 'GCHPchem', + 'BudgetMixingPBL_Be10s ', 'GCHPchem', + 'BudgetMixingPBL_CH3I ', 'GCHPchem', + 'BudgetMixingPBL_CO_25 ', 'GCHPchem', + 'BudgetMixingPBL_CO_50 ', 'GCHPchem', + 'BudgetMixingPBL_e90 ', 'GCHPchem', + 'BudgetMixingPBL_e90_n ', 'GCHPchem', + 'BudgetMixingPBL_e90_s ', 'GCHPchem', + 'BudgetMixingPBL_nh_5 ', 'GCHPchem', + 'BudgetMixingPBL_nh_50 ', 'GCHPchem', + 'BudgetMixingPBL_PassiveTracer ', 'GCHPchem', + 'BudgetMixingPBL_SF6 ', 'GCHPchem', + 'BudgetMixingPBL_st80_25 ', 'GCHPchem', # 'BudgetConvectionPBL_Rn222 ', 'GCHPchem', 'BudgetConvectionPBL_Pb210 ', 'GCHPchem', @@ -419,39 +462,6 @@ COLLECTIONS: 'Emissions', 'BudgetConvectionPBL_PassiveTracer ', 'GCHPchem', 'BudgetConvectionPBL_SF6 ', 'GCHPchem', 'BudgetConvectionPBL_st80_25 ', 'GCHPchem', - # - 'BudgetConvectionLevs1to35_Rn222 ', 'GCHPchem', - 'BudgetConvectionLevs1to35_Pb210 ', 'GCHPchem', - 'BudgetConvectionLevs1to35_Pb210s ', 'GCHPchem', - 'BudgetConvectionLevs1to35_Be7 ', 'GCHPchem', - 'BudgetConvectionLevs1to35_Be7s ', 'GCHPchem', - 'BudgetConvectionLevs1to35_Be10 ', 'GCHPchem', - 'BudgetConvectionLevs1to35_Be10s ', 'GCHPchem', - 'BudgetConvectionLevs1to35_CH3I ', 'GCHPchem', - 'BudgetConvectionLevs1to35_CO_25 ', 'GCHPchem', - 'BudgetConvectionLevs1to35_CO_50 ', 'GCHPchem', - 'BudgetConvectionLevs1to35_e90 ', 'GCHPchem', - 'BudgetConvectionLevs1to35_e90_n ', 'GCHPchem', - 'BudgetConvectionLevs1to35_e90_s ', 'GCHPchem', - 'BudgetConvectionLevs1to35_nh_5 ', 'GCHPchem', - 'BudgetConvectionLevs1to35_nh_50 ', 'GCHPchem', - 'BudgetConvectionLevs1to35_PassiveTracer', 'GCHPchem', - 'BudgetConvectionLevs1to35_SF6 ', 'GCHPchem', - 'BudgetConvectionLevs1to35_st80_25 ', 'GCHPchem', - # - 'BudgetWetDepFull_Pb210 ', 'GCHPchem', - 'BudgetWetDepFull_Pb210s ', 'GCHPchem', - 'BudgetWetDepFull_Be7 ', 'GCHPchem', - 'BudgetWetDepFull_Be7s ', 'GCHPchem', - 'BudgetWetDepFull_Be10 ', 'GCHPchem', - 'BudgetWetDepFull_Be10s ', 'GCHPchem', - # - 'BudgetWetDepTrop_Pb210 ', 'GCHPchem', - 'BudgetWetDepTrop_Pb210s ', 'GCHPchem', - 'BudgetWetDepTrop_Be7 ', 'GCHPchem', - 'BudgetWetDepTrop_Be7s ', 'GCHPchem', - 'BudgetWetDepTrop_Be10 ', 'GCHPchem', - 'BudgetWetDepTrop_Be10s ', 'GCHPchem', # 'BudgetWetDepPBL_Pb210 ', 'GCHPchem', 'BudgetWetDepPBL_Pb210s ', 'GCHPchem', @@ -459,13 +469,6 @@ COLLECTIONS: 'Emissions', 'BudgetWetDepPBL_Be7s ', 'GCHPchem', 'BudgetWetDepPBL_Be10 ', 'GCHPchem', 'BudgetWetDepPBL_Be10s ', 'GCHPchem', - # - 'BudgetWetDepLevs1to35_Pb210 ', 'GCHPchem', - 'BudgetWetDepLevs1to35_Pb210s ', 'GCHPchem', - 'BudgetWetDepLevs1to35_Be7 ', 'GCHPchem', - 'BudgetWetDepLevs1to35_Be7s ', 'GCHPchem', - 'BudgetWetDepLevs1to35_Be10 ', 'GCHPchem', - 'BudgetWetDepLevs1to35_Be10s ', 'GCHPchem', :: #=============================================================================== CloudConvFlux.template: '%y4%m2%d2_%h2%n2z.nc4', From 143adb8c0371af0c5084c0fcc364b26eb5fe89de Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 5 Feb 2024 15:02:41 -0500 Subject: [PATCH 074/331] Reduce GCHP fullchem budget diagnostics in HISTORY.rc to ozone only Users can add additional species as needed Signed-off-by: Lizzie Lundgren --- .../HISTORY.rc.templates/HISTORY.rc.fullchem | 4168 +---------------- 1 file changed, 23 insertions(+), 4145 deletions(-) diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem index be99e3408..35b301fe3 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem @@ -728,4151 +728,29 @@ COLLECTIONS: @#'DefaultCollection', Budget.frequency: 010000 Budget.duration: 010000 Budget.mode: 'time-averaged' - Budget.fields: 'BudgetWetDepPBL_SOAS ', 'GCHPchem', - 'BudgetWetDepPBL_SOAIE ', 'GCHPchem', -# 'BudgetWetDepPBL_SOAGX ', 'GCHPchem', -# 'BudgetWetDepPBL_SO4s ', 'GCHPchem', -# 'BudgetWetDepPBL_SO4 ', 'GCHPchem', -# 'BudgetWetDepPBL_SO2 ', 'GCHPchem', -# 'BudgetWetDepPBL_SALCCL ', 'GCHPchem', -# 'BudgetWetDepPBL_SALCAL ', 'GCHPchem', -# 'BudgetWetDepPBL_SALC ', 'GCHPchem', -# 'BudgetWetDepPBL_SALACL ', 'GCHPchem', -# 'BudgetWetDepPBL_SALAAL ', 'GCHPchem', -# 'BudgetWetDepPBL_SALA ', 'GCHPchem', -# 'BudgetWetDepPBL_RP ', 'GCHPchem', -# 'BudgetWetDepPBL_RIPD ', 'GCHPchem', -# 'BudgetWetDepPBL_RIPC ', 'GCHPchem', -# 'BudgetWetDepPBL_RIPB ', 'GCHPchem', -# 'BudgetWetDepPBL_RIPA ', 'GCHPchem', -# 'BudgetWetDepPBL_RB3P ', 'GCHPchem', -# 'BudgetWetDepPBL_RA3P ', 'GCHPchem', -# 'BudgetWetDepPBL_R4P ', 'GCHPchem', -# 'BudgetWetDepPBL_R4N2 ', 'GCHPchem', -# 'BudgetWetDepPBL_PYAC ', 'GCHPchem', -# 'BudgetWetDepPBL_PRPN ', 'GCHPchem', -# 'BudgetWetDepPBL_PRPE ', 'GCHPchem', -# 'BudgetWetDepPBL_PROPNN ', 'GCHPchem', -# 'BudgetWetDepPBL_PPN ', 'GCHPchem', -# 'BudgetWetDepPBL_PP ', 'GCHPchem', -# 'BudgetWetDepPBL_pFe ', 'GCHPchem', -# 'BudgetWetDepPBL_PAN ', 'GCHPchem', -# 'BudgetWetDepPBL_OCPO ', 'GCHPchem', -# 'BudgetWetDepPBL_OCPI ', 'GCHPchem', -# 'BudgetWetDepPBL_NITs ', 'GCHPchem', -# 'BudgetWetDepPBL_NIT ', 'GCHPchem', -# 'BudgetWetDepPBL_NH4 ', 'GCHPchem', -# 'BudgetWetDepPBL_NH3 ', 'GCHPchem', -# 'BudgetWetDepPBL_MVKPC ', 'GCHPchem', -# 'BudgetWetDepPBL_MVKN ', 'GCHPchem', -# 'BudgetWetDepPBL_MVKHP ', 'GCHPchem', -# 'BudgetWetDepPBL_MVKHCB ', 'GCHPchem', -# 'BudgetWetDepPBL_MVKHC ', 'GCHPchem', -# 'BudgetWetDepPBL_MVKDH ', 'GCHPchem', -# 'BudgetWetDepPBL_MVK ', 'GCHPchem', -# 'BudgetWetDepPBL_MTPO ', 'GCHPchem', -# 'BudgetWetDepPBL_MTPA ', 'GCHPchem', -# 'BudgetWetDepPBL_MSA ', 'GCHPchem', -# 'BudgetWetDepPBL_MPN ', 'GCHPchem', -# 'BudgetWetDepPBL_MPAN ', 'GCHPchem', -# 'BudgetWetDepPBL_MP ', 'GCHPchem', -# 'BudgetWetDepPBL_MONITU ', 'GCHPchem', -# 'BudgetWetDepPBL_MONITS ', 'GCHPchem', -# 'BudgetWetDepPBL_MONITA ', 'GCHPchem', -# 'BudgetWetDepPBL_MOH ', 'GCHPchem', -# 'BudgetWetDepPBL_MGLY ', 'GCHPchem', -# 'BudgetWetDepPBL_MEK ', 'GCHPchem', -# 'BudgetWetDepPBL_MCRHP ', 'GCHPchem', -# 'BudgetWetDepPBL_MCRHNB ', 'GCHPchem', -# 'BudgetWetDepPBL_MCRHN ', 'GCHPchem', -# 'BudgetWetDepPBL_MCRENOL ', 'GCHPchem', -# 'BudgetWetDepPBL_MCRDH ', 'GCHPchem', -# 'BudgetWetDepPBL_MAP ', 'GCHPchem', -# 'BudgetWetDepPBL_MACR1OOH ', 'GCHPchem', -# 'BudgetWetDepPBL_LVOCOA ', 'GCHPchem', -# 'BudgetWetDepPBL_LVOC ', 'GCHPchem', -# 'BudgetWetDepPBL_LIMO ', 'GCHPchem', -# 'BudgetWetDepPBL_ITHN ', 'GCHPchem', -# 'BudgetWetDepPBL_ITCN ', 'GCHPchem', -# 'BudgetWetDepPBL_ISALC ', 'GCHPchem', -# 'BudgetWetDepPBL_ISALA ', 'GCHPchem', -# 'BudgetWetDepPBL_IONO2 ', 'GCHPchem', -# 'BudgetWetDepPBL_IONO ', 'GCHPchem', -# 'BudgetWetDepPBL_IONITA ', 'GCHPchem', -# 'BudgetWetDepPBL_INPD ', 'GCHPchem', -# 'BudgetWetDepPBL_INPB ', 'GCHPchem', -# 'BudgetWetDepPBL_INDIOL ', 'GCHPchem', -# 'BudgetWetDepPBL_IHN4 ', 'GCHPchem', -# 'BudgetWetDepPBL_IHN3 ', 'GCHPchem', -# 'BudgetWetDepPBL_IHN2 ', 'GCHPchem', -# 'BudgetWetDepPBL_IHN1 ', 'GCHPchem', -# 'BudgetWetDepPBL_IEPOXD ', 'GCHPchem', -# 'BudgetWetDepPBL_IEPOXB ', 'GCHPchem', -# 'BudgetWetDepPBL_IEPOXA ', 'GCHPchem', -# 'BudgetWetDepPBL_IDN ', 'GCHPchem', -# 'BudgetWetDepPBL_IDHPE ', 'GCHPchem', -# 'BudgetWetDepPBL_IDHDP ', 'GCHPchem', -# 'BudgetWetDepPBL_IDCHP ', 'GCHPchem', -# 'BudgetWetDepPBL_ICPDH ', 'GCHPchem', -# 'BudgetWetDepPBL_ICN ', 'GCHPchem', -# 'BudgetWetDepPBL_ICl ', 'GCHPchem', -# 'BudgetWetDepPBL_ICHE ', 'GCHPchem', -# 'BudgetWetDepPBL_IBr ', 'GCHPchem', -# 'BudgetWetDepPBL_I2O4 ', 'GCHPchem', -# 'BudgetWetDepPBL_I2O3 ', 'GCHPchem', -# 'BudgetWetDepPBL_I2O2 ', 'GCHPchem', -# 'BudgetWetDepPBL_I2 ', 'GCHPchem', -# 'BudgetWetDepPBL_HPETHNL ', 'GCHPchem', -# 'BudgetWetDepPBL_HONIT ', 'GCHPchem', -# 'BudgetWetDepPBL_HOI ', 'GCHPchem', -# 'BudgetWetDepPBL_HOCl ', 'GCHPchem', -# 'BudgetWetDepPBL_HOBr ', 'GCHPchem', -# 'BudgetWetDepPBL_HNO3 ', 'GCHPchem', -# 'BudgetWetDepPBL_HMML ', 'GCHPchem', -# 'BudgetWetDepPBL_HMS ', 'GCHPchem', -# 'BudgetWetDepPBL_HMHP ', 'GCHPchem', -# 'BudgetWetDepPBL_HI ', 'GCHPchem', -# 'BudgetWetDepPBL_HCOOH ', 'GCHPchem', -# 'BudgetWetDepPBL_HCl ', 'GCHPchem', -# 'BudgetWetDepPBL_HC5A ', 'GCHPchem', -# 'BudgetWetDepPBL_HBr ', 'GCHPchem', -# 'BudgetWetDepPBL_HAC ', 'GCHPchem', -# 'BudgetWetDepPBL_H2O2 ', 'GCHPchem', -# 'BudgetWetDepPBL_GLYX ', 'GCHPchem', -# 'BudgetWetDepPBL_GLYC ', 'GCHPchem', -# 'BudgetWetDepPBL_ETP ', 'GCHPchem', -# 'BudgetWetDepPBL_ETHP ', 'GCHPchem', -# 'BudgetWetDepPBL_ETHN ', 'GCHPchem', -# 'BudgetWetDepPBL_ETHLN ', 'GCHPchem', -# 'BudgetWetDepPBL_EOH ', 'GCHPchem', -# 'BudgetWetDepPBL_DST4 ', 'GCHPchem', -# 'BudgetWetDepPBL_DST3 ', 'GCHPchem', -# 'BudgetWetDepPBL_DST2 ', 'GCHPchem', -# 'BudgetWetDepPBL_DST1 ', 'GCHPchem', -# 'BudgetWetDepPBL_CH2O ', 'GCHPchem', -# 'BudgetWetDepPBL_BrSALC ', 'GCHPchem', -# 'BudgetWetDepPBL_BrSALA ', 'GCHPchem', -# 'BudgetWetDepPBL_BrCl ', 'GCHPchem', -# 'BudgetWetDepPBL_Br2 ', 'GCHPchem', -# 'BudgetWetDepPBL_BCPO ', 'GCHPchem', -# 'BudgetWetDepPBL_BCPI ', 'GCHPchem', -# 'BudgetWetDepPBL_ATOOH ', 'GCHPchem', -# 'BudgetWetDepPBL_ALD2 ', 'GCHPchem', -# 'BudgetWetDepPBL_AERI ', 'GCHPchem', -# 'BudgetWetDepPBL_ACTA ', 'GCHPchem', -# #'BudgetWetDepPBL_TSOG1 ', 'GCHPchem', -# #'BudgetWetDepPBL_TSOG0 ', 'GCHPchem', -# #'BudgetWetDepPBL_TSOA3 ', 'GCHPchem', -# #'BudgetWetDepPBL_TSOA2 ', 'GCHPchem', -# #'BudgetWetDepPBL_TSOA1 ', 'GCHPchem', -# #'BudgetWetDepPBL_TSOA0 ', 'GCHPchem', -# #'BudgetWetDepPBL_ASOG3 ', 'GCHPchem', -# #'BudgetWetDepPBL_ASOG2 ', 'GCHPchem', -# #'BudgetWetDepPBL_ASOG1 ', 'GCHPchem', -# #'BudgetWetDepPBL_ASOAN ', 'GCHPchem', -# #'BudgetWetDepPBL_ASOA3 ', 'GCHPchem', -# #'BudgetWetDepPBL_ASOA2 ', 'GCHPchem', -# #'BudgetWetDepPBL_ASOA1 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SOAS ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SOAIE ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SOAGX ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SO4s ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SO4 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SO2 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SALCCL ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SALCAL ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SALC ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SALACL ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SALAAL ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_SALA ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_RP ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_RIPD ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_RIPC ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_RIPB ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_RIPA ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_RB3P ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_RA3P ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_R4P ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_R4N2 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_PYAC ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_PRPN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_PRPE ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_PROPNN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_PPN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_PP ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_pFe ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_PAN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_OCPO ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_OCPI ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_NITs ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_NIT ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_NH4 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_NH3 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MVKPC ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MVKN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MVKHP ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MVKHCB ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MVKHC ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MVKDH ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MVK ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MTPO ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MTPA ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MSA ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MPN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MPAN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MP ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MONITU ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MONITS ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MONITA ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MOH ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MGLY ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MEK ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MCRHP ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MCRHNB ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MCRHN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MCRENOL ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MCRDH ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MAP ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_MACR1OOH ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_LVOCOA ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_LVOC ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_LIMO ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ITHN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ITCN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ISALC ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ISALA ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IONO2 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IONO ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IONITA ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_INPD ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_INPB ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_INDIOL ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IHN4 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IHN3 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IHN2 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IHN1 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IEPOXD ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IEPOXB ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IEPOXA ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IDN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IDHPE ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IDHDP ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IDCHP ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ICPDH ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ICN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ICl ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ICHE ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_IBr ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_I2O4 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_I2O3 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_I2O2 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_I2 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HPETHNL ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HONIT ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HOI ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HOCl ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HOBr ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HNO3 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HMML ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HMS ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HMHP ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HI ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HCOOH ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HCl ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HC5A ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HBr ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_HAC ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_H2O2 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_GLYX ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_GLYC ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ETP ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ETHP ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ETHN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ETHLN ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_EOH ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_DST4 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_DST3 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_DST2 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_DST1 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_CH2O ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_BrSALC ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_BrSALA ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_BrCl ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_Br2 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_BCPO ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_BCPI ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ATOOH ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ALD2 ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_AERI ', 'GCHPchem', -# 'BudgetWetDepLevs1to35_ACTA ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_TSOG1 ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_TSOG0 ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_TSOA3 ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_TSOA2 ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_TSOA1 ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_TSOA0 ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_ASOG3 ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_ASOG2 ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_ASOG1 ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_ASOAN ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_ASOA3 ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_ASOA2 ', 'GCHPchem', -# #'BudgetWetDepLevs1to35_ASOA1 ', 'GCHPchem', -# 'BudgetWetDepTrop_SOAS ', 'GCHPchem', -# 'BudgetWetDepTrop_SOAIE ', 'GCHPchem', -# 'BudgetWetDepTrop_SOAGX ', 'GCHPchem', -# 'BudgetWetDepTrop_SO4s ', 'GCHPchem', -# 'BudgetWetDepTrop_SO4 ', 'GCHPchem', -# 'BudgetWetDepTrop_SO2 ', 'GCHPchem', -# 'BudgetWetDepTrop_SALCCL ', 'GCHPchem', -# 'BudgetWetDepTrop_SALCAL ', 'GCHPchem', -# 'BudgetWetDepTrop_SALC ', 'GCHPchem', -# 'BudgetWetDepTrop_SALACL ', 'GCHPchem', -# 'BudgetWetDepTrop_SALAAL ', 'GCHPchem', -# 'BudgetWetDepTrop_SALA ', 'GCHPchem', -# 'BudgetWetDepTrop_RP ', 'GCHPchem', -# 'BudgetWetDepTrop_RIPD ', 'GCHPchem', -# 'BudgetWetDepTrop_RIPC ', 'GCHPchem', -# 'BudgetWetDepTrop_RIPB ', 'GCHPchem', -# 'BudgetWetDepTrop_RIPA ', 'GCHPchem', -# 'BudgetWetDepTrop_RB3P ', 'GCHPchem', -# 'BudgetWetDepTrop_RA3P ', 'GCHPchem', -# 'BudgetWetDepTrop_R4P ', 'GCHPchem', -# 'BudgetWetDepTrop_R4N2 ', 'GCHPchem', -# 'BudgetWetDepTrop_PYAC ', 'GCHPchem', -# 'BudgetWetDepTrop_PRPN ', 'GCHPchem', -# 'BudgetWetDepTrop_PRPE ', 'GCHPchem', -# 'BudgetWetDepTrop_PROPNN ', 'GCHPchem', -# 'BudgetWetDepTrop_PPN ', 'GCHPchem', -# 'BudgetWetDepTrop_PP ', 'GCHPchem', -# 'BudgetWetDepTrop_pFe ', 'GCHPchem', -# 'BudgetWetDepTrop_PAN ', 'GCHPchem', -# 'BudgetWetDepTrop_OCPO ', 'GCHPchem', -# 'BudgetWetDepTrop_OCPI ', 'GCHPchem', -# 'BudgetWetDepTrop_NITS ', 'GCHPchem', -# 'BudgetWetDepTrop_NIT ', 'GCHPchem', -# 'BudgetWetDepTrop_NH4 ', 'GCHPchem', -# 'BudgetWetDepTrop_NH3 ', 'GCHPchem', -# 'BudgetWetDepTrop_MVKPC ', 'GCHPchem', -# 'BudgetWetDepTrop_MVKN ', 'GCHPchem', -# 'BudgetWetDepTrop_MVKHP ', 'GCHPchem', -# 'BudgetWetDepTrop_MVKHCB ', 'GCHPchem', -# 'BudgetWetDepTrop_MVKHC ', 'GCHPchem', -# 'BudgetWetDepTrop_MVKDH ', 'GCHPchem', -# 'BudgetWetDepTrop_MVK ', 'GCHPchem', -# 'BudgetWetDepTrop_MTPO ', 'GCHPchem', -# 'BudgetWetDepTrop_MTPA ', 'GCHPchem', -# 'BudgetWetDepTrop_MSA ', 'GCHPchem', -# 'BudgetWetDepTrop_MPN ', 'GCHPchem', -# 'BudgetWetDepTrop_MPAN ', 'GCHPchem', -# 'BudgetWetDepTrop_MP ', 'GCHPchem', -# 'BudgetWetDepTrop_MONITU ', 'GCHPchem', -# 'BudgetWetDepTrop_MONITS ', 'GCHPchem', -# 'BudgetWetDepTrop_MONITA ', 'GCHPchem', -# 'BudgetWetDepTrop_MOH ', 'GCHPchem', -# 'BudgetWetDepTrop_MGLY ', 'GCHPchem', -# 'BudgetWetDepTrop_MEK ', 'GCHPchem', -# 'BudgetWetDepTrop_MCRHP ', 'GCHPchem', -# 'BudgetWetDepTrop_MCRHNB ', 'GCHPchem', -# 'BudgetWetDepTrop_MCRHN ', 'GCHPchem', -# 'BudgetWetDepTrop_MCRENOL ', 'GCHPchem', -# 'BudgetWetDepTrop_MCRDH ', 'GCHPchem', -# 'BudgetWetDepTrop_MAP ', 'GCHPchem', -# 'BudgetWetDepTrop_MACR1OOH ', 'GCHPchem', -# 'BudgetWetDepTrop_LVOCOA ', 'GCHPchem', -# 'BudgetWetDepTrop_LVOC ', 'GCHPchem', -# 'BudgetWetDepTrop_LIMO ', 'GCHPchem', -# 'BudgetWetDepTrop_ITHN ', 'GCHPchem', -# 'BudgetWetDepTrop_ITCN ', 'GCHPchem', -# 'BudgetWetDepTrop_ISALC ', 'GCHPchem', -# 'BudgetWetDepTrop_ISALA ', 'GCHPchem', -# 'BudgetWetDepTrop_IONO2 ', 'GCHPchem', -# 'BudgetWetDepTrop_IONO ', 'GCHPchem', -# 'BudgetWetDepTrop_IONITA ', 'GCHPchem', -# 'BudgetWetDepTrop_INPD ', 'GCHPchem', -# 'BudgetWetDepTrop_INPB ', 'GCHPchem', -# 'BudgetWetDepTrop_INDIOL ', 'GCHPchem', -# 'BudgetWetDepTrop_IHN4 ', 'GCHPchem', -# 'BudgetWetDepTrop_IHN3 ', 'GCHPchem', -# 'BudgetWetDepTrop_IHN2 ', 'GCHPchem', -# 'BudgetWetDepTrop_IHN1 ', 'GCHPchem', -# 'BudgetWetDepTrop_IEPOXD ', 'GCHPchem', -# 'BudgetWetDepTrop_IEPOXB ', 'GCHPchem', -# 'BudgetWetDepTrop_IEPOXA ', 'GCHPchem', -# 'BudgetWetDepTrop_IDN ', 'GCHPchem', -# 'BudgetWetDepTrop_IDHPE ', 'GCHPchem', -# 'BudgetWetDepTrop_IDHDP ', 'GCHPchem', -# 'BudgetWetDepTrop_IDCHP ', 'GCHPchem', -# 'BudgetWetDepTrop_ICPDH ', 'GCHPchem', -# 'BudgetWetDepTrop_ICN ', 'GCHPchem', -# 'BudgetWetDepTrop_ICl ', 'GCHPchem', -# 'BudgetWetDepTrop_ICHE ', 'GCHPchem', -# 'BudgetWetDepTrop_IBr ', 'GCHPchem', -# 'BudgetWetDepTrop_I2O4 ', 'GCHPchem', -# 'BudgetWetDepTrop_I2O3 ', 'GCHPchem', -# 'BudgetWetDepTrop_I2O2 ', 'GCHPchem', -# 'BudgetWetDepTrop_I2 ', 'GCHPchem', -# 'BudgetWetDepTrop_HPETHNL ', 'GCHPchem', -# 'BudgetWetDepTrop_HONIT ', 'GCHPchem', -# 'BudgetWetDepTrop_HOI ', 'GCHPchem', -# 'BudgetWetDepTrop_HOCl ', 'GCHPchem', -# 'BudgetWetDepTrop_HOBr ', 'GCHPchem', -# 'BudgetWetDepTrop_HNO3 ', 'GCHPchem', -# 'BudgetWetDepTrop_HMS ', 'GCHPchem', -# 'BudgetWetDepTrop_HMML ', 'GCHPchem', -# 'BudgetWetDepTrop_HMHP ', 'GCHPchem', -# 'BudgetWetDepTrop_HI ', 'GCHPchem', -# 'BudgetWetDepTrop_HCOOH ', 'GCHPchem', -# 'BudgetWetDepTrop_HCl ', 'GCHPchem', -# 'BudgetWetDepTrop_HC5A ', 'GCHPchem', -# 'BudgetWetDepTrop_HBr ', 'GCHPchem', -# 'BudgetWetDepTrop_HAC ', 'GCHPchem', -# 'BudgetWetDepTrop_H2O2 ', 'GCHPchem', -# 'BudgetWetDepTrop_GLYX ', 'GCHPchem', -# 'BudgetWetDepTrop_GLYC ', 'GCHPchem', -# 'BudgetWetDepTrop_ETP ', 'GCHPchem', -# 'BudgetWetDepTrop_ETHP ', 'GCHPchem', -# 'BudgetWetDepTrop_ETHN ', 'GCHPchem', -# 'BudgetWetDepTrop_ETHLN ', 'GCHPchem', -# 'BudgetWetDepTrop_EOH ', 'GCHPchem', -# 'BudgetWetDepTrop_DST4 ', 'GCHPchem', -# 'BudgetWetDepTrop_DST3 ', 'GCHPchem', -# 'BudgetWetDepTrop_DST2 ', 'GCHPchem', -# 'BudgetWetDepTrop_DST1 ', 'GCHPchem', -# 'BudgetWetDepTrop_CH2O ', 'GCHPchem', -# 'BudgetWetDepTrop_BrSALC ', 'GCHPchem', -# 'BudgetWetDepTrop_BrSALA ', 'GCHPchem', -# 'BudgetWetDepTrop_BrCl ', 'GCHPchem', -# 'BudgetWetDepTrop_Br2 ', 'GCHPchem', -# 'BudgetWetDepTrop_BCPO ', 'GCHPchem', -# 'BudgetWetDepTrop_BCPI ', 'GCHPchem', -# 'BudgetWetDepTrop_ATOOH ', 'GCHPchem', -# 'BudgetWetDepTrop_ALD2 ', 'GCHPchem', -# 'BudgetWetDepTrop_AERI ', 'GCHPchem', -# 'BudgetWetDepTrop_ACTA ', 'GCHPchem', -# #'BudgetWetDepTrop_TSOG3 ', 'GCHPchem', -# #'BudgetWetDepTrop_TSOG2 ', 'GCHPchem', -# #'BudgetWetDepTrop_TSOG1 ', 'GCHPchem', -# #'BudgetWetDepTrop_TSOG0 ', 'GCHPchem', -# #'BudgetWetDepTrop_TSOA3 ', 'GCHPchem', -# #'BudgetWetDepTrop_TSOA2 ', 'GCHPchem', -# #'BudgetWetDepTrop_TSOA1 ', 'GCHPchem', -# #'BudgetWetDepTrop_TSOA0 ', 'GCHPchem', -# #'BudgetWetDepTrop_ASOG3 ', 'GCHPchem', -# #'BudgetWetDepTrop_ASOG2 ', 'GCHPchem', -# #'BudgetWetDepTrop_ASOG1 ', 'GCHPchem', -# #'BudgetWetDepTrop_ASOAN ', 'GCHPchem', -# #'BudgetWetDepTrop_ASOA3 ', 'GCHPchem', -# #'BudgetWetDepTrop_ASOA2 ', 'GCHPchem', -# #'BudgetWetDepTrop_ASOA1 ', 'GCHPchem', -# 'BudgetWetDepFull_SOAS ', 'GCHPchem', -# 'BudgetWetDepFull_SOAIE ', 'GCHPchem', -# 'BudgetWetDepFull_SOAGX ', 'GCHPchem', -# 'BudgetWetDepFull_SO4s ', 'GCHPchem', -# 'BudgetWetDepFull_SO4 ', 'GCHPchem', -# 'BudgetWetDepFull_SO2 ', 'GCHPchem', -# 'BudgetWetDepFull_SALCCL ', 'GCHPchem', -# 'BudgetWetDepFull_SALCAL ', 'GCHPchem', -# 'BudgetWetDepFull_SALC ', 'GCHPchem', -# 'BudgetWetDepFull_SALACL ', 'GCHPchem', -# 'BudgetWetDepFull_SALAAL ', 'GCHPchem', -# 'BudgetWetDepFull_SALA ', 'GCHPchem', -# 'BudgetWetDepFull_RP ', 'GCHPchem', -# 'BudgetWetDepFull_RIPD ', 'GCHPchem', -# 'BudgetWetDepFull_RIPC ', 'GCHPchem', -# 'BudgetWetDepFull_RIPB ', 'GCHPchem', -# 'BudgetWetDepFull_RIPA ', 'GCHPchem', -# 'BudgetWetDepFull_RB3P ', 'GCHPchem', -# 'BudgetWetDepFull_RA3P ', 'GCHPchem', -# 'BudgetWetDepFull_R4P ', 'GCHPchem', -# 'BudgetWetDepFull_R4N2 ', 'GCHPchem', -# 'BudgetWetDepFull_PYAC ', 'GCHPchem', -# 'BudgetWetDepFull_PRPN ', 'GCHPchem', -# 'BudgetWetDepFull_PRPE ', 'GCHPchem', -# 'BudgetWetDepFull_PROPNN ', 'GCHPchem', -# 'BudgetWetDepFull_PPN ', 'GCHPchem', -# 'BudgetWetDepFull_PP ', 'GCHPchem', -# 'BudgetWetDepFull_pFe ', 'GCHPchem', -# 'BudgetWetDepFull_PAN ', 'GCHPchem', -# 'BudgetWetDepFull_OCPO ', 'GCHPchem', -# 'BudgetWetDepFull_OCPI ', 'GCHPchem', -# 'BudgetWetDepFull_NITs ', 'GCHPchem', -# 'BudgetWetDepFull_NIT ', 'GCHPchem', -# 'BudgetWetDepFull_NH4 ', 'GCHPchem', -# 'BudgetWetDepFull_NH3 ', 'GCHPchem', -# 'BudgetWetDepFull_MVKPC ', 'GCHPchem', -# 'BudgetWetDepFull_MVKN ', 'GCHPchem', -# 'BudgetWetDepFull_MVKHP ', 'GCHPchem', -# 'BudgetWetDepFull_MVKHCB ', 'GCHPchem', -# 'BudgetWetDepFull_MVKHC ', 'GCHPchem', -# 'BudgetWetDepFull_MVKDH ', 'GCHPchem', -# 'BudgetWetDepFull_MVK ', 'GCHPchem', -# 'BudgetWetDepFull_MTPO ', 'GCHPchem', -# 'BudgetWetDepFull_MTPA ', 'GCHPchem', -# 'BudgetWetDepFull_MSA ', 'GCHPchem', -# 'BudgetWetDepFull_MPN ', 'GCHPchem', -# 'BudgetWetDepFull_MPAN ', 'GCHPchem', -# 'BudgetWetDepFull_MP ', 'GCHPchem', -# 'BudgetWetDepFull_MONITU ', 'GCHPchem', -# 'BudgetWetDepFull_MONITS ', 'GCHPchem', -# 'BudgetWetDepFull_MONITA ', 'GCHPchem', -# 'BudgetWetDepFull_MOH ', 'GCHPchem', -# 'BudgetWetDepFull_MGLY ', 'GCHPchem', -# 'BudgetWetDepFull_MEK ', 'GCHPchem', -# 'BudgetWetDepFull_MCRHP ', 'GCHPchem', -# 'BudgetWetDepFull_MCRHNB ', 'GCHPchem', -# 'BudgetWetDepFull_MCRHN ', 'GCHPchem', -# 'BudgetWetDepFull_MCRENOL ', 'GCHPchem', -# 'BudgetWetDepFull_MCRDH ', 'GCHPchem', -# 'BudgetWetDepFull_MAP ', 'GCHPchem', -# 'BudgetWetDepFull_MACR1OOH ', 'GCHPchem', -# 'BudgetWetDepFull_LVOCOA ', 'GCHPchem', -# 'BudgetWetDepFull_LVOC ', 'GCHPchem', -# 'BudgetWetDepFull_LIMO ', 'GCHPchem', -# 'BudgetWetDepFull_ITHN ', 'GCHPchem', -# 'BudgetWetDepFull_ITCN ', 'GCHPchem', -# 'BudgetWetDepFull_ISALC ', 'GCHPchem', -# 'BudgetWetDepFull_ISALA ', 'GCHPchem', -# 'BudgetWetDepFull_IONO2 ', 'GCHPchem', -# 'BudgetWetDepFull_IONO ', 'GCHPchem', -# 'BudgetWetDepFull_IONITA ', 'GCHPchem', -# 'BudgetWetDepFull_INPD ', 'GCHPchem', -# 'BudgetWetDepFull_INPB ', 'GCHPchem', -# 'BudgetWetDepFull_INDIOL ', 'GCHPchem', -# 'BudgetWetDepFull_IHN4 ', 'GCHPchem', -# 'BudgetWetDepFull_IHN3 ', 'GCHPchem', -# 'BudgetWetDepFull_IHN2 ', 'GCHPchem', -# 'BudgetWetDepFull_IHN1 ', 'GCHPchem', -# 'BudgetWetDepFull_IEPOXD ', 'GCHPchem', -# 'BudgetWetDepFull_IEPOXB ', 'GCHPchem', -# 'BudgetWetDepFull_IEPOXA ', 'GCHPchem', -# 'BudgetWetDepFull_IDN ', 'GCHPchem', -# 'BudgetWetDepFull_IDHPE ', 'GCHPchem', -# 'BudgetWetDepFull_IDHDP ', 'GCHPchem', -# 'BudgetWetDepFull_IDCHP ', 'GCHPchem', -# 'BudgetWetDepFull_ICPDH ', 'GCHPchem', -# 'BudgetWetDepFull_ICN ', 'GCHPchem', -# 'BudgetWetDepFull_ICl ', 'GCHPchem', -# 'BudgetWetDepFull_ICHE ', 'GCHPchem', -# 'BudgetWetDepFull_IBr ', 'GCHPchem', -# 'BudgetWetDepFull_I2O4 ', 'GCHPchem', -# 'BudgetWetDepFull_I2O3 ', 'GCHPchem', -# 'BudgetWetDepFull_I2O2 ', 'GCHPchem', -# 'BudgetWetDepFull_I2 ', 'GCHPchem', -# 'BudgetWetDepFull_HPETHNL ', 'GCHPchem', -# 'BudgetWetDepFull_HONIT ', 'GCHPchem', -# 'BudgetWetDepFull_HOI ', 'GCHPchem', -# 'BudgetWetDepFull_HOCl ', 'GCHPchem', -# 'BudgetWetDepFull_HOBr ', 'GCHPchem', -# 'BudgetWetDepFull_HNO3 ', 'GCHPchem', -# 'BudgetWetDepFull_HMS ', 'GCHPchem', -# 'BudgetWetDepFull_HMML ', 'GCHPchem', -# 'BudgetWetDepFull_HMHP ', 'GCHPchem', -# 'BudgetWetDepFull_HI ', 'GCHPchem', -# 'BudgetWetDepFull_HCOOH ', 'GCHPchem', -# 'BudgetWetDepFull_HCl ', 'GCHPchem', -# 'BudgetWetDepFull_HC5A ', 'GCHPchem', -# 'BudgetWetDepFull_HBr ', 'GCHPchem', -# 'BudgetWetDepFull_HAC ', 'GCHPchem', -# 'BudgetWetDepFull_H2O2 ', 'GCHPchem', -# 'BudgetWetDepFull_GLYX ', 'GCHPchem', -# 'BudgetWetDepFull_GLYC ', 'GCHPchem', -# 'BudgetWetDepFull_ETP ', 'GCHPchem', -# 'BudgetWetDepFull_ETHP ', 'GCHPchem', -# 'BudgetWetDepFull_ETHN ', 'GCHPchem', -# 'BudgetWetDepFull_ETHLN ', 'GCHPchem', -# 'BudgetWetDepFull_EOH ', 'GCHPchem', -# 'BudgetWetDepFull_DST4 ', 'GCHPchem', -# 'BudgetWetDepFull_DST3 ', 'GCHPchem', -# 'BudgetWetDepFull_DST2 ', 'GCHPchem', -# 'BudgetWetDepFull_DST1 ', 'GCHPchem', -# 'BudgetWetDepFull_CH2O ', 'GCHPchem', -# 'BudgetWetDepFull_BrSALC ', 'GCHPchem', -# 'BudgetWetDepFull_BrSALA ', 'GCHPchem', -# 'BudgetWetDepFull_BrCl ', 'GCHPchem', -# 'BudgetWetDepFull_Br2 ', 'GCHPchem', -# 'BudgetWetDepFull_BCPO ', 'GCHPchem', -# 'BudgetWetDepFull_BCPI ', 'GCHPchem', -# 'BudgetWetDepFull_ATOOH ', 'GCHPchem', -# 'BudgetWetDepFull_ALD2 ', 'GCHPchem', -# 'BudgetWetDepFull_AERI ', 'GCHPchem', -# 'BudgetWetDepFull_ACTA ', 'GCHPchem', -# #'BudgetWetDepFull_TSOG3 ', 'GCHPchem', -# #'BudgetWetDepFull_TSOG2 ', 'GCHPchem', -# #'BudgetWetDepFull_TSOG1 ', 'GCHPchem', -# #'BudgetWetDepFull_TSOG0 ', 'GCHPchem', -# #'BudgetWetDepFull_TSOA3 ', 'GCHPchem', -# #'BudgetWetDepFull_TSOA2 ', 'GCHPchem', -# #'BudgetWetDepFull_TSOA1 ', 'GCHPchem', -# #'BudgetWetDepFull_TSOA0 ', 'GCHPchem', -# #'BudgetWetDepFull_ASOG3 ', 'GCHPchem', -# #'BudgetWetDepFull_ASOG2 ', 'GCHPchem', -# #'BudgetWetDepFull_ASOG1 ', 'GCHPchem', -# #'BudgetWetDepFull_ASOAN ', 'GCHPchem', -# #'BudgetWetDepFull_ASOA3 ', 'GCHPchem', -# #'BudgetWetDepFull_ASOA2 ', 'GCHPchem', -# #'BudgetWetDepFull_ASOA1 ', 'GCHPchem', -# 'BudgetChemistryPBL_XYLE ', 'GCHPchem', -# 'BudgetChemistryPBL_TOLU ', 'GCHPchem', -# 'BudgetChemistryPBL_SOAS ', 'GCHPchem', -# 'BudgetChemistryPBL_SOAP ', 'GCHPchem', -# 'BudgetChemistryPBL_SOAIE ', 'GCHPchem', -# 'BudgetChemistryPBL_SOAGX ', 'GCHPchem', -# 'BudgetChemistryPBL_SO4s ', 'GCHPchem', -# 'BudgetChemistryPBL_SO4 ', 'GCHPchem', -# 'BudgetChemistryPBL_SO2 ', 'GCHPchem', -# 'BudgetChemistryPBL_SALCCL ', 'GCHPchem', -# 'BudgetChemistryPBL_SALCAL ', 'GCHPchem', -# 'BudgetChemistryPBL_SALC ', 'GCHPchem', -# 'BudgetChemistryPBL_SALACL ', 'GCHPchem', -# 'BudgetChemistryPBL_SALAAL ', 'GCHPchem', -# 'BudgetChemistryPBL_SALA ', 'GCHPchem', -# 'BudgetChemistryPBL_RP ', 'GCHPchem', -# 'BudgetChemistryPBL_RIPD ', 'GCHPchem', -# 'BudgetChemistryPBL_RIPC ', 'GCHPchem', -# 'BudgetChemistryPBL_RIPB ', 'GCHPchem', -# 'BudgetChemistryPBL_RIPA ', 'GCHPchem', -# 'BudgetChemistryPBL_RCHO ', 'GCHPchem', -# 'BudgetChemistryPBL_RB3P ', 'GCHPchem', -# 'BudgetChemistryPBL_RA3P ', 'GCHPchem', -# 'BudgetChemistryPBL_R4P ', 'GCHPchem', -# 'BudgetChemistryPBL_R4N2 ', 'GCHPchem', -# 'BudgetChemistryPBL_PYAC ', 'GCHPchem', -# 'BudgetChemistryPBL_PRPN ', 'GCHPchem', -# 'BudgetChemistryPBL_PRPE ', 'GCHPchem', -# 'BudgetChemistryPBL_PROPNN ', 'GCHPchem', -# 'BudgetChemistryPBL_PPN ', 'GCHPchem', -# 'BudgetChemistryPBL_PP ', 'GCHPchem', -# 'BudgetChemistryPBL_PIP ', 'GCHPchem', -# 'BudgetChemistryPBL_pFe ', 'GCHPchem', -# 'BudgetChemistryPBL_PAN ', 'GCHPchem', -# 'BudgetChemistryPBL_OIO ', 'GCHPchem', -# 'BudgetChemistryPBL_OCS ', 'GCHPchem', -# 'BudgetChemistryPBL_OCPO ', 'GCHPchem', -# 'BudgetChemistryPBL_OCPI ', 'GCHPchem', -# 'BudgetChemistryPBL_OClO ', 'GCHPchem', -# 'BudgetChemistryPBL_O3 ', 'GCHPchem', -# 'BudgetChemistryPBL_NPRNO3 ', 'GCHPchem', -# 'BudgetChemistryPBL_NO3 ', 'GCHPchem', -# 'BudgetChemistryPBL_NO2 ', 'GCHPchem', -# 'BudgetChemistryPBL_NO ', 'GCHPchem', -# 'BudgetChemistryPBL_NITs ', 'GCHPchem', -# 'BudgetChemistryPBL_NIT ', 'GCHPchem', -# 'BudgetChemistryPBL_NH4 ', 'GCHPchem', -# 'BudgetChemistryPBL_NH3 ', 'GCHPchem', -# 'BudgetChemistryPBL_N2O5 ', 'GCHPchem', -# 'BudgetChemistryPBL_N2O ', 'GCHPchem', -# 'BudgetChemistryPBL_MVKPC ', 'GCHPchem', -# 'BudgetChemistryPBL_MVKN ', 'GCHPchem', -# 'BudgetChemistryPBL_MVKHP ', 'GCHPchem', -# 'BudgetChemistryPBL_MVKHCB ', 'GCHPchem', -# 'BudgetChemistryPBL_MVKHC ', 'GCHPchem', -# 'BudgetChemistryPBL_MVKDH ', 'GCHPchem', -# 'BudgetChemistryPBL_MVK ', 'GCHPchem', -# 'BudgetChemistryPBL_MTPO ', 'GCHPchem', -# 'BudgetChemistryPBL_MTPA ', 'GCHPchem', -# 'BudgetChemistryPBL_MSA ', 'GCHPchem', -# 'BudgetChemistryPBL_MPN ', 'GCHPchem', -# 'BudgetChemistryPBL_MPAN ', 'GCHPchem', -# 'BudgetChemistryPBL_MP ', 'GCHPchem', -# 'BudgetChemistryPBL_MONITU ', 'GCHPchem', -# 'BudgetChemistryPBL_MONITS ', 'GCHPchem', -# 'BudgetChemistryPBL_MONITA ', 'GCHPchem', -# 'BudgetChemistryPBL_MOH ', 'GCHPchem', -# 'BudgetChemistryPBL_MGLY ', 'GCHPchem', -# 'BudgetChemistryPBL_MENO3 ', 'GCHPchem', -# 'BudgetChemistryPBL_MEK ', 'GCHPchem', -# 'BudgetChemistryPBL_MCRHP ', 'GCHPchem', -# 'BudgetChemistryPBL_MCRHNB ', 'GCHPchem', -# 'BudgetChemistryPBL_MCRHN ', 'GCHPchem', -# 'BudgetChemistryPBL_MCRENOL ', 'GCHPchem', -# 'BudgetChemistryPBL_MCRDH ', 'GCHPchem', -# 'BudgetChemistryPBL_MAP ', 'GCHPchem', -# 'BudgetChemistryPBL_MACR1OOH ', 'GCHPchem', -# 'BudgetChemistryPBL_MACR ', 'GCHPchem', -# 'BudgetChemistryPBL_LVOCOA ', 'GCHPchem', -# 'BudgetChemistryPBL_LVOC ', 'GCHPchem', -# 'BudgetChemistryPBL_LIMO ', 'GCHPchem', -# 'BudgetChemistryPBL_ITHN ', 'GCHPchem', -# 'BudgetChemistryPBL_ITCN ', 'GCHPchem', -# 'BudgetChemistryPBL_ISOP ', 'GCHPchem', -# 'BudgetChemistryPBL_ISALC ', 'GCHPchem', -# 'BudgetChemistryPBL_ISALA ', 'GCHPchem', -# 'BudgetChemistryPBL_IPRNO3 ', 'GCHPchem', -# 'BudgetChemistryPBL_IONO2 ', 'GCHPchem', -# 'BudgetChemistryPBL_IONO ', 'GCHPchem', -# 'BudgetChemistryPBL_IONITA ', 'GCHPchem', -# 'BudgetChemistryPBL_IO ', 'GCHPchem', -# 'BudgetChemistryPBL_INPD ', 'GCHPchem', -# 'BudgetChemistryPBL_INPB ', 'GCHPchem', -# 'BudgetChemistryPBL_INO ', 'GCHPchem', -# 'BudgetChemistryPBL_INDIOL ', 'GCHPchem', -# 'BudgetChemistryPBL_IHN4 ', 'GCHPchem', -# 'BudgetChemistryPBL_IHN3 ', 'GCHPchem', -# 'BudgetChemistryPBL_IHN2 ', 'GCHPchem', -# 'BudgetChemistryPBL_IHN1 ', 'GCHPchem', -# 'BudgetChemistryPBL_IEPOXD ', 'GCHPchem', -# 'BudgetChemistryPBL_IEPOXB ', 'GCHPchem', -# 'BudgetChemistryPBL_IEPOXA ', 'GCHPchem', -# 'BudgetChemistryPBL_IDN ', 'GCHPchem', -# 'BudgetChemistryPBL_IDHPE ', 'GCHPchem', -# 'BudgetChemistryPBL_IDHDP ', 'GCHPchem', -# 'BudgetChemistryPBL_IDCHP ', 'GCHPchem', -# 'BudgetChemistryPBL_IDC ', 'GCHPchem', -# 'BudgetChemistryPBL_ICPDH ', 'GCHPchem', -# 'BudgetChemistryPBL_ICN ', 'GCHPchem', -# 'BudgetChemistryPBL_ICl ', 'GCHPchem', -# 'BudgetChemistryPBL_ICHE ', 'GCHPchem', -# 'BudgetChemistryPBL_IBr ', 'GCHPchem', -# 'BudgetChemistryPBL_I2O4 ', 'GCHPchem', -# 'BudgetChemistryPBL_I2O3 ', 'GCHPchem', -# 'BudgetChemistryPBL_I2O2 ', 'GCHPchem', -# 'BudgetChemistryPBL_I2 ', 'GCHPchem', -# 'BudgetChemistryPBL_I ', 'GCHPchem', -# 'BudgetChemistryPBL_HPETHNL ', 'GCHPchem', -# 'BudgetChemistryPBL_HPALD4 ', 'GCHPchem', -# 'BudgetChemistryPBL_HPALD3 ', 'GCHPchem', -# 'BudgetChemistryPBL_HPALD2 ', 'GCHPchem', -# 'BudgetChemistryPBL_HPALD1 ', 'GCHPchem', -# 'BudgetChemistryPBL_HONIT ', 'GCHPchem', -# 'BudgetChemistryPBL_HOI ', 'GCHPchem', -# 'BudgetChemistryPBL_HOCl ', 'GCHPchem', -# 'BudgetChemistryPBL_HOBr ', 'GCHPchem', -# 'BudgetChemistryPBL_HNO4 ', 'GCHPchem', -# 'BudgetChemistryPBL_HNO3 ', 'GCHPchem', -# 'BudgetChemistryPBL_HNO2 ', 'GCHPchem', -# 'BudgetChemistryPBL_HMML ', 'GCHPchem', -# 'BudgetChemistryPBL_HMHP ', 'GCHPchem', -# 'BudgetChemistryPBL_HMS ', 'GCHPchem', -# 'BudgetChemistryPBL_HI ', 'GCHPchem', -# 'BudgetChemistryPBL_HCOOH ', 'GCHPchem', -# 'BudgetChemistryPBL_HCl ', 'GCHPchem', -# 'BudgetChemistryPBL_HCFC22 ', 'GCHPchem', -# 'BudgetChemistryPBL_HCFC142b ', 'GCHPchem', -# 'BudgetChemistryPBL_HCFC141b ', 'GCHPchem', -# 'BudgetChemistryPBL_HCFC123 ', 'GCHPchem', -# 'BudgetChemistryPBL_HC5A ', 'GCHPchem', -# 'BudgetChemistryPBL_HBr ', 'GCHPchem', -# 'BudgetChemistryPBL_HAC ', 'GCHPchem', -# 'BudgetChemistryPBL_H2O2 ', 'GCHPchem', -# 'BudgetChemistryPBL_H2O ', 'GCHPchem', -# 'BudgetChemistryPBL_H2402 ', 'GCHPchem', -# 'BudgetChemistryPBL_H1301 ', 'GCHPchem', -# 'BudgetChemistryPBL_H1211 ', 'GCHPchem', -# 'BudgetChemistryPBL_GLYX ', 'GCHPchem', -# 'BudgetChemistryPBL_GLYC ', 'GCHPchem', -# 'BudgetChemistryPBL_ETP ', 'GCHPchem', -# 'BudgetChemistryPBL_ETNO3 ', 'GCHPchem', -# 'BudgetChemistryPBL_ETHP ', 'GCHPchem', -# 'BudgetChemistryPBL_ETHN ', 'GCHPchem', -# 'BudgetChemistryPBL_ETHLN ', 'GCHPchem', -# 'BudgetChemistryPBL_EOH ', 'GCHPchem', -# 'BudgetChemistryPBL_DST4 ', 'GCHPchem', -# 'BudgetChemistryPBL_DST3 ', 'GCHPchem', -# 'BudgetChemistryPBL_DST2 ', 'GCHPchem', -# 'BudgetChemistryPBL_DST1 ', 'GCHPchem', -# 'BudgetChemistryPBL_DMS ', 'GCHPchem', -# 'BudgetChemistryPBL_CO ', 'GCHPchem', -# 'BudgetChemistryPBL_ClOO ', 'GCHPchem', -# 'BudgetChemistryPBL_ClO ', 'GCHPchem', -# 'BudgetChemistryPBL_ClNO3 ', 'GCHPchem', -# 'BudgetChemistryPBL_ClNO2 ', 'GCHPchem', -# 'BudgetChemistryPBL_Cl2O2 ', 'GCHPchem', -# 'BudgetChemistryPBL_Cl2 ', 'GCHPchem', -# 'BudgetChemistryPBL_Cl ', 'GCHPchem', -# 'BudgetChemistryPBL_CHCl3 ', 'GCHPchem', -# 'BudgetChemistryPBL_CHBr3 ', 'GCHPchem', -# 'BudgetChemistryPBL_CH4 ', 'GCHPchem', -# 'BudgetChemistryPBL_CH3I ', 'GCHPchem', -# 'BudgetChemistryPBL_CH3Cl ', 'GCHPchem', -# 'BudgetChemistryPBL_CH3CCl3 ', 'GCHPchem', -# 'BudgetChemistryPBL_CH3Br ', 'GCHPchem', -# 'BudgetChemistryPBL_CH2O ', 'GCHPchem', -# 'BudgetChemistryPBL_CH2ICl ', 'GCHPchem', -# 'BudgetChemistryPBL_CH2IBr ', 'GCHPchem', -# 'BudgetChemistryPBL_CH2I2 ', 'GCHPchem', -# 'BudgetChemistryPBL_CH2Cl2 ', 'GCHPchem', -# 'BudgetChemistryPBL_CH2Br2 ', 'GCHPchem', -# 'BudgetChemistryPBL_CFC12 ', 'GCHPchem', -# 'BudgetChemistryPBL_CFC115 ', 'GCHPchem', -# 'BudgetChemistryPBL_CFC114 ', 'GCHPchem', -# 'BudgetChemistryPBL_CFC113 ', 'GCHPchem', -# 'BudgetChemistryPBL_CFC11 ', 'GCHPchem', -# 'BudgetChemistryPBL_CCl4 ', 'GCHPchem', -# 'BudgetChemistryPBL_C3H8 ', 'GCHPchem', -# 'BudgetChemistryPBL_C2H6 ', 'GCHPchem', -# 'BudgetChemistryPBL_C2H4 ', 'GCHPchem', -# 'BudgetChemistryPBL_C2H2 ', 'GCHPchem', -# 'BudgetChemistryPBL_BrSALC ', 'GCHPchem', -# 'BudgetChemistryPBL_BrSALA ', 'GCHPchem', -# 'BudgetChemistryPBL_BrO ', 'GCHPchem', -# 'BudgetChemistryPBL_BrNO3 ', 'GCHPchem', -# 'BudgetChemistryPBL_BrNO2 ', 'GCHPchem', -# 'BudgetChemistryPBL_BrCl ', 'GCHPchem', -# 'BudgetChemistryPBL_Br2 ', 'GCHPchem', -# 'BudgetChemistryPBL_Br ', 'GCHPchem', -# 'BudgetChemistryPBL_BENZ ', 'GCHPchem', -# 'BudgetChemistryPBL_BCPO ', 'GCHPchem', -# 'BudgetChemistryPBL_BCPI ', 'GCHPchem', -# 'BudgetChemistryPBL_ATOOH ', 'GCHPchem', -# 'BudgetChemistryPBL_ALK4 ', 'GCHPchem', -# 'BudgetChemistryPBL_ALD2 ', 'GCHPchem', -# 'BudgetChemistryPBL_AERI ', 'GCHPchem', -# 'BudgetChemistryPBL_ACTA ', 'GCHPchem', -# 'BudgetChemistryPBL_ACET ', 'GCHPchem', -# #'BudgetChemistryPBL_TSOG3 ', 'GCHPchem', -# #'BudgetChemistryPBL_TSOG2 ', 'GCHPchem', -# #'BudgetChemistryPBL_TSOG1 ', 'GCHPchem', -# #'BudgetChemistryPBL_TSOG0 ', 'GCHPchem', -# #'BudgetChemistryPBL_TSOA3 ', 'GCHPchem', -# #'BudgetChemistryPBL_TSOA2 ', 'GCHPchem', -# #'BudgetChemistryPBL_TSOA1 ', 'GCHPchem', -# #'BudgetChemistryPBL_TSOA0 ', 'GCHPchem', -# #'BudgetChemistryPBL_ASOG3 ', 'GCHPchem', -# #'BudgetChemistryPBL_ASOG2 ', 'GCHPchem', -# #'BudgetChemistryPBL_ASOG1 ', 'GCHPchem', -# #'BudgetChemistryPBL_ASOAN ', 'GCHPchem', -# #'BudgetChemistryPBL_ASOA3 ', 'GCHPchem', -# #'BudgetChemistryPBL_ASOA2 ', 'GCHPchem', -# #'BudgetChemistryPBL_ASOA1 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_XYLE ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_TOLU ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SOAS ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SOAP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SOAIE ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SOAGX ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SO4s ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SO4 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SO2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SALCCL ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SALCAL ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SALC ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SALACL ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SALAAL ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_SALA ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_RP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_RIPD ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_RIPC ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_RIPB ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_RIPA ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_RCHO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_RB3P ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_RA3P ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_R4P ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_R4N2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_PYAC ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_PRPN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_PRPE ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_PROPNN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_PPN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_PP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_PIP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_pFe ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_PAN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_OIO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_OCS ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_OCPO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_OCPI ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_OClO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_O3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_NPRNO3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_NO3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_NO2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_NO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_NITs ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_NIT ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_NH4 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_NH3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_N2O5 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_N2O ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MVKPC ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MVKN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MVKHP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MVKHCB ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MVKHC ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MVKDH ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MVK ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MTPO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MTPA ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MSA ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MPN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MPAN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MONITU ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MONITS ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MONITA ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MOH ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MGLY ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MENO3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MEK ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MCRHP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MCRHNB ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MCRHN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MCRENOL ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MCRDH ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MAP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MACR1OOH ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_MACR ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_LVOCOA ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_LVOC ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_LIMO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ITHN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ITCN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ISOP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ISALC ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ISALA ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IPRNO3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IONO2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IONO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IONITA ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_INPD ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_INPB ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_INO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_INDIOL ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IHN4 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IHN3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IHN2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IHN1 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IEPOXD ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IEPOXB ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IEPOXA ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IDN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IDHPE ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IDHDP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IDCHP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IDC ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ICPDH ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ICN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ICl ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ICHE ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_IBr ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_I2O4 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_I2O3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_I2O2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_I2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_I ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HPETHNL ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HPALD4 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HPALD3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HPALD2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HPALD1 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HONIT ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HOI ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HOCl ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HOBr ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HNO4 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HNO3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HNO2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HMML ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HMHP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HMS ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HI ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HCOOH ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HCl ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HCFC22 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HCFC142b ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HCFC141b ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HCFC123 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HC5A ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HBr ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_HAC ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_H2O2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_H2O ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_H2402 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_H1301 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_H1211 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_GLYX ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_GLYC ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ETP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ETNO3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ETHP ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ETHN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ETHLN ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_EOH ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_DST4 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_DST3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_DST2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_DST1 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_DMS ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ClOO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ClO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ClNO3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ClNO2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_Cl2O2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_Cl2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_Cl ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CHCl3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CHBr3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CH4 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CH3I ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CH3Cl ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CH3CCl3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CH3Br ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CH2O ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CH2ICl ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CH2IBr ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CH2I2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CH2Cl2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CH2Br2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CFC12 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CFC115 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CFC114 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CFC113 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CFC11 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_CCl4 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_C3H8 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_C2H6 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_C2H4 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_C2H2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_BrSALC ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_BrSALA ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_BrO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_BrNO3 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_BrNO2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_BrCl ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_Br2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_Br ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_BENZ ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_BCPO ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_BCPI ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ATOOH ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ALK4 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ALD2 ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_AERI ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ACTA ', 'GCHPchem', -# 'BudgetChemistryLevs1to35_ACET ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_TSOG3 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_TSOG2 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_TSOG1 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_TSOG0 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_TSOA3 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_TSOA2 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_TSOA1 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_TSOA0 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_ASOG3 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_ASOG2 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_ASOG1 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_ASOAN ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_ASOA3 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_ASOA2 ', 'GCHPchem', -# #'BudgetChemistryLevs1to35_ASOA1 ', 'GCHPchem', -# 'BudgetChemistryTrop_XYLE ', 'GCHPchem', -# 'BudgetChemistryTrop_TOLU ', 'GCHPchem', -# 'BudgetChemistryTrop_SOAS ', 'GCHPchem', -# 'BudgetChemistryTrop_SOAP ', 'GCHPchem', -# 'BudgetChemistryTrop_SOAIE ', 'GCHPchem', -# 'BudgetChemistryTrop_SOAGX ', 'GCHPchem', -# 'BudgetChemistryTrop_SO4s ', 'GCHPchem', -# 'BudgetChemistryTrop_SO4 ', 'GCHPchem', -# 'BudgetChemistryTrop_SO2 ', 'GCHPchem', -# 'BudgetChemistryTrop_SALCCL ', 'GCHPchem', -# 'BudgetChemistryTrop_SALCAL ', 'GCHPchem', -# 'BudgetChemistryTrop_SALC ', 'GCHPchem', -# 'BudgetChemistryTrop_SALACL ', 'GCHPchem', -# 'BudgetChemistryTrop_SALAAL ', 'GCHPchem', -# 'BudgetChemistryTrop_SALA ', 'GCHPchem', -# 'BudgetChemistryTrop_RP ', 'GCHPchem', -# 'BudgetChemistryTrop_RIPD ', 'GCHPchem', -# 'BudgetChemistryTrop_RIPC ', 'GCHPchem', -# 'BudgetChemistryTrop_RIPB ', 'GCHPchem', -# 'BudgetChemistryTrop_RIPA ', 'GCHPchem', -# 'BudgetChemistryTrop_RCHO ', 'GCHPchem', -# 'BudgetChemistryTrop_RB3P ', 'GCHPchem', -# 'BudgetChemistryTrop_RA3P ', 'GCHPchem', -# 'BudgetChemistryTrop_R4P ', 'GCHPchem', -# 'BudgetChemistryTrop_R4N2 ', 'GCHPchem', -# 'BudgetChemistryTrop_PYAC ', 'GCHPchem', -# 'BudgetChemistryTrop_PRPN ', 'GCHPchem', -# 'BudgetChemistryTrop_PRPE ', 'GCHPchem', -# 'BudgetChemistryTrop_PROPNN ', 'GCHPchem', -# 'BudgetChemistryTrop_PPN ', 'GCHPchem', -# 'BudgetChemistryTrop_PP ', 'GCHPchem', -# 'BudgetChemistryTrop_PIP ', 'GCHPchem', -# 'BudgetChemistryTrop_pFe ', 'GCHPchem', -# 'BudgetChemistryTrop_PAN ', 'GCHPchem', -# 'BudgetChemistryTrop_OIO ', 'GCHPchem', -# 'BudgetChemistryTrop_OCS ', 'GCHPchem', -# 'BudgetChemistryTrop_OCPO ', 'GCHPchem', -# 'BudgetChemistryTrop_OCPI ', 'GCHPchem', -# 'BudgetChemistryTrop_OClO ', 'GCHPchem', -# 'BudgetChemistryTrop_O3 ', 'GCHPchem', -# 'BudgetChemistryTrop_NPRNO3 ', 'GCHPchem', -# 'BudgetChemistryTrop_NO3 ', 'GCHPchem', -# 'BudgetChemistryTrop_NO2 ', 'GCHPchem', -# 'BudgetChemistryTrop_NO ', 'GCHPchem', -# 'BudgetChemistryTrop_NITs ', 'GCHPchem', -# 'BudgetChemistryTrop_NIT ', 'GCHPchem', -# 'BudgetChemistryTrop_NH4 ', 'GCHPchem', -# 'BudgetChemistryTrop_NH3 ', 'GCHPchem', -# 'BudgetChemistryTrop_N2O5 ', 'GCHPchem', -# 'BudgetChemistryTrop_N2O ', 'GCHPchem', -# 'BudgetChemistryTrop_MVKPC ', 'GCHPchem', -# 'BudgetChemistryTrop_MVKN ', 'GCHPchem', -# 'BudgetChemistryTrop_MVKHP ', 'GCHPchem', -# 'BudgetChemistryTrop_MVKHCB ', 'GCHPchem', -# 'BudgetChemistryTrop_MVKHC ', 'GCHPchem', -# 'BudgetChemistryTrop_MVKDH ', 'GCHPchem', -# 'BudgetChemistryTrop_MVK ', 'GCHPchem', -# 'BudgetChemistryTrop_MTPO ', 'GCHPchem', -# 'BudgetChemistryTrop_MTPA ', 'GCHPchem', -# 'BudgetChemistryTrop_MSA ', 'GCHPchem', -# 'BudgetChemistryTrop_MPN ', 'GCHPchem', -# 'BudgetChemistryTrop_MPAN ', 'GCHPchem', -# 'BudgetChemistryTrop_MP ', 'GCHPchem', -# 'BudgetChemistryTrop_MONITU ', 'GCHPchem', -# 'BudgetChemistryTrop_MONITS ', 'GCHPchem', -# 'BudgetChemistryTrop_MONITA ', 'GCHPchem', -# 'BudgetChemistryTrop_MOH ', 'GCHPchem', -# 'BudgetChemistryTrop_MGLY ', 'GCHPchem', -# 'BudgetChemistryTrop_MENO3 ', 'GCHPchem', -# 'BudgetChemistryTrop_MEK ', 'GCHPchem', -# 'BudgetChemistryTrop_MCRHP ', 'GCHPchem', -# 'BudgetChemistryTrop_MCRHNB ', 'GCHPchem', -# 'BudgetChemistryTrop_MCRHN ', 'GCHPchem', -# 'BudgetChemistryTrop_MCRENOL ', 'GCHPchem', -# 'BudgetChemistryTrop_MCRDH ', 'GCHPchem', -# 'BudgetChemistryTrop_MAP ', 'GCHPchem', -# 'BudgetChemistryTrop_MACR1OOH ', 'GCHPchem', -# 'BudgetChemistryTrop_MACR ', 'GCHPchem', -# 'BudgetChemistryTrop_LVOCOA ', 'GCHPchem', -# 'BudgetChemistryTrop_LVOC ', 'GCHPchem', -# 'BudgetChemistryTrop_LIMO ', 'GCHPchem', -# 'BudgetChemistryTrop_ITHN ', 'GCHPchem', -# 'BudgetChemistryTrop_ITCN ', 'GCHPchem', -# 'BudgetChemistryTrop_ISOP ', 'GCHPchem', -# 'BudgetChemistryTrop_ISALC ', 'GCHPchem', -# 'BudgetChemistryTrop_ISALA ', 'GCHPchem', -# 'BudgetChemistryTrop_IPRNO3 ', 'GCHPchem', -# 'BudgetChemistryTrop_IONO2 ', 'GCHPchem', -# 'BudgetChemistryTrop_IONO ', 'GCHPchem', -# 'BudgetChemistryTrop_IONITA ', 'GCHPchem', -# 'BudgetChemistryTrop_IO ', 'GCHPchem', -# 'BudgetChemistryTrop_INPD ', 'GCHPchem', -# 'BudgetChemistryTrop_INPB ', 'GCHPchem', -# 'BudgetChemistryTrop_INO ', 'GCHPchem', -# 'BudgetChemistryTrop_INDIOL ', 'GCHPchem', -# 'BudgetChemistryTrop_IHN4 ', 'GCHPchem', -# 'BudgetChemistryTrop_IHN3 ', 'GCHPchem', -# 'BudgetChemistryTrop_IHN2 ', 'GCHPchem', -# 'BudgetChemistryTrop_IHN1 ', 'GCHPchem', -# 'BudgetChemistryTrop_IEPOXD ', 'GCHPchem', -# 'BudgetChemistryTrop_IEPOXB ', 'GCHPchem', -# 'BudgetChemistryTrop_IEPOXA ', 'GCHPchem', -# 'BudgetChemistryTrop_IDN ', 'GCHPchem', -# 'BudgetChemistryTrop_IDHPE ', 'GCHPchem', -# 'BudgetChemistryTrop_IDHDP ', 'GCHPchem', -# 'BudgetChemistryTrop_IDCHP ', 'GCHPchem', -# 'BudgetChemistryTrop_IDC ', 'GCHPchem', -# 'BudgetChemistryTrop_ICPDH ', 'GCHPchem', -# 'BudgetChemistryTrop_ICN ', 'GCHPchem', -# 'BudgetChemistryTrop_ICl ', 'GCHPchem', -# 'BudgetChemistryTrop_ICHE ', 'GCHPchem', -# 'BudgetChemistryTrop_IBr ', 'GCHPchem', -# 'BudgetChemistryTrop_I2O4 ', 'GCHPchem', -# 'BudgetChemistryTrop_I2O3 ', 'GCHPchem', -# 'BudgetChemistryTrop_I2O2 ', 'GCHPchem', -# 'BudgetChemistryTrop_I2 ', 'GCHPchem', -# 'BudgetChemistryTrop_I ', 'GCHPchem', -# 'BudgetChemistryTrop_HPETHNL ', 'GCHPchem', -# 'BudgetChemistryTrop_HPALD4 ', 'GCHPchem', -# 'BudgetChemistryTrop_HPALD3 ', 'GCHPchem', -# 'BudgetChemistryTrop_HPALD2 ', 'GCHPchem', -# 'BudgetChemistryTrop_HPALD1 ', 'GCHPchem', -# 'BudgetChemistryTrop_HONIT ', 'GCHPchem', -# 'BudgetChemistryTrop_HOI ', 'GCHPchem', -# 'BudgetChemistryTrop_HOCl ', 'GCHPchem', -# 'BudgetChemistryTrop_HOBr ', 'GCHPchem', -# 'BudgetChemistryTrop_HNO4 ', 'GCHPchem', -# 'BudgetChemistryTrop_HNO3 ', 'GCHPchem', -# 'BudgetChemistryTrop_HNO2 ', 'GCHPchem', -# 'BudgetChemistryTrop_HMS ', 'GCHPchem', -# 'BudgetChemistryTrop_HMML ', 'GCHPchem', -# 'BudgetChemistryTrop_HMHP ', 'GCHPchem', -# 'BudgetChemistryTrop_HI ', 'GCHPchem', -# 'BudgetChemistryTrop_HCOOH ', 'GCHPchem', -# 'BudgetChemistryTrop_HCl ', 'GCHPchem', -# 'BudgetChemistryTrop_HCFC22 ', 'GCHPchem', -# 'BudgetChemistryTrop_HCFC142b ', 'GCHPchem', -# 'BudgetChemistryTrop_HCFC141b ', 'GCHPchem', -# 'BudgetChemistryTrop_HCFC123 ', 'GCHPchem', -# 'BudgetChemistryTrop_HC5A ', 'GCHPchem', -# 'BudgetChemistryTrop_HBr ', 'GCHPchem', -# 'BudgetChemistryTrop_HAC ', 'GCHPchem', -# 'BudgetChemistryTrop_H2O2 ', 'GCHPchem', -# 'BudgetChemistryTrop_H2O ', 'GCHPchem', -# 'BudgetChemistryTrop_H2402 ', 'GCHPchem', -# 'BudgetChemistryTrop_H1301 ', 'GCHPchem', -# 'BudgetChemistryTrop_H1211 ', 'GCHPchem', -# 'BudgetChemistryTrop_GLYX ', 'GCHPchem', -# 'BudgetChemistryTrop_GLYC ', 'GCHPchem', -# 'BudgetChemistryTrop_ETP ', 'GCHPchem', -# 'BudgetChemistryTrop_ETNO3 ', 'GCHPchem', -# 'BudgetChemistryTrop_ETHP ', 'GCHPchem', -# 'BudgetChemistryTrop_ETHN ', 'GCHPchem', -# 'BudgetChemistryTrop_ETHLN ', 'GCHPchem', -# 'BudgetChemistryTrop_EOH ', 'GCHPchem', -# 'BudgetChemistryTrop_DST4 ', 'GCHPchem', -# 'BudgetChemistryTrop_DST3 ', 'GCHPchem', -# 'BudgetChemistryTrop_DST2 ', 'GCHPchem', -# 'BudgetChemistryTrop_DST1 ', 'GCHPchem', -# 'BudgetChemistryTrop_DMS ', 'GCHPchem', -# 'BudgetChemistryTrop_CO ', 'GCHPchem', -# 'BudgetChemistryTrop_ClOO ', 'GCHPchem', -# 'BudgetChemistryTrop_ClO ', 'GCHPchem', -# 'BudgetChemistryTrop_ClNO3 ', 'GCHPchem', -# 'BudgetChemistryTrop_ClNO2 ', 'GCHPchem', -# 'BudgetChemistryTrop_Cl2O2 ', 'GCHPchem', -# 'BudgetChemistryTrop_Cl2 ', 'GCHPchem', -# 'BudgetChemistryTrop_Cl ', 'GCHPchem', -# 'BudgetChemistryTrop_CHCl3 ', 'GCHPchem', -# 'BudgetChemistryTrop_CHBr3 ', 'GCHPchem', -# 'BudgetChemistryTrop_CH4 ', 'GCHPchem', -# 'BudgetChemistryTrop_CH3I ', 'GCHPchem', -# 'BudgetChemistryTrop_CH3Cl ', 'GCHPchem', -# 'BudgetChemistryTrop_CH3CCl3 ', 'GCHPchem', -# 'BudgetChemistryTrop_CH3Br ', 'GCHPchem', -# 'BudgetChemistryTrop_CH2O ', 'GCHPchem', -# 'BudgetChemistryTrop_CH2ICl ', 'GCHPchem', -# 'BudgetChemistryTrop_CH2IBr ', 'GCHPchem', -# 'BudgetChemistryTrop_CH2I2 ', 'GCHPchem', -# 'BudgetChemistryTrop_CH2Cl2 ', 'GCHPchem', -# 'BudgetChemistryTrop_CH2Br2 ', 'GCHPchem', -# 'BudgetChemistryTrop_CFC12 ', 'GCHPchem', -# 'BudgetChemistryTrop_CFC115 ', 'GCHPchem', -# 'BudgetChemistryTrop_CFC114 ', 'GCHPchem', -# 'BudgetChemistryTrop_CFC113 ', 'GCHPchem', -# 'BudgetChemistryTrop_CFC11 ', 'GCHPchem', -# 'BudgetChemistryTrop_CCl4 ', 'GCHPchem', -# 'BudgetChemistryTrop_C3H8 ', 'GCHPchem', -# 'BudgetChemistryTrop_C2H4 ', 'GCHPchem', -# 'BudgetChemistryTrop_C2H2 ', 'GCHPchem', -# 'BudgetChemistryTrop_C2H6 ', 'GCHPchem', -# 'BudgetChemistryTrop_BrSALC ', 'GCHPchem', -# 'BudgetChemistryTrop_BrSALA ', 'GCHPchem', -# 'BudgetChemistryTrop_BrO ', 'GCHPchem', -# 'BudgetChemistryTrop_BrNO3 ', 'GCHPchem', -# 'BudgetChemistryTrop_BrNO2 ', 'GCHPchem', -# 'BudgetChemistryTrop_BrCl ', 'GCHPchem', -# 'BudgetChemistryTrop_Br2 ', 'GCHPchem', -# 'BudgetChemistryTrop_Br ', 'GCHPchem', -# 'BudgetChemistryTrop_BENZ ', 'GCHPchem', -# 'BudgetChemistryTrop_BCPO ', 'GCHPchem', -# 'BudgetChemistryTrop_BCPI ', 'GCHPchem', -# 'BudgetChemistryTrop_ATOOH ', 'GCHPchem', -# 'BudgetChemistryTrop_ALK4 ', 'GCHPchem', -# 'BudgetChemistryTrop_ALD2 ', 'GCHPchem', -# 'BudgetChemistryTrop_AERI ', 'GCHPchem', -# 'BudgetChemistryTrop_ACTA ', 'GCHPchem', -# 'BudgetChemistryTrop_ACET ', 'GCHPchem', -# #'BudgetChemistryTrop_TSOG3 ', 'GCHPchem', -# #'BudgetChemistryTrop_TSOG2 ', 'GCHPchem', -# #'BudgetChemistryTrop_TSOG1 ', 'GCHPchem', -# #'BudgetChemistryTrop_TSOG0 ', 'GCHPchem', -# #'BudgetChemistryTrop_TSOA3 ', 'GCHPchem', -# #'BudgetChemistryTrop_TSOA2 ', 'GCHPchem', -# #'BudgetChemistryTrop_TSOA1 ', 'GCHPchem', -# #'BudgetChemistryTrop_TSOA0 ', 'GCHPchem', -# #'BudgetChemistryTrop_ASOG3 ', 'GCHPchem', -# #'BudgetChemistryTrop_ASOG2 ', 'GCHPchem', -# #'BudgetChemistryTrop_ASOG1 ', 'GCHPchem', -# #'BudgetChemistryTrop_ASOAN ', 'GCHPchem', -# #'BudgetChemistryTrop_ASOA3 ', 'GCHPchem', -# #'BudgetChemistryTrop_ASOA2 ', 'GCHPchem', -# #'BudgetChemistryTrop_ASOA1 ', 'GCHPchem', -# 'BudgetChemistryFull_XYLE ', 'GCHPchem', -# 'BudgetChemistryFull_TOLU ', 'GCHPchem', -# 'BudgetChemistryFull_SOAS ', 'GCHPchem', -# 'BudgetChemistryFull_SOAP ', 'GCHPchem', -# 'BudgetChemistryFull_SOAIE ', 'GCHPchem', -# 'BudgetChemistryFull_SOAGX ', 'GCHPchem', -# 'BudgetChemistryFull_SO4s ', 'GCHPchem', -# 'BudgetChemistryFull_SO4 ', 'GCHPchem', -# 'BudgetChemistryFull_SO2 ', 'GCHPchem', -# 'BudgetChemistryFull_SALCCL ', 'GCHPchem', -# 'BudgetChemistryFull_SALCAL ', 'GCHPchem', -# 'BudgetChemistryFull_SALC ', 'GCHPchem', -# 'BudgetChemistryFull_SALACL ', 'GCHPchem', -# 'BudgetChemistryFull_SALAAL ', 'GCHPchem', -# 'BudgetChemistryFull_SALA ', 'GCHPchem', -# 'BudgetChemistryFull_RP ', 'GCHPchem', -# 'BudgetChemistryFull_RIPD ', 'GCHPchem', -# 'BudgetChemistryFull_RIPC ', 'GCHPchem', -# 'BudgetChemistryFull_RIPB ', 'GCHPchem', -# 'BudgetChemistryFull_RIPA ', 'GCHPchem', -# 'BudgetChemistryFull_RCHO ', 'GCHPchem', -# 'BudgetChemistryFull_RB3P ', 'GCHPchem', -# 'BudgetChemistryFull_RA3P ', 'GCHPchem', -# 'BudgetChemistryFull_R4P ', 'GCHPchem', -# 'BudgetChemistryFull_R4N2 ', 'GCHPchem', -# 'BudgetChemistryFull_PYAC ', 'GCHPchem', -# 'BudgetChemistryFull_PRPN ', 'GCHPchem', -# 'BudgetChemistryFull_PRPE ', 'GCHPchem', -# 'BudgetChemistryFull_PROPNN ', 'GCHPchem', -# 'BudgetChemistryFull_PPN ', 'GCHPchem', -# 'BudgetChemistryFull_PP ', 'GCHPchem', -# 'BudgetChemistryFull_PIP ', 'GCHPchem', -# 'BudgetChemistryFull_pFe ', 'GCHPchem', -# 'BudgetChemistryFull_PAN ', 'GCHPchem', -# 'BudgetChemistryFull_OIO ', 'GCHPchem', -# 'BudgetChemistryFull_OCS ', 'GCHPchem', -# 'BudgetChemistryFull_OCPO ', 'GCHPchem', -# 'BudgetChemistryFull_OCPI ', 'GCHPchem', -# 'BudgetChemistryFull_OClO ', 'GCHPchem', -# 'BudgetChemistryFull_O3 ', 'GCHPchem', -# 'BudgetChemistryFull_NPRNO3 ', 'GCHPchem', -# 'BudgetChemistryFull_NO3 ', 'GCHPchem', -# 'BudgetChemistryFull_NO2 ', 'GCHPchem', -# 'BudgetChemistryFull_NO ', 'GCHPchem', -# 'BudgetChemistryFull_NITs ', 'GCHPchem', -# 'BudgetChemistryFull_NIT ', 'GCHPchem', -# 'BudgetChemistryFull_NH4 ', 'GCHPchem', -# 'BudgetChemistryFull_NH3 ', 'GCHPchem', -# 'BudgetChemistryFull_N2O5 ', 'GCHPchem', -# 'BudgetChemistryFull_N2O ', 'GCHPchem', -# 'BudgetChemistryFull_MVKPC ', 'GCHPchem', -# 'BudgetChemistryFull_MVKN ', 'GCHPchem', -# 'BudgetChemistryFull_MVKHP ', 'GCHPchem', -# 'BudgetChemistryFull_MVKHCB ', 'GCHPchem', -# 'BudgetChemistryFull_MVKHC ', 'GCHPchem', -# 'BudgetChemistryFull_MVKDH ', 'GCHPchem', -# 'BudgetChemistryFull_MVK ', 'GCHPchem', -# 'BudgetChemistryFull_MTPO ', 'GCHPchem', -# 'BudgetChemistryFull_MTPA ', 'GCHPchem', -# 'BudgetChemistryFull_MSA ', 'GCHPchem', -# 'BudgetChemistryFull_MPN ', 'GCHPchem', -# 'BudgetChemistryFull_MPAN ', 'GCHPchem', -# 'BudgetChemistryFull_MP ', 'GCHPchem', -# 'BudgetChemistryFull_MONITU ', 'GCHPchem', -# 'BudgetChemistryFull_MONITS ', 'GCHPchem', -# 'BudgetChemistryFull_MONITA ', 'GCHPchem', -# 'BudgetChemistryFull_MOH ', 'GCHPchem', -# 'BudgetChemistryFull_MGLY ', 'GCHPchem', -# 'BudgetChemistryFull_MENO3 ', 'GCHPchem', -# 'BudgetChemistryFull_MEK ', 'GCHPchem', -# 'BudgetChemistryFull_MCRHP ', 'GCHPchem', -# 'BudgetChemistryFull_MCRHNB ', 'GCHPchem', -# 'BudgetChemistryFull_MCRHN ', 'GCHPchem', -# 'BudgetChemistryFull_MCRENOL ', 'GCHPchem', -# 'BudgetChemistryFull_MCRDH ', 'GCHPchem', -# 'BudgetChemistryFull_MAP ', 'GCHPchem', -# 'BudgetChemistryFull_MACR1OOH ', 'GCHPchem', -# 'BudgetChemistryFull_MACR ', 'GCHPchem', -# 'BudgetChemistryFull_LVOCOA ', 'GCHPchem', -# 'BudgetChemistryFull_LVOC ', 'GCHPchem', -# 'BudgetChemistryFull_LIMO ', 'GCHPchem', -# 'BudgetChemistryFull_ITHN ', 'GCHPchem', -# 'BudgetChemistryFull_ITCN ', 'GCHPchem', -# 'BudgetChemistryFull_ISOP ', 'GCHPchem', -# 'BudgetChemistryFull_ISALC ', 'GCHPchem', -# 'BudgetChemistryFull_ISALA ', 'GCHPchem', -# 'BudgetChemistryFull_IPRNO3 ', 'GCHPchem', -# 'BudgetChemistryFull_IONO2 ', 'GCHPchem', -# 'BudgetChemistryFull_IONO ', 'GCHPchem', -# 'BudgetChemistryFull_IONITA ', 'GCHPchem', -# 'BudgetChemistryFull_IO ', 'GCHPchem', -# 'BudgetChemistryFull_INPD ', 'GCHPchem', -# 'BudgetChemistryFull_INPB ', 'GCHPchem', -# 'BudgetChemistryFull_INO ', 'GCHPchem', -# 'BudgetChemistryFull_INDIOL ', 'GCHPchem', -# 'BudgetChemistryFull_IHN4 ', 'GCHPchem', -# 'BudgetChemistryFull_IHN3 ', 'GCHPchem', -# 'BudgetChemistryFull_IHN2 ', 'GCHPchem', -# 'BudgetChemistryFull_IHN1 ', 'GCHPchem', -# 'BudgetChemistryFull_IEPOXD ', 'GCHPchem', -# 'BudgetChemistryFull_IEPOXB ', 'GCHPchem', -# 'BudgetChemistryFull_IEPOXA ', 'GCHPchem', -# 'BudgetChemistryFull_IDN ', 'GCHPchem', -# 'BudgetChemistryFull_IDHPE ', 'GCHPchem', -# 'BudgetChemistryFull_IDHDP ', 'GCHPchem', -# 'BudgetChemistryFull_IDCHP ', 'GCHPchem', -# 'BudgetChemistryFull_IDC ', 'GCHPchem', -# 'BudgetChemistryFull_ICPDH ', 'GCHPchem', -# 'BudgetChemistryFull_ICN ', 'GCHPchem', -# 'BudgetChemistryFull_ICl ', 'GCHPchem', -# 'BudgetChemistryFull_ICHE ', 'GCHPchem', -# 'BudgetChemistryFull_IBr ', 'GCHPchem', -# 'BudgetChemistryFull_I2O4 ', 'GCHPchem', -# 'BudgetChemistryFull_I2O3 ', 'GCHPchem', -# 'BudgetChemistryFull_I2O2 ', 'GCHPchem', -# 'BudgetChemistryFull_I2 ', 'GCHPchem', -# 'BudgetChemistryFull_I ', 'GCHPchem', -# 'BudgetChemistryFull_HPETHNL ', 'GCHPchem', -# 'BudgetChemistryFull_HPALD4 ', 'GCHPchem', -# 'BudgetChemistryFull_HPALD3 ', 'GCHPchem', -# 'BudgetChemistryFull_HPALD2 ', 'GCHPchem', -# 'BudgetChemistryFull_HPALD1 ', 'GCHPchem', -# 'BudgetChemistryFull_HONIT ', 'GCHPchem', -# 'BudgetChemistryFull_HOI ', 'GCHPchem', -# 'BudgetChemistryFull_HOCl ', 'GCHPchem', -# 'BudgetChemistryFull_HOBr ', 'GCHPchem', -# 'BudgetChemistryFull_HNO4 ', 'GCHPchem', -# 'BudgetChemistryFull_HNO3 ', 'GCHPchem', -# 'BudgetChemistryFull_HNO2 ', 'GCHPchem', -# 'BudgetChemistryFull_HMS ', 'GCHPchem', -# 'BudgetChemistryFull_HMML ', 'GCHPchem', -# 'BudgetChemistryFull_HMHP ', 'GCHPchem', -# 'BudgetChemistryFull_HI ', 'GCHPchem', -# 'BudgetChemistryFull_HCOOH ', 'GCHPchem', -# 'BudgetChemistryFull_HCl ', 'GCHPchem', -# 'BudgetChemistryFull_HCFC22 ', 'GCHPchem', -# 'BudgetChemistryFull_HCFC142b ', 'GCHPchem', -# 'BudgetChemistryFull_HCFC141b ', 'GCHPchem', -# 'BudgetChemistryFull_HCFC123 ', 'GCHPchem', -# 'BudgetChemistryFull_HC5A ', 'GCHPchem', -# 'BudgetChemistryFull_HBr ', 'GCHPchem', -# 'BudgetChemistryFull_HAC ', 'GCHPchem', -# 'BudgetChemistryFull_H2O2 ', 'GCHPchem', -# 'BudgetChemistryFull_H2O ', 'GCHPchem', -# 'BudgetChemistryFull_H2402 ', 'GCHPchem', -# 'BudgetChemistryFull_H1301 ', 'GCHPchem', -# 'BudgetChemistryFull_H1211 ', 'GCHPchem', -# 'BudgetChemistryFull_GLYX ', 'GCHPchem', -# 'BudgetChemistryFull_GLYC ', 'GCHPchem', -# 'BudgetChemistryFull_ETP ', 'GCHPchem', -# 'BudgetChemistryFull_ETNO3 ', 'GCHPchem', -# 'BudgetChemistryFull_ETHP ', 'GCHPchem', -# 'BudgetChemistryFull_ETHN ', 'GCHPchem', -# 'BudgetChemistryFull_ETHLN ', 'GCHPchem', -# 'BudgetChemistryFull_EOH ', 'GCHPchem', -# 'BudgetChemistryFull_DST4 ', 'GCHPchem', -# 'BudgetChemistryFull_DST3 ', 'GCHPchem', -# 'BudgetChemistryFull_DST2 ', 'GCHPchem', -# 'BudgetChemistryFull_DST1 ', 'GCHPchem', -# 'BudgetChemistryFull_DMS ', 'GCHPchem', -# 'BudgetChemistryFull_CO ', 'GCHPchem', -# 'BudgetChemistryFull_ClOO ', 'GCHPchem', -# 'BudgetChemistryFull_ClO ', 'GCHPchem', -# 'BudgetChemistryFull_ClNO3 ', 'GCHPchem', -# 'BudgetChemistryFull_ClNO2 ', 'GCHPchem', -# 'BudgetChemistryFull_Cl2O2 ', 'GCHPchem', -# 'BudgetChemistryFull_Cl2 ', 'GCHPchem', -# 'BudgetChemistryFull_Cl ', 'GCHPchem', -# 'BudgetChemistryFull_CHCl3 ', 'GCHPchem', -# 'BudgetChemistryFull_CHBr3 ', 'GCHPchem', -# 'BudgetChemistryFull_CH4 ', 'GCHPchem', -# 'BudgetChemistryFull_CH3I ', 'GCHPchem', -# 'BudgetChemistryFull_CH3Cl ', 'GCHPchem', -# 'BudgetChemistryFull_CH3CCl3 ', 'GCHPchem', -# 'BudgetChemistryFull_CH3Br ', 'GCHPchem', -# 'BudgetChemistryFull_CH2O ', 'GCHPchem', -# 'BudgetChemistryFull_CH2ICl ', 'GCHPchem', -# 'BudgetChemistryFull_CH2IBr ', 'GCHPchem', -# 'BudgetChemistryFull_CH2I2 ', 'GCHPchem', -# 'BudgetChemistryFull_CH2Cl2 ', 'GCHPchem', -# 'BudgetChemistryFull_CH2Br2 ', 'GCHPchem', -# 'BudgetChemistryFull_CFC12 ', 'GCHPchem', -# 'BudgetChemistryFull_CFC115 ', 'GCHPchem', -# 'BudgetChemistryFull_CFC114 ', 'GCHPchem', -# 'BudgetChemistryFull_CFC113 ', 'GCHPchem', -# 'BudgetChemistryFull_CFC11 ', 'GCHPchem', -# 'BudgetChemistryFull_CCl4 ', 'GCHPchem', -# 'BudgetChemistryFull_C3H8 ', 'GCHPchem', -# 'BudgetChemistryFull_C2H6 ', 'GCHPchem', -# 'BudgetChemistryFull_BrSALC ', 'GCHPchem', -# 'BudgetChemistryFull_BrSALA ', 'GCHPchem', -# 'BudgetChemistryFull_BrO ', 'GCHPchem', -# 'BudgetChemistryFull_BrNO3 ', 'GCHPchem', -# 'BudgetChemistryFull_BrNO2 ', 'GCHPchem', -# 'BudgetChemistryFull_BrCl ', 'GCHPchem', -# 'BudgetChemistryFull_Br2 ', 'GCHPchem', -# 'BudgetChemistryFull_Br ', 'GCHPchem', -# 'BudgetChemistryFull_BENZ ', 'GCHPchem', -# 'BudgetChemistryFull_BCPO ', 'GCHPchem', -# 'BudgetChemistryFull_BCPI ', 'GCHPchem', -# 'BudgetChemistryFull_ATOOH ', 'GCHPchem', -# 'BudgetChemistryFull_ALK4 ', 'GCHPchem', -# 'BudgetChemistryFull_ALD2 ', 'GCHPchem', -# 'BudgetChemistryFull_AERI ', 'GCHPchem', -# 'BudgetChemistryFull_ACTA ', 'GCHPchem', -# 'BudgetChemistryFull_ACET ', 'GCHPchem', -# #'BudgetChemistryFull_TSOG3 ', 'GCHPchem', -# #'BudgetChemistryFull_TSOG2 ', 'GCHPchem', -# #'BudgetChemistryFull_TSOG1 ', 'GCHPchem', -# #'BudgetChemistryFull_TSOG0 ', 'GCHPchem', -# #'BudgetChemistryFull_TSOA3 ', 'GCHPchem', -# #'BudgetChemistryFull_TSOA2 ', 'GCHPchem', -# #'BudgetChemistryFull_TSOA1 ', 'GCHPchem', -# #'BudgetChemistryFull_TSOA0 ', 'GCHPchem', -# #'BudgetChemistryFull_ASOG3 ', 'GCHPchem', -# #'BudgetChemistryFull_ASOG2 ', 'GCHPchem', -# #'BudgetChemistryFull_ASOG1 ', 'GCHPchem', -# #'BudgetChemistryFull_ASOAN ', 'GCHPchem', -# #'BudgetChemistryFull_ASOA3 ', 'GCHPchem', -# #'BudgetChemistryFull_ASOA2 ', 'GCHPchem', -# #'BudgetChemistryFull_ASOA1 ', 'GCHPchem', -# 'BudgetConvectionPBL_XYLE ', 'GCHPchem', -# 'BudgetConvectionPBL_TOLU ', 'GCHPchem', -# 'BudgetConvectionPBL_SOAS ', 'GCHPchem', -# 'BudgetConvectionPBL_SOAP ', 'GCHPchem', -# 'BudgetConvectionPBL_SOAIE ', 'GCHPchem', -# 'BudgetConvectionPBL_SOAGX ', 'GCHPchem', -# 'BudgetConvectionPBL_SO4s ', 'GCHPchem', -# 'BudgetConvectionPBL_SO4 ', 'GCHPchem', -# 'BudgetConvectionPBL_SO2 ', 'GCHPchem', -# 'BudgetConvectionPBL_SALCCl ', 'GCHPchem', -# 'BudgetConvectionPBL_SALCAL ', 'GCHPchem', -# 'BudgetConvectionPBL_SALC ', 'GCHPchem', -# 'BudgetConvectionPBL_SALACl ', 'GCHPchem', -# 'BudgetConvectionPBL_SALAAL ', 'GCHPchem', -# 'BudgetConvectionPBL_SALA ', 'GCHPchem', -# 'BudgetConvectionPBL_RP ', 'GCHPchem', -# 'BudgetConvectionPBL_RIPD ', 'GCHPchem', -# 'BudgetConvectionPBL_RIPC ', 'GCHPchem', -# 'BudgetConvectionPBL_RIPB ', 'GCHPchem', -# 'BudgetConvectionPBL_RIPA ', 'GCHPchem', -# 'BudgetConvectionPBL_RCHO ', 'GCHPchem', -# 'BudgetConvectionPBL_RB3P ', 'GCHPchem', -# 'BudgetConvectionPBL_RA3P ', 'GCHPchem', -# 'BudgetConvectionPBL_R4P ', 'GCHPchem', -# 'BudgetConvectionPBL_R4N2 ', 'GCHPchem', -# 'BudgetConvectionPBL_PYAC ', 'GCHPchem', -# 'BudgetConvectionPBL_PRPN ', 'GCHPchem', -# 'BudgetConvectionPBL_PRPE ', 'GCHPchem', -# 'BudgetConvectionPBL_PROPNN ', 'GCHPchem', -# 'BudgetConvectionPBL_PPN ', 'GCHPchem', -# 'BudgetConvectionPBL_PP ', 'GCHPchem', -# 'BudgetConvectionPBL_PIP ', 'GCHPchem', -# 'BudgetConvectionPBL_pFe ', 'GCHPchem', -# 'BudgetConvectionPBL_PAN ', 'GCHPchem', -# 'BudgetConvectionPBL_OIO ', 'GCHPchem', -# 'BudgetConvectionPBL_OCS ', 'GCHPchem', -# 'BudgetConvectionPBL_OCPO ', 'GCHPchem', -# 'BudgetConvectionPBL_OCPI ', 'GCHPchem', -# 'BudgetConvectionPBL_OClO ', 'GCHPchem', -# 'BudgetConvectionPBL_O3 ', 'GCHPchem', -# 'BudgetConvectionPBL_NPRNO3 ', 'GCHPchem', -# 'BudgetConvectionPBL_NO3 ', 'GCHPchem', -# 'BudgetConvectionPBL_NO2 ', 'GCHPchem', -# 'BudgetConvectionPBL_NO ', 'GCHPchem', -# 'BudgetConvectionPBL_NITs ', 'GCHPchem', -# 'BudgetConvectionPBL_NIT ', 'GCHPchem', -# 'BudgetConvectionPBL_NH4 ', 'GCHPchem', -# 'BudgetConvectionPBL_NH3 ', 'GCHPchem', -# 'BudgetConvectionPBL_N2O5 ', 'GCHPchem', -# 'BudgetConvectionPBL_N2O ', 'GCHPchem', -# 'BudgetConvectionPBL_MVKPC ', 'GCHPchem', -# 'BudgetConvectionPBL_MVKN ', 'GCHPchem', -# 'BudgetConvectionPBL_MVKHP ', 'GCHPchem', -# 'BudgetConvectionPBL_MVKHCB ', 'GCHPchem', -# 'BudgetConvectionPBL_MVKHC ', 'GCHPchem', -# 'BudgetConvectionPBL_MVKDH ', 'GCHPchem', -# 'BudgetConvectionPBL_MVK ', 'GCHPchem', -# 'BudgetConvectionPBL_MTPO ', 'GCHPchem', -# 'BudgetConvectionPBL_MTPA ', 'GCHPchem', -# 'BudgetConvectionPBL_MSA ', 'GCHPchem', -# 'BudgetConvectionPBL_MPN ', 'GCHPchem', -# 'BudgetConvectionPBL_MPAN ', 'GCHPchem', -# 'BudgetConvectionPBL_MP ', 'GCHPchem', -# 'BudgetConvectionPBL_MONITU ', 'GCHPchem', -# 'BudgetConvectionPBL_MONITS ', 'GCHPchem', -# 'BudgetConvectionPBL_MONITA ', 'GCHPchem', -# 'BudgetConvectionPBL_MOH ', 'GCHPchem', -# 'BudgetConvectionPBL_MGLY ', 'GCHPchem', -# 'BudgetConvectionPBL_MENO3 ', 'GCHPchem', -# 'BudgetConvectionPBL_MEK ', 'GCHPchem', -# 'BudgetConvectionPBL_MCRHP ', 'GCHPchem', -# 'BudgetConvectionPBL_MCRHNB ', 'GCHPchem', -# 'BudgetConvectionPBL_MCRHN ', 'GCHPchem', -# 'BudgetConvectionPBL_MCRENOL ', 'GCHPchem', -# 'BudgetConvectionPBL_MCRDH ', 'GCHPchem', -# 'BudgetConvectionPBL_MAP ', 'GCHPchem', -# 'BudgetConvectionPBL_MACR1OOH ', 'GCHPchem', -# 'BudgetConvectionPBL_MACR ', 'GCHPchem', -# 'BudgetConvectionPBL_LVOCOA ', 'GCHPchem', -# 'BudgetConvectionPBL_LVOC ', 'GCHPchem', -# 'BudgetConvectionPBL_LIMO ', 'GCHPchem', -# 'BudgetConvectionPBL_ITHN ', 'GCHPchem', -# 'BudgetConvectionPBL_ITCN ', 'GCHPchem', -# 'BudgetConvectionPBL_ISOP ', 'GCHPchem', -# 'BudgetConvectionPBL_ISALC ', 'GCHPchem', -# 'BudgetConvectionPBL_ISALA ', 'GCHPchem', -# 'BudgetConvectionPBL_IPRNO3 ', 'GCHPchem', -# 'BudgetConvectionPBL_IONO2 ', 'GCHPchem', -# 'BudgetConvectionPBL_IONO ', 'GCHPchem', -# 'BudgetConvectionPBL_IONITA ', 'GCHPchem', -# 'BudgetConvectionPBL_IO ', 'GCHPchem', -# 'BudgetConvectionPBL_INPD ', 'GCHPchem', -# 'BudgetConvectionPBL_INPB ', 'GCHPchem', -# 'BudgetConvectionPBL_INO ', 'GCHPchem', -# 'BudgetConvectionPBL_INDIOL ', 'GCHPchem', -# 'BudgetConvectionPBL_IHN4 ', 'GCHPchem', -# 'BudgetConvectionPBL_IHN3 ', 'GCHPchem', -# 'BudgetConvectionPBL_IHN2 ', 'GCHPchem', -# 'BudgetConvectionPBL_IHN1 ', 'GCHPchem', -# 'BudgetConvectionPBL_IEPOXD ', 'GCHPchem', -# 'BudgetConvectionPBL_IEPOXB ', 'GCHPchem', -# 'BudgetConvectionPBL_IEPOXA ', 'GCHPchem', -# 'BudgetConvectionPBL_IDN ', 'GCHPchem', -# 'BudgetConvectionPBL_IDHPE ', 'GCHPchem', -# 'BudgetConvectionPBL_IDHDP ', 'GCHPchem', -# 'BudgetConvectionPBL_IDCHP ', 'GCHPchem', -# 'BudgetConvectionPBL_IDC ', 'GCHPchem', -# 'BudgetConvectionPBL_ICPDH ', 'GCHPchem', -# 'BudgetConvectionPBL_ICN ', 'GCHPchem', -# 'BudgetConvectionPBL_ICl ', 'GCHPchem', -# 'BudgetConvectionPBL_ICHE ', 'GCHPchem', -# 'BudgetConvectionPBL_IBr ', 'GCHPchem', -# 'BudgetConvectionPBL_I2O4 ', 'GCHPchem', -# 'BudgetConvectionPBL_I2O3 ', 'GCHPchem', -# 'BudgetConvectionPBL_I2O2 ', 'GCHPchem', -# 'BudgetConvectionPBL_I2 ', 'GCHPchem', -# 'BudgetConvectionPBL_I ', 'GCHPchem', -# 'BudgetConvectionPBL_HPETHNL ', 'GCHPchem', -# 'BudgetConvectionPBL_HPALD4 ', 'GCHPchem', -# 'BudgetConvectionPBL_HPALD3 ', 'GCHPchem', -# 'BudgetConvectionPBL_HPALD2 ', 'GCHPchem', -# 'BudgetConvectionPBL_HPALD1 ', 'GCHPchem', -# 'BudgetConvectionPBL_HONIT ', 'GCHPchem', -# 'BudgetConvectionPBL_HOI ', 'GCHPchem', -# 'BudgetConvectionPBL_HOCl ', 'GCHPchem', -# 'BudgetConvectionPBL_HOBr ', 'GCHPchem', -# 'BudgetConvectionPBL_HNO4 ', 'GCHPchem', -# 'BudgetConvectionPBL_HNO3 ', 'GCHPchem', -# 'BudgetConvectionPBL_HNO2 ', 'GCHPchem', -# 'BudgetConvectionPBL_HMS ', 'GCHPchem', -# 'BudgetConvectionPBL_HMML ', 'GCHPchem', -# 'BudgetConvectionPBL_HMHP ', 'GCHPchem', -# 'BudgetConvectionPBL_HI ', 'GCHPchem', -# 'BudgetConvectionPBL_HCOOH ', 'GCHPchem', -# 'BudgetConvectionPBL_HCl ', 'GCHPchem', -# 'BudgetConvectionPBL_HCFC22 ', 'GCHPchem', -# 'BudgetConvectionPBL_HCFC142b ', 'GCHPchem', -# 'BudgetConvectionPBL_HCFC141b ', 'GCHPchem', -# 'BudgetConvectionPBL_HCFC123 ', 'GCHPchem', -# 'BudgetConvectionPBL_HC5A ', 'GCHPchem', -# 'BudgetConvectionPBL_HBr ', 'GCHPchem', -# 'BudgetConvectionPBL_HAC ', 'GCHPchem', -# 'BudgetConvectionPBL_H2O2 ', 'GCHPchem', -# 'BudgetConvectionPBL_H2O ', 'GCHPchem', -# 'BudgetConvectionPBL_H2402 ', 'GCHPchem', -# 'BudgetConvectionPBL_H1301 ', 'GCHPchem', -# 'BudgetConvectionPBL_H1211 ', 'GCHPchem', -# 'BudgetConvectionPBL_GLYX ', 'GCHPchem', -# 'BudgetConvectionPBL_GLYC ', 'GCHPchem', -# 'BudgetConvectionPBL_ETP ', 'GCHPchem', -# 'BudgetConvectionPBL_ETNO3 ', 'GCHPchem', -# 'BudgetConvectionPBL_ETHP ', 'GCHPchem', -# 'BudgetConvectionPBL_ETHN ', 'GCHPchem', -# 'BudgetConvectionPBL_ETHLN ', 'GCHPchem', -# 'BudgetConvectionPBL_EOH ', 'GCHPchem', -# 'BudgetConvectionPBL_DST4 ', 'GCHPchem', -# 'BudgetConvectionPBL_DST3 ', 'GCHPchem', -# 'BudgetConvectionPBL_DST2 ', 'GCHPchem', -# 'BudgetConvectionPBL_DST1 ', 'GCHPchem', -# 'BudgetConvectionPBL_DMS ', 'GCHPchem', -# 'BudgetConvectionPBL_CO ', 'GCHPchem', -# 'BudgetConvectionPBL_ClOO ', 'GCHPchem', -# 'BudgetConvectionPBL_ClO ', 'GCHPchem', -# 'BudgetConvectionPBL_ClNO3 ', 'GCHPchem', -# 'BudgetConvectionPBL_ClNO2 ', 'GCHPchem', -# 'BudgetConvectionPBL_Cl2O2 ', 'GCHPchem', -# 'BudgetConvectionPBL_Cl2 ', 'GCHPchem', -# 'BudgetConvectionPBL_Cl ', 'GCHPchem', -# 'BudgetConvectionPBL_CHCl3 ', 'GCHPchem', -# 'BudgetConvectionPBL_CHBr3 ', 'GCHPchem', -# 'BudgetConvectionPBL_CH4 ', 'GCHPchem', -# 'BudgetConvectionPBL_CH3I ', 'GCHPchem', -# 'BudgetConvectionPBL_CH3Cl ', 'GCHPchem', -# 'BudgetConvectionPBL_CH3CCl3 ', 'GCHPchem', -# 'BudgetConvectionPBL_CH3Br ', 'GCHPchem', -# 'BudgetConvectionPBL_CH2O ', 'GCHPchem', -# 'BudgetConvectionPBL_CH2ICl ', 'GCHPchem', -# 'BudgetConvectionPBL_CH2IBr ', 'GCHPchem', -# 'BudgetConvectionPBL_CH2I2 ', 'GCHPchem', -# 'BudgetConvectionPBL_CH2Cl2 ', 'GCHPchem', -# 'BudgetConvectionPBL_CH2Br2 ', 'GCHPchem', -# 'BudgetConvectionPBL_CFC12 ', 'GCHPchem', -# 'BudgetConvectionPBL_CFC115 ', 'GCHPchem', -# 'BudgetConvectionPBL_CFC114 ', 'GCHPchem', -# 'BudgetConvectionPBL_CFC113 ', 'GCHPchem', -# 'BudgetConvectionPBL_CFC11 ', 'GCHPchem', -# 'BudgetConvectionPBL_CCl4 ', 'GCHPchem', -# 'BudgetConvectionPBL_C3H8 ', 'GCHPchem', -# 'BudgetConvectionPBL_C2H6 ', 'GCHPchem', -# 'BudgetConvectionPBL_C2H4 ', 'GCHPchem', -# 'BudgetConvectionPBL_C2H2 ', 'GCHPchem', -# 'BudgetConvectionPBL_BrSALC ', 'GCHPchem', -# 'BudgetConvectionPBL_BrSALA ', 'GCHPchem', -# 'BudgetConvectionPBL_BrO ', 'GCHPchem', -# 'BudgetConvectionPBL_BrNO3 ', 'GCHPchem', -# 'BudgetConvectionPBL_BrNO2 ', 'GCHPchem', -# 'BudgetConvectionPBL_BrCl ', 'GCHPchem', -# 'BudgetConvectionPBL_Br2 ', 'GCHPchem', -# 'BudgetConvectionPBL_Br ', 'GCHPchem', -# 'BudgetConvectionPBL_BENZ ', 'GCHPchem', -# 'BudgetConvectionPBL_BCPO ', 'GCHPchem', -# 'BudgetConvectionPBL_BCPI ', 'GCHPchem', -# 'BudgetConvectionPBL_ATOOH ', 'GCHPchem', -# 'BudgetConvectionPBL_ALK4 ', 'GCHPchem', -# 'BudgetConvectionPBL_ALD2 ', 'GCHPchem', -# 'BudgetConvectionPBL_AERI ', 'GCHPchem', -# 'BudgetConvectionPBL_ACTA ', 'GCHPchem', -# 'BudgetConvectionPBL_ACET ', 'GCHPchem', -# #'BudgetConvectionPBL_TSOG3 ', 'GCHPchem', -# #'BudgetConvectionPBL_TSOG2 ', 'GCHPchem', -# #'BudgetConvectionPBL_TSOG1 ', 'GCHPchem', -# #'BudgetConvectionPBL_TSOG0 ', 'GCHPchem', -# #'BudgetConvectionPBL_TSOA3 ', 'GCHPchem', -# #'BudgetConvectionPBL_TSOA2 ', 'GCHPchem', -# #'BudgetConvectionPBL_TSOA1 ', 'GCHPchem', -# #'BudgetConvectionPBL_TSOA0 ', 'GCHPchem', -# #'BudgetConvectionPBL_ASOG3 ', 'GCHPchem', -# #'BudgetConvectionPBL_ASOG2 ', 'GCHPchem', -# #'BudgetConvectionPBL_ASOG1 ', 'GCHPchem', -# #'BudgetConvectionPBL_ASOAN ', 'GCHPchem', -# #'BudgetConvectionPBL_ASOA3 ', 'GCHPchem', -# #'BudgetConvectionPBL_ASOA2 ', 'GCHPchem', -# #'BudgetConvectionPBL_ASOA1 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_XYLE ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_TOLU ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SOAS ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SOAP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SOAIE ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SOAGX ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SO4s ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SO4 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SO2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SALCCl ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SALCAL ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SALC ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SALACl ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SALAAL ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_SALA ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_RP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_RIPD ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_RIPC ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_RIPB ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_RIPA ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_RCHO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_RB3P ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_RA3P ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_R4P ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_R4N2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_PYAC ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_PRPN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_PRPE ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_PROPNN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_PPN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_PP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_PIP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_pFe ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_PAN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_OIO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_OCS ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_OCPO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_OCPI ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_OClO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_O3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_NPRNO3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_NO3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_NO2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_NO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_NITs ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_NIT ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_NH4 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_NH3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_N2O5 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_N2O ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MVKPC ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MVKN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MVKHP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MVKHCB ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MVKHC ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MVKDH ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MVK ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MTPO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MTPA ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MSA ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MPN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MPAN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MONITU ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MONITS ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MONITA ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MOH ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MGLY ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MENO3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MEK ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MCRHP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MCRHNB ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MCRHN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MCRENOL ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MCRDH ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MAP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MACR1OOH ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_MACR ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_LVOCOA ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_LVOC ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_LIMO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ITHN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ITCN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ISOP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ISALC ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ISALA ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IPRNO3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IONO2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IONO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IONITA ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_INPD ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_INPB ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_INO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_INDIOL ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IHN4 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IHN3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IHN2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IHN1 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IEPOXD ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IEPOXB ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IEPOXA ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IDN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IDHPE ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IDHDP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IDCHP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IDC ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ICPDH ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ICN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ICl ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ICHE ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_IBr ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_I2O4 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_I2O3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_I2O2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_I2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_I ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HPETHNL ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HPALD4 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HPALD3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HPALD2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HPALD1 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HONIT ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HOI ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HOCl ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HOBr ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HNO4 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HNO3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HNO2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HMS ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HMML ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HMHP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HI ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HCOOH ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HCl ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HCFC22 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HCFC142b ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HCFC141b ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HCFC123 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HC5A ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HBr ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_HAC ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_H2O2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_H2O ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_H2402 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_H1301 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_H1211 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_GLYX ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_GLYC ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ETP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ETNO3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ETHP ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ETHN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ETHLN ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_EOH ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_DST4 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_DST3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_DST2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_DST1 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_DMS ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ClOO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ClO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ClNO3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ClNO2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_Cl2O2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_Cl2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_Cl ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CHCl3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CHBr3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CH4 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CH3I ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CH3Cl ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CH3CCl3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CH3Br ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CH2O ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CH2ICl ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CH2IBr ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CH2I2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CH2Cl2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CH2Br2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CFC12 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CFC115 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CFC114 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CFC113 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CFC11 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_CCl4 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_C3H8 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_C2H6 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_C2H4 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_C2H2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_BrSALC ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_BrSALA ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_BrO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_BrNO3 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_BrNO2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_BrCl ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_Br2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_Br ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_BENZ ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_BCPO ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_BCPI ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ATOOH ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ALK4 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ALD2 ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_AERI ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ACTA ', 'GCHPchem', -# 'BudgetConvectionLevs1to35_ACET ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_TSOG3 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_TSOG2 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_TSOG1 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_TSOG0 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_TSOA3 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_TSOA2 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_TSOA1 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_TSOA0 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_ASOG3 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_ASOG2 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_ASOG1 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_ASOAN ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_ASOA3 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_ASOA2 ', 'GCHPchem', -# #'BudgetConvectionLevs1to35_ASOA1 ', 'GCHPchem', -# 'BudgetConvectionTrop_XYLE ', 'GCHPchem', -# 'BudgetConvectionTrop_TOLU ', 'GCHPchem', -# 'BudgetConvectionTrop_SOAS ', 'GCHPchem', -# 'BudgetConvectionTrop_SOAP ', 'GCHPchem', -# 'BudgetConvectionTrop_SOAIE ', 'GCHPchem', -# 'BudgetConvectionTrop_SOAGX ', 'GCHPchem', -# 'BudgetConvectionTrop_SO4s ', 'GCHPchem', -# 'BudgetConvectionTrop_SO4 ', 'GCHPchem', -# 'BudgetConvectionTrop_SO2 ', 'GCHPchem', -# 'BudgetConvectionTrop_SALCCL ', 'GCHPchem', -# 'BudgetConvectionTrop_SALCAL ', 'GCHPchem', -# 'BudgetConvectionTrop_SALC ', 'GCHPchem', -# 'BudgetConvectionTrop_SALACL ', 'GCHPchem', -# 'BudgetConvectionTrop_SALAAL ', 'GCHPchem', -# 'BudgetConvectionTrop_SALA ', 'GCHPchem', -# 'BudgetConvectionTrop_RP ', 'GCHPchem', -# 'BudgetConvectionTrop_RIPD ', 'GCHPchem', -# 'BudgetConvectionTrop_RIPC ', 'GCHPchem', -# 'BudgetConvectionTrop_RIPB ', 'GCHPchem', -# 'BudgetConvectionTrop_RIPA ', 'GCHPchem', -# 'BudgetConvectionTrop_RCHO ', 'GCHPchem', -# 'BudgetConvectionTrop_RB3P ', 'GCHPchem', -# 'BudgetConvectionTrop_RA3P ', 'GCHPchem', -# 'BudgetConvectionTrop_R4P ', 'GCHPchem', -# 'BudgetConvectionTrop_R4N2 ', 'GCHPchem', -# 'BudgetConvectionTrop_PYAC ', 'GCHPchem', -# 'BudgetConvectionTrop_PRPN ', 'GCHPchem', -# 'BudgetConvectionTrop_PRPE ', 'GCHPchem', -# 'BudgetConvectionTrop_PROPNN ', 'GCHPchem', -# 'BudgetConvectionTrop_PPN ', 'GCHPchem', -# 'BudgetConvectionTrop_PP ', 'GCHPchem', -# 'BudgetConvectionTrop_PIP ', 'GCHPchem', -# 'BudgetConvectionTrop_pFe ', 'GCHPchem', -# 'BudgetConvectionTrop_PAN ', 'GCHPchem', -# 'BudgetConvectionTrop_OIO ', 'GCHPchem', -# 'BudgetConvectionTrop_OCS ', 'GCHPchem', -# 'BudgetConvectionTrop_OCPO ', 'GCHPchem', -# 'BudgetConvectionTrop_OCPI ', 'GCHPchem', -# 'BudgetConvectionTrop_OClO ', 'GCHPchem', -# 'BudgetConvectionTrop_O3 ', 'GCHPchem', -# 'BudgetConvectionTrop_NPRNO3 ', 'GCHPchem', -# 'BudgetConvectionTrop_NO3 ', 'GCHPchem', -# 'BudgetConvectionTrop_NO2 ', 'GCHPchem', -# 'BudgetConvectionTrop_NO ', 'GCHPchem', -# 'BudgetConvectionTrop_NITs ', 'GCHPchem', -# 'BudgetConvectionTrop_NIT ', 'GCHPchem', -# 'BudgetConvectionTrop_NH4 ', 'GCHPchem', -# 'BudgetConvectionTrop_NH3 ', 'GCHPchem', -# 'BudgetConvectionTrop_N2O5 ', 'GCHPchem', -# 'BudgetConvectionTrop_N2O ', 'GCHPchem', -# 'BudgetConvectionTrop_MVKPC ', 'GCHPchem', -# 'BudgetConvectionTrop_MVKN ', 'GCHPchem', -# 'BudgetConvectionTrop_MVKHP ', 'GCHPchem', -# 'BudgetConvectionTrop_MVKHCB ', 'GCHPchem', -# 'BudgetConvectionTrop_MVKHC ', 'GCHPchem', -# 'BudgetConvectionTrop_MVKDH ', 'GCHPchem', -# 'BudgetConvectionTrop_MVK ', 'GCHPchem', -# 'BudgetConvectionTrop_MTPO ', 'GCHPchem', -# 'BudgetConvectionTrop_MTPA ', 'GCHPchem', -# 'BudgetConvectionTrop_MSA ', 'GCHPchem', -# 'BudgetConvectionTrop_MPN ', 'GCHPchem', -# 'BudgetConvectionTrop_MPAN ', 'GCHPchem', -# 'BudgetConvectionTrop_MP ', 'GCHPchem', -# 'BudgetConvectionTrop_MONITU ', 'GCHPchem', -# 'BudgetConvectionTrop_MONITS ', 'GCHPchem', -# 'BudgetConvectionTrop_MONITA ', 'GCHPchem', -# 'BudgetConvectionTrop_MOH ', 'GCHPchem', -# 'BudgetConvectionTrop_MGLY ', 'GCHPchem', -# 'BudgetConvectionTrop_MENO3 ', 'GCHPchem', -# 'BudgetConvectionTrop_MEK ', 'GCHPchem', -# 'BudgetConvectionTrop_MCRHP ', 'GCHPchem', -# 'BudgetConvectionTrop_MCRHNB ', 'GCHPchem', -# 'BudgetConvectionTrop_MCRHN ', 'GCHPchem', -# 'BudgetConvectionTrop_MCRENOL ', 'GCHPchem', -# 'BudgetConvectionTrop_MCRDH ', 'GCHPchem', -# 'BudgetConvectionTrop_MAP ', 'GCHPchem', -# 'BudgetConvectionTrop_MACR1OOH ', 'GCHPchem', -# 'BudgetConvectionTrop_MACR ', 'GCHPchem', -# 'BudgetConvectionTrop_LVOCOA ', 'GCHPchem', -# 'BudgetConvectionTrop_LVOC ', 'GCHPchem', -# 'BudgetConvectionTrop_LIMO ', 'GCHPchem', -# 'BudgetConvectionTrop_ITHN ', 'GCHPchem', -# 'BudgetConvectionTrop_ITCN ', 'GCHPchem', -# 'BudgetConvectionTrop_ISOP ', 'GCHPchem', -# 'BudgetConvectionTrop_ISALC ', 'GCHPchem', -# 'BudgetConvectionTrop_ISALA ', 'GCHPchem', -# 'BudgetConvectionTrop_IPRNO3 ', 'GCHPchem', -# 'BudgetConvectionTrop_IONO2 ', 'GCHPchem', -# 'BudgetConvectionTrop_IONO ', 'GCHPchem', -# 'BudgetConvectionTrop_IONITA ', 'GCHPchem', -# 'BudgetConvectionTrop_IO ', 'GCHPchem', -# 'BudgetConvectionTrop_INPD ', 'GCHPchem', -# 'BudgetConvectionTrop_INPB ', 'GCHPchem', -# 'BudgetConvectionTrop_INO ', 'GCHPchem', -# 'BudgetConvectionTrop_INDIOL ', 'GCHPchem', -# 'BudgetConvectionTrop_IHN4 ', 'GCHPchem', -# 'BudgetConvectionTrop_IHN3 ', 'GCHPchem', -# 'BudgetConvectionTrop_IHN2 ', 'GCHPchem', -# 'BudgetConvectionTrop_IHN1 ', 'GCHPchem', -# 'BudgetConvectionTrop_IEPOXD ', 'GCHPchem', -# 'BudgetConvectionTrop_IEPOXB ', 'GCHPchem', -# 'BudgetConvectionTrop_IEPOXA ', 'GCHPchem', -# 'BudgetConvectionTrop_IDN ', 'GCHPchem', -# 'BudgetConvectionTrop_IDHPE ', 'GCHPchem', -# 'BudgetConvectionTrop_IDHDP ', 'GCHPchem', -# 'BudgetConvectionTrop_IDCHP ', 'GCHPchem', -# 'BudgetConvectionTrop_IDC ', 'GCHPchem', -# 'BudgetConvectionTrop_ICPDH ', 'GCHPchem', -# 'BudgetConvectionTrop_ICN ', 'GCHPchem', -# 'BudgetConvectionTrop_ICl ', 'GCHPchem', -# 'BudgetConvectionTrop_ICHE ', 'GCHPchem', -# 'BudgetConvectionTrop_IBr ', 'GCHPchem', -# 'BudgetConvectionTrop_I2O4 ', 'GCHPchem', -# 'BudgetConvectionTrop_I2O3 ', 'GCHPchem', -# 'BudgetConvectionTrop_I2O2 ', 'GCHPchem', -# 'BudgetConvectionTrop_I2 ', 'GCHPchem', -# 'BudgetConvectionTrop_I ', 'GCHPchem', -# 'BudgetConvectionTrop_HPETHNL ', 'GCHPchem', -# 'BudgetConvectionTrop_HPALD4 ', 'GCHPchem', -# 'BudgetConvectionTrop_HPALD3 ', 'GCHPchem', -# 'BudgetConvectionTrop_HPALD2 ', 'GCHPchem', -# 'BudgetConvectionTrop_HPALD1 ', 'GCHPchem', -# 'BudgetConvectionTrop_HONIT ', 'GCHPchem', -# 'BudgetConvectionTrop_HOI ', 'GCHPchem', -# 'BudgetConvectionTrop_HOCl ', 'GCHPchem', -# 'BudgetConvectionTrop_HOBr ', 'GCHPchem', -# 'BudgetConvectionTrop_HNO4 ', 'GCHPchem', -# 'BudgetConvectionTrop_HNO3 ', 'GCHPchem', -# 'BudgetConvectionTrop_HNO2 ', 'GCHPchem', -# 'BudgetConvectionTrop_HMS ', 'GCHPchem', -# 'BudgetConvectionTrop_HMML ', 'GCHPchem', -# 'BudgetConvectionTrop_HMHP ', 'GCHPchem', -# 'BudgetConvectionTrop_HI ', 'GCHPchem', -# 'BudgetConvectionTrop_HCOOH ', 'GCHPchem', -# 'BudgetConvectionTrop_HCl ', 'GCHPchem', -# 'BudgetConvectionTrop_HCFC22 ', 'GCHPchem', -# 'BudgetConvectionTrop_HCFC142b ', 'GCHPchem', -# 'BudgetConvectionTrop_HCFC141b ', 'GCHPchem', -# 'BudgetConvectionTrop_HCFC123 ', 'GCHPchem', -# 'BudgetConvectionTrop_HC5A ', 'GCHPchem', -# 'BudgetConvectionTrop_HBr ', 'GCHPchem', -# 'BudgetConvectionTrop_HAC ', 'GCHPchem', -# 'BudgetConvectionTrop_H2O2 ', 'GCHPchem', -# 'BudgetConvectionTrop_H2O ', 'GCHPchem', -# 'BudgetConvectionTrop_H2402 ', 'GCHPchem', -# 'BudgetConvectionTrop_H1301 ', 'GCHPchem', -# 'BudgetConvectionTrop_H1211 ', 'GCHPchem', -# 'BudgetConvectionTrop_GLYX ', 'GCHPchem', -# 'BudgetConvectionTrop_GLYC ', 'GCHPchem', -# 'BudgetConvectionTrop_ETP ', 'GCHPchem', -# 'BudgetConvectionTrop_ETNO3 ', 'GCHPchem', -# 'BudgetConvectionTrop_ETHP ', 'GCHPchem', -# 'BudgetConvectionTrop_ETHN ', 'GCHPchem', -# 'BudgetConvectionTrop_ETHLN ', 'GCHPchem', -# 'BudgetConvectionTrop_EOH ', 'GCHPchem', -# 'BudgetConvectionTrop_DST4 ', 'GCHPchem', -# 'BudgetConvectionTrop_DST3 ', 'GCHPchem', -# 'BudgetConvectionTrop_DST2 ', 'GCHPchem', -# 'BudgetConvectionTrop_DST1 ', 'GCHPchem', -# 'BudgetConvectionTrop_DMS ', 'GCHPchem', -# 'BudgetConvectionTrop_CO ', 'GCHPchem', -# 'BudgetConvectionTrop_ClOO ', 'GCHPchem', -# 'BudgetConvectionTrop_ClO ', 'GCHPchem', -# 'BudgetConvectionTrop_ClNO3 ', 'GCHPchem', -# 'BudgetConvectionTrop_ClNO2 ', 'GCHPchem', -# 'BudgetConvectionTrop_Cl2O2 ', 'GCHPchem', -# 'BudgetConvectionTrop_Cl2 ', 'GCHPchem', -# 'BudgetConvectionTrop_Cl ', 'GCHPchem', -# 'BudgetConvectionTrop_CHCl3 ', 'GCHPchem', -# 'BudgetConvectionTrop_CHBr3 ', 'GCHPchem', -# 'BudgetConvectionTrop_CH4 ', 'GCHPchem', -# 'BudgetConvectionTrop_CH3I ', 'GCHPchem', -# 'BudgetConvectionTrop_CH3Cl ', 'GCHPchem', -# 'BudgetConvectionTrop_CH3CCl3 ', 'GCHPchem', -# 'BudgetConvectionTrop_CH3Br ', 'GCHPchem', -# 'BudgetConvectionTrop_CH2O ', 'GCHPchem', -# 'BudgetConvectionTrop_CH2ICl ', 'GCHPchem', -# 'BudgetConvectionTrop_CH2IBr ', 'GCHPchem', -# 'BudgetConvectionTrop_CH2I2 ', 'GCHPchem', -# 'BudgetConvectionTrop_CH2Cl2 ', 'GCHPchem', -# 'BudgetConvectionTrop_CH2Br2 ', 'GCHPchem', -# 'BudgetConvectionTrop_CFC12 ', 'GCHPchem', -# 'BudgetConvectionTrop_CFC115 ', 'GCHPchem', -# 'BudgetConvectionTrop_CFC114 ', 'GCHPchem', -# 'BudgetConvectionTrop_CFC113 ', 'GCHPchem', -# 'BudgetConvectionTrop_CFC11 ', 'GCHPchem', -# 'BudgetConvectionTrop_CCl4 ', 'GCHPchem', -# 'BudgetConvectionTrop_C3H8 ', 'GCHPchem', -# 'BudgetConvectionTrop_C2H6 ', 'GCHPchem', -# 'BudgetConvectionTrop_C2H4 ', 'GCHPchem', -# 'BudgetConvectionTrop_C2H2 ', 'GCHPchem', -# 'BudgetConvectionTrop_BrSALC ', 'GCHPchem', -# 'BudgetConvectionTrop_BrSALA ', 'GCHPchem', -# 'BudgetConvectionTrop_BrO ', 'GCHPchem', -# 'BudgetConvectionTrop_BrNO3 ', 'GCHPchem', -# 'BudgetConvectionTrop_BrNO2 ', 'GCHPchem', -# 'BudgetConvectionTrop_BrCl ', 'GCHPchem', -# 'BudgetConvectionTrop_Br2 ', 'GCHPchem', -# 'BudgetConvectionTrop_Br ', 'GCHPchem', -# 'BudgetConvectionTrop_BENZ ', 'GCHPchem', -# 'BudgetConvectionTrop_BCPO ', 'GCHPchem', -# 'BudgetConvectionTrop_BCPI ', 'GCHPchem', -# 'BudgetConvectionTrop_ATOOH ', 'GCHPchem', -# 'BudgetConvectionTrop_ALK4 ', 'GCHPchem', -# 'BudgetConvectionTrop_ALD2 ', 'GCHPchem', -# 'BudgetConvectionTrop_AERI ', 'GCHPchem', -# 'BudgetConvectionTrop_ACTA ', 'GCHPchem', -# 'BudgetConvectionTrop_ACET ', 'GCHPchem', -# #'BudgetConvectionTrop_TSOG3 ', 'GCHPchem', -# #'BudgetConvectionTrop_TSOG2 ', 'GCHPchem', -# #'BudgetConvectionTrop_TSOG1 ', 'GCHPchem', -# #'BudgetConvectionTrop_TSOG0 ', 'GCHPchem', -# #'BudgetConvectionTrop_TSOA3 ', 'GCHPchem', -# #'BudgetConvectionTrop_TSOA2 ', 'GCHPchem', -# #'BudgetConvectionTrop_TSOA1 ', 'GCHPchem', -# #'BudgetConvectionTrop_TSOA0 ', 'GCHPchem', -# #'BudgetConvectionTrop_ASOG3 ', 'GCHPchem', -# #'BudgetConvectionTrop_ASOG2 ', 'GCHPchem', -# #'BudgetConvectionTrop_ASOG1 ', 'GCHPchem', -# #'BudgetConvectionTrop_ASOAN ', 'GCHPchem', -# #'BudgetConvectionTrop_ASOA3 ', 'GCHPchem', -# #'BudgetConvectionTrop_ASOA2 ', 'GCHPchem', -# #'BudgetConvectionTrop_ASOA1 ', 'GCHPchem', -# 'BudgetConvectionFull_XYLE ', 'GCHPchem', -# 'BudgetConvectionFull_TOLU ', 'GCHPchem', -# 'BudgetConvectionFull_SOAS ', 'GCHPchem', -# 'BudgetConvectionFull_SOAP ', 'GCHPchem', -# 'BudgetConvectionFull_SOAIE ', 'GCHPchem', -# 'BudgetConvectionFull_SOAGX ', 'GCHPchem', -# 'BudgetConvectionFull_SO4s ', 'GCHPchem', -# 'BudgetConvectionFull_SO4 ', 'GCHPchem', -# 'BudgetConvectionFull_SO2 ', 'GCHPchem', -# 'BudgetConvectionFull_SALCCL ', 'GCHPchem', -# 'BudgetConvectionFull_SALCAL ', 'GCHPchem', -# 'BudgetConvectionFull_SALC ', 'GCHPchem', -# 'BudgetConvectionFull_SALACL ', 'GCHPchem', -# 'BudgetConvectionFull_SALAAL ', 'GCHPchem', -# 'BudgetConvectionFull_SALA ', 'GCHPchem', -# 'BudgetConvectionFull_RP ', 'GCHPchem', -# 'BudgetConvectionFull_RIPD ', 'GCHPchem', -# 'BudgetConvectionFull_RIPC ', 'GCHPchem', -# 'BudgetConvectionFull_RIPB ', 'GCHPchem', -# 'BudgetConvectionFull_RIPA ', 'GCHPchem', -# 'BudgetConvectionFull_RCHO ', 'GCHPchem', -# 'BudgetConvectionFull_RB3P ', 'GCHPchem', -# 'BudgetConvectionFull_RA3P ', 'GCHPchem', -# 'BudgetConvectionFull_R4P ', 'GCHPchem', -# 'BudgetConvectionFull_R4N2 ', 'GCHPchem', -# 'BudgetConvectionFull_PYAC ', 'GCHPchem', -# 'BudgetConvectionFull_PRPN ', 'GCHPchem', -# 'BudgetConvectionFull_PRPE ', 'GCHPchem', -# 'BudgetConvectionFull_PROPNN ', 'GCHPchem', -# 'BudgetConvectionFull_PPN ', 'GCHPchem', -# 'BudgetConvectionFull_PP ', 'GCHPchem', -# 'BudgetConvectionFull_PIP ', 'GCHPchem', -# 'BudgetConvectionFull_pFe ', 'GCHPchem', -# 'BudgetConvectionFull_PAN ', 'GCHPchem', -# 'BudgetConvectionFull_OIO ', 'GCHPchem', -# 'BudgetConvectionFull_OCS ', 'GCHPchem', -# 'BudgetConvectionFull_OCPO ', 'GCHPchem', -# 'BudgetConvectionFull_OCPI ', 'GCHPchem', -# 'BudgetConvectionFull_OClO ', 'GCHPchem', -# 'BudgetConvectionFull_O3 ', 'GCHPchem', -# 'BudgetConvectionFull_NPRNO3 ', 'GCHPchem', -# 'BudgetConvectionFull_NO3 ', 'GCHPchem', -# 'BudgetConvectionFull_NO2 ', 'GCHPchem', -# 'BudgetConvectionFull_NO ', 'GCHPchem', -# 'BudgetConvectionFull_NITs ', 'GCHPchem', -# 'BudgetConvectionFull_NIT ', 'GCHPchem', -# 'BudgetConvectionFull_NH4 ', 'GCHPchem', -# 'BudgetConvectionFull_NH3 ', 'GCHPchem', -# 'BudgetConvectionFull_N2O5 ', 'GCHPchem', -# 'BudgetConvectionFull_N2O ', 'GCHPchem', -# 'BudgetConvectionFull_MVKPC ', 'GCHPchem', -# 'BudgetConvectionFull_MVKN ', 'GCHPchem', -# 'BudgetConvectionFull_MVKHP ', 'GCHPchem', -# 'BudgetConvectionFull_MVKHCB ', 'GCHPchem', -# 'BudgetConvectionFull_MVKHC ', 'GCHPchem', -# 'BudgetConvectionFull_MVKDH ', 'GCHPchem', -# 'BudgetConvectionFull_MVK ', 'GCHPchem', -# 'BudgetConvectionFull_MTPO ', 'GCHPchem', -# 'BudgetConvectionFull_MTPA ', 'GCHPchem', -# 'BudgetConvectionFull_MSA ', 'GCHPchem', -# 'BudgetConvectionFull_MPN ', 'GCHPchem', -# 'BudgetConvectionFull_MPAN ', 'GCHPchem', -# 'BudgetConvectionFull_MP ', 'GCHPchem', -# 'BudgetConvectionFull_MONITU ', 'GCHPchem', -# 'BudgetConvectionFull_MONITS ', 'GCHPchem', -# 'BudgetConvectionFull_MONITA ', 'GCHPchem', -# 'BudgetConvectionFull_MOH ', 'GCHPchem', -# 'BudgetConvectionFull_MGLY ', 'GCHPchem', -# 'BudgetConvectionFull_MENO3 ', 'GCHPchem', -# 'BudgetConvectionFull_MEK ', 'GCHPchem', -# 'BudgetConvectionFull_MCRHP ', 'GCHPchem', -# 'BudgetConvectionFull_MCRHNB ', 'GCHPchem', -# 'BudgetConvectionFull_MCRHN ', 'GCHPchem', -# 'BudgetConvectionFull_MCRENOL ', 'GCHPchem', -# 'BudgetConvectionFull_MCRDH ', 'GCHPchem', -# 'BudgetConvectionFull_MAP ', 'GCHPchem', -# 'BudgetConvectionFull_MACR1OOH ', 'GCHPchem', -# 'BudgetConvectionFull_MACR ', 'GCHPchem', -# 'BudgetConvectionFull_LVOCOA ', 'GCHPchem', -# 'BudgetConvectionFull_LVOC ', 'GCHPchem', -# 'BudgetConvectionFull_LIMO ', 'GCHPchem', -# 'BudgetConvectionFull_ITHN ', 'GCHPchem', -# 'BudgetConvectionFull_ITCN ', 'GCHPchem', -# 'BudgetConvectionFull_ISOP ', 'GCHPchem', -# 'BudgetConvectionFull_ISALC ', 'GCHPchem', -# 'BudgetConvectionFull_ISALA ', 'GCHPchem', -# 'BudgetConvectionFull_IPRNO3 ', 'GCHPchem', -# 'BudgetConvectionFull_IONO2 ', 'GCHPchem', -# 'BudgetConvectionFull_IONO ', 'GCHPchem', -# 'BudgetConvectionFull_IONITA ', 'GCHPchem', -# 'BudgetConvectionFull_IO ', 'GCHPchem', -# 'BudgetConvectionFull_INPD ', 'GCHPchem', -# 'BudgetConvectionFull_INPB ', 'GCHPchem', -# 'BudgetConvectionFull_INO ', 'GCHPchem', -# 'BudgetConvectionFull_INDIOL ', 'GCHPchem', -# 'BudgetConvectionFull_IHN4 ', 'GCHPchem', -# 'BudgetConvectionFull_IHN3 ', 'GCHPchem', -# 'BudgetConvectionFull_IHN2 ', 'GCHPchem', -# 'BudgetConvectionFull_IHN1 ', 'GCHPchem', -# 'BudgetConvectionFull_IEPOXD ', 'GCHPchem', -# 'BudgetConvectionFull_IEPOXB ', 'GCHPchem', -# 'BudgetConvectionFull_IEPOXA ', 'GCHPchem', -# 'BudgetConvectionFull_IDN ', 'GCHPchem', -# 'BudgetConvectionFull_IDHPE ', 'GCHPchem', -# 'BudgetConvectionFull_IDHDP ', 'GCHPchem', -# 'BudgetConvectionFull_IDCHP ', 'GCHPchem', -# 'BudgetConvectionFull_IDC ', 'GCHPchem', -# 'BudgetConvectionFull_ICPDH ', 'GCHPchem', -# 'BudgetConvectionFull_ICN ', 'GCHPchem', -# 'BudgetConvectionFull_ICl ', 'GCHPchem', -# 'BudgetConvectionFull_ICHE ', 'GCHPchem', -# 'BudgetConvectionFull_IBr ', 'GCHPchem', -# 'BudgetConvectionFull_I2O4 ', 'GCHPchem', -# 'BudgetConvectionFull_I2O3 ', 'GCHPchem', -# 'BudgetConvectionFull_I2O2 ', 'GCHPchem', -# 'BudgetConvectionFull_I2 ', 'GCHPchem', -# 'BudgetConvectionFull_I ', 'GCHPchem', -# 'BudgetConvectionFull_HPETHNL ', 'GCHPchem', -# 'BudgetConvectionFull_HPALD4 ', 'GCHPchem', -# 'BudgetConvectionFull_HPALD3 ', 'GCHPchem', -# 'BudgetConvectionFull_HPALD2 ', 'GCHPchem', -# 'BudgetConvectionFull_HPALD1 ', 'GCHPchem', -# 'BudgetConvectionFull_HONIT ', 'GCHPchem', -# 'BudgetConvectionFull_HOI ', 'GCHPchem', -# 'BudgetConvectionFull_HOCl ', 'GCHPchem', -# 'BudgetConvectionFull_HOBr ', 'GCHPchem', -# 'BudgetConvectionFull_HNO4 ', 'GCHPchem', -# 'BudgetConvectionFull_HNO3 ', 'GCHPchem', -# 'BudgetConvectionFull_HNO2 ', 'GCHPchem', -# 'BudgetConvectionFull_HMML ', 'GCHPchem', -# 'BudgetConvectionFull_HMS ', 'GCHPchem', -# 'BudgetConvectionFull_HMHP ', 'GCHPchem', -# 'BudgetConvectionFull_HI ', 'GCHPchem', -# 'BudgetConvectionFull_HCOOH ', 'GCHPchem', -# 'BudgetConvectionFull_HCl ', 'GCHPchem', -# 'BudgetConvectionFull_HCFC22 ', 'GCHPchem', -# 'BudgetConvectionFull_HCFC142b ', 'GCHPchem', -# 'BudgetConvectionFull_HCFC141b ', 'GCHPchem', -# 'BudgetConvectionFull_HCFC123 ', 'GCHPchem', -# 'BudgetConvectionFull_HC5A ', 'GCHPchem', -# 'BudgetConvectionFull_HBr ', 'GCHPchem', -# 'BudgetConvectionFull_HAC ', 'GCHPchem', -# 'BudgetConvectionFull_H2O2 ', 'GCHPchem', -# 'BudgetConvectionFull_H2O ', 'GCHPchem', -# 'BudgetConvectionFull_H2402 ', 'GCHPchem', -# 'BudgetConvectionFull_H1301 ', 'GCHPchem', -# 'BudgetConvectionFull_H1211 ', 'GCHPchem', -# 'BudgetConvectionFull_GLYX ', 'GCHPchem', -# 'BudgetConvectionFull_GLYC ', 'GCHPchem', -# 'BudgetConvectionFull_ETP ', 'GCHPchem', -# 'BudgetConvectionFull_ETNO3 ', 'GCHPchem', -# 'BudgetConvectionFull_ETHP ', 'GCHPchem', -# 'BudgetConvectionFull_ETHN ', 'GCHPchem', -# 'BudgetConvectionFull_ETHLN ', 'GCHPchem', -# 'BudgetConvectionFull_EOH ', 'GCHPchem', -# 'BudgetConvectionFull_DST4 ', 'GCHPchem', -# 'BudgetConvectionFull_DST3 ', 'GCHPchem', -# 'BudgetConvectionFull_DST2 ', 'GCHPchem', -# 'BudgetConvectionFull_DST1 ', 'GCHPchem', -# 'BudgetConvectionFull_DMS ', 'GCHPchem', -# 'BudgetConvectionFull_CO ', 'GCHPchem', -# 'BudgetConvectionFull_ClOO ', 'GCHPchem', -# 'BudgetConvectionFull_ClO ', 'GCHPchem', -# 'BudgetConvectionFull_ClNO3 ', 'GCHPchem', -# 'BudgetConvectionFull_ClNO2 ', 'GCHPchem', -# 'BudgetConvectionFull_Cl2O2 ', 'GCHPchem', -# 'BudgetConvectionFull_Cl2 ', 'GCHPchem', -# 'BudgetConvectionFull_Cl ', 'GCHPchem', -# 'BudgetConvectionFull_CHCl3 ', 'GCHPchem', -# 'BudgetConvectionFull_CHBr3 ', 'GCHPchem', -# 'BudgetConvectionFull_CH4 ', 'GCHPchem', -# 'BudgetConvectionFull_CH3I ', 'GCHPchem', -# 'BudgetConvectionFull_CH3Cl ', 'GCHPchem', -# 'BudgetConvectionFull_CH3CCl3 ', 'GCHPchem', -# 'BudgetConvectionFull_CH3Br ', 'GCHPchem', -# 'BudgetConvectionFull_CH2O ', 'GCHPchem', -# 'BudgetConvectionFull_CH2ICl ', 'GCHPchem', -# 'BudgetConvectionFull_CH2IBr ', 'GCHPchem', -# 'BudgetConvectionFull_CH2I2 ', 'GCHPchem', -# 'BudgetConvectionFull_CH2Cl2 ', 'GCHPchem', -# 'BudgetConvectionFull_CH2Br2 ', 'GCHPchem', -# 'BudgetConvectionFull_CFC12 ', 'GCHPchem', -# 'BudgetConvectionFull_CFC115 ', 'GCHPchem', -# 'BudgetConvectionFull_CFC114 ', 'GCHPchem', -# 'BudgetConvectionFull_CFC113 ', 'GCHPchem', -# 'BudgetConvectionFull_CFC11 ', 'GCHPchem', -# 'BudgetConvectionFull_CCl4 ', 'GCHPchem', -# 'BudgetConvectionFull_C3H8 ', 'GCHPchem', -# 'BudgetConvectionFull_C2H6 ', 'GCHPchem', -# 'BudgetConvectionFull_C2H4 ', 'GCHPchem', -# 'BudgetConvectionFull_C2H2 ', 'GCHPchem', -# 'BudgetConvectionFull_BrSALC ', 'GCHPchem', -# 'BudgetConvectionFull_BrSALA ', 'GCHPchem', -# 'BudgetConvectionFull_BrO ', 'GCHPchem', -# 'BudgetConvectionFull_BrNO3 ', 'GCHPchem', -# 'BudgetConvectionFull_BrNO2 ', 'GCHPchem', -# 'BudgetConvectionFull_BrCl ', 'GCHPchem', -# 'BudgetConvectionFull_Br2 ', 'GCHPchem', -# 'BudgetConvectionFull_Br ', 'GCHPchem', -# 'BudgetConvectionFull_BENZ ', 'GCHPchem', -# 'BudgetConvectionFull_BCPO ', 'GCHPchem', -# 'BudgetConvectionFull_BCPI ', 'GCHPchem', -# 'BudgetConvectionFull_ATOOH ', 'GCHPchem', -# 'BudgetConvectionFull_ALK4 ', 'GCHPchem', -# 'BudgetConvectionFull_ALD2 ', 'GCHPchem', -# 'BudgetConvectionFull_AERI ', 'GCHPchem', -# 'BudgetConvectionFull_ACTA ', 'GCHPchem', -# 'BudgetConvectionFull_ACET ', 'GCHPchem', -# #'BudgetConvectionFull_TSOG3 ', 'GCHPchem', -# #'BudgetConvectionFull_TSOG2 ', 'GCHPchem', -# #'BudgetConvectionFull_TSOG1 ', 'GCHPchem', -# #'BudgetConvectionFull_TSOG0 ', 'GCHPchem', -# #'BudgetConvectionFull_TSOA3 ', 'GCHPchem', -# #'BudgetConvectionFull_TSOA2 ', 'GCHPchem', -# #'BudgetConvectionFull_TSOA1 ', 'GCHPchem', -# #'BudgetConvectionFull_TSOA0 ', 'GCHPchem', -# #'BudgetConvectionFull_ASOG3 ', 'GCHPchem', -# #'BudgetConvectionFull_ASOG2 ', 'GCHPchem', -# #'BudgetConvectionFull_ASOG1 ', 'GCHPchem', -# #'BudgetConvectionFull_ASOAN ', 'GCHPchem', -# #'BudgetConvectionFull_ASOA3 ', 'GCHPchem', -# #'BudgetConvectionFull_ASOA2 ', 'GCHPchem', -# #'BudgetConvectionFull_ASOA1 ', 'GCHPchem', -# 'BudgetMixingPBL_XYLE ', 'GCHPchem', -# 'BudgetMixingPBL_TOLU ', 'GCHPchem', -# 'BudgetMixingPBL_SOAS ', 'GCHPchem', -# 'BudgetMixingPBL_SOAP ', 'GCHPchem', -# 'BudgetMixingPBL_SOAIE ', 'GCHPchem', -# 'BudgetMixingPBL_SOAGX ', 'GCHPchem', -# 'BudgetMixingPBL_SO4s ', 'GCHPchem', -# 'BudgetMixingPBL_SO4 ', 'GCHPchem', -# 'BudgetMixingPBL_SO2 ', 'GCHPchem', -# 'BudgetMixingPBL_SALCCL ', 'GCHPchem', -# 'BudgetMixingPBL_SALCAL ', 'GCHPchem', -# 'BudgetMixingPBL_SALC ', 'GCHPchem', -# 'BudgetMixingPBL_SALACL ', 'GCHPchem', -# 'BudgetMixingPBL_SALAAL ', 'GCHPchem', -# 'BudgetMixingPBL_SALA ', 'GCHPchem', -# 'BudgetMixingPBL_RP ', 'GCHPchem', -# 'BudgetMixingPBL_RIPD ', 'GCHPchem', -# 'BudgetMixingPBL_RIPC ', 'GCHPchem', -# 'BudgetMixingPBL_RIPB ', 'GCHPchem', -# 'BudgetMixingPBL_RIPA ', 'GCHPchem', -# 'BudgetMixingPBL_RCHO ', 'GCHPchem', -# 'BudgetMixingPBL_RB3P ', 'GCHPchem', -# 'BudgetMixingPBL_RA3P ', 'GCHPchem', -# 'BudgetMixingPBL_R4P ', 'GCHPchem', -# 'BudgetMixingPBL_R4N2 ', 'GCHPchem', -# 'BudgetMixingPBL_PYAC ', 'GCHPchem', -# 'BudgetMixingPBL_PRPN ', 'GCHPchem', -# 'BudgetMixingPBL_PRPE ', 'GCHPchem', -# 'BudgetMixingPBL_PROPNN ', 'GCHPchem', -# 'BudgetMixingPBL_PPN ', 'GCHPchem', -# 'BudgetMixingPBL_PP ', 'GCHPchem', -# 'BudgetMixingPBL_PIP ', 'GCHPchem', -# 'BudgetMixingPBL_pFe ', 'GCHPchem', -# 'BudgetMixingPBL_PAN ', 'GCHPchem', -# 'BudgetMixingPBL_OIO ', 'GCHPchem', -# 'BudgetMixingPBL_OCS ', 'GCHPchem', -# 'BudgetMixingPBL_OCPO ', 'GCHPchem', -# 'BudgetMixingPBL_OCPI ', 'GCHPchem', -# 'BudgetMixingPBL_OClO ', 'GCHPchem', -# 'BudgetMixingPBL_O3 ', 'GCHPchem', -# 'BudgetMixingPBL_NPRNO3 ', 'GCHPchem', -# 'BudgetMixingPBL_NO3 ', 'GCHPchem', -# 'BudgetMixingPBL_NO2 ', 'GCHPchem', -# 'BudgetMixingPBL_NO ', 'GCHPchem', -# 'BudgetMixingPBL_NITs ', 'GCHPchem', -# 'BudgetMixingPBL_NIT ', 'GCHPchem', -# 'BudgetMixingPBL_NH4 ', 'GCHPchem', -# 'BudgetMixingPBL_NH3 ', 'GCHPchem', -# 'BudgetMixingPBL_N2O5 ', 'GCHPchem', -# 'BudgetMixingPBL_N2O ', 'GCHPchem', -# 'BudgetMixingPBL_MVKPC ', 'GCHPchem', -# 'BudgetMixingPBL_MVKN ', 'GCHPchem', -# 'BudgetMixingPBL_MVKHP ', 'GCHPchem', -# 'BudgetMixingPBL_MVKHCB ', 'GCHPchem', -# 'BudgetMixingPBL_MVKHC ', 'GCHPchem', -# 'BudgetMixingPBL_MVKDH ', 'GCHPchem', -# 'BudgetMixingPBL_MVK ', 'GCHPchem', -# 'BudgetMixingPBL_MTPO ', 'GCHPchem', -# 'BudgetMixingPBL_MTPA ', 'GCHPchem', -# 'BudgetMixingPBL_MSA ', 'GCHPchem', -# 'BudgetMixingPBL_MPN ', 'GCHPchem', -# 'BudgetMixingPBL_MPAN ', 'GCHPchem', -# 'BudgetMixingPBL_MP ', 'GCHPchem', -# 'BudgetMixingPBL_MONITU ', 'GCHPchem', -# 'BudgetMixingPBL_MONITS ', 'GCHPchem', -# 'BudgetMixingPBL_MONITA ', 'GCHPchem', -# 'BudgetMixingPBL_MOH ', 'GCHPchem', -# 'BudgetMixingPBL_MGLY ', 'GCHPchem', -# 'BudgetMixingPBL_MENO3 ', 'GCHPchem', -# 'BudgetMixingPBL_MEK ', 'GCHPchem', -# 'BudgetMixingPBL_MCRHP ', 'GCHPchem', -# 'BudgetMixingPBL_MCRHNB ', 'GCHPchem', -# 'BudgetMixingPBL_MCRHN ', 'GCHPchem', -# 'BudgetMixingPBL_MCRENOL ', 'GCHPchem', -# 'BudgetMixingPBL_MCRDH ', 'GCHPchem', -# 'BudgetMixingPBL_MAP ', 'GCHPchem', -# 'BudgetMixingPBL_MACR1OOH ', 'GCHPchem', -# 'BudgetMixingPBL_MACR ', 'GCHPchem', -# 'BudgetMixingPBL_LVOCOA ', 'GCHPchem', -# 'BudgetMixingPBL_LVOC ', 'GCHPchem', -# 'BudgetMixingPBL_LIMO ', 'GCHPchem', -# 'BudgetMixingPBL_ITHN ', 'GCHPchem', -# 'BudgetMixingPBL_ITCN ', 'GCHPchem', -# 'BudgetMixingPBL_ISOP ', 'GCHPchem', -# 'BudgetMixingPBL_ISALC ', 'GCHPchem', -# 'BudgetMixingPBL_ISALA ', 'GCHPchem', -# 'BudgetMixingPBL_IPRNO3 ', 'GCHPchem', -# 'BudgetMixingPBL_IONO2 ', 'GCHPchem', -# 'BudgetMixingPBL_IONO ', 'GCHPchem', -# 'BudgetMixingPBL_IONITA ', 'GCHPchem', -# 'BudgetMixingPBL_IO ', 'GCHPchem', -# 'BudgetMixingPBL_INPD ', 'GCHPchem', -# 'BudgetMixingPBL_INPB ', 'GCHPchem', -# 'BudgetMixingPBL_INO ', 'GCHPchem', -# 'BudgetMixingPBL_INDIOL ', 'GCHPchem', -# 'BudgetMixingPBL_IHN4 ', 'GCHPchem', -# 'BudgetMixingPBL_IHN3 ', 'GCHPchem', -# 'BudgetMixingPBL_IHN2 ', 'GCHPchem', -# 'BudgetMixingPBL_IHN1 ', 'GCHPchem', -# 'BudgetMixingPBL_IEPOXD ', 'GCHPchem', -# 'BudgetMixingPBL_IEPOXB ', 'GCHPchem', -# 'BudgetMixingPBL_IEPOXA ', 'GCHPchem', -# 'BudgetMixingPBL_IDN ', 'GCHPchem', -# 'BudgetMixingPBL_IDHPE ', 'GCHPchem', -# 'BudgetMixingPBL_IDHDP ', 'GCHPchem', -# 'BudgetMixingPBL_IDCHP ', 'GCHPchem', -# 'BudgetMixingPBL_IDC ', 'GCHPchem', -# 'BudgetMixingPBL_ICPDH ', 'GCHPchem', -# 'BudgetMixingPBL_ICN ', 'GCHPchem', -# 'BudgetMixingPBL_ICl ', 'GCHPchem', -# 'BudgetMixingPBL_ICHE ', 'GCHPchem', -# 'BudgetMixingPBL_IBr ', 'GCHPchem', -# 'BudgetMixingPBL_I2O4 ', 'GCHPchem', -# 'BudgetMixingPBL_I2O3 ', 'GCHPchem', -# 'BudgetMixingPBL_I2O2 ', 'GCHPchem', -# 'BudgetMixingPBL_I2 ', 'GCHPchem', -# 'BudgetMixingPBL_I ', 'GCHPchem', -# 'BudgetMixingPBL_HPETHNL ', 'GCHPchem', -# 'BudgetMixingPBL_HPALD4 ', 'GCHPchem', -# 'BudgetMixingPBL_HPALD3 ', 'GCHPchem', -# 'BudgetMixingPBL_HPALD2 ', 'GCHPchem', -# 'BudgetMixingPBL_HPALD1 ', 'GCHPchem', -# 'BudgetMixingPBL_HONIT ', 'GCHPchem', -# 'BudgetMixingPBL_HOI ', 'GCHPchem', -# 'BudgetMixingPBL_HOCl ', 'GCHPchem', -# 'BudgetMixingPBL_HOBr ', 'GCHPchem', -# 'BudgetMixingPBL_HNO4 ', 'GCHPchem', -# 'BudgetMixingPBL_HNO3 ', 'GCHPchem', -# 'BudgetMixingPBL_HNO2 ', 'GCHPchem', -# 'BudgetMixingPBL_HMS ', 'GCHPchem', -# 'BudgetMixingPBL_HMML ', 'GCHPchem', -# 'BudgetMixingPBL_HMHP ', 'GCHPchem', -# 'BudgetMixingPBL_HI ', 'GCHPchem', -# 'BudgetMixingPBL_HCOOH ', 'GCHPchem', -# 'BudgetMixingPBL_HCl ', 'GCHPchem', -# 'BudgetMixingPBL_HCFC22 ', 'GCHPchem', -# 'BudgetMixingPBL_HCFC142b ', 'GCHPchem', -# 'BudgetMixingPBL_HCFC141b ', 'GCHPchem', -# 'BudgetMixingPBL_HCFC123 ', 'GCHPchem', -# 'BudgetMixingPBL_HC5A ', 'GCHPchem', -# 'BudgetMixingPBL_HBr ', 'GCHPchem', -# 'BudgetMixingPBL_HAC ', 'GCHPchem', -# 'BudgetMixingPBL_H2O2 ', 'GCHPchem', -# 'BudgetMixingPBL_H2O ', 'GCHPchem', -# 'BudgetMixingPBL_H2402 ', 'GCHPchem', -# 'BudgetMixingPBL_H1301 ', 'GCHPchem', -# 'BudgetMixingPBL_H1211 ', 'GCHPchem', -# 'BudgetMixingPBL_GLYX ', 'GCHPchem', -# 'BudgetMixingPBL_GLYC ', 'GCHPchem', -# 'BudgetMixingPBL_ETP ', 'GCHPchem', -# 'BudgetMixingPBL_ETNO3 ', 'GCHPchem', -# 'BudgetMixingPBL_ETHP ', 'GCHPchem', -# 'BudgetMixingPBL_ETHN ', 'GCHPchem', -# 'BudgetMixingPBL_ETHLN ', 'GCHPchem', -# 'BudgetMixingPBL_EOH ', 'GCHPchem', -# 'BudgetMixingPBL_DST4 ', 'GCHPchem', -# 'BudgetMixingPBL_DST3 ', 'GCHPchem', -# 'BudgetMixingPBL_DST2 ', 'GCHPchem', -# 'BudgetMixingPBL_DST1 ', 'GCHPchem', -# 'BudgetMixingPBL_DMS ', 'GCHPchem', -# 'BudgetMixingPBL_CO ', 'GCHPchem', -# 'BudgetMixingPBL_ClOO ', 'GCHPchem', -# 'BudgetMixingPBL_ClO ', 'GCHPchem', -# 'BudgetMixingPBL_ClNO3 ', 'GCHPchem', -# 'BudgetMixingPBL_ClNO2 ', 'GCHPchem', -# 'BudgetMixingPBL_Cl2O2 ', 'GCHPchem', -# 'BudgetMixingPBL_Cl2 ', 'GCHPchem', -# 'BudgetMixingPBL_Cl ', 'GCHPchem', -# 'BudgetMixingPBL_CHCl3 ', 'GCHPchem', -# 'BudgetMixingPBL_CHBr3 ', 'GCHPchem', -# 'BudgetMixingPBL_CH4 ', 'GCHPchem', -# 'BudgetMixingPBL_CH3I ', 'GCHPchem', -# 'BudgetMixingPBL_CH3Cl ', 'GCHPchem', -# 'BudgetMixingPBL_CH3CCl3 ', 'GCHPchem', -# 'BudgetMixingPBL_CH3Br ', 'GCHPchem', -# 'BudgetMixingPBL_CH2O ', 'GCHPchem', -# 'BudgetMixingPBL_CH2ICl ', 'GCHPchem', -# 'BudgetMixingPBL_CH2IBr ', 'GCHPchem', -# 'BudgetMixingPBL_CH2I2 ', 'GCHPchem', -# 'BudgetMixingPBL_CH2Cl2 ', 'GCHPchem', -# 'BudgetMixingPBL_CH2Br2 ', 'GCHPchem', -# 'BudgetMixingPBL_CFC12 ', 'GCHPchem', -# 'BudgetMixingPBL_CFC115 ', 'GCHPchem', -# 'BudgetMixingPBL_CFC114 ', 'GCHPchem', -# 'BudgetMixingPBL_CFC113 ', 'GCHPchem', -# 'BudgetMixingPBL_CFC11 ', 'GCHPchem', -# 'BudgetMixingPBL_CCl4 ', 'GCHPchem', -# 'BudgetMixingPBL_C3H8 ', 'GCHPchem', -# 'BudgetMixingPBL_C2H6 ', 'GCHPchem', -# 'BudgetMixingPBL_C2H4 ', 'GCHPchem', -# 'BudgetMixingPBL_C2H2 ', 'GCHPchem', -# 'BudgetMixingPBL_BrSALC ', 'GCHPchem', -# 'BudgetMixingPBL_BrSALA ', 'GCHPchem', -# 'BudgetMixingPBL_BrO ', 'GCHPchem', -# 'BudgetMixingPBL_BrNO3 ', 'GCHPchem', -# 'BudgetMixingPBL_BrNO2 ', 'GCHPchem', -# 'BudgetMixingPBL_BrCl ', 'GCHPchem', -# 'BudgetMixingPBL_Br2 ', 'GCHPchem', -# 'BudgetMixingPBL_Br ', 'GCHPchem', -# 'BudgetMixingPBL_BENZ ', 'GCHPchem', -# 'BudgetMixingPBL_BCPO ', 'GCHPchem', -# 'BudgetMixingPBL_BCPI ', 'GCHPchem', -# 'BudgetMixingPBL_ATOOH ', 'GCHPchem', -# 'BudgetMixingPBL_ALK4 ', 'GCHPchem', -# 'BudgetMixingPBL_ALD2 ', 'GCHPchem', -# 'BudgetMixingPBL_AERI ', 'GCHPchem', -# 'BudgetMixingPBL_ACTA ', 'GCHPchem', -# 'BudgetMixingPBL_ACET ', 'GCHPchem', -# #'BudgetMixingPBL_TSOG3 ', 'GCHPchem', -# #'BudgetMixingPBL_TSOG2 ', 'GCHPchem', -# #'BudgetMixingPBL_TSOG1 ', 'GCHPchem', -# #'BudgetMixingPBL_TSOG0 ', 'GCHPchem', -# #'BudgetMixingPBL_TSOA3 ', 'GCHPchem', -# #'BudgetMixingPBL_TSOA2 ', 'GCHPchem', -# #'BudgetMixingPBL_TSOA1 ', 'GCHPchem', -# #'BudgetMixingPBL_TSOA0 ', 'GCHPchem', -# #'BudgetMixingPBL_ASOG3 ', 'GCHPchem', -# #'BudgetMixingPBL_ASOG2 ', 'GCHPchem', -# #'BudgetMixingPBL_ASOG1 ', 'GCHPchem', -# #'BudgetMixingPBL_ASOAN ', 'GCHPchem', -# #'BudgetMixingPBL_ASOA3 ', 'GCHPchem', -# #'BudgetMixingPBL_ASOA2 ', 'GCHPchem', -# #'BudgetMixingPBL_ASOA1 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_XYLE ', 'GCHPchem', -# 'BudgetMixingLevs1to35_TOLU ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SOAS ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SOAP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SOAIE ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SOAGX ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SO4s ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SO4 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SO2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SALCCL ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SALCAL ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SALC ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SALACL ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SALAAL ', 'GCHPchem', -# 'BudgetMixingLevs1to35_SALA ', 'GCHPchem', -# 'BudgetMixingLevs1to35_RP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_RIPD ', 'GCHPchem', -# 'BudgetMixingLevs1to35_RIPC ', 'GCHPchem', -# 'BudgetMixingLevs1to35_RIPB ', 'GCHPchem', -# 'BudgetMixingLevs1to35_RIPA ', 'GCHPchem', -# 'BudgetMixingLevs1to35_RCHO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_RB3P ', 'GCHPchem', -# 'BudgetMixingLevs1to35_RA3P ', 'GCHPchem', -# 'BudgetMixingLevs1to35_R4P ', 'GCHPchem', -# 'BudgetMixingLevs1to35_R4N2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_PYAC ', 'GCHPchem', -# 'BudgetMixingLevs1to35_PRPN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_PRPE ', 'GCHPchem', -# 'BudgetMixingLevs1to35_PROPNN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_PPN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_PP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_PIP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_pFe ', 'GCHPchem', -# 'BudgetMixingLevs1to35_PAN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_OIO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_OCS ', 'GCHPchem', -# 'BudgetMixingLevs1to35_OCPO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_OCPI ', 'GCHPchem', -# 'BudgetMixingLevs1to35_OClO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_O3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_NPRNO3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_NO3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_NO2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_NO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_NITs ', 'GCHPchem', -# 'BudgetMixingLevs1to35_NIT ', 'GCHPchem', -# 'BudgetMixingLevs1to35_NH4 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_NH3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_N2O5 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_N2O ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MVKPC ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MVKN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MVKHP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MVKHCB ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MVKHC ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MVKDH ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MVK ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MTPO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MTPA ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MSA ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MPN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MPAN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MONITU ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MONITS ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MONITA ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MOH ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MGLY ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MENO3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MEK ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MCRHP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MCRHNB ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MCRHN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MCRENOL ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MCRDH ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MAP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MACR1OOH ', 'GCHPchem', -# 'BudgetMixingLevs1to35_MACR ', 'GCHPchem', -# 'BudgetMixingLevs1to35_LVOCOA ', 'GCHPchem', -# 'BudgetMixingLevs1to35_LVOC ', 'GCHPchem', -# 'BudgetMixingLevs1to35_LIMO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ITHN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ITCN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ISOP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ISALC ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ISALA ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IPRNO3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IONO2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IONO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IONITA ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_INPD ', 'GCHPchem', -# 'BudgetMixingLevs1to35_INPB ', 'GCHPchem', -# 'BudgetMixingLevs1to35_INO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_INDIOL ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IHN4 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IHN3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IHN2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IHN1 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IEPOXD ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IEPOXB ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IEPOXA ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IDN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IDHPE ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IDHDP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IDCHP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IDC ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ICPDH ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ICN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ICl ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ICHE ', 'GCHPchem', -# 'BudgetMixingLevs1to35_IBr ', 'GCHPchem', -# 'BudgetMixingLevs1to35_I2O4 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_I2O3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_I2O2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_I2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_I ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HPETHNL ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HPALD4 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HPALD3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HPALD2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HPALD1 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HONIT ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HOI ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HOCl ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HOBr ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HNO4 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HNO3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HNO2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HMS ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HMML ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HMHP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HI ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HCOOH ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HCl ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HCFC22 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HCFC142b ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HCFC141b ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HCFC123 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HC5A ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HBr ', 'GCHPchem', -# 'BudgetMixingLevs1to35_HAC ', 'GCHPchem', -# 'BudgetMixingLevs1to35_H2O2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_H2O ', 'GCHPchem', -# 'BudgetMixingLevs1to35_H2402 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_H1301 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_H1211 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_GLYX ', 'GCHPchem', -# 'BudgetMixingLevs1to35_GLYC ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ETP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ETNO3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ETHP ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ETHN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ETHLN ', 'GCHPchem', -# 'BudgetMixingLevs1to35_EOH ', 'GCHPchem', -# 'BudgetMixingLevs1to35_DST4 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_DST3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_DST2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_DST1 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_DMS ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ClOO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ClO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ClNO3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ClNO2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_Cl2O2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_Cl2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_Cl ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CHCl3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CHBr3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CH4 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CH3I ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CH3Cl ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CH3CCl3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CH3Br ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CH2O ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CH2ICl ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CH2IBr ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CH2I2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CH2Cl2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CH2Br2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CFC12 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CFC115 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CFC114 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CFC113 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CFC11 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_CCl4 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_C3H8 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_C2H6 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_C2H4 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_C2H2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_BrSALC ', 'GCHPchem', -# 'BudgetMixingLevs1to35_BrSALA ', 'GCHPchem', -# 'BudgetMixingLevs1to35_BrO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_BrNO3 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_BrNO2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_BrCl ', 'GCHPchem', -# 'BudgetMixingLevs1to35_Br2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_Br ', 'GCHPchem', -# 'BudgetMixingLevs1to35_BENZ ', 'GCHPchem', -# 'BudgetMixingLevs1to35_BCPO ', 'GCHPchem', -# 'BudgetMixingLevs1to35_BCPI ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ATOOH ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ALK4 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ALD2 ', 'GCHPchem', -# 'BudgetMixingLevs1to35_AERI ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ACTA ', 'GCHPchem', -# 'BudgetMixingLevs1to35_ACET ', 'GCHPchem', -# #'BudgetMixingLevs1to35_TSOG3 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_TSOG2 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_TSOG1 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_TSOG0 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_TSOA3 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_TSOA2 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_TSOA1 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_TSOA0 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_ASOG3 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_ASOG2 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_ASOG1 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_ASOAN ', 'GCHPchem', -# #'BudgetMixingLevs1to35_ASOA3 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_ASOA2 ', 'GCHPchem', -# #'BudgetMixingLevs1to35_ASOA1 ', 'GCHPchem', -# 'BudgetMixingTrop_XYLE ', 'GCHPchem', -# 'BudgetMixingTrop_TOLU ', 'GCHPchem', -# 'BudgetMixingTrop_SOAS ', 'GCHPchem', -# 'BudgetMixingTrop_SOAP ', 'GCHPchem', -# 'BudgetMixingTrop_SOAIE ', 'GCHPchem', -# 'BudgetMixingTrop_SOAGX ', 'GCHPchem', -# 'BudgetMixingTrop_SO4s ', 'GCHPchem', -# 'BudgetMixingTrop_SO4 ', 'GCHPchem', -# 'BudgetMixingTrop_SO2 ', 'GCHPchem', -# 'BudgetMixingTrop_SALCCL ', 'GCHPchem', -# 'BudgetMixingTrop_SALCAL ', 'GCHPchem', -# 'BudgetMixingTrop_SALC ', 'GCHPchem', -# 'BudgetMixingTrop_SALACL ', 'GCHPchem', -# 'BudgetMixingTrop_SALAAL ', 'GCHPchem', -# 'BudgetMixingTrop_SALA ', 'GCHPchem', -# 'BudgetMixingTrop_RP ', 'GCHPchem', -# 'BudgetMixingTrop_RIPD ', 'GCHPchem', -# 'BudgetMixingTrop_RIPC ', 'GCHPchem', -# 'BudgetMixingTrop_RIPB ', 'GCHPchem', -# 'BudgetMixingTrop_RIPA ', 'GCHPchem', -# 'BudgetMixingTrop_RCHO ', 'GCHPchem', -# 'BudgetMixingTrop_RB3P ', 'GCHPchem', -# 'BudgetMixingTrop_RA3P ', 'GCHPchem', -# 'BudgetMixingTrop_R4P ', 'GCHPchem', -# 'BudgetMixingTrop_R4N2 ', 'GCHPchem', -# 'BudgetMixingTrop_PYAC ', 'GCHPchem', -# 'BudgetMixingTrop_PRPN ', 'GCHPchem', -# 'BudgetMixingTrop_PRPE ', 'GCHPchem', -# 'BudgetMixingTrop_PROPNN ', 'GCHPchem', -# 'BudgetMixingTrop_PPN ', 'GCHPchem', -# 'BudgetMixingTrop_PP ', 'GCHPchem', -# 'BudgetMixingTrop_PIP ', 'GCHPchem', -# 'BudgetMixingTrop_pFe ', 'GCHPchem', -# 'BudgetMixingTrop_PAN ', 'GCHPchem', -# 'BudgetMixingTrop_OIO ', 'GCHPchem', -# 'BudgetMixingTrop_OCS ', 'GCHPchem', -# 'BudgetMixingTrop_OCPO ', 'GCHPchem', -# 'BudgetMixingTrop_OCPI ', 'GCHPchem', -# 'BudgetMixingTrop_OClO ', 'GCHPchem', -# 'BudgetMixingTrop_O3 ', 'GCHPchem', -# 'BudgetMixingTrop_NPRNO3 ', 'GCHPchem', -# 'BudgetMixingTrop_NO3 ', 'GCHPchem', -# 'BudgetMixingTrop_NO2 ', 'GCHPchem', -# 'BudgetMixingTrop_NO ', 'GCHPchem', -# 'BudgetMixingTrop_NITs ', 'GCHPchem', -# 'BudgetMixingTrop_NIT ', 'GCHPchem', -# 'BudgetMixingTrop_NH4 ', 'GCHPchem', -# 'BudgetMixingTrop_NH3 ', 'GCHPchem', -# 'BudgetMixingTrop_N2O5 ', 'GCHPchem', -# 'BudgetMixingTrop_N2O ', 'GCHPchem', -# 'BudgetMixingTrop_MVKPC ', 'GCHPchem', -# 'BudgetMixingTrop_MVKN ', 'GCHPchem', -# 'BudgetMixingTrop_MVKHP ', 'GCHPchem', -# 'BudgetMixingTrop_MVKHCB ', 'GCHPchem', -# 'BudgetMixingTrop_MVKHC ', 'GCHPchem', -# 'BudgetMixingTrop_MVKDH ', 'GCHPchem', -# 'BudgetMixingTrop_MVK ', 'GCHPchem', -# 'BudgetMixingTrop_MTPO ', 'GCHPchem', -# 'BudgetMixingTrop_MTPA ', 'GCHPchem', -# 'BudgetMixingTrop_MSA ', 'GCHPchem', -# 'BudgetMixingTrop_MPN ', 'GCHPchem', -# 'BudgetMixingTrop_MPAN ', 'GCHPchem', -# 'BudgetMixingTrop_MP ', 'GCHPchem', -# 'BudgetMixingTrop_MONITU ', 'GCHPchem', -# 'BudgetMixingTrop_MONITS ', 'GCHPchem', -# 'BudgetMixingTrop_MONITA ', 'GCHPchem', -# 'BudgetMixingTrop_MOH ', 'GCHPchem', -# 'BudgetMixingTrop_MGLY ', 'GCHPchem', -# 'BudgetMixingTrop_MENO3 ', 'GCHPchem', -# 'BudgetMixingTrop_MEK ', 'GCHPchem', -# 'BudgetMixingTrop_MCRHP ', 'GCHPchem', -# 'BudgetMixingTrop_MCRHNB ', 'GCHPchem', -# 'BudgetMixingTrop_MCRHN ', 'GCHPchem', -# 'BudgetMixingTrop_MCRENOL ', 'GCHPchem', -# 'BudgetMixingTrop_MCRDH ', 'GCHPchem', -# 'BudgetMixingTrop_MAP ', 'GCHPchem', -# 'BudgetMixingTrop_MACR1OOH ', 'GCHPchem', -# 'BudgetMixingTrop_MACR ', 'GCHPchem', -# 'BudgetMixingTrop_LVOCOA ', 'GCHPchem', -# 'BudgetMixingTrop_LVOC ', 'GCHPchem', -# 'BudgetMixingTrop_LIMO ', 'GCHPchem', -# 'BudgetMixingTrop_ITHN ', 'GCHPchem', -# 'BudgetMixingTrop_ITCN ', 'GCHPchem', -# 'BudgetMixingTrop_ISOP ', 'GCHPchem', -# 'BudgetMixingTrop_ISALC ', 'GCHPchem', -# 'BudgetMixingTrop_ISALA ', 'GCHPchem', -# 'BudgetMixingTrop_IPRNO3 ', 'GCHPchem', -# 'BudgetMixingTrop_IONO2 ', 'GCHPchem', -# 'BudgetMixingTrop_IONO ', 'GCHPchem', -# 'BudgetMixingTrop_IONITA ', 'GCHPchem', -# 'BudgetMixingTrop_IO ', 'GCHPchem', -# 'BudgetMixingTrop_INPD ', 'GCHPchem', -# 'BudgetMixingTrop_INPB ', 'GCHPchem', -# 'BudgetMixingTrop_INO ', 'GCHPchem', -# 'BudgetMixingTrop_INDIOL ', 'GCHPchem', -# 'BudgetMixingTrop_IHN4 ', 'GCHPchem', -# 'BudgetMixingTrop_IHN3 ', 'GCHPchem', -# 'BudgetMixingTrop_IHN2 ', 'GCHPchem', -# 'BudgetMixingTrop_IHN1 ', 'GCHPchem', -# 'BudgetMixingTrop_IEPOXD ', 'GCHPchem', -# 'BudgetMixingTrop_IEPOXB ', 'GCHPchem', -# 'BudgetMixingTrop_IEPOXA ', 'GCHPchem', -# 'BudgetMixingTrop_IDN ', 'GCHPchem', -# 'BudgetMixingTrop_IDHPE ', 'GCHPchem', -# 'BudgetMixingTrop_IDHDP ', 'GCHPchem', -# 'BudgetMixingTrop_IDCHP ', 'GCHPchem', -# 'BudgetMixingTrop_IDC ', 'GCHPchem', -# 'BudgetMixingTrop_ICPDH ', 'GCHPchem', -# 'BudgetMixingTrop_ICN ', 'GCHPchem', -# 'BudgetMixingTrop_ICl ', 'GCHPchem', -# 'BudgetMixingTrop_ICHE ', 'GCHPchem', -# 'BudgetMixingTrop_IBr ', 'GCHPchem', -# 'BudgetMixingTrop_I2O4 ', 'GCHPchem', -# 'BudgetMixingTrop_I2O3 ', 'GCHPchem', -# 'BudgetMixingTrop_I2O2 ', 'GCHPchem', -# 'BudgetMixingTrop_I2 ', 'GCHPchem', -# 'BudgetMixingTrop_I ', 'GCHPchem', -# 'BudgetMixingTrop_HPETHNL ', 'GCHPchem', -# 'BudgetMixingTrop_HPALD4 ', 'GCHPchem', -# 'BudgetMixingTrop_HPALD3 ', 'GCHPchem', -# 'BudgetMixingTrop_HPALD2 ', 'GCHPchem', -# 'BudgetMixingTrop_HPALD1 ', 'GCHPchem', -# 'BudgetMixingTrop_HONIT ', 'GCHPchem', -# 'BudgetMixingTrop_HOI ', 'GCHPchem', -# 'BudgetMixingTrop_HOCl ', 'GCHPchem', -# 'BudgetMixingTrop_HOBr ', 'GCHPchem', -# 'BudgetMixingTrop_HNO4 ', 'GCHPchem', -# 'BudgetMixingTrop_HNO3 ', 'GCHPchem', -# 'BudgetMixingTrop_HNO2 ', 'GCHPchem', -# 'BudgetMixingTrop_HMS ', 'GCHPchem', -# 'BudgetMixingTrop_HMML ', 'GCHPchem', -# 'BudgetMixingTrop_HMHP ', 'GCHPchem', -# 'BudgetMixingTrop_HI ', 'GCHPchem', -# 'BudgetMixingTrop_HCOOH ', 'GCHPchem', -# 'BudgetMixingTrop_HCl ', 'GCHPchem', -# 'BudgetMixingTrop_HCFC22 ', 'GCHPchem', -# 'BudgetMixingTrop_HCFC142b ', 'GCHPchem', -# 'BudgetMixingTrop_HCFC141b ', 'GCHPchem', -# 'BudgetMixingTrop_HCFC123 ', 'GCHPchem', -# 'BudgetMixingTrop_HC5A ', 'GCHPchem', -# 'BudgetMixingTrop_HBr ', 'GCHPchem', -# 'BudgetMixingTrop_HAC ', 'GCHPchem', -# 'BudgetMixingTrop_H2O2 ', 'GCHPchem', -# 'BudgetMixingTrop_H2O ', 'GCHPchem', -# 'BudgetMixingTrop_H2402 ', 'GCHPchem', -# 'BudgetMixingTrop_H1301 ', 'GCHPchem', -# 'BudgetMixingTrop_H1211 ', 'GCHPchem', -# 'BudgetMixingTrop_GLYX ', 'GCHPchem', -# 'BudgetMixingTrop_GLYC ', 'GCHPchem', -# 'BudgetMixingTrop_ETP ', 'GCHPchem', -# 'BudgetMixingTrop_ETNO3 ', 'GCHPchem', -# 'BudgetMixingTrop_ETHP ', 'GCHPchem', -# 'BudgetMixingTrop_ETHN ', 'GCHPchem', -# 'BudgetMixingTrop_ETHLN ', 'GCHPchem', -# 'BudgetMixingTrop_EOH ', 'GCHPchem', -# 'BudgetMixingTrop_DST4 ', 'GCHPchem', -# 'BudgetMixingTrop_DST3 ', 'GCHPchem', -# 'BudgetMixingTrop_DST2 ', 'GCHPchem', -# 'BudgetMixingTrop_DST1 ', 'GCHPchem', -# 'BudgetMixingTrop_DMS ', 'GCHPchem', -# 'BudgetMixingTrop_CO ', 'GCHPchem', -# 'BudgetMixingTrop_ClOO ', 'GCHPchem', -# 'BudgetMixingTrop_ClO ', 'GCHPchem', -# 'BudgetMixingTrop_ClNO3 ', 'GCHPchem', -# 'BudgetMixingTrop_ClNO2 ', 'GCHPchem', -# 'BudgetMixingTrop_Cl2O2 ', 'GCHPchem', -# 'BudgetMixingTrop_Cl2 ', 'GCHPchem', -# 'BudgetMixingTrop_Cl ', 'GCHPchem', -# 'BudgetMixingTrop_CHCl3 ', 'GCHPchem', -# 'BudgetMixingTrop_CHBr3 ', 'GCHPchem', -# 'BudgetMixingTrop_CH4 ', 'GCHPchem', -# 'BudgetMixingTrop_CH3I ', 'GCHPchem', -# 'BudgetMixingTrop_CH3Cl ', 'GCHPchem', -# 'BudgetMixingTrop_CH3CCl3 ', 'GCHPchem', -# 'BudgetMixingTrop_CH3Br ', 'GCHPchem', -# 'BudgetMixingTrop_CH2O ', 'GCHPchem', -# 'BudgetMixingTrop_CH2ICl ', 'GCHPchem', -# 'BudgetMixingTrop_CH2IBr ', 'GCHPchem', -# 'BudgetMixingTrop_CH2I2 ', 'GCHPchem', -# 'BudgetMixingTrop_CH2Cl2 ', 'GCHPchem', -# 'BudgetMixingTrop_CH2Br2 ', 'GCHPchem', -# 'BudgetMixingTrop_CFC12 ', 'GCHPchem', -# 'BudgetMixingTrop_CFC115 ', 'GCHPchem', -# 'BudgetMixingTrop_CFC114 ', 'GCHPchem', -# 'BudgetMixingTrop_CFC113 ', 'GCHPchem', -# 'BudgetMixingTrop_CFC11 ', 'GCHPchem', -# 'BudgetMixingTrop_CCl4 ', 'GCHPchem', -# 'BudgetMixingTrop_C3H8 ', 'GCHPchem', -# 'BudgetMixingTrop_C2H6 ', 'GCHPchem', -# 'BudgetMixingTrop_C2H4 ', 'GCHPchem', -# 'BudgetMixingTrop_C2H2 ', 'GCHPchem', -# 'BudgetMixingTrop_BrSALC ', 'GCHPchem', -# 'BudgetMixingTrop_BrSALA ', 'GCHPchem', -# 'BudgetMixingTrop_BrO ', 'GCHPchem', -# 'BudgetMixingTrop_BrNO3 ', 'GCHPchem', -# 'BudgetMixingTrop_BrNO2 ', 'GCHPchem', -# 'BudgetMixingTrop_BrCl ', 'GCHPchem', -# 'BudgetMixingTrop_Br2 ', 'GCHPchem', -# 'BudgetMixingTrop_Br ', 'GCHPchem', -# 'BudgetMixingTrop_BENZ ', 'GCHPchem', -# 'BudgetMixingTrop_BCPO ', 'GCHPchem', -# 'BudgetMixingTrop_BCPI ', 'GCHPchem', -# 'BudgetMixingTrop_ATOOH ', 'GCHPchem', -# 'BudgetMixingTrop_ALK4 ', 'GCHPchem', -# 'BudgetMixingTrop_ALD2 ', 'GCHPchem', -# 'BudgetMixingTrop_AERI ', 'GCHPchem', -# 'BudgetMixingTrop_ACTA ', 'GCHPchem', -# 'BudgetMixingTrop_ACET ', 'GCHPchem', -# #'BudgetMixingTrop_TSOG3 ', 'GCHPchem', -# #'BudgetMixingTrop_TSOG2 ', 'GCHPchem', -# #'BudgetMixingTrop_TSOG1 ', 'GCHPchem', -# #'BudgetMixingTrop_TSOG0 ', 'GCHPchem', -# #'BudgetMixingTrop_TSOA3 ', 'GCHPchem', -# #'BudgetMixingTrop_TSOA2 ', 'GCHPchem', -# #'BudgetMixingTrop_TSOA1 ', 'GCHPchem', -# #'BudgetMixingTrop_TSOA0 ', 'GCHPchem', -# #'BudgetMixingTrop_ASOG3 ', 'GCHPchem', -# #'BudgetMixingTrop_ASOG2 ', 'GCHPchem', -# #'BudgetMixingTrop_ASOG1 ', 'GCHPchem', -# #'BudgetMixingTrop_ASOAN ', 'GCHPchem', -# #'BudgetMixingTrop_ASOA3 ', 'GCHPchem', -# #'BudgetMixingTrop_ASOA2 ', 'GCHPchem', -# #'BudgetMixingTrop_ASOA1 ', 'GCHPchem', -# 'BudgetMixingFull_XYLE ', 'GCHPchem', -# 'BudgetMixingFull_TOLU ', 'GCHPchem', -# 'BudgetMixingFull_SOAS ', 'GCHPchem', -# 'BudgetMixingFull_SOAP ', 'GCHPchem', -# 'BudgetMixingFull_SOAIE ', 'GCHPchem', -# 'BudgetMixingFull_SOAGX ', 'GCHPchem', -# 'BudgetMixingFull_SO4s ', 'GCHPchem', -# 'BudgetMixingFull_SO4 ', 'GCHPchem', -# 'BudgetMixingFull_SO2 ', 'GCHPchem', -# 'BudgetMixingFull_SALCCL ', 'GCHPchem', -# 'BudgetMixingFull_SALCAL ', 'GCHPchem', -# 'BudgetMixingFull_SALC ', 'GCHPchem', -# 'BudgetMixingFull_SALACL ', 'GCHPchem', -# 'BudgetMixingFull_SALAAL ', 'GCHPchem', -# 'BudgetMixingFull_SALA ', 'GCHPchem', -# 'BudgetMixingFull_RP ', 'GCHPchem', -# 'BudgetMixingFull_RIPD ', 'GCHPchem', -# 'BudgetMixingFull_RIPC ', 'GCHPchem', -# 'BudgetMixingFull_RIPB ', 'GCHPchem', -# 'BudgetMixingFull_RIPA ', 'GCHPchem', -# 'BudgetMixingFull_RCHO ', 'GCHPchem', -# 'BudgetMixingFull_RB3P ', 'GCHPchem', -# 'BudgetMixingFull_RA3P ', 'GCHPchem', -# 'BudgetMixingFull_R4P ', 'GCHPchem', -# 'BudgetMixingFull_R4N2 ', 'GCHPchem', -# 'BudgetMixingFull_PYAC ', 'GCHPchem', -# 'BudgetMixingFull_PRPN ', 'GCHPchem', -# 'BudgetMixingFull_PRPE ', 'GCHPchem', -# 'BudgetMixingFull_PROPNN ', 'GCHPchem', -# 'BudgetMixingFull_PPN ', 'GCHPchem', -# 'BudgetMixingFull_PP ', 'GCHPchem', -# 'BudgetMixingFull_PIP ', 'GCHPchem', -# 'BudgetMixingFull_pFe ', 'GCHPchem', -# 'BudgetMixingFull_PAN ', 'GCHPchem', -# 'BudgetMixingFull_OIO ', 'GCHPchem', -# 'BudgetMixingFull_OCS ', 'GCHPchem', -# 'BudgetMixingFull_OCPO ', 'GCHPchem', -# 'BudgetMixingFull_OCPI ', 'GCHPchem', -# 'BudgetMixingFull_OClO ', 'GCHPchem', -# 'BudgetMixingFull_O3 ', 'GCHPchem', -# 'BudgetMixingFull_NPRNO3 ', 'GCHPchem', -# 'BudgetMixingFull_NO3 ', 'GCHPchem', -# 'BudgetMixingFull_NO2 ', 'GCHPchem', -# 'BudgetMixingFull_NO ', 'GCHPchem', -# 'BudgetMixingFull_NITs ', 'GCHPchem', -# 'BudgetMixingFull_NIT ', 'GCHPchem', -# 'BudgetMixingFull_NH4 ', 'GCHPchem', -# 'BudgetMixingFull_NH3 ', 'GCHPchem', -# 'BudgetMixingFull_N2O5 ', 'GCHPchem', -# 'BudgetMixingFull_N2O ', 'GCHPchem', -# 'BudgetMixingFull_MVKPC ', 'GCHPchem', -# 'BudgetMixingFull_MVKN ', 'GCHPchem', -# 'BudgetMixingFull_MVKHP ', 'GCHPchem', -# 'BudgetMixingFull_MVKHCB ', 'GCHPchem', -# 'BudgetMixingFull_MVKHC ', 'GCHPchem', -# 'BudgetMixingFull_MVKDH ', 'GCHPchem', -# 'BudgetMixingFull_MVK ', 'GCHPchem', -# 'BudgetMixingFull_MTPO ', 'GCHPchem', -# 'BudgetMixingFull_MTPA ', 'GCHPchem', -# 'BudgetMixingFull_MSA ', 'GCHPchem', -# 'BudgetMixingFull_MPN ', 'GCHPchem', -# 'BudgetMixingFull_MPAN ', 'GCHPchem', -# 'BudgetMixingFull_MP ', 'GCHPchem', -# 'BudgetMixingFull_MONITU ', 'GCHPchem', -# 'BudgetMixingFull_MONITS ', 'GCHPchem', -# 'BudgetMixingFull_MONITA ', 'GCHPchem', -# 'BudgetMixingFull_MOH ', 'GCHPchem', -# 'BudgetMixingFull_MGLY ', 'GCHPchem', -# 'BudgetMixingFull_MENO3 ', 'GCHPchem', -# 'BudgetMixingFull_MEK ', 'GCHPchem', -# 'BudgetMixingFull_MCRHP ', 'GCHPchem', -# 'BudgetMixingFull_MCRHNB ', 'GCHPchem', -# 'BudgetMixingFull_MCRHN ', 'GCHPchem', -# 'BudgetMixingFull_MCRENOL ', 'GCHPchem', -# 'BudgetMixingFull_MCRDH ', 'GCHPchem', -# 'BudgetMixingFull_MAP ', 'GCHPchem', -# 'BudgetMixingFull_MACR1OOH ', 'GCHPchem', -# 'BudgetMixingFull_MACR ', 'GCHPchem', -# 'BudgetMixingFull_LVOCOA ', 'GCHPchem', -# 'BudgetMixingFull_LVOC ', 'GCHPchem', -# 'BudgetMixingFull_LIMO ', 'GCHPchem', -# 'BudgetMixingFull_ITHN ', 'GCHPchem', -# 'BudgetMixingFull_ITCN ', 'GCHPchem', -# 'BudgetMixingFull_ISOP ', 'GCHPchem', -# 'BudgetMixingFull_ISALC ', 'GCHPchem', -# 'BudgetMixingFull_ISALA ', 'GCHPchem', -# 'BudgetMixingFull_IPRNO3 ', 'GCHPchem', -# 'BudgetMixingFull_IONO2 ', 'GCHPchem', -# 'BudgetMixingFull_IONO ', 'GCHPchem', -# 'BudgetMixingFull_IONITA ', 'GCHPchem', -# 'BudgetMixingFull_IO ', 'GCHPchem', -# 'BudgetMixingFull_INPD ', 'GCHPchem', -# 'BudgetMixingFull_INPB ', 'GCHPchem', -# 'BudgetMixingFull_INO ', 'GCHPchem', -# 'BudgetMixingFull_INDIOL ', 'GCHPchem', -# 'BudgetMixingFull_IHN4 ', 'GCHPchem', -# 'BudgetMixingFull_IHN3 ', 'GCHPchem', -# 'BudgetMixingFull_IHN2 ', 'GCHPchem', -# 'BudgetMixingFull_IHN1 ', 'GCHPchem', -# 'BudgetMixingFull_IEPOXD ', 'GCHPchem', -# 'BudgetMixingFull_IEPOXB ', 'GCHPchem', -# 'BudgetMixingFull_IEPOXA ', 'GCHPchem', -# 'BudgetMixingFull_IDN ', 'GCHPchem', -# 'BudgetMixingFull_IDHPE ', 'GCHPchem', -# 'BudgetMixingFull_IDHDP ', 'GCHPchem', -# 'BudgetMixingFull_IDCHP ', 'GCHPchem', -# 'BudgetMixingFull_IDC ', 'GCHPchem', -# 'BudgetMixingFull_ICPDH ', 'GCHPchem', -# 'BudgetMixingFull_ICN ', 'GCHPchem', -# 'BudgetMixingFull_ICl ', 'GCHPchem', -# 'BudgetMixingFull_ICHE ', 'GCHPchem', -# 'BudgetMixingFull_IBr ', 'GCHPchem', -# 'BudgetMixingFull_I2O4 ', 'GCHPchem', -# 'BudgetMixingFull_I2O3 ', 'GCHPchem', -# 'BudgetMixingFull_I2O2 ', 'GCHPchem', -# 'BudgetMixingFull_I2 ', 'GCHPchem', -# 'BudgetMixingFull_I ', 'GCHPchem', -# 'BudgetMixingFull_HPETHNL ', 'GCHPchem', -# 'BudgetMixingFull_HPALD4 ', 'GCHPchem', -# 'BudgetMixingFull_HPALD3 ', 'GCHPchem', -# 'BudgetMixingFull_HPALD2 ', 'GCHPchem', -# 'BudgetMixingFull_HPALD1 ', 'GCHPchem', -# 'BudgetMixingFull_HONIT ', 'GCHPchem', -# 'BudgetMixingFull_HOI ', 'GCHPchem', -# 'BudgetMixingFull_HOCl ', 'GCHPchem', -# 'BudgetMixingFull_HOBr ', 'GCHPchem', -# 'BudgetMixingFull_HNO4 ', 'GCHPchem', -# 'BudgetMixingFull_HNO3 ', 'GCHPchem', -# 'BudgetMixingFull_HNO2 ', 'GCHPchem', -# 'BudgetMixingFull_HMML ', 'GCHPchem', -# 'BudgetMixingFull_HMHP ', 'GCHPchem', -# 'BudgetMixingFull_HI ', 'GCHPchem', -# 'BudgetMixingFull_HCOOH ', 'GCHPchem', -# 'BudgetMixingFull_HCl ', 'GCHPchem', -# 'BudgetMixingFull_HCFC22 ', 'GCHPchem', -# 'BudgetMixingFull_HCFC142b ', 'GCHPchem', -# 'BudgetMixingFull_HCFC141b ', 'GCHPchem', -# 'BudgetMixingFull_HCFC123 ', 'GCHPchem', -# 'BudgetMixingFull_HC5A ', 'GCHPchem', -# 'BudgetMixingFull_HBr ', 'GCHPchem', -# 'BudgetMixingFull_HAC ', 'GCHPchem', -# 'BudgetMixingFull_H2O2 ', 'GCHPchem', -# 'BudgetMixingFull_H2O ', 'GCHPchem', -# 'BudgetMixingFull_H2402 ', 'GCHPchem', -# 'BudgetMixingFull_H1301 ', 'GCHPchem', -# 'BudgetMixingFull_H1211 ', 'GCHPchem', -# 'BudgetMixingFull_GLYX ', 'GCHPchem', -# 'BudgetMixingFull_GLYC ', 'GCHPchem', -# 'BudgetMixingFull_ETP ', 'GCHPchem', -# 'BudgetMixingFull_ETNO3 ', 'GCHPchem', -# 'BudgetMixingFull_ETHP ', 'GCHPchem', -# 'BudgetMixingFull_ETHN ', 'GCHPchem', -# 'BudgetMixingFull_ETHLN ', 'GCHPchem', -# 'BudgetMixingFull_EOH ', 'GCHPchem', -# 'BudgetMixingFull_DST4 ', 'GCHPchem', -# 'BudgetMixingFull_DST3 ', 'GCHPchem', -# 'BudgetMixingFull_DST2 ', 'GCHPchem', -# 'BudgetMixingFull_DST1 ', 'GCHPchem', -# 'BudgetMixingFull_DMS ', 'GCHPchem', -# 'BudgetMixingFull_CO ', 'GCHPchem', -# 'BudgetMixingFull_ClOO ', 'GCHPchem', -# 'BudgetMixingFull_ClO ', 'GCHPchem', -# 'BudgetMixingFull_ClNO3 ', 'GCHPchem', -# 'BudgetMixingFull_ClNO2 ', 'GCHPchem', -# 'BudgetMixingFull_Cl2O2 ', 'GCHPchem', -# 'BudgetMixingFull_Cl2 ', 'GCHPchem', -# 'BudgetMixingFull_Cl ', 'GCHPchem', -# 'BudgetMixingFull_CHCl3 ', 'GCHPchem', -# 'BudgetMixingFull_CHBr3 ', 'GCHPchem', -# 'BudgetMixingFull_CH4 ', 'GCHPchem', -# 'BudgetMixingFull_CH3I ', 'GCHPchem', -# 'BudgetMixingFull_CH3Cl ', 'GCHPchem', -# 'BudgetMixingFull_CH3CCl3 ', 'GCHPchem', -# 'BudgetMixingFull_CH3Br ', 'GCHPchem', -# 'BudgetMixingFull_CH2O ', 'GCHPchem', -# 'BudgetMixingFull_CH2ICl ', 'GCHPchem', -# 'BudgetMixingFull_CH2IBr ', 'GCHPchem', -# 'BudgetMixingFull_CH2I2 ', 'GCHPchem', -# 'BudgetMixingFull_CH2Cl2 ', 'GCHPchem', -# 'BudgetMixingFull_CH2Br2 ', 'GCHPchem', -# 'BudgetMixingFull_CFC12 ', 'GCHPchem', -# 'BudgetMixingFull_CFC115 ', 'GCHPchem', -# 'BudgetMixingFull_CFC114 ', 'GCHPchem', -# 'BudgetMixingFull_CFC113 ', 'GCHPchem', -# 'BudgetMixingFull_CFC11 ', 'GCHPchem', -# 'BudgetMixingFull_CCl4 ', 'GCHPchem', -# 'BudgetMixingFull_C3H8 ', 'GCHPchem', -# 'BudgetMixingFull_C2H6 ', 'GCHPchem', -# 'BudgetMixingFull_C2H4 ', 'GCHPchem', -# 'BudgetMixingFull_C2H2 ', 'GCHPchem', -# 'BudgetMixingFull_BrSALC ', 'GCHPchem', -# 'BudgetMixingFull_BrSALA ', 'GCHPchem', -# 'BudgetMixingFull_BrO ', 'GCHPchem', -# 'BudgetMixingFull_BrNO3 ', 'GCHPchem', -# 'BudgetMixingFull_BrNO2 ', 'GCHPchem', -# 'BudgetMixingFull_BrCl ', 'GCHPchem', -# 'BudgetMixingFull_Br2 ', 'GCHPchem', -# 'BudgetMixingFull_Br ', 'GCHPchem', -# 'BudgetMixingFull_BENZ ', 'GCHPchem', -# 'BudgetMixingFull_BCPO ', 'GCHPchem', -# 'BudgetMixingFull_BCPI ', 'GCHPchem', -# 'BudgetMixingFull_ATOOH ', 'GCHPchem', -# 'BudgetMixingFull_ALK4 ', 'GCHPchem', -# 'BudgetMixingFull_ALD2 ', 'GCHPchem', -# 'BudgetMixingFull_AERI ', 'GCHPchem', -# 'BudgetMixingFull_ACTA ', 'GCHPchem', -# 'BudgetMixingFull_ACET ', 'GCHPchem', -# #'BudgetMixingFull_TSOG3 ', 'GCHPchem', -# #'BudgetMixingFull_TSOG2 ', 'GCHPchem', -# #'BudgetMixingFull_TSOG1 ', 'GCHPchem', -# #'BudgetMixingFull_TSOG0 ', 'GCHPchem', -# #'BudgetMixingFull_TSOA3 ', 'GCHPchem', -# #'BudgetMixingFull_TSOA2 ', 'GCHPchem', -# #'BudgetMixingFull_TSOA1 ', 'GCHPchem', -# #'BudgetMixingFull_TSOA0 ', 'GCHPchem', -# #'BudgetMixingFull_ASOG3 ', 'GCHPchem', -# #'BudgetMixingFull_ASOG2 ', 'GCHPchem', -# #'BudgetMixingFull_ASOG1 ', 'GCHPchem', -# #'BudgetMixingFull_ASOAN ', 'GCHPchem', -# #'BudgetMixingFull_ASOA3 ', 'GCHPchem', -# #'BudgetMixingFull_ASOA2 ', 'GCHPchem', -# #'BudgetMixingFull_ASOA1 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_XYLE ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_TOLU ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SOAS ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SOAP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SOAIE ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SOAGX ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SO4s ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SO4 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SO2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SALCCL ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SALCAL ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SALC ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SALACL ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SALAAL ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_SALA ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_RP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_RIPD ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_RIPC ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_RIPB ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_RIPA ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_RCHO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_RB3P ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_RA3P ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_R4P ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_R4N2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_PYAC ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_PRPN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_PRPE ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_PROPNN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_PPN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_PP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_PIP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_pFe ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_PAN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_OIO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_OCS ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_OCPO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_OCPI ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_OClO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_O3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_NPRNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_NO3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_NO2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_NO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_NITs ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_NIT ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_NH4 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_NH3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_N2O5 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_N2O ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MVKPC ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MVKN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MVKHP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MVKHCB ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MVKHC ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MVKDH ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MVK ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MTPO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MTPA ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MSA ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MPN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MPAN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MONITU ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MONITS ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MONITA ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MOH ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MGLY ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MENO3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MEK ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MCRHP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MCRHNB ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MCRHN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MCRENOL ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MCRDH ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MAP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MACR1OOH ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_MACR ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_LVOCOA ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_LVOC ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_LIMO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ITHN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ITCN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ISOP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ISALC ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ISALA ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IPRNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IONO2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IONO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IONITA ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_INPD ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_INPB ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_INO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_INDIOL ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IHN4 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IHN3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IHN2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IHN1 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IEPOXD ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IEPOXB ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IEPOXA ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IDN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IDHPE ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IDHDP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IDCHP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IDC ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ICPDH ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ICN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ICl ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ICHE ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_IBr ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_I2O4 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_I2O3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_I2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_I2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_I ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HPETHNL ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HPALD4 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HPALD3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HPALD2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HPALD1 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HONIT ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HOI ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HOCl ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HOBr ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HNO4 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HMML ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HMHP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HI ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HCOOH ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HCl ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HCFC22 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HCFC142b ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HCFC141b ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HCFC123 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HC5A ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HBr ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_HAC ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_H2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_H2O ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_H2402 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_H1301 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_H1211 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_GLYX ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_GLYC ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ETP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ETNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ETHP ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ETHN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ETHLN ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_EOH ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_DST4 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_DST3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_DST2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_DST1 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_DMS ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ClOO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ClO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ClNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ClNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_Cl2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_Cl2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_Cl ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CHCl3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CHBr3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CH4 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CH3I ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CH3Cl ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CH3CCl3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CH3Br ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CH2O ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CH2ICl ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CH2IBr ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CH2I2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CH2Cl2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CH2Br2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CFC12 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CFC115 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CFC114 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CFC113 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CFC11 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_CCl4 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_C3H8 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_C2H6 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_C2H4 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_C2H2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_BrSALC ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_BrSALA ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_BrO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_BrNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_BrNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_BrCl ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_Br2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_Br ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_BENZ ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_BCPO ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_BCPI ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ATOOH ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ALK4 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ALD2 ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_AERI ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ACTA ', 'GCHPchem', -# 'BudgetEmisDryDepPBL_ACET ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_TSOG3 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_TSOG2 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_TSOG1 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_TSOG0 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_TSOA3 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_TSOA2 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_TSOA1 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_TSOA0 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_ASOG3 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_ASOG2 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_ASOG1 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_ASOAN ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_ASOA3 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_ASOA2 ', 'GCHPchem', -# #'BudgetEmisDryDepPBL_ASOA1 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_XYLE ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_TOLU ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SOAS ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SOAP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SOAIE ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SOAGX ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SO4s ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SO4 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SO2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SALCCL ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SALCAL ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SALC ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SALACL ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SALAAL ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_SALA ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_RP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_RIPD ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_RIPC ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_RIPB ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_RIPA ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_RCHO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_RB3P ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_RA3P ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_R4P ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_R4N2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_PYAC ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_PRPN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_PRPE ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_PROPNN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_PPN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_PP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_PIP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_pFe ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_PAN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_OIO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_OCS ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_OCPO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_OCPI ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_OClO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_O3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_NPRNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_NO3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_NO2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_NO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_NITs ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_NIT ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_NH4 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_NH3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_N2O5 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_N2O ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MVKPC ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MVKN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MVKHP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MVKHCB ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MVKHC ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MVKDH ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MVK ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MTPO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MTPA ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MSA ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MPN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MPAN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MONITU ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MONITS ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MONITA ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MOH ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MGLY ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MENO3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MEK ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MCRHP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MCRHNB ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MCRHN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MCRENOL ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MCRDH ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MAP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MACR1OOH ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_MACR ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_LVOCOA ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_LVOC ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_LIMO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ITHN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ITCN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ISOP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ISALC ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ISALA ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IPRNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IONO2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IONO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IONITA ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_INPD ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_INPB ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_INO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_INDIOL ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IHN4 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IHN3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IHN2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IHN1 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IEPOXD ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IEPOXB ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IEPOXA ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IDN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IDHPE ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IDHDP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IDCHP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IDC ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ICPDH ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ICN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ICl ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ICHE ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_IBr ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_I2O4 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_I2O3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_I2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_I2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_I ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HPETHNL ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HPALD4 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HPALD3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HPALD2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HPALD1 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HONIT ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HOI ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HOCl ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HOBr ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HNO4 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HMML ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HMHP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HI ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HCOOH ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HCl ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HCFC22 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HCFC142b ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HCFC141b ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HCFC123 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HC5A ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HBr ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_HAC ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_H2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_H2O ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_H2402 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_H1301 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_H1211 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_GLYX ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_GLYC ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ETP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ETNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ETHP ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ETHN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ETHLN ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_EOH ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_DST4 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_DST3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_DST2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_DST1 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_DMS ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ClOO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ClO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ClNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ClNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_Cl2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_Cl2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_Cl ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CHCl3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CHBr3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CH4 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CH3I ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CH3Cl ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CH3CCl3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CH3Br ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CH2O ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CH2ICl ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CH2IBr ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CH2I2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CH2Cl2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CH2Br2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CFC12 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CFC115 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CFC114 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CFC113 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CFC11 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_CCl4 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_C3H8 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_C2H6 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_C2H4 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_C2H2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_BrSALC ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_BrSALA ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_BrO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_BrNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_BrNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_BrCl ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_Br2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_Br ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_BENZ ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_BCPO ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_BCPI ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ATOOH ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ALK4 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ALD2 ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_AERI ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ACTA ', 'GCHPchem', -# 'BudgetEmisDryDepLevs1to35_ACET ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_TSOG3 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_TSOG2 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_TSOG1 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_TSOG0 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_TSOA3 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_TSOA2 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_TSOA1 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_TSOA0 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_ASOG3 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_ASOG2 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_ASOG1 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_ASOAN ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_ASOA3 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_ASOA2 ', 'GCHPchem', -# #'BudgetEmisDryDepLevs1to35_ASOA1 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_XYLE ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_TOLU ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SOAS ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SOAP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SOAIE ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SOAGX ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SO4s ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SO4 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SO2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SALCCL ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SALCAL ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SALC ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SALACL ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SALAAL ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_SALA ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_RP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_RIPD ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_RIPC ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_RIPB ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_RIPA ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_RCHO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_RB3P ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_RA3P ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_R4P ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_R4N2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_PYAC ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_PRPN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_PRPE ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_PROPNN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_PPN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_PP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_PIP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_pFe ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_PAN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_OIO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_OCS ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_OCPO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_OCPI ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_OClO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_O3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_NPRNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_NO3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_NO2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_NO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_NITs ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_NIT ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_NH4 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_NH3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_N2O5 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_N2O ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MVKPC ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MVKN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MVKHP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MVKHCB ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MVKHC ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MVKDH ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MVK ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MTPO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MTPA ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MSA ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MPN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MPAN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MONITU ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MONITS ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MONITA ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MOH ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MGLY ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MENO3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MEK ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MCRHP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MCRHNB ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MCRHN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MCRENOL ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MCRDH ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MAP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MACR1OOH ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_MACR ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_LVOCOA ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_LVOC ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_LIMO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ITHN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ITCN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ISOP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ISALC ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ISALA ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IPRNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IONO2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IONO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IONITA ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_INPD ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_INPB ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_INO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_INDIOL ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IHN4 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IHN3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IHN2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IHN1 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IEPOXD ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IEPOXB ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IEPOXA ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IDN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IDHPE ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IDHDP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IDCHP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IDC ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ICPDH ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ICN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ICl ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ICHE ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_IBr ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_I2O4 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_I2O3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_I2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_I2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_I ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HPETHNL ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HPALD4 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HPALD3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HPALD2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HPALD1 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HONIT ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HOI ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HOCl ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HOBr ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HNO4 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HMML ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HMHP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HI ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HCOOH ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HCl ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HCFC22 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HCFC142b ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HCFC141b ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HCFC123 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HC5A ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HBr ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_HAC ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_H2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_H2O ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_H2402 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_H1301 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_H1211 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_GLYX ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_GLYC ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ETP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ETNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ETHP ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ETHN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ETHLN ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_EOH ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_DST4 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_DST3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_DST2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_DST1 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_DMS ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ClOO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ClO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ClNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ClNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_Cl2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_Cl2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_Cl ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CHCl3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CHBr3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CH4 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CH3I ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CH3Cl ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CH3CCl3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CH3Br ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CH2O ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CH2ICl ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CH2IBr ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CH2I2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CH2Cl2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CH2Br2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CFC12 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CFC115 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CFC114 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CFC113 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CFC11 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_CCl4 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_C3H8 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_C2H6 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_C2H4 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_C2H2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_BrSALC ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_BrSALA ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_BrO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_BrNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_BrNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_BrCl ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_Br2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_Br ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_BENZ ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_BCPO ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_BCPI ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ATOOH ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ALK4 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ALD2 ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_AERI ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ACTA ', 'GCHPchem', -# 'BudgetEmisDryDepTrop_ACET ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_TSOG3 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_TSOG2 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_TSOG1 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_TSOG0 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_TSOA3 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_TSOA2 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_TSOA1 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_TSOA0 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_ASOG3 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_ASOG2 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_ASOG1 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_ASOAN ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_ASOA3 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_ASOA2 ', 'GCHPchem', -# #'BudgetEmisDryDepTrop_ASOA1 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_XYLE ', 'GCHPchem', -# 'BudgetEmisDryDepFull_TOLU ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SOAS ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SOAP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SOAIE ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SOAGX ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SO4s ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SO4 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SO2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SALCCL ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SALCAL ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SALC ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SALACL ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SALAAL ', 'GCHPchem', -# 'BudgetEmisDryDepFull_SALA ', 'GCHPchem', -# 'BudgetEmisDryDepFull_RP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_RIPD ', 'GCHPchem', -# 'BudgetEmisDryDepFull_RIPC ', 'GCHPchem', -# 'BudgetEmisDryDepFull_RIPB ', 'GCHPchem', -# 'BudgetEmisDryDepFull_RIPA ', 'GCHPchem', -# 'BudgetEmisDryDepFull_RCHO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_RB3P ', 'GCHPchem', -# 'BudgetEmisDryDepFull_RA3P ', 'GCHPchem', -# 'BudgetEmisDryDepFull_R4P ', 'GCHPchem', -# 'BudgetEmisDryDepFull_R4N2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_PYAC ', 'GCHPchem', -# 'BudgetEmisDryDepFull_PRPN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_PRPE ', 'GCHPchem', -# 'BudgetEmisDryDepFull_PROPNN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_PPN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_PP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_PIP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_pFe ', 'GCHPchem', -# 'BudgetEmisDryDepFull_PAN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_OIO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_OCS ', 'GCHPchem', -# 'BudgetEmisDryDepFull_OCPO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_OCPI ', 'GCHPchem', -# 'BudgetEmisDryDepFull_OClO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_O3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_NPRNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_NO3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_NO2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_NO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_NITs ', 'GCHPchem', -# 'BudgetEmisDryDepFull_NIT ', 'GCHPchem', -# 'BudgetEmisDryDepFull_NH4 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_NH3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_N2O5 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_N2O ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MVKPC ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MVKN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MVKHP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MVKHCB ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MVKHC ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MVKDH ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MVK ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MTPO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MTPA ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MSA ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MPN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MPAN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MONITU ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MONITS ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MONITA ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MOH ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MGLY ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MENO3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MEK ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MCRHP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MCRHNB ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MCRHN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MCRENOL ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MCRDH ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MAP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MACR1OOH ', 'GCHPchem', -# 'BudgetEmisDryDepFull_MACR ', 'GCHPchem', -# 'BudgetEmisDryDepFull_LVOCOA ', 'GCHPchem', -# 'BudgetEmisDryDepFull_LVOC ', 'GCHPchem', -# 'BudgetEmisDryDepFull_LIMO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ITHN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ITCN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ISOP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ISALC ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ISALA ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IPRNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IONO2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IONO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IONITA ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_INPD ', 'GCHPchem', -# 'BudgetEmisDryDepFull_INPB ', 'GCHPchem', -# 'BudgetEmisDryDepFull_INO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_INDIOL ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IHN4 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IHN3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IHN2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IHN1 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IEPOXD ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IEPOXB ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IEPOXA ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IDN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IDHPE ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IDHDP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IDCHP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IDC ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ICPDH ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ICN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ICl ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ICHE ', 'GCHPchem', -# 'BudgetEmisDryDepFull_IBr ', 'GCHPchem', -# 'BudgetEmisDryDepFull_I2O4 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_I2O3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_I2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_I2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_I ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HPETHNL ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HPALD4 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HPALD3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HPALD2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HPALD1 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HONIT ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HOI ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HOCl ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HOBr ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HNO4 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HMML ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HMHP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HI ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HCOOH ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HCl ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HCFC22 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HCFC142b ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HCFC141b ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HCFC123 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HC5A ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HBr ', 'GCHPchem', -# 'BudgetEmisDryDepFull_HAC ', 'GCHPchem', -# 'BudgetEmisDryDepFull_H2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_H2O ', 'GCHPchem', -# 'BudgetEmisDryDepFull_H2402 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_H1301 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_H1211 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_GLYX ', 'GCHPchem', -# 'BudgetEmisDryDepFull_GLYC ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ETP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ETNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ETHP ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ETHN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ETHLN ', 'GCHPchem', -# 'BudgetEmisDryDepFull_EOH ', 'GCHPchem', -# 'BudgetEmisDryDepFull_DST4 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_DST3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_DST2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_DST1 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_DMS ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ClOO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ClO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ClNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ClNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_Cl2O2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_Cl2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_Cl ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CHCl3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CHBr3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CH4 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CH3I ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CH3Cl ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CH3CCl3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CH3Br ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CH2O ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CH2ICl ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CH2IBr ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CH2I2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CH2Cl2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CH2Br2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CFC12 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CFC115 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CFC114 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CFC113 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CFC11 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_CCl4 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_C3H8 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_C2H6 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_C2H4 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_C2H2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_BrSALC ', 'GCHPchem', -# 'BudgetEmisDryDepFull_BrSALA ', 'GCHPchem', -# 'BudgetEmisDryDepFull_BrO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_BrNO3 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_BrNO2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_BrCl ', 'GCHPchem', -# 'BudgetEmisDryDepFull_Br2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_Br ', 'GCHPchem', -# 'BudgetEmisDryDepFull_BENZ ', 'GCHPchem', -# 'BudgetEmisDryDepFull_BCPO ', 'GCHPchem', -# 'BudgetEmisDryDepFull_BCPI ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ATOOH ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ALK4 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ALD2 ', 'GCHPchem', -# 'BudgetEmisDryDepFull_AERI ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ACTA ', 'GCHPchem', -# 'BudgetEmisDryDepFull_ACET ', 'GCHPchem', -# #'BudgetEmisDryDepFull_TSOG3 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_TSOG2 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_TSOG1 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_TSOG0 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_TSOA3 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_TSOA2 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_TSOA1 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_TSOA0 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_ASOG3 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_ASOG2 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_ASOG1 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_ASOAN ', 'GCHPchem', -# #'BudgetEmisDryDepFull_ASOA3 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_ASOA2 ', 'GCHPchem', -# #'BudgetEmisDryDepFull_ASOA1 ', 'GCHPchem', + Budget.fields: 'BudgetWetDepFull_O3 ', 'GCHPchem', + 'BudgetChemistryFull_O3 ', 'GCHPchem', + 'BudgetConvectionFull_O3 ', 'GCHPchem', + 'BudgetMixingFull_O3 ', 'GCHPchem', + 'BudgetEmisDryDepFull_O3 ', 'GCHPchem', + # + 'BudgetWetDepLevs1to35_O3 ', 'GCHPchem', + 'BudgetChemistryLevs1to35_O3 ', 'GCHPchem', + 'BudgetConvectionLevs1to35_O3 ', 'GCHPchem', + 'BudgetMixingLevs1to35_O3 ', 'GCHPchem', + 'BudgetEmisDryDepLevs1to35_O3 ', 'GCHPchem', + # + 'BudgetWetDepTrop_O3 ', 'GCHPchem', + 'BudgetChemistryTrop_O3 ', 'GCHPchem', + 'BudgetConvectionTrop_O3 ', 'GCHPchem', + 'BudgetMixingTrop_O3 ', 'GCHPchem', + 'BudgetEmisDryDepTrop_O3 ', 'GCHPchem', + # + 'BudgetWetDepPBL_O3 ', 'GCHPchem', + 'BudgetChemistryPBL_O3 ', 'GCHPchem', + 'BudgetConvectionPBL_O3 ', 'GCHPchem', + 'BudgetMixingPBL_O3 ', 'GCHPchem', + 'BudgetEmisDryDepPBL_O3 ', 'GCHPchem', :: #============================================================================= #%%%%% THE CloudConvFlux COLLECTION %%%%% From 11c441eb45c5ba610021362cc45ccfcdf7223919 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Tue, 13 Feb 2024 14:37:17 -0500 Subject: [PATCH 075/331] Update changelog Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b832b3c39..5e0177a1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] - TBD + +### Added +- Added new vertical region option to budget diagnostic for fixed bottom and top levels + ## [14.3.0] - 2024-02-07 ### Added - Added capability for TOMAS simulations in GCHP From a7f7c4c450b7d38942327b54a94eac2f02a49d06 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Tue, 13 Feb 2024 15:52:51 -0500 Subject: [PATCH 076/331] Added diagnostics PM25nit and PM25nh4 (GEOS only) --- GeosCore/aerosol_mod.F90 | 16 +++++++++ Headers/state_diag_mod.F90 | 72 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 2e326b2b5..d07db00e0 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -1003,6 +1003,22 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & * ( T(I,J,L) / 298.0_fp ) & * 1.0e+9_fp ENDIF + + ! PM2.5 nitrate + IF ( State_Diag%Archive_PM25nit ) THEN + State_Diag%PM25nit(I,J,L) = ( NIT(I,J,L) * SIA_GROWTH ) & + * ( 1013.25_fp / PMID(I,J,L) ) & + * ( T(I,J,L) / 298.0_fp ) & + * 1.0e+9_fp + ENDIF + + ! PM2.5 ammonium + IF ( State_Diag%Archive_PM25nh4 ) THEN + State_Diag%PM25nh4(I,J,L) = ( NH4(I,J,L) * SIA_GROWTH ) & + * ( 1013.25_fp / PMID(I,J,L) ) & + * ( T(I,J,L) / 298.0_fp ) & + * 1.0e+9_fp + ENDIF #endif ENDDO diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index 91da06a43..3be616708 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -1216,6 +1216,12 @@ MODULE State_Diag_Mod REAL(f4), POINTER :: PM25soa(:,:,:) ! PM25 SOA LOGICAL :: Archive_PM25soa + REAL(f4), POINTER :: PM25nit(:,:,:) ! PM25 nitrate + LOGICAL :: Archive_PM25nit + + REAL(f4), POINTER :: PM25nh4(:,:,:) ! PM25 ammonium + LOGICAL :: Archive_PM25nh4 + !%%%%% Species diagnostics %%%%% REAL(f4), POINTER :: PblCol(:,:,:) TYPE(DgnMap), POINTER :: Map_PblCol @@ -2373,6 +2379,12 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%PM25soa => NULL() State_Diag%Archive_PM25soa = .FALSE. + State_Diag%PM25nit => NULL() + State_Diag%Archive_PM25nit = .FALSE. + + State_Diag%PM25nh4 => NULL() + State_Diag%Archive_PM25nh4 = .FALSE. + State_Diag%PblCol => NULL() State_Diag%Map_PblCol => NULL() State_Diag%Archive_PblCol = .FALSE. @@ -7822,6 +7834,50 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + !-------------------------------------------------------------------- + ! PM25 Nitrate + !-------------------------------------------------------------------- + diagID = 'PM25nit' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%PM25nit, & + archiveData = State_Diag%Archive_PM25nit, & + diagId = diagId, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + !-------------------------------------------------------------------- + ! PM25 Ammonium + !-------------------------------------------------------------------- + diagID = 'PM25nh4' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%PM25nh4, & + archiveData = State_Diag%Archive_PM25nh4, & + diagId = diagId, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + diagID = 'TotCol' CALL Init_and_Register( & Input_Opt = Input_Opt, & @@ -12061,6 +12117,16 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'PM25nit', & + Ptr2Data = State_Diag%PM25nit, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + + CALL Finalize( diagId = 'PM25nh4', & + Ptr2Data = State_Diag%PM25nh4, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'TotCol', & Ptr2Data = State_Diag%TotCol, & mapData = State_Diag%Map_TotCol, & @@ -13225,6 +13291,12 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isUnits ) Units = 'ug m-3' IF ( isRank ) Rank = 3 + ELSE IF ( TRIM( Name_AllCaps ) == 'PM25SOA' ) THEN + IF ( isDesc ) Desc = & + 'Particulate matter with radii < 2.5 um, SOA' + IF ( isUnits ) Units = 'ug m-3' + IF ( isRank ) Rank = 3 + ELSE IF ( TRIM( Name_AllCaps ) == 'TOTCOL' ) THEN IF ( isDesc ) Desc = 'total column density of species' IF ( isUnits ) Units = '1.0e15 molec cm-2' From 247aa235355158436e7af7ea047b079ff3cbe30e Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 14 Feb 2024 14:11:18 -0500 Subject: [PATCH 077/331] Remove instance of State_Chm%Spc_Units prior to merging in dev/14.4.0 GeosCore/diagnostics_mod.F90 - A block of code that references State_Chm%Spc_Units was left behind by the merge of dev/14.4.0 into feature/unitconv-per-species-category. This has now been replaced with a call to Check_Units. Signed-off-by: Bob Yantosca --- GeosCore/diagnostics_mod.F90 | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index 0703ff1f7..f6e242e3b 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -1851,11 +1851,15 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & DAERSL => State_Chm%AerMass%DAERSL WAERSL => State_Chm%AerMass%WAERSL - ! Check that species units are kg/kg dry air - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR ) THEN - errMsg = 'State_Chm%Species units must be kg/kg dry. ' // & - 'Incorrect units: '// TRIM( UNIT_STR(State_Chm%Spc_Units ) ) - CALL GC_Error( errMsg, RC, ThisLoc ) + ! Verify that incoming State_Chm%Species units are kg/kg dry air. + CALL Check_Units( & + State_Chm = State_Chm, & + mapping = State_Chm%Map_All, & + units = KG_SPECIES_PER_KG_DRY_AIR, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_VVDry!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF From 6faa407f4b0ac48b740fffc49687670f9e97af87 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Wed, 14 Feb 2024 15:41:46 -0500 Subject: [PATCH 078/331] Properly register PM25nit and PM25nh4 --- Headers/state_diag_mod.F90 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index 3be616708..bb3d07149 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -13291,9 +13291,15 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isUnits ) Units = 'ug m-3' IF ( isRank ) Rank = 3 - ELSE IF ( TRIM( Name_AllCaps ) == 'PM25SOA' ) THEN + ELSE IF ( TRIM( Name_AllCaps ) == 'PM25NIT' ) THEN IF ( isDesc ) Desc = & - 'Particulate matter with radii < 2.5 um, SOA' + 'Particulate matter with radii < 2.5 um, nitrate' + IF ( isUnits ) Units = 'ug m-3' + IF ( isRank ) Rank = 3 + + ELSE IF ( TRIM( Name_AllCaps ) == 'PM25NH4' ) THEN + IF ( isDesc ) Desc = & + 'Particulate matter with radii < 2.5 um, ammonium' IF ( isUnits ) Units = 'ug m-3' IF ( isRank ) Rank = 3 From 1982e714d7d3c358279e1caaed49a5f0a24a180c Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 14 Feb 2024 21:06:30 +0000 Subject: [PATCH 079/331] Check if units are in kg/kg dry or v/v dry in AIRQNT when UpdtMR=TRUE GeosCore/calc_met_mod.F90 - Restore the prior check that stops the model with an error in AIRQNT if update_mixing_ratio=.TRUE. and species are not in mixing ratio units. Signed-off-by: Bob Yantosca --- GeosCore/calc_met_mod.F90 | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/GeosCore/calc_met_mod.F90 b/GeosCore/calc_met_mod.F90 index 3092e90ad..9ad25bccb 100644 --- a/GeosCore/calc_met_mod.F90 +++ b/GeosCore/calc_met_mod.F90 @@ -218,6 +218,7 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & ! !LOCAL VARIABLES: ! ! Scalars + LOGICAL :: t1, t2 INTEGER :: Dt_Sec INTEGER :: I, J, L INTEGER :: L_CG, L_TP, N, units @@ -671,8 +672,18 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & ! following air quantity change is during GEOS-Chem initialization and ! in transport after the pressure fixer is applied IF ( UpdtMR ) THEN + ! The concentration update formula works only for dry mixing ratios ! (kg/kg or v/v) so check if units are correct + t1 = ALL( State_Chm%Species(State_Chm%Map_All)%Units == & + KG_SPECIES_PER_KG_DRY_AIR ) + t2 = ALL( State_Chm%Species(State_Chm%Map_All)%Units == & + MOLES_SPECIES_PER_MOLES_DRY_AIR ) + IF ( .not. ( t1 .or. t2 ) ) THEN + ErrMsg = 'Incorrect species units found in AIRQNT!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED ) & @@ -681,19 +692,16 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & units = State_Chm%Species(N)%Units - IF ( units == KG_SPECIES_PER_KG_DRY_AIR .or. & - units == MOLES_SPECIES_PER_MOLES_DRY_AIR ) THEN - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(n)%Conc(I,J,L) * & - State_Met%DP_DRY_PREV(I,J,L) / & - State_Met%DELP_DRY(I,J,L) - ENDDO - ENDDO - ENDDO - ENDIF + DO L = 1, State_Grid%NZ + DO J = 1, State_Grid%NY + DO I = 1, State_Grid%NX + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(n)%Conc(I,J,L) * & + State_Met%DP_DRY_PREV(I,J,L) / & + State_Met%DELP_DRY(I,J,L) + ENDDO + ENDDO + ENDDO ENDDO !$OMP END PARALLEL DO ENDIF From c7b02c6f1a18ec551312ac0b365f04c2b311b754 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Wed, 14 Feb 2024 16:11:29 -0500 Subject: [PATCH 080/331] Zero-diff updates to analysis interface: add dryrun option and inccol diagnostics --- Headers/state_diag_mod.F90 | 120 +++++++++++++++++++++++++++++ Interfaces/GEOS/geos_analysis.F90 | 124 ++++++++++++++++++++++++------ 2 files changed, 219 insertions(+), 25 deletions(-) diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index 76c976d9a..844c00f5b 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -1265,6 +1265,18 @@ MODULE State_Diag_Mod TYPE(DgnMap), POINTER :: Map_AnaMaskSum LOGICAL :: Archive_AnaMaskSum + REAL(f4), POINTER :: AnaIncCol(:,:,:) + TYPE(DgnMap), POINTER :: Map_AnaIncCol + LOGICAL :: Archive_AnaIncCol + + REAL(f4), POINTER :: AnaIncColTrop(:,:,:) + TYPE(DgnMap), POINTER :: Map_AnaIncColTrop + LOGICAL :: Archive_AnaIncColTrop + + REAL(f4), POINTER :: AnaIncColPbl(:,:,:) + TYPE(DgnMap), POINTER :: Map_AnaIncColPbl + LOGICAL :: Archive_AnaIncColPbl + !---------------------------------------------------------------------- ! Registry of variables contained within State_Diag !---------------------------------------------------------------------- @@ -2436,6 +2448,18 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%Map_AnaMaskSum => NULL() State_Diag%Archive_AnaMaskSum = .FALSE. + State_Diag%AnaIncCol => NULL() + State_Diag%Map_AnaIncCol => NULL() + State_Diag%Archive_AnaIncCol = .FALSE. + + State_Diag%AnaIncColTrop => NULL() + State_Diag%Map_AnaIncColTrop => NULL() + State_Diag%Archive_AnaIncColTrop = .FALSE. + + State_Diag%AnaIncColPbl => NULL() + State_Diag%Map_AnaIncColPbl => NULL() + State_Diag%Archive_AnaIncColPbl = .FALSE. + END SUBROUTINE Zero_State_Diag !EOC !------------------------------------------------------------------------------ @@ -8045,6 +8069,66 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + diagID = 'AnaIncCol' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%AnaIncCol, & + archiveData = State_Diag%Archive_AnaIncCol, & + mapData = State_Diag%Map_AnaIncCol, & + diagId = diagId, & + diagFlag = 'S', & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + diagID = 'AnaIncColTrop' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%AnaIncColTrop, & + archiveData = State_Diag%Archive_AnaIncColTrop, & + mapData = State_Diag%Map_AnaIncColTrop, & + diagId = diagId, & + diagFlag = 'S', & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + diagID = 'AnaIncColPbl' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%AnaIncColPbl, & + archiveData = State_Diag%Archive_AnaIncColPbl, & + mapData = State_Diag%Map_AnaIncColPbl, & + diagId = diagId, & + diagFlag = 'S', & + RC = RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + !------------------------------------------------------------------- ! Total organic aerosol mass [ug/m3] !------------------------------------------------------------------- @@ -12233,6 +12317,24 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'AnaIncCol', & + Ptr2Data = State_Diag%AnaIncCol, & + mapData = State_Diag%Map_AnaIncCol, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + + CALL Finalize( diagId = 'AnaIncColTrop', & + Ptr2Data = State_Diag%AnaIncColTrop, & + mapData = State_Diag%Map_AnaIncColTrop, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + + CALL Finalize( diagId = 'AnaIncColPbl', & + Ptr2Data = State_Diag%AnaIncColPbl, & + mapData = State_Diag%Map_AnaIncColPbl, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + #if defined(MODEL_GEOS) || defined(MODEL_WRF) !======================================================================= ! These fields are only used when GEOS-Chem @@ -13421,6 +13523,24 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isRank ) Rank = 2 IF ( isTagged ) TagId = 'ALL' + ELSE IF ( TRIM( Name_AllCaps ) == 'ANAINCCOL' ) THEN + IF ( isDesc ) Desc = 'Vertically integrated analysis increments' + IF ( isUnits ) Units = '1e15 molec cm-2' + IF ( isRank ) Rank = 2 + IF ( isTagged ) TagId = 'ALL' + + ELSE IF ( TRIM( Name_AllCaps ) == 'ANAINCCOLTROP' ) THEN + IF ( isDesc ) Desc = 'Vertically integrated analysis increments in troposphere' + IF ( isUnits ) Units = '1e15 molec cm-2' + IF ( isRank ) Rank = 2 + IF ( isTagged ) TagId = 'ALL' + + ELSE IF ( TRIM( Name_AllCaps ) == 'ANAINCCOLPBL' ) THEN + IF ( isDesc ) Desc = 'Vertically integrated analysis increments in PBL' + IF ( isUnits ) Units = '1e15 molec cm-2' + IF ( isRank ) Rank = 2 + IF ( isTagged ) TagId = 'ALL' + ELSE IF ( TRIM( Name_AllCaps ) == 'TERPENESOA' ) THEN IF ( isDesc ) Desc = 'Monoterpene and sesqiterpene SOA' IF ( isUnits ) Units = 'ug m-3' diff --git a/Interfaces/GEOS/geos_analysis.F90 b/Interfaces/GEOS/geos_analysis.F90 index 6d4503129..b161612c0 100644 --- a/Interfaces/GEOS/geos_analysis.F90 +++ b/Interfaces/GEOS/geos_analysis.F90 @@ -54,6 +54,7 @@ MODULE GEOS_Analysis TYPE AnaOptions CHARACTER(LEN=63) :: SpecName LOGICAL :: Active + LOGICAL :: DryRun INTEGER :: AnalysisFreq INTEGER :: AnalysisHour INTEGER :: AnalysisMinute @@ -297,10 +298,13 @@ SUBROUTINE GEOS_AnaRun( Input_Opt, State_Met, State_Chm, State_Grid, State_Diag, ENDIF ! Reset diagnostics - IF ( State_Diag%Archive_AnaInc ) State_Diag%AnaInc(:,:,:,:) = 0.0 - IF ( State_Diag%Archive_AnaIncFrac ) State_Diag%AnaIncFrac(:,:,:,:) = 0.0 - IF ( State_Diag%Archive_AnaMask ) State_Diag%AnaMask(:,:,:,:) = 0.0 - IF ( State_Diag%Archive_AnaMaskSum ) State_Diag%AnaMaskSum(:,:,:) = 0.0 + IF ( State_Diag%Archive_AnaInc ) State_Diag%AnaInc(:,:,:,:) = 0.0 + IF ( State_Diag%Archive_AnaIncFrac ) State_Diag%AnaIncFrac(:,:,:,:) = 0.0 + IF ( State_Diag%Archive_AnaMask ) State_Diag%AnaMask(:,:,:,:) = 0.0 + IF ( State_Diag%Archive_AnaMaskSum ) State_Diag%AnaMaskSum(:,:,:) = 0.0 + IF ( State_Diag%Archive_AnaIncCol ) State_Diag%AnaIncCol(:,:,:) = 0.0 + IF ( State_Diag%Archive_AnaIncColTrop ) State_Diag%AnaIncColTrop(:,:,:) = 0.0 + IF ( State_Diag%Archive_AnaIncColPbl ) State_Diag%AnaIncColPbl(:,:,:) = 0.0 ! Do analysis for all analysis species IF ( nAnaSpec > 0 .AND. ASSOCIATED(AnaConfig) ) THEN @@ -401,7 +405,7 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat USE State_Diag_Mod, ONLY : DgnState, DgnMap ! Diagnostics State obj USE HCO_Utilities_GC_Mod, ONLY : HCO_GC_EvalFld USE TIME_MOD, ONLY : GET_TS_CHEM - Use PhysConstants, ONLY : AIRMW + Use PhysConstants, ONLY : AIRMW, AVO, g0 USE HCOIO_Util_Mod, ONLY : HCOIO_IsValid USE HCO_State_GC_Mod, ONLY : HcoState ! @@ -440,18 +444,20 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat REAL, ALLOCATABLE :: AnaMask2d(:,:), AnaMask3d(:,:,:) REAL, ALLOCATABLE :: SpcBkg(:,:,:), SpcAsm(:,:,:) REAL, ALLOCATABLE :: Spc2Bkg(:,:,:,:), Spc2Asm(:,:,:,:) + REAL, ALLOCATABLE :: AnaIncCol(:,:), AnaIncColTrop(:,:), AnaIncColPbl(:,:) INTEGER :: I, J, L, N, IM, JM, LM, indSpc INTEGER, ALLOCATABLE :: indSpc2(:) INTEGER :: UnitFlag, DryFlag, NNEG REAL :: OldRatio, NewRatio - REAL :: wgt, tropwgt, stratwgt + REAL :: wgt, tropwgt, stratwgt, pblwgt REAL :: DilFact, tsChem REAL :: frac, diff, maxChange, maxRatio, minRatio REAL :: mwSpc REAL, ALLOCATABLE :: mwSpc2(:) REAL :: SpcAna, SpcNew REAL :: MinConc - LOGICAL :: UpdateSpec2 + REAL :: IncConc, IncCol + LOGICAL :: UpdateSpec2, DoIncColDiag CHARACTER(LEN=255) :: Iam CHARACTER(LEN=255) :: ErrMsg, ThisLoc @@ -561,8 +567,13 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat ! Verbose IF ( am_I_Root .AND. (iopt%Verbose>0) ) THEN - WRITE(*,100) SpecName,yy,mm,dd,h,m -100 FORMAT( "GEOS-Chem: apply analysis for species ",A5," for ",I4.4,"-",I2.2,"-",I2.2," ",I2.2,":",I2.2) + IF ( .NOT. iopt%DryRun ) THEN + WRITE(*,100) SpecName,yy,mm,dd,h,m +100 FORMAT( "GEOS-Chem: apply analysis for species ",A5," for ",I4.4,"-",I2.2,"-",I2.2," ",I2.2,":",I2.2) + ELSE + WRITE(*,110) SpecName,yy,mm,dd,h,m +110 FORMAT( "GEOS-Chem: do analysis dry-run for species ",A5," for ",I4.4,"-",I2.2,"-",I2.2," ",I2.2,":",I2.2) + ENDIF ENDIF ! Select GEOS-Chem index and molecular weight for analysis species. Also get the same for 2nd species (if used) @@ -649,6 +660,22 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat ALLOCATE(AnaMask2d(IM,JM)) AnaMask2d = 0.0 ENDIF + DoIncColDiag = .FALSE. + IF ( State_Diag%Archive_AnaIncCol ) THEN + ALLOCATE(AnaIncCol(IM,JM)) + AnaIncCol = 0.0 + DoIncColDiag = .TRUE. + ENDIF + IF ( State_Diag%Archive_AnaIncColTrop ) THEN + ALLOCATE(AnaIncColTrop(IM,JM)) + AnaIncColTrop = 0.0 + DoIncColDiag = .TRUE. + ENDIF + IF ( State_Diag%Archive_AnaIncColPbl ) THEN + ALLOCATE(AnaIncColPbl(IM,JM)) + AnaIncColPbl = 0.0 + DoIncColDiag = .TRUE. + ENDIF ! Number of negative cells NNEG = 0 @@ -762,6 +789,23 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat IF ( ALLOCATED(AnaMask2d ) ) AnaMask2d(I,J) = AnaMask2d(I,J) + 1.0 IF ( ALLOCATED(AnaMask3d ) ) AnaMask3d(I,J,L) = 1.0 + ! Update column diagnostics + IF ( DoIncColDiag ) THEN + ! Increment (kg/kg total) + !IncConc = (SpcAsm(I,J,L) - SpcBkg(I,J,L)) * (1.-Q(I,J,L)) / MAPL_AIRMW * mwSpc + !const = MAPL_AVOGAD / ( MAPL_GRAV * mwSpc ) + !IncCol = IncConc * ( PLE(I,J,L+LB) - PLE(I,J,L+LB-1) ) * const / 1.0e4 / 1.0e15 + IncConc = (SpcAsm(I,J,L) - SpcBkg(I,J,L)) * (1.-State_Met%SPHU(I,J,L)/1000.) / AIRMW + IncCol = IncConc * 100.*(State_Met%PEDGE(I,J,L)-State_Met%PEDGE(I,J,L+1)) * (AVO*1000./g0) / 1.0e19 + IF ( ALLOCATED(AnaIncCol ) ) AnaIncCol(I,J) = AnaIncCol(I,J) + IncCol + IF ( ALLOCATED(AnaIncColTrop) ) AnaIncColTrop(I,J) = AnaIncColTrop(I,J) + (IncCol*tropwgt) + IF ( ALLOCATED(AnaIncColPbl) ) THEN + pblwgt = MAX(0.0,MIN(1.0,(State_Met%PEDGE(I,J,L)-(State_Met%PBL_TOP_hPa(I,J))) & + / (State_Met%PEDGE(I,J,L)-State_Met%PEDGE(I,J,L+1)))) + AnaIncColPbl(I,J) = AnaIncColPbl(I,J) + (IncCol*pblwgt) + ENDIF + ENDIF + ! Eventually update dependent species to maintain concentration ratio of species 2 / species 1 IF ( iopt%nSpec2>0 ) THEN DO N=1,iopt%nSpec2 @@ -799,11 +843,13 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat ! Pass back to State_Chm%Species array: convert v/v dry to kg/kg total ! ------------------------------------------------------------------------------------------- - State_Chm%Species(indSpc)%Conc(:,:,:) = SpcAsm(:,:,:) * (1.-State_Met%SPHU/1000.) / AIRMW * mwSpc - IF ( iopt%nSpec2 > 0 ) THEN - DO N=1,iopt%nSpec2 - State_Chm%Species(indSpc2(N))%Conc(:,:,:) = Spc2Asm(:,:,:,N) * (1.-State_Met%SPHU/1000.) / AIRMW * mwSpc2(N) - ENDDO + IF ( .NOT. iopt%DryRun ) THEN + State_Chm%Species(indSpc)%Conc(:,:,:) = SpcAsm(:,:,:) * (1.-State_Met%SPHU/1000.) / AIRMW * mwSpc + IF ( iopt%nSpec2 > 0 ) THEN + DO N=1,iopt%nSpec2 + State_Chm%Species(indSpc2(N))%Conc(:,:,:) = Spc2Asm(:,:,:,N) * (1.-State_Met%SPHU/1000.) / AIRMW * mwSpc2(N) + ENDDO + ENDIF ENDIF ! Write out diagnostics as needed @@ -857,20 +903,41 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat ENDIF ENDIF + ! IncCol + IF ( State_Diag%Archive_AnaIncCol ) THEN + DgnID = GetDiagnID ( State_Diag%Map_AnaIncCol, indSpc ) + IF ( DgnID > 0 ) State_Diag%AnaIncCol(:,:,DgnID) = AnaIncCol(:,:) + ENDIF + + ! IncColTrop + IF ( State_Diag%Archive_AnaIncColTrop ) THEN + DgnID = GetDiagnID ( State_Diag%Map_AnaIncColTrop, indSpc ) + IF ( DgnID > 0 ) State_Diag%AnaIncColTrop(:,:,DgnID) = AnaIncColTrop(:,:) + ENDIF + + ! IncColPbl + IF ( State_Diag%Archive_AnaIncColPbl ) THEN + DgnID = GetDiagnID ( State_Diag%Map_AnaIncColPbl, indSpc ) + IF ( DgnID > 0 ) State_Diag%AnaIncColPbl(:,:,DgnID) = AnaIncColPbl(:,:) + ENDIF + ENDIF ! HasField ! Cleanup ! ------- - IF ( ALLOCATED(SpcBkg ) ) DEALLOCATE(SpcBkg) - IF ( ALLOCATED(SpcAsm ) ) DEALLOCATE(SpcAsm) - IF ( ALLOCATED(Spc2Bkg ) ) DEALLOCATE(Spc2Bkg) - IF ( ALLOCATED(Spc2Asm ) ) DEALLOCATE(Spc2Asm) - IF ( ALLOCATED(indSpc2 ) ) DEALLOCATE(indSpc2) - IF ( ALLOCATED(mwSpc2 ) ) DEALLOCATE(mwSpc2) - IF ( ASSOCIATED(AnaPtr ) ) DEALLOCATE(AnaPtr) - IF ( ASSOCIATED(MskPtr ) ) DEALLOCATE(MskPtr) - IF ( ALLOCATED(AnaMask2d ) ) DEALLOCATE(AnaMask2d) - IF ( ALLOCATED(AnaMask3d ) ) DEALLOCATE(AnaMask3d) + IF ( ALLOCATED(SpcBkg ) ) DEALLOCATE(SpcBkg) + IF ( ALLOCATED(SpcAsm ) ) DEALLOCATE(SpcAsm) + IF ( ALLOCATED(Spc2Bkg ) ) DEALLOCATE(Spc2Bkg) + IF ( ALLOCATED(Spc2Asm ) ) DEALLOCATE(Spc2Asm) + IF ( ALLOCATED(indSpc2 ) ) DEALLOCATE(indSpc2) + IF ( ALLOCATED(mwSpc2 ) ) DEALLOCATE(mwSpc2) + IF ( ASSOCIATED(AnaPtr ) ) DEALLOCATE(AnaPtr) + IF ( ASSOCIATED(MskPtr ) ) DEALLOCATE(MskPtr) + IF ( ALLOCATED(AnaMask2d ) ) DEALLOCATE(AnaMask2d) + IF ( ALLOCATED(AnaMask3d ) ) DEALLOCATE(AnaMask3d) + IF ( ALLOCATED(AnaIncCol ) ) DEALLOCATE(AnaIncCol) + IF ( ALLOCATED(AnaIncColTrop ) ) DEALLOCATE(AnaIncColTrop) + IF ( ALLOCATED(AnaIncColPbl ) ) DEALLOCATE(AnaIncColPbl) iopt => NULL() @@ -1027,6 +1094,11 @@ SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) IF ( RC /= GC_SUCCESS ) RETURN AnaConfig(ispec)%Active = v_bool + key = TRIM(pkey)//"%DryRun" + CALL GetKey_( Config, key, RC, vbool=v_bool, vbool_default=.FALSE. ) + IF ( RC /= GC_SUCCESS ) RETURN + AnaConfig(ispec)%DryRun = v_bool + ! Analysis frequency key = TRIM(pkey)//"%AnalysisFreq" CALL GetKey_( Config, key, RC, vint=v_int, vint_default=6 ) @@ -1197,7 +1269,8 @@ SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) key = TRIM(pkey)//"%MinConc" CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='1.0e-20' ) IF ( RC /= GC_SUCCESS ) RETURN - AnaConfig(ispec)%MinConc = Cast_and_RoundOff( v_str, places=2 ) + READ( v_str, * ) AnaConfig(ispec)%MinConc + !AnaConfig(ispec)%MinConc = Cast_and_RoundOff( v_str, places=2 ) ! Error mode key = TRIM(pkey)//"%ErrorMode" @@ -1269,6 +1342,7 @@ SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) WRITE(6,*) 'Analysis settings for GEOS-Chem species ',TRIM(AnaConfig(ispec)%SpecName),':' WRITE(6,*) 'Active: ',AnaConfig(ispec)%Active IF ( AnaConfig(ispec)%Active ) THEN + WRITE(6,*) '- Dry run mode : ',AnaConfig(ispec)%DryRun WRITE(6,*) '- Analysis frequency : ',AnaConfig(ispec)%AnalysisFreq WRITE(6,*) '- Analysis hour : ',AnaConfig(ispec)%AnalysisHour WRITE(6,*) '- Analysis minute : ',AnaConfig(ispec)%AnalysisMinute From 8e3c88e30884f29e929ad54f87c0cee305e496af Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 14 Feb 2024 17:01:13 -0500 Subject: [PATCH 081/331] Fix GEOS-IT native lat-lon filenames used in GCHP ExtData.rc File had discover cluster file format instead of file format available at WashU. Signed-off-by: Lizzie Lundgren --- .../settings/geosit/geosit.native_ll.txt | 120 +++++++++--------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/run/shared/settings/geosit/geosit.native_ll.txt b/run/shared/settings/geosit/geosit.native_ll.txt index a3d04ed95..532969a27 100644 --- a/run/shared/settings/geosit/geosit.native_ll.txt +++ b/run/shared/settings/geosit/geosit.native_ll.txt @@ -29,41 +29,41 @@ ${RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS_FOR_ADVECTION} # --- 1-hr time-averaged, 2D --- #------------------------------------------------------- -EFLUX W_m-2 N Y F0;003000 none none EFLUX ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -EVAP kg_m-2_s-1 N Y F0;003000 none none EVAP ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -FRSEAICE 1 N Y F0;003000 none none FRSEAICE ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -HFLUX W_m-2 N Y F0;003000 none none HFLUX ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -PBLH m N Y F0;003000 none none PBLH ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -PRECANV kg_m-2_s-1 N Y F0;003000 none none PRECANV ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -PRECCON kg_m-2_s-1 N Y F0;003000 none none PRECCON ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -PRECLSC kg_m-2_s-1 N Y F0;003000 none none PRECLSC ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -PRECSNO kg_m-2_s-1 N Y F0;003000 none none PRECSNO ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -PRECTOT kg_m-2_s-1 N Y F0;003000 none none PRECTOT ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -USTAR m_s-1 N Y F0;003000 none none USTAR ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -Z0 m N Y F0;003000 none none Z0M ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 - -FRSNO 1 N Y F0;003000 none none FRSNO ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -GRN 1 N Y F0;003000 none none GRN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -GWETROOT 1 N Y F0;003000 none none GWETROOT ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -GWETTOP 1 N Y F0;003000 none none GWETTOP ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -LAI 1 N Y F0;003000 none none LAI ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -PARDF W_m-2 N Y F0;003000 none none PARDF ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -PARDR W_m-2 N Y F0;003000 none none PARDR ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -SNODP m N Y F0;003000 none none SNODP ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -SNOMAS kg_m-2 N Y F0;003000 none none SNOMAS ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 - -ALBD 1 N Y F0;003000 none none ALBEDO ./MetDir/%y4/%m2/%d2/GEOS.it.asm.rad_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -CLDFRC 1 N Y F0;003000 none none CLDTOT ./MetDir/%y4/%m2/%d2/GEOS.it.asm.rad_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -RADSWG W_m-2 N Y F0;003000 none none SWGDN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.rad_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 - -QV2M kg_kg-1 N Y F0;003000 none none QV2M ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -SLP Pa N Y F0;003000 none 0.01 SLP ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -TS K N Y F0;003000 none none T2M ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -TO3 Dobsons N Y F0;003000 none none TO3 ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -TROPP Pa N Y F0;003000 none 0.01 TROPPT ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -TSKIN K N Y F0;003000 none none TS ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -U10M m_s-1 N Y F0;003000 none none U10M ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 -V10M m_s-1 N Y F0;003000 none none V10M ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 +EFLUX W_m-2 N Y F0;003000 none none EFLUX ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +EVAP kg_m-2_s-1 N Y F0;003000 none none EVAP ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +FRSEAICE 1 N Y F0;003000 none none FRSEAICE ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +HFLUX W_m-2 N Y F0;003000 none none HFLUX ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +PBLH m N Y F0;003000 none none PBLH ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +PRECANV kg_m-2_s-1 N Y F0;003000 none none PRECANV ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +PRECCON kg_m-2_s-1 N Y F0;003000 none none PRECCON ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +PRECLSC kg_m-2_s-1 N Y F0;003000 none none PRECLSC ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +PRECSNO kg_m-2_s-1 N Y F0;003000 none none PRECSNO ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +PRECTOT kg_m-2_s-1 N Y F0;003000 none none PRECTOT ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +USTAR m_s-1 N Y F0;003000 none none USTAR ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +Z0 m N Y F0;003000 none none Z0M ./MetDir/%y4/%m2/%d2/GEOS.it.asm.flx_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 + +FRSNO 1 N Y F0;003000 none none FRSNO ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +GRN 1 N Y F0;003000 none none GRN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +GWETROOT 1 N Y F0;003000 none none GWETROOT ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +GWETTOP 1 N Y F0;003000 none none GWETTOP ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +LAI 1 N Y F0;003000 none none LAI ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +PARDF W_m-2 N Y F0;003000 none none PARDF ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +PARDR W_m-2 N Y F0;003000 none none PARDR ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +SNODP m N Y F0;003000 none none SNODP ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +SNOMAS kg_m-2 N Y F0;003000 none none SNOMAS ./MetDir/%y4/%m2/%d2/GEOS.it.asm.lnd_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 + +ALBD 1 N Y F0;003000 none none ALBEDO ./MetDir/%y4/%m2/%d2/GEOS.it.asm.rad_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +CLDFRC 1 N Y F0;003000 none none CLDTOT ./MetDir/%y4/%m2/%d2/GEOS.it.asm.rad_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +RADSWG W_m-2 N Y F0;003000 none none SWGDN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.rad_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 + +QV2M kg_kg-1 N Y F0;003000 none none QV2M ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +SLP Pa N Y F0;003000 none 0.01 SLP ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +TS K N Y F0;003000 none none T2M ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +TO3 Dobsons N Y F0;003000 none none TO3 ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +TROPP Pa N Y F0;003000 none 0.01 TROPPT ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +TSKIN K N Y F0;003000 none none TS ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +U10M m_s-1 N Y F0;003000 none none U10M ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 +V10M m_s-1 N Y F0;003000 none none V10M ./MetDir/%y4/%m2/%d2/GEOS.it.asm.slv_tavg_1hr_glo_L576x361_slv.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:30:00P01:00 # SEAICE[0-9]0 bins not used except in Hg simulation @@ -82,45 +82,45 @@ SEAICE90 1 N Y F0;003000 none none SEAICE90 /dev/null # --- 3-hr instantaneous (all 3D) --- #------------------------------------------------------- -TMPU1 K N Y 0 none none T ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_inst_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:00:00P03:00 -TMPU2 K N Y 0;001000 none none T ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_inst_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:00:00P03:00 +TMPU1 K N Y 0 none none T ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_inst_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:00:00P03:00 +TMPU2 K N Y 0;001000 none none T ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_inst_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T00:00:00P03:00 #------------------------------------------------------- # --- 3-hr time-averaged (all 3D) --- #------------------------------------------------------- -CLDF 1 N Y F0;013000 none none CLOUD ./MetDir/%y4/%m2/%d2/GEOS.it.asm.rad_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 +CLDF 1 N Y F0;013000 none none CLOUD ./MetDir/%y4/%m2/%d2/GEOS.it.asm.rad_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 -DTRAIN kg_m-2_s-1 N Y F0;013000 none none DTRAIN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.cld_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -TAUCLI 1 N Y F0;013000 none none TAUCLI ./MetDir/%y4/%m2/%d2/GEOS.it.asm.cld_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -TAUCLW 1 N Y F0;013000 none none TAUCLW ./MetDir/%y4/%m2/%d2/GEOS.it.asm.cld_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 +DTRAIN kg_m-2_s-1 N Y F0;013000 none none DTRAIN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.cld_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +TAUCLI 1 N Y F0;013000 none none TAUCLI ./MetDir/%y4/%m2/%d2/GEOS.it.asm.cld_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +TAUCLW 1 N Y F0;013000 none none TAUCLW ./MetDir/%y4/%m2/%d2/GEOS.it.asm.cld_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 -OMEGA Pa_s-1 N Y F0;013000 none none OMEGA ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -QI kg_kg-1 N Y F0;013000 none none QI ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -QL kg_kg-1 N Y F0;013000 none none QL ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -RH 1 N Y F0;013000 none none RH ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 +OMEGA Pa_s-1 N Y F0;013000 none none OMEGA ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +QI kg_kg-1 N Y F0;013000 none none QI ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +QL kg_kg-1 N Y F0;013000 none none QL ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +RH 1 N Y F0;013000 none none RH ./MetDir/%y4/%m2/%d2/GEOS.it.asm.asm_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 -DQRCU kg_kg-1_s-1 N Y F0;013000 none none DQRCU ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -DQRLSAN kg_kg-1_s-1 N Y F0;013000 none none DQRLSAN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -REEVAPCN kg_kg-1_s-1 N Y F0;013000 none none REEVAPCN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -REEVAPLS kg_kg-1_s-1 N Y F0;013000 none none REEVAPLSAN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 +DQRCU kg_kg-1_s-1 N Y F0;013000 none none DQRCU ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +DQRLSAN kg_kg-1_s-1 N Y F0;013000 none none DQRLSAN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +REEVAPCN kg_kg-1_s-1 N Y F0;013000 none none REEVAPCN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +REEVAPLS kg_kg-1_s-1 N Y F0;013000 none none REEVAPLSAN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v72.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 -CMFMC kg_m-2_s-1 N Y F0;013000 none none CMFMC ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v73.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -PFICU kg_m-2_s-1 N Y F0;013000 none none PFICU ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v73.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -PFILSAN kg_m-2_s-1 N Y F0;013000 none none PFILSAN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v73.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -PFLCU kg_m-2_s-1 N Y F0;013000 none none PFLCU ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v73.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 -PFLLSAN kg_m-2_s-1 N Y F0;013000 none none PFLLSAN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v73.GEOS5294.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 +CMFMC kg_m-2_s-1 N Y F0;013000 none none CMFMC ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v73.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +PFICU kg_m-2_s-1 N Y F0;013000 none none PFICU ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v73.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +PFILSAN kg_m-2_s-1 N Y F0;013000 none none PFILSAN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v73.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +PFLCU kg_m-2_s-1 N Y F0;013000 none none PFLCU ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v73.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 +PFLLSAN kg_m-2_s-1 N Y F0;013000 none none PFLLSAN ./MetDir/%y4/%m2/%d2/GEOS.it.asm.mst_tavg_3hr_glo_L576x361_v73.GEOS5294.%y4-%m2-%d2T%h2%n2.V01.nc4 1995-01-01T01:30:00P03:00 #------------------------------------------------------- # --- Fixed variables, from constants file --- #------------------------------------------------------- -FRLAKE 1 N Y - none none FRLAKE ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.nc4 -FRLAND 1 N Y - none none FRLAND ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.nc4 -FRLANDIC 1 N Y - none none FRLANDICE ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.nc4 -FROCEAN 1 N Y - none none FROCEAN ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.nc4 -PHIS m2_s-2 N Y - none none PHIS ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.nc4 -OCEAN_MASK 1 N Y - none none FROCEAN ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.nc4 +FRLAKE 1 N Y - none none FRLAKE ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.V01.nc4 +FRLAND 1 N Y - none none FRLAND ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.V01.nc4 +FRLANDIC 1 N Y - none none FRLANDICE ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.V01.nc4 +FROCEAN 1 N Y - none none FROCEAN ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.V01.nc4 +PHIS m2_s-2 N Y - none none PHIS ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.V01.nc4 +OCEAN_MASK 1 N Y - none none FROCEAN ./MetDir/1998/01/01/GEOS.it.asm.asm_const_0hr_glo_L576x361_slv.GEOS5294.1998-01-01T0000.V01.nc4 """ From 0b541769896543c9ea07d85bcbe085699147321c Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 14 Feb 2024 17:04:43 -0500 Subject: [PATCH 082/331] Rename rundir creation variables used for offline emissions grid res - RUNDIR_MET_NATIVE_RES is now RUNDIR_OFFLINE_EMIS_RES - RUNDIR_MET_LAT_RES is now RUNDIR_OFFLINE_EMIS_LAT_RES - Deleted RUNDIR_MET_LON_RES since not used - All relevant template files are also updated This update also fixes a bug when using native cubed-sphere GEOS-IT meteorology which caused the offline emissions paths in ExtData.rc to be wrong. Signed-off-by: Lizzie Lundgren --- .../HEMCO_Config.rc.aerosol | 34 +++++++------- .../ExtData.rc.templates/ExtData.rc.fullchem | 46 +++++++++---------- .../settings/geosfp/geosfp.native_ll.txt | 6 +-- .../geosfp/geosfp.preprocessed_ll.txt | 6 +-- .../discover/geosit.native_cs.discover.txt | 4 +- .../discover/geosit.native_ll.discover.txt | 4 +- .../settings/geosit/geosit.native_cs.txt | 4 +- .../settings/geosit/geosit.native_ll.txt | 6 +-- .../geosit/geosit.preprocessed_ll.txt | 6 +-- 9 files changed, 61 insertions(+), 55 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol index 817e3b0e3..2ae17232f 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol @@ -1713,10 +1713,10 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== (((OFFLINE_DUST (((.not.DustDead.or.DustGinoux -0 EMIS_DST1 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST1 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST1 - 3 2 -0 EMIS_DST2 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST2 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST2 - 3 2 -0 EMIS_DST3 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST3 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST3 - 3 2 -0 EMIS_DST4 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST4 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST4 - 3 2 +0 EMIS_DST1 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST1 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST1 - 3 2 +0 EMIS_DST2 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST2 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST2 - 3 2 +0 EMIS_DST3 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST3 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST3 - 3 2 +0 EMIS_DST4 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST4 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST4 - 3 2 ))).not.DustDead.or.DustGinoux )))OFFLINE_DUST @@ -1724,25 +1724,25 @@ VerboseOnCores: root # Accepted values: root all # --- Offline biogenic VOC emissions --- #============================================================================== (((OFFLINE_BIOGENICVOC -0 BIOGENIC_ACET $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc ACET_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ACET - 4 2 -0 BIOGENIC_ALD2 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc ALD2_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ALD2 - 4 2 -0 BIOGENIC_C2H4 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc C2H4_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s C2H4 - 4 2 -0 BIOGENIC_EOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s EOH - 4 2 -0 BIOGENIC_ISOP $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc ISOP_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ISOP - 4 2 +0 BIOGENIC_ACET $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc ACET_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ACET - 4 2 +0 BIOGENIC_ALD2 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc ALD2_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ALD2 - 4 2 +0 BIOGENIC_C2H4 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc C2H4_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s C2H4 - 4 2 +0 BIOGENIC_EOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s EOH - 4 2 +0 BIOGENIC_ISOP $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc ISOP_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ISOP - 4 2 0 BIOGENIC_ISOP_SOAP - - - - - - SOAP 610 4 2 0 BIOGENIC_ISOP_SOAS - - - - - - SOAS 610 4 2 -0 BIOGENIC_LIMO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc LIMO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s LIMO - 4 2 +0 BIOGENIC_LIMO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc LIMO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s LIMO - 4 2 0 BIOGENIC_LIMO_SOAP - - - - - - SOAP 611 4 2 0 BIOGENIC_LIMO_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_MOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc MOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MOH - 4 2 -0 BIOGENIC_MTPA $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc MTPA_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPA - 4 2 +0 BIOGENIC_MOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc MOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MOH - 4 2 +0 BIOGENIC_MTPA $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc MTPA_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPA - 4 2 0 BIOGENIC_MTPA_SOAP - - - - - - SOAP 611 4 2 0 BIOGENIC_MTPA_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_MTPO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc MTPO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPO - 4 2 +0 BIOGENIC_MTPO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc MTPO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPO - 4 2 0 BIOGENIC_MTPO_SOAP - - - - - - SOAP 611 4 2 0 BIOGENIC_MTPO_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_PRPE $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc PRPE_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s PRPE - 4 2 -0 BIOGENIC_SESQ $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc SESQ_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s SESQ - 4 2 +0 BIOGENIC_PRPE $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc PRPE_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s PRPE - 4 2 +0 BIOGENIC_SESQ $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc SESQ_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s SESQ - 4 2 0 BIOGENIC_SESQ_SOAP - - - - - - SOAP 612 4 2 0 BIOGENIC_SESQ_SOAS - - - - - - SOAS 612 4 2 )))OFFLINE_BIOGENICVOC @@ -1752,13 +1752,13 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== (((OFFLINE_SEASALT (((.not.SeaSalt -0 SEASALT_SALA $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/seasalt_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc SALA_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALA - 3 2 +0 SEASALT_SALA $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/seasalt_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc SALA_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALA - 3 2 0 SEASALT_SALAAL - - - - - - SALAAL 615 3 2 0 SEASALT_SALACL - - - - - - SALACL 616 3 2 (((CalcBrSeasalt 0 SEASALT_BrSALA - - - - - - BrSALA 617 3 2 )))CalcBrSeasalt -0 SEASALT_SALC $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/seasalt_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc SALC_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALC - 3 2 +0 SEASALT_SALC $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/seasalt_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc SALC_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALC - 3 2 0 SEASALT_SALCAL - - - - - - SALCAL 615 3 2 0 SEASALT_SALCCL - - - - - - SALCCL 616 3 2 (((CalcBrSeasalt diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem index 2bf5594d8..16846f4d1 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem @@ -1600,42 +1600,42 @@ PM25FINE_3 kg/m2/s Y Y 2013-%m2-01T00:00:00 none none PM25FINE ./HcoDir/AFCID/v2 #============================================================================== # --- Offline dust emissions (OFFLINE_DUST)--- #============================================================================== -EMIS_DST1 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none EMIS_DST1 ./HcoDir/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/dust_emissions_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -EMIS_DST2 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none EMIS_DST2 ./HcoDir/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/dust_emissions_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -EMIS_DST3 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none EMIS_DST3 ./HcoDir/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/dust_emissions_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -EMIS_DST4 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none EMIS_DST4 ./HcoDir/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/dust_emissions_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc +EMIS_DST1 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none EMIS_DST1 ./HcoDir/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +EMIS_DST2 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none EMIS_DST2 ./HcoDir/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +EMIS_DST3 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none EMIS_DST3 ./HcoDir/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +EMIS_DST4 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none EMIS_DST4 ./HcoDir/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc # #============================================================================== # --- Offline biogenic VOC emissions (OFFLINE_BIOGENICVOC) --- #============================================================================== -BIOGENIC_ACET kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none ACET_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_ALD2 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none ALD2_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_C2H4 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none C2H4_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_EOH kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none EOH_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_ISOP kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none ISOP_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_PRPE kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none PRPE_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_SOAP kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SOAP_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_SOAS kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SOAS_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_MOH kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none MOH_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_MTPA kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none MTPA_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_MTPO kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none MTPO_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_LIMO kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none LIMO_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -BIOGENIC_SESQ kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SESQ_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/biovoc_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_ACET kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none ACET_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_ALD2 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none ALD2_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_C2H4 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none C2H4_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_EOH kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none EOH_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_ISOP kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none ISOP_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_PRPE kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none PRPE_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_SOAP kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SOAP_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_SOAS kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SOAS_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_MOH kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none MOH_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_MTPA kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none MTPA_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_MTPO kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none MTPO_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_LIMO kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none LIMO_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +BIOGENIC_SESQ kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SESQ_MEGAN ./HcoDir/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc # #============================================================================== # --- Offline sea salt emissions (OFFLINE_SEASALT) --- #============================================================================== -SEASALT_SALA kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SALA_TOTAL ./HcoDir/OFFLINE_SEASALT/v2019-01/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/seasalt_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -SEASALT_SALC kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SALC_TOTAL ./HcoDir/OFFLINE_SEASALT/v2019-01/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/seasalt_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc +SEASALT_SALA kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SALA_TOTAL ./HcoDir/OFFLINE_SEASALT/v2019-01/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/seasalt_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +SEASALT_SALC kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SALC_TOTAL ./HcoDir/OFFLINE_SEASALT/v2019-01/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/seasalt_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc # -#SEASALT_Br2 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none Br2_TOTAL ./HcoDir/OFFLINE_SEASALT/v2019-01/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/seasalt_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -#SEASALT_BrSALA kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none BrSALA_TOTAL ./HcoDir/OFFLINE_SEASALT/v2019-01/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/seasalt_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc -#SEASALT_BrSALC kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none BrSALC_TOTAL ./HcoDir/OFFLINE_SEASALT/v2019-01/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/seasalt_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc +#SEASALT_Br2 kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none Br2_TOTAL ./HcoDir/OFFLINE_SEASALT/v2019-01/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/seasalt_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +#SEASALT_BrSALA kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none BrSALA_TOTAL ./HcoDir/OFFLINE_SEASALT/v2019-01/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/seasalt_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc +#SEASALT_BrSALC kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none BrSALC_TOTAL ./HcoDir/OFFLINE_SEASALT/v2019-01/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/seasalt_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc # #============================================================================== # --- Offline soil NOx emissions (OFFLINE_SOILNOX) --- #============================================================================== -SOILNOX_NO kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SOIL_NOx ./HcoDir/OFFLINE_SOILNOX/v2021-12/${RUNDIR_MET_NATIVE_RES}/%y4/%m2/soilnox_${RUNDIR_MET_LAT_RES}.%y4%m2%d2.nc +SOILNOX_NO kg/m2/s N Y %y4-%m2-%d2T%h2:00:00 none none SOIL_NOx ./HcoDir/OFFLINE_SOILNOX/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/%y4/%m2/soilnox_${RUNDIR_OFFLINE_EMIS_LAT_RES}.%y4%m2%d2.nc # ############################################################################### ### diff --git a/run/shared/settings/geosfp/geosfp.native_ll.txt b/run/shared/settings/geosfp/geosfp.native_ll.txt index 4b99de2fe..365c4d9cc 100644 --- a/run/shared/settings/geosfp/geosfp.native_ll.txt +++ b/run/shared/settings/geosfp/geosfp.native_ll.txt @@ -5,15 +5,15 @@ RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.25x0.3125/GEOS_FP_Native" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.true. RUNDIR_MET_RES='025x03125' -RUNDIR_MET_NATIVE_RES='0.25x0.3125' -RUNDIR_MET_LAT_RES='025' -RUNDIR_MET_LON_RES='03125' RUNDIR_MET_EXT='nc' RUNDIR_MET_CN_YR=2011 RUNDIR_MET_PRES_UNIT='hPa' RUNDIR_MET_PRES_SCALE='1.0' +RUNDIR_OFFLINE_EMIS_RES='0.25x0.3125' +RUNDIR_OFFLINE_EMIS_LAT_RES='025' + RUNDIR_METLIGHTNING='GEOSFP' RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.25x0.3125/GEOS_FP_Native" RUNDIR_METLIGHTNING_NATIVE_RES='0.25x0.3125' diff --git a/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt b/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt index f3b575244..cc92acad1 100644 --- a/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt +++ b/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt @@ -7,15 +7,15 @@ RUNDIR_USE_TOTAL_AIR_PRESSURE_IN_ADVECTION=0 RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.false. RUNDIR_IMPORT_MASS_FLUX_FROM_EXTDATA=.false. RUNDIR_MET_RES='025x03125' -RUNDIR_MET_NATIVE_RES='0.25x0.3125' -RUNDIR_MET_LAT_RES='025' -RUNDIR_MET_LON_RES='03125' RUNDIR_MET_EXT='nc' RUNDIR_MET_CN_YR=2011 RUNDIR_MET_PRES_UNIT='hPa' RUNDIR_MET_PRES_SCALE='1.0' +RUNDIR_OFFLINE_EMIS_RES='0.25x0.3125' +RUNDIR_OFFLINE_EMIS_LAT_RES='025' + RUNDIR_METLIGHTNING='GEOSFP' RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.25x0.3125/GEOS_FP" RUNDIR_METLIGHTNING_NATIVE_RES='0.25x0.3125' diff --git a/run/shared/settings/geosit/discover/geosit.native_cs.discover.txt b/run/shared/settings/geosit/discover/geosit.native_cs.discover.txt index e1c1b48a9..9902acf60 100644 --- a/run/shared/settings/geosit/discover/geosit.native_cs.discover.txt +++ b/run/shared/settings/geosit/discover/geosit.native_cs.discover.txt @@ -5,7 +5,6 @@ RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_C180/GEOS_IT_Native" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.true. RUNDIR_MET_RES='C180' -RUNDIR_MET_NATIVE_RES='C180' RUNDIR_MET_EXT='nc4' RUNDIR_MET_CN_YR=Y2018 @@ -13,6 +12,9 @@ RUNDIR_MET_CN_MO=M01 RUNDIR_MET_PRES_UNIT='hPa' RUNDIR_MET_PRES_SCALE='1.0' +RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' +RUNDIR_OFFLINE_EMIS_LAT_RES='05' + RUNDIR_METLIGHTNING='MERRA2' RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' diff --git a/run/shared/settings/geosit/discover/geosit.native_ll.discover.txt b/run/shared/settings/geosit/discover/geosit.native_ll.discover.txt index e466b3c66..6aa2d5f09 100644 --- a/run/shared/settings/geosit/discover/geosit.native_ll.discover.txt +++ b/run/shared/settings/geosit/discover/geosit.native_ll.discover.txt @@ -4,7 +4,6 @@ RUNDIR_MET_DIR="${RUNDIR_DATA_ROOT}/GEOS_${RUNDIR_GRID_DIR}/GEOS_IT" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.true. RUNDIR_MET_RES='05x0625' -RUNDIR_MET_NATIVE_RES='0.5x0.625' RUNDIR_MET_EXT='nc4' RUNDIR_MET_CN_YR=Y2018 @@ -12,6 +11,9 @@ RUNDIR_MET_CN_MO=M01 RUNDIR_MET_PRES_UNIT='hPa' RUNDIR_MET_PRES_SCALE='1.0' +RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' +RUNDIR_OFFLINE_EMIS_LAT_RES='05' + RUNDIR_METLIGHTNING='MERRA2' RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' diff --git a/run/shared/settings/geosit/geosit.native_cs.txt b/run/shared/settings/geosit/geosit.native_cs.txt index 3557d2d32..3fc86d5c4 100644 --- a/run/shared/settings/geosit/geosit.native_cs.txt +++ b/run/shared/settings/geosit/geosit.native_cs.txt @@ -5,7 +5,6 @@ RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_C180/GEOS_IT_Native" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.true. RUNDIR_MET_RES='C180' -RUNDIR_MET_NATIVE_RES='C180' RUNDIR_MET_EXT='nc4' RUNDIR_MET_CN_YR=Y1998 @@ -13,6 +12,9 @@ RUNDIR_MET_CN_MO=M01 RUNDIR_MET_PRES_UNIT='hPa' RUNDIR_MET_PRES_SCALE='1.0' +RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' +RUNDIR_OFFLINE_EMIS_LAT_RES='05' + RUNDIR_METLIGHTNING='MERRA2' RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' diff --git a/run/shared/settings/geosit/geosit.native_ll.txt b/run/shared/settings/geosit/geosit.native_ll.txt index 532969a27..954cff122 100644 --- a/run/shared/settings/geosit/geosit.native_ll.txt +++ b/run/shared/settings/geosit/geosit.native_ll.txt @@ -5,9 +5,6 @@ RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/GEOS_IT_Native" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.true. RUNDIR_MET_RES='05x0625' -RUNDIR_MET_NATIVE_RES='0.5x0.625' -RUNDIR_MET_LAT_RES='05' -RUNDIR_MET_LON_RES='0625' RUNDIR_MET_EXT='nc4' RUNDIR_MET_CN_YR=Y1998 @@ -15,6 +12,9 @@ RUNDIR_MET_CN_MO=M01 RUNDIR_MET_PRES_UNIT='hPa' RUNDIR_MET_PRES_SCALE='1.0' +RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' +RUNDIR_OFFLINE_EMIS_LAT_RES='05' + RUNDIR_METLIGHTNING='MERRA2' RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' diff --git a/run/shared/settings/geosit/geosit.preprocessed_ll.txt b/run/shared/settings/geosit/geosit.preprocessed_ll.txt index 0ecab0495..c964aebcc 100644 --- a/run/shared/settings/geosit/geosit.preprocessed_ll.txt +++ b/run/shared/settings/geosit/geosit.preprocessed_ll.txt @@ -5,15 +5,15 @@ RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/GEOS_IT" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.false. RUNDIR_MET_RES='05x0625' -RUNDIR_MET_NATIVE_RES='0.5x0.625' -RUNDIR_MET_LAT_RES='05' -RUNDIR_MET_LON_RES='0625' RUNDIR_MET_EXT='nc4' RUNDIR_MET_CN_YR=1998 RUNDIR_MET_PRES_UNIT='Pa ' RUNDIR_MET_PRES_SCALE='0.01' +RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' +RUNDIR_OFFLINE_EMIS_LAT_RES='05' + RUNDIR_METLIGHTNING='MERRA2' RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/MERRA2" RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' From db954543e10ef187f5f48c89e1787ff8047f86e8 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 14 Feb 2024 17:05:28 -0500 Subject: [PATCH 083/331] Update GCHP run scripts to not print all run script commands The option to print all run script commands is commented out as a debug option. Having it on by default clutters the GCHP log file. Signed-off-by: Lizzie Lundgren --- .../operational_examples/harvard_cannon/gchp.run | 7 +++++-- .../operational_examples/nasa_pleiades/gchp.pleiades.run | 5 ++++- .../operational_examples/nci_gadi/gchp.pbs.run | 5 ++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run index 4ea912e4f..f9479e9e5 100755 --- a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run +++ b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run @@ -25,8 +25,11 @@ ### --exclusive : Reserves entire nodes (i.e. to prevent backfilling jobs) ############################################################################### -# Exit if command fails, and log all commands -set -xe +# Exit if command fails +set -e + +# Debug option to print all commands executed in this script +#set -x # Define log name to include simulation start date start_str=$(sed 's/ /_/g' cap_restart) diff --git a/run/GCHP/runScriptSamples/operational_examples/nasa_pleiades/gchp.pleiades.run b/run/GCHP/runScriptSamples/operational_examples/nasa_pleiades/gchp.pleiades.run index afee45c26..1cd2c8d3f 100755 --- a/run/GCHP/runScriptSamples/operational_examples/nasa_pleiades/gchp.pleiades.run +++ b/run/GCHP/runScriptSamples/operational_examples/nasa_pleiades/gchp.pleiades.run @@ -21,7 +21,10 @@ cd $PBS_O_WORKDIR # Exit if command fails, and log all commands -set -xe +set -e + +# Debug option to print all commands in this script +#set -x # Export and unset certain environment variables export MPI_LAUNCH_TIMEOUT=40 diff --git a/run/GCHP/runScriptSamples/operational_examples/nci_gadi/gchp.pbs.run b/run/GCHP/runScriptSamples/operational_examples/nci_gadi/gchp.pbs.run index 37692b187..1d2420595 100644 --- a/run/GCHP/runScriptSamples/operational_examples/nci_gadi/gchp.pbs.run +++ b/run/GCHP/runScriptSamples/operational_examples/nci_gadi/gchp.pbs.run @@ -17,7 +17,10 @@ ulimit -v unlimited # vmemoryuse ulimit -s unlimited # stacksize # Exit if command fails, and log all commands -set -xe +set -e + +# Debug option to print all commands executed in this script +#set -x # Define log name to include simulation start date start_str=$(sed 's/ /_/g' cap_restart) From 45e65d8146c58af5c3c9429afda29b94b0f5b0c0 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 14 Feb 2024 17:06:17 -0500 Subject: [PATCH 084/331] Update GCHP rundir options to include using pre-processed GEOS-IT lat-lon These files are still being generated at WashU but there are now at least a few dates to run with. Signed-off-by: Lizzie Lundgren --- run/GCHP/createRunDir.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/run/GCHP/createRunDir.sh b/run/GCHP/createRunDir.sh index 4046e2589..515b2a285 100755 --- a/run/GCHP/createRunDir.sh +++ b/run/GCHP/createRunDir.sh @@ -389,7 +389,7 @@ while [ "${valid_met}" -eq 0 ]; do printf " 1. Native C180 (recommended)\n" printf " 2. Native 0.5x0.625 \n" printf " 3. Pre-processed C180 (not yet available)\n" - printf " 4. Pre-processed 0.5x0.625 (not yet available) \n" + printf " 4. Pre-processed 0.5x0.625 \n" valid_response=0 while [ "${valid_response}" -eq 0 ]; do valid_response=1 @@ -406,8 +406,7 @@ while [ "${valid_met}" -eq 0 ]; do printf "Pre-processed GEOS-IT data at C180 resolution is not yet available. Try again.\n" elif [[ ${response} = "4" ]]; then met_file_type="processed_ll" - valid_response=0 - printf "Pre-processed lat-lon GEOS-IT data is not yet available. Try again.\n" + met_desc="processed_ll" else valid_response=0 printf "Invalid option. Try again.\n" @@ -457,7 +456,7 @@ while [ "${valid_met}" -eq 0 ]; do # Set text files containing settings for met data. Different settings based options aboves. if [[ ${met_file_type} = "processed_ll" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit.preprocessed_ll.txt)\n" + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/geosit.preprocessed_ll.txt)\n" else if [[ ${use_discover} = "y" ]]; then From d1b4d18880ac3d382d70aa0b588bc29ca9a3a89b Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 14 Feb 2024 17:21:39 -0500 Subject: [PATCH 085/331] Updated changelog Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b38d5b952..0ee8bcbb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Added - Added operational run scripts for the Imperial College London (ICL) cluster - Added new vertical region option to budget diagnostic for fixed bottom and top levels +- Added GEOS-IT processed lat-lon fields as a valid option when creating GCHP run directories ### Changed - Updated Harvard Cannon operational run scripts to use `huce_cascade` instead of `huce_intel`; also added `sapphire` +- Changed GCHP sample run scripts to not print script execution commands to log +- Changed offline emissions grid resolution templates in config files to be more descriptive + +### Fixed +- Fixed GEOS-IT native lat-lon filenames used for clusters other than discover +- Fixed offline emission paths set when using GEOS-IT meteorology ## [14.3.0] - 2024-02-07 ### Added From 34b7d3ca7cfdf5b707ca8fd591e596594128a988 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 5 Feb 2024 13:49:43 -0500 Subject: [PATCH 086/331] Rebase feature/updated-timezones-for-hemco atop dev/14.4.0 This commit rebases the feature/updated-timezones-for-hemco on top of 14.4.0-alpha.1. This is necessary in order for GCHP+TOMAS integration tests to pass. Signed-off-by: Bob Yantosca --- CHANGELOG.md | 3 +++ run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 | 2 +- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 | 2 +- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg | 2 +- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.POPs | 2 +- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.TransportTracers | 2 +- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol | 2 +- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 2 +- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem | 2 +- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.metals | 2 +- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 | 2 +- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO | 2 +- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagO3 | 2 +- run/GCHP/ExtData.rc.templates/ExtData.rc.CO2 | 2 +- run/GCHP/ExtData.rc.templates/ExtData.rc.TransportTracers | 2 +- run/GCHP/ExtData.rc.templates/ExtData.rc.carbon | 2 +- run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem | 2 +- run/GCHP/ExtData.rc.templates/ExtData.rc.tagO3 | 2 +- run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 | 2 +- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.TransportTracers | 2 +- run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 2 +- run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem | 2 +- run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagO3 | 2 +- 23 files changed, 25 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce542fa9e..be7e3059c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Added - Diel and day-of-week scale factors for CEDS global base emissions +### Changed +- Now use updated timezones for HEMCO, which treat daylight savings time more accurately + ### Fixed - Use rate-law function `GCARR_ac` for rxns that have Arrhenius `B` parameters that are zero diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index 428f5fec5..38d01a8a8 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -621,7 +621,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 index 963a24e53..5857630b0 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 @@ -341,7 +341,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg index 902a105eb..9e9bcd479 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg @@ -470,7 +470,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.POPs b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.POPs index fd20818ab..84406b680 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.POPs +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.POPs @@ -106,7 +106,7 @@ ${RUNDIR_GLOBAL_BC} #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.TransportTracers b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.TransportTracers index 94b19cb3f..7be1331ea 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.TransportTracers +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.TransportTracers @@ -174,7 +174,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol index 10c2ae9cc..b5b7424ba 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol @@ -1937,7 +1937,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 0bf40f676..1f9764257 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1058,7 +1058,7 @@ Mask fractions: false #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 85f1b25bb..6f94cd666 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -3425,7 +3425,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.metals b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.metals index cb75ece57..07017f86b 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.metals +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.metals @@ -254,7 +254,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index de0a3dc06..c189448f0 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -832,7 +832,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO index 80cea55ba..0bb65d8e6 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO @@ -853,7 +853,7 @@ Mask fractions: false #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagO3 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagO3 index 944a1f520..3aa400992 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagO3 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagO3 @@ -90,7 +90,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.CO2 b/run/GCHP/ExtData.rc.templates/ExtData.rc.CO2 index b9412b31f..db8703a22 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.CO2 +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.CO2 @@ -152,7 +152,7 @@ CMSF_CO2_BN kgC/km2/s N Y F%y4-%m2-01T00:00:00 none 1e-6 CO2_Flux /nobac #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -TIMEZONES count N V - none none UTC_OFFSET ./HcoDir/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc +TIMEZONES count Y Y 2017-%m2-01T00:00:00 none none UTC_OFFSET ./HcoDir/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc # ############################################################################### ### diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.TransportTracers b/run/GCHP/ExtData.rc.templates/ExtData.rc.TransportTracers index 3dd148228..661e96ad9 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.TransportTracers +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.TransportTracers @@ -182,7 +182,7 @@ ZHANG_Rn222_EMIS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none rnemis ./HcoDir/Z #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -TIMEZONES count N V - none none UTC_OFFSET ./HcoDir/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc +TIMEZONES count Y V 2017-%m2-01T00:00:00 none none UTC_OFFSET ./HcoDir/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc # ############################################################################### ### diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index 6ec3b4e6e..c8e7786d6 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -464,7 +464,7 @@ GFED_FRAC_DAY 1 N Y %y4-%m2-%d2T00:00:00 none none GFED_FRACDAY ./HcoDir/GFED4/v ############################################################################### # --- Time zones (offset to UTC) --- -TIMEZONES count N V - none none UTC_OFFSET ./HcoDir/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc +TIMEZONES count Y V 2017-%m2-01T00:00:00 none none UTC_OFFSET ./HcoDir/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc # --- OH from the latest 10-year benchmark --- #GLOBAL_OH kg/m3 N N %y4-%m2-01T00:00:00 none none SpeciesConc_OH ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.SpeciesConc.%y4%m2%d2_0000z.nc4 diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem index 2bf5594d8..42ad6ef4b 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem @@ -1781,7 +1781,7 @@ GFED_FRAC_3HOUR 1 N Y %y4-%m2-01T%h2:00:00 none none GFED_FRAC3HR ./HcoDir/GFED4 #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -TIMEZONES count N V - none none UTC_OFFSET ./HcoDir/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc +TIMEZONES count Y V 2017-%m2-01T00:00:00 none none UTC_OFFSET ./HcoDir/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc # #============================================================================== # --- UV albedo (UVALBEDO) --- diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.tagO3 b/run/GCHP/ExtData.rc.templates/ExtData.rc.tagO3 index 5a8938ece..795cf7dae 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.tagO3 +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.tagO3 @@ -211,7 +211,7 @@ XLAIMULTI cm2_cm-2 N Y %y4-%m2-%d2T00:00:00 none none XLAIMULTI ./HcoDir/Yuan_XL #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -TIMEZONES count N V - none none UTC_OFFSET ./HcoDir/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc +TIMEZONES count Y V 2017-%m2-01T00:00:00 none none UTC_OFFSET ./HcoDir/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc # #============================================================================== #--- Prod/Loss rates from the fullchem simulation --- diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 index 683182b74..2e0386f36 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 @@ -315,7 +315,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- GEOS-Chem restart file --- diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.TransportTracers b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.TransportTracers index 87323ca51..e293796a3 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.TransportTracers +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.TransportTracers @@ -172,7 +172,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- GEOS-Chem restart file --- diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index bc23e42a4..206d5e4c8 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1058,7 +1058,7 @@ Mask fractions: false #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- Meteorology fields --- diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 53c280424..43ba6270a 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -3424,7 +3424,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- GEOS-Chem restart file --- diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagO3 b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagO3 index 0ccd4162d..ff488ae4b 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagO3 +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagO3 @@ -88,7 +88,7 @@ Warnings: 1 #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 #============================================================================== # --- GEOS-Chem restart file --- From ac1da8d4013a39128f4b8ca4dffedbdf0f740742 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Fri, 26 Jan 2024 15:03:58 -0500 Subject: [PATCH 087/331] Fixes to enable building in GEOSgcm Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 4 ++++ Interfaces/GCHP/Chem_GridCompMod.F90 | 1 + Interfaces/GEOS/Includes_After_Run.H | 2 +- Interfaces/GEOS/Includes_Before_Run.H | 2 +- Interfaces/GEOS/geos_CarbonInterface.F90 | 2 +- Interfaces/GEOS/geos_interface.F90 | 14 +++++++------- KPP/custom/custom.eqn | 2 +- KPP/fullchem/fullchem.eqn | 2 +- KPP/fullchem/gckpp_Rates.F90 | 2 +- run/GEOS/geoschem_config.yml | 2 +- 10 files changed, 19 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b38d5b952..510fccdfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Updated Harvard Cannon operational run scripts to use `huce_cascade` instead of `huce_intel`; also added `sapphire` +- Changed exponent 'e' to 'd' for one entry in KPP to prevent precision error in external models + +### Fixed +- Fixed unit conversions in GEOS-only code ## [14.3.0] - 2024-02-07 ### Added diff --git a/Interfaces/GCHP/Chem_GridCompMod.F90 b/Interfaces/GCHP/Chem_GridCompMod.F90 index ea18b6753..669dac187 100644 --- a/Interfaces/GCHP/Chem_GridCompMod.F90 +++ b/Interfaces/GCHP/Chem_GridCompMod.F90 @@ -2075,6 +2075,7 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) USE GEOS_AeroCoupler, ONLY : GEOS_FillAeroBundle USE GEOS_CarbonInterface, ONLY : GEOS_CarbonSetConc, & GEOS_CarbonRunPhoto + USE UnitConv_Mod, ONLY : KG_SPECIES_PER_KG_TOTAL_AIR #endif ! diff --git a/Interfaces/GEOS/Includes_After_Run.H b/Interfaces/GEOS/Includes_After_Run.H index d3bcb5c00..cedf4289b 100644 --- a/Interfaces/GEOS/Includes_After_Run.H +++ b/Interfaces/GEOS/Includes_After_Run.H @@ -55,7 +55,7 @@ ! testing only !if(MAPL_am_I_Root()) write(*,*) 'Copied to internal: ',I,Int2Spc(I)%ID,trim(Int2Spc(I)%Name),MINVAL(State_Chm%Species(Int2Spc(I)%ID)%Conc(:,:,LM:1:-1)),MAXVAL(State_Chm%Species(Int2Spc(I)%ID)%Conc(:,:,LM:1:-1)),SUM(State_Chm%Species(Int2Spc(I)%ID)%Conc(:,:,LM:1:-1))/IM/JM/LM ENDDO - State_Chm%Spc_Units = 'kg/kg total' + State_Chm%Spc_Units = KG_SPECIES_PER_KG_TOTAL_AIR !========================================================================= ! Various other archived variables needed in internal state. diff --git a/Interfaces/GEOS/Includes_Before_Run.H b/Interfaces/GEOS/Includes_Before_Run.H index e2352edd0..37a6d9888 100644 --- a/Interfaces/GEOS/Includes_Before_Run.H +++ b/Interfaces/GEOS/Includes_Before_Run.H @@ -247,7 +247,7 @@ ENDIF !IF ( MAPL_am_I_Root() ) WRITE(*,*) 'Copying from internal: ',I,Int2Spc(I)%ID,MINVAL(Int2Spc(I)%Internal(:,:,:)),MAXVAL(Int2Spc(I)%Internal(:,:,:)),SUM(Int2Spc(I)%Internal(:,:,:))/IM/JM/LM ENDDO - State_Chm%Spc_Units = 'kg/kg total' + State_Chm%Spc_Units = KG_SPECIES_PER_KG_TOTAL_AIR !========================================================================= ! Various other archived variables needed in internal state. Eventually, diff --git a/Interfaces/GEOS/geos_CarbonInterface.F90 b/Interfaces/GEOS/geos_CarbonInterface.F90 index 6bfe50564..7704362eb 100644 --- a/Interfaces/GEOS/geos_CarbonInterface.F90 +++ b/Interfaces/GEOS/geos_CarbonInterface.F90 @@ -504,7 +504,7 @@ SUBROUTINE GEOS_CarbonSetConc( Import, Input_Opt, State_Chm, & ! CHARACTER(LEN=*), PARAMETER :: myname = 'GEOS_CarbonSetConc' CHARACTER(LEN=*), PARAMETER :: Iam = myname - CHARACTER(LEN=63) :: OrigUnit + INTEGER :: OrigUnit INTEGER :: I, LM, indCO2, indCO, STATUS REAL, POINTER :: CO2(:,:,:) => null() REAL, POINTER :: COmeso(:,:) => null() diff --git a/Interfaces/GEOS/geos_interface.F90 b/Interfaces/GEOS/geos_interface.F90 index 968689854..ec14c8882 100644 --- a/Interfaces/GEOS/geos_interface.F90 +++ b/Interfaces/GEOS/geos_interface.F90 @@ -278,7 +278,7 @@ SUBROUTINE GEOS_RATSandOxDiags( GC, Internal, Export, Input_Opt, State_Met, & ! ! !USES: ! - USE UnitConv_Mod, ONLY : Convert_Spc_Units + USE UnitConv_Mod ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -326,7 +326,7 @@ SUBROUTINE GEOS_RATSandOxDiags( GC, Internal, Export, Input_Opt, State_Met, & REAL, POINTER :: PTR_O1D(:,:,:) => NULL() REAL, ALLOCATABLE :: OXLOCAL(:,:,:) LOGICAL :: NeedO3 - CHARACTER(LEN=ESMF_MAXSTR) :: OrigUnit + INTEGER :: OrigUnit __Iam__('GEOS_RATSandOxDiags') @@ -461,7 +461,7 @@ SUBROUTINE GEOS_SetH2O( GC, Input_Opt, State_Met, & ! ! !USES: ! - USE UnitConv_Mod, ONLY : Convert_Spc_Units + USE UnitConv_Mod ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -488,8 +488,8 @@ SUBROUTINE GEOS_SetH2O( GC, Input_Opt, State_Met, & ! ! LOCAL VARIABLES: ! - INTEGER :: IndH2O, LM - CHARACTER(LEN=ESMF_MAXSTR) :: OrigUnit + INTEGER :: IndH2O, LM + INTEGER :: OrigUnit __Iam__('GEOS_SetH2O') @@ -1218,7 +1218,7 @@ SUBROUTINE GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, & ! !USES: ! USE Diagnostics_Mod, ONLY : Set_Diagnostics_EndofTimestep - USE UnitConv_Mod, ONLY : Convert_Spc_Units + USE UnitConv_Mod ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1276,7 +1276,7 @@ SUBROUTINE GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, & REAL, POINTER :: LFR(:,:) => NULL() REAL, POINTER :: CNV_FRC(:,:) => NULL() - CHARACTER(LEN=ESMF_MAXSTR) :: OrigUnit + INTEGER :: OrigUnit __Iam__('GEOS_Diagnostics') diff --git a/KPP/custom/custom.eqn b/KPP/custom/custom.eqn index d4cce8e00..e8a5c5544 100644 --- a/KPP/custom/custom.eqn +++ b/KPP/custom/custom.eqn @@ -707,7 +707,7 @@ HO2 + O = OH + O2 : GCARR_ac(3.00d-11, 200.0d0); O1D + O3 = O + 1.500O2 : 2.40d-10; {2014/02/03; Eastham2014; SDE} OCS + O = CO + SO2 : GCARR_ac(2.10d-11, -2200.0d0); {2014/02/03; Eastham2014; SDE} OCS + OH = CO2 + SO2 : GCARR_ac(7.20d-14, -1070.0d0); {2023/04/18; JPL 19-5; KHB} -NO2 + O = NO + O2 : GCJPLAC_ababac(3.4e-31, 1.6d0, 2.3d-11, 0.2d0, 5.3d-12, 2.0d2, 0.6d0); {2023/04/18; JPL 19-5; KHB} +NO2 + O = NO + O2 : GCJPLAC_ababac(3.4d-31, 1.6d0, 2.3d-11, 0.2d0, 5.3d-12, 2.0d2, 0.6d0); {2023/04/18; JPL 19-5; KHB} NO3 + O = NO2 + O2 : 1.30d-11; {2023/04/18; JPL 19-5; KHB} NO + O {+M} = NO2 {+M} : GCJPLPR_aba(9.00d-32, 1.5d+00, 3.0d-11, 0.6d0); {2014/02/03; Eastham2014; SDE} NO2 + O {+M} = NO3 {+M} : GCJPLPR_abab(3.4d-31, 1.6d0, 2.3d-11, 0.2d0, 0.6d0); {2023/04/18; JPL 19-5; KHB} diff --git a/KPP/fullchem/fullchem.eqn b/KPP/fullchem/fullchem.eqn index 0f51416f3..b2862ae92 100644 --- a/KPP/fullchem/fullchem.eqn +++ b/KPP/fullchem/fullchem.eqn @@ -705,7 +705,7 @@ HO2 + O = OH + O2 : GCARR_ac(3.00d-11, 200.0d0); O1D + O3 = O + 1.500O2 : 2.40d-10; {2014/02/03; Eastham2014; SDE} OCS + O = CO + SO2 : GCARR_ac(2.10d-11, -2200.0d0); {2014/02/03; Eastham2014; SDE} OCS + OH = CO2 + SO2 : GCARR_ac(7.20d-14, -1070.0d0); {2023/04/18; JPL 19-5; KHB} -NO2 + O = NO + O2 : GCJPLAC_ababac(3.4e-31, 1.6d0, 2.3d-11, 0.2d0, 5.3d-12, 2.0d2, 0.6d0); {2023/04/18; JPL 19-5; KHB} +NO2 + O = NO + O2 : GCJPLAC_ababac(3.4d-31, 1.6d0, 2.3d-11, 0.2d0, 5.3d-12, 2.0d2, 0.6d0); {2023/04/18; JPL 19-5; KHB} NO3 + O = NO2 + O2 : 1.30d-11; {2023/04/18; JPL 19-5; KHB} NO + O {+M} = NO2 {+M} : GCJPLPR_aba(9.00d-32, 1.5d+00, 3.0d-11, 0.6d0); {2014/02/03; Eastham2014; SDE} NO2 + O {+M} = NO3 {+M} : GCJPLPR_abab(3.4d-31, 1.6d0, 2.3d-11, 0.2d0, 0.6d0); {2023/04/18; JPL 19-5; KHB} diff --git a/KPP/fullchem/gckpp_Rates.F90 b/KPP/fullchem/gckpp_Rates.F90 index cab999442..0578f4b2e 100644 --- a/KPP/fullchem/gckpp_Rates.F90 +++ b/KPP/fullchem/gckpp_Rates.F90 @@ -619,7 +619,7 @@ SUBROUTINE Update_RCONST ( ) RCONST(186) = (2.40d-10) RCONST(187) = (GCARR_ac(2.10d-11,-2200.0d0)) RCONST(188) = (GCARR_ac(7.20d-14,-1070.0d0)) - RCONST(189) = (GCJPLAC_ababac(3.4e-31,1.6d0,2.3d-11,0.2d0,5.3d-12,2.0d2,0.6d0)) + RCONST(189) = (GCJPLAC_ababac(3.4d-31,1.6d0,2.3d-11,0.2d0,5.3d-12,2.0d2,0.6d0)) RCONST(190) = (1.30d-11) RCONST(191) = (GCJPLPR_aba(9.00d-32,1.5d+00,3.0d-11,0.6d0)) RCONST(192) = (GCJPLPR_abab(3.4d-31,1.6d0,2.3d-11,0.2d0,0.6d0)) diff --git a/run/GEOS/geoschem_config.yml b/run/GEOS/geoschem_config.yml index e035a2b08..0d75cdf8a 100644 --- a/run/GEOS/geoschem_config.yml +++ b/run/GEOS/geoschem_config.yml @@ -61,7 +61,7 @@ operations: activate: true input_directories: fastjx_input_dir: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/FAST_JX/v2023-10/ - cloudj_input_dir: /discover/nobackup/ewlundgr/data/ExtData/CLOUD_J/v2023-05/ + cloudj_input_dir: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/CLOUD_J/v2023-05/ overhead_O3: use_online_O3_from_model: true use_column_O3_from_met: true From 9304350c432ac82a808d02213fa0398ef89f3ccf Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 15 Feb 2024 12:58:10 -0500 Subject: [PATCH 088/331] Add State_Chm%allSpeciesInDryMixingRatio logical flag This update adds a logical flag to State_Chm so that we can easily check if all units are in dry mixing ratio. All species must be in either kg/kg dry or mol/mol dry before calling AIRQNT with the update_mixing_ratio=.TRUE. flag. GeosCore/calc_met_mod.F90 - Update prior error check to State_Chm%allSpeciesInDryMixingRatio GeosCore/diagnostics_mod.F90 - Add USE statement for Check_Units routine from unitconv_mod.F90 - Now declare State_Chm with INTENT(INOUT) GeosCore/hco_utilities_gc_mod.F90 - Set State_Chm%allSpeciesInDryMixingRatio = .TRUE. after reading the GEOS-Chem Classic restart file GeosCore/vdiff_mod.F90 - Now use "mapping=State_Chm%Map_All" in calls to Convert_Spc_Units. This will make sure all species are converted to dry mixing ratio so that we can update the mixing ratios in AIRQNT. GeosUtil/unitconv_mod.F90 - Set State_Chm%AllSpeciesInDryMixingRatio at the end of routine Convert_Spc_Units. Use the F90 "ALL" intrinsic for efficiency. Headers/state_chm_mod.F90 - Set State_Chm%allSpeciesInDryMixingRatio = .FALSE. in routine Zero_State_Chm. Interfaces/GCHP/gchp_chunk_mod.F90 - Set State_Chm%allSpeciesInDryMixingRatio to .FALSE. (for GEOS) or .true. (for GCHP). This matches the internal state units. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 ++ GeosCore/calc_met_mod.F90 | 9 +++------ GeosCore/diagnostics_mod.F90 | 3 ++- GeosCore/hco_utilities_gc_mod.F90 | 3 +++ GeosCore/vdiff_mod.F90 | 12 ++++++------ GeosUtil/unitconv_mod.F90 | 9 ++++++++- Headers/state_chm_mod.F90 | 7 +++++++ Interfaces/GCHP/gchp_chunk_mod.F90 | 6 ++++-- 8 files changed, 35 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01780c3ab..578d434ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Added - Added`SpcConc%Units` and `SpcConc%Previous_Units` for species-specific unit conversion - Diel and day-of-week scale factors for CEDS global base emissions +`State_Chm%all +- SpeciesInDryMixingRatio` logical flag, needed to check if all species are in dry mixing ratio before calling AIRQNT with `update_mixing_ratio=.TRUE.` ### Changed - Updated routines in `GeosUtil/unitconv_mod.F90` for species-specific unit conversion diff --git a/GeosCore/calc_met_mod.F90 b/GeosCore/calc_met_mod.F90 index 9ad25bccb..db35c2b1b 100644 --- a/GeosCore/calc_met_mod.F90 +++ b/GeosCore/calc_met_mod.F90 @@ -675,12 +675,9 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & ! The concentration update formula works only for dry mixing ratios ! (kg/kg or v/v) so check if units are correct - t1 = ALL( State_Chm%Species(State_Chm%Map_All)%Units == & - KG_SPECIES_PER_KG_DRY_AIR ) - t2 = ALL( State_Chm%Species(State_Chm%Map_All)%Units == & - MOLES_SPECIES_PER_MOLES_DRY_AIR ) - IF ( .not. ( t1 .or. t2 ) ) THEN - ErrMsg = 'Incorrect species units found in AIRQNT!' + IF ( .not. State_Chm%allSpeciesInDryMixingRatio ) THEN + ErrMsg = 'All species must be in dry mixing ratio when ' // & + 'update_mixing_ratio=.TRUE.!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index f6e242e3b..876892f56 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -1712,16 +1712,17 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & USE State_Met_Mod, ONLY : MetState USE PhysConstants, ONLY : MwCarb USE UnitConv_Mod, ONLY : KG_SPECIES_PER_KG_DRY_AIR, UNIT_STR + USE UnitConv_Mod, ONLY : Check_Units ! ! !INPUT PARAMETERS: ! TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry State object TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology State object ! ! !INPUT/OUTPUT PARAMETERS: ! + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry State object TYPE(DgnState), INTENT(INOUT) :: State_Diag ! Diagnostic State object ! ! !OUTPUT PARAMETERS: diff --git a/GeosCore/hco_utilities_gc_mod.F90 b/GeosCore/hco_utilities_gc_mod.F90 index 613de6d4c..4031ee564 100644 --- a/GeosCore/hco_utilities_gc_mod.F90 +++ b/GeosCore/hco_utilities_gc_mod.F90 @@ -1905,6 +1905,9 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & ENDDO + ! At this point all species are in dry mixing ratio + State_Chm%allSpeciesInDryMixingRatio = .TRUE. + ! If in debug mode, print out species min and max in [molec/cm3] IF ( Input_Opt%Verbose ) THEN diff --git a/GeosCore/vdiff_mod.F90 b/GeosCore/vdiff_mod.F90 index d416b19a9..b3e77761c 100644 --- a/GeosCore/vdiff_mod.F90 +++ b/GeosCore/vdiff_mod.F90 @@ -2307,12 +2307,16 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & ENDIF ! Convert species concentration to [v/v dry] aka [mol/mol dry] + ! NOTE: Convert units for all all species because we will later + ! update mixing ratios after recomputing air quantities with AIRQNT. + ! This is needed in order to ensure mass conservation. + ! -- Bob Yantosca, Lizzie Lundgren (15 Feb 2024) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_Advect, & + mapping = State_Chm%Map_All, & new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & previous_units = previous_units, & RC = RC ) @@ -2355,10 +2359,6 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & ! Update air quantities and species concentrations with updated ! specific humidity (ewl, 10/28/15) - ! - ! NOTE: Prior to October 2015, air quantities were not updated - ! with specific humidity modified in VDIFFDR at this point in - ! the model CALL AirQnt( Input_Opt, State_Chm, State_Grid, & State_Met, RC, Update_Mixing_Ratio=.TRUE. ) @@ -2389,7 +2389,7 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_Advect, & + mapping = State_Chm%Map_All, & new_units = previous_units, & RC = RC ) diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index 25851bf74..0bc2519bc 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -460,9 +460,16 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & END SELECT !======================================================================== - ! Additional error checks + ! Additional checks !======================================================================== + ! Test if all species have mixing ratio units (needed for AIRQNT) + State_Chm%allSpeciesInDryMixingRatio = ( & + ALL( State_Chm%Species(:)%Units == KG_SPECIES_PER_KG_DRY_AIR )& + .or. & + ALL( State_Chm%Species(:)%Units == MOLES_SPECIES_PER_MOLES_DRY_AIR )& + ) + ! Make sure that all species have consistent "previous_units" values IF ( PRESENT( previous_units ) ) THEN CALL Check_Previous_Units( State_Chm, mapping, in_units, RC ) diff --git a/Headers/state_chm_mod.F90 b/Headers/state_chm_mod.F90 index d63f28f7f..8c3f7e26d 100644 --- a/Headers/state_chm_mod.F90 +++ b/Headers/state_chm_mod.F90 @@ -381,6 +381,11 @@ MODULE State_Chm_Mod REAL, POINTER :: rlam(:) #endif + !----------------------------------------------------------------------- + ! Flag to denote if all species are in mixing ratio units (so that + ! AIRQNT can update mixing ratios after updating airmass, etc.) + !----------------------------------------------------------------------- + LOGICAL :: allSpeciesInDryMixingRatio END TYPE ChmState ! ! !REMARKS: @@ -647,6 +652,8 @@ SUBROUTINE Zero_State_Chm( State_Chm, RC ) State_Chm%PSO4_SO2APM2 => NULL() #endif + State_Chm%allSpeciesInDryMixingRatio = .FALSE. + END SUBROUTINE Zero_State_Chm !EOC !------------------------------------------------------------------------------ diff --git a/Interfaces/GCHP/gchp_chunk_mod.F90 b/Interfaces/GCHP/gchp_chunk_mod.F90 index ade6adc60..4b2b9e022 100644 --- a/Interfaces/GCHP/gchp_chunk_mod.F90 +++ b/Interfaces/GCHP/gchp_chunk_mod.F90 @@ -510,9 +510,11 @@ SUBROUTINE GCHP_Chunk_Init( nymdB, nhmsB, nymdE, & ! are all still zero at this point since internal state values are not ! copied to State_Chm%Species%Conc until Run (post-initialization). # if defined( MODEL_GEOS ) - State_Chm%Species(:)%Units = KG_SPECIES_PER_KG_TOTAL_AIR + State_Chm%Species(:)%Units = KG_SPECIES_PER_KG_TOTAL_AIR + State_Chm%allSpeciesInDryMixingRatio = .FALSE. #else - State_Chm%Species(:)%Units = MOLES_SPECIES_PER_MOLES_DRY_AIR + State_Chm%Species(:)%Units = MOLES_SPECIES_PER_MOLES_DRY_AIR + State_Chm%allSpeciesInDryMixingRatio = .TRUE. #endif State_Chm%Species(:)%Previous_Units = -1 From 35a570826d9785a91265f332f5c0bc4cf29bf2ab Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 16 Feb 2024 11:00:05 -0500 Subject: [PATCH 089/331] Bug fix: Now use RUNDIR_OFFLINE_{NATIVE,LAT}_RES in HEMCO templates run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem - Replace RUNDIR_MET_NATIVE_RES with RUNDIR_OFFLINE_EMIS_RES - Replace RUNDIR_MET_NATIVE_LAT with RUNDIR_OFFLINE_EMIS_LAT_RES run/shared/settings/merra2 - Add RUNDIR_OFFLINE_EMIS_RES and RUNDIR_OFFLINE_EMIS_LAT_RES Signed-off-by: Bob Yantosca --- .../HEMCO_Config.rc.fullchem | 36 +++++++++---------- .../HEMCO_Config.rc.fullchem | 36 +++++++++---------- run/shared/settings/merra2.txt | 3 ++ 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 6c9a88090..47d84695f 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -3131,10 +3131,10 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== (((OFFLINE_DUST (((.not.DustDead.or.DustGinoux -0 EMIS_DST1 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST1 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST1 - 3 2 -0 EMIS_DST2 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST2 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST2 - 3 2 -0 EMIS_DST3 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST3 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST3 - 3 2 -0 EMIS_DST4 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST4 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST4 - 3 2 +0 EMIS_DST1 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST1 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST1 - 3 2 +0 EMIS_DST2 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST2 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST2 - 3 2 +0 EMIS_DST3 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST3 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST3 - 3 2 +0 EMIS_DST4 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST4 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST4 - 3 2 ))).not.DustDead.or.DustGinoux )))OFFLINE_DUST @@ -3142,25 +3142,25 @@ VerboseOnCores: root # Accepted values: root all # --- Offline biogenic VOC emissions --- #============================================================================== (((OFFLINE_BIOGENICVOC -0 BIOGENIC_ACET $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc ACET_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ACET - 4 2 -0 BIOGENIC_ALD2 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc ALD2_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ALD2 - 4 2 -0 BIOGENIC_C2H4 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc C2H4_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s C2H4 - 4 2 -0 BIOGENIC_EOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s EOH - 4 2 -0 BIOGENIC_ISOP $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc ISOP_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ISOP - 4 2 +0 BIOGENIC_ACET $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc ACET_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ACET - 4 2 +0 BIOGENIC_ALD2 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc ALD2_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ALD2 - 4 2 +0 BIOGENIC_C2H4 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc C2H4_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s C2H4 - 4 2 +0 BIOGENIC_EOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s EOH - 4 2 +0 BIOGENIC_ISOP $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc ISOP_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ISOP - 4 2 0 BIOGENIC_ISOP_SOAP - - - - - - SOAP 610 4 2 0 BIOGENIC_ISOP_SOAS - - - - - - SOAS 610 4 2 -0 BIOGENIC_LIMO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc LIMO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s LIMO - 4 2 +0 BIOGENIC_LIMO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc LIMO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s LIMO - 4 2 0 BIOGENIC_LIMO_SOAP - - - - - - SOAP 611 4 2 0 BIOGENIC_LIMO_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_MOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc MOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MOH - 4 2 -0 BIOGENIC_MTPA $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc MTPA_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPA - 4 2 +0 BIOGENIC_MOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc MOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MOH - 4 2 +0 BIOGENIC_MTPA $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_OFFLINE_RES}.$YYYY$MM$DD.nc MTPA_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPA - 4 2 0 BIOGENIC_MTPA_SOAP - - - - - - SOAP 611 4 2 0 BIOGENIC_MTPA_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_MTPO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc MTPO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPO - 4 2 +0 BIOGENIC_MTPO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc MTPO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPO - 4 2 0 BIOGENIC_MTPO_SOAP - - - - - - SOAP 611 4 2 0 BIOGENIC_MTPO_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_PRPE $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc PRPE_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s PRPE - 4 2 -0 BIOGENIC_SESQ $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc SESQ_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s SESQ - 4 2 +0 BIOGENIC_PRPE $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc PRPE_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s PRPE - 4 2 +0 BIOGENIC_SESQ $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc SESQ_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s SESQ - 4 2 0 BIOGENIC_SESQ_SOAP - - - - - - SOAP 612 4 2 0 BIOGENIC_SESQ_SOAS - - - - - - SOAS 612 4 2 )))OFFLINE_BIOGENICVOC @@ -3170,13 +3170,13 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== (((OFFLINE_SEASALT (((.not.SeaSalt -0 SEASALT_SALA $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/seasalt_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc SALA_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALA - 3 2 +0 SEASALT_SALA $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/seasalt_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc SALA_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALA - 3 2 0 SEASALT_SALAAL - - - - - - SALAAL 615 3 2 0 SEASALT_SALACL - - - - - - SALACL 616 3 2 (((CalcBrSeasalt 0 SEASALT_BrSALA - - - - - - BrSALA 617 3 2 )))CalcBrSeasalt -0 SEASALT_SALC $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/seasalt_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc SALC_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALC - 3 2 +0 SEASALT_SALC $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/seasalt_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc SALC_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALC - 3 2 0 SEASALT_SALCAL - - - - - - SALCAL 615 3 2 0 SEASALT_SALCCL - - - - - - SALCCL 616 3 2 (((CalcBrSeasalt @@ -3190,7 +3190,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== (((OFFLINE_SOILNOX (((.not.SoilNOx -0 SOILNOX_NO $ROOT/OFFLINE_SOILNOX/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/soilnox_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc SOIL_NOx 1980-2022/1-12/1-31/* EFY xy kg/m2/s NO - 3 2 +0 SOILNOX_NO $ROOT/OFFLINE_SOILNOX/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/soilnox_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc SOIL_NOx 1980-2022/1-12/1-31/* EFY xy kg/m2/s NO - 3 2 ))).not.SoilNOx )))OFFLINE_SOILNOX diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index aac143cbd..8d814c058 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -3130,10 +3130,10 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== (((OFFLINE_DUST (((.not.DustDead.or.DustGinoux -0 EMIS_DST1 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST1 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST1 - 3 2 -0 EMIS_DST2 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST2 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST2 - 3 2 -0 EMIS_DST3 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST3 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST3 - 3 2 -0 EMIS_DST4 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST4 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST4 - 3 2 +0 EMIS_DST1 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST1 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST1 - 3 2 +0 EMIS_DST2 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST2 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST2 - 3 2 +0 EMIS_DST3 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST3 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST3 - 3 2 +0 EMIS_DST4 $ROOT/OFFLINE_DUST/v2021-08/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/dust_emissions_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EMIS_DST4 1980-2022/1-12/1-31/* EFY xy kg/m2/s DST4 - 3 2 ))).not.DustDead.or.DustGinoux )))OFFLINE_DUST @@ -3141,25 +3141,25 @@ VerboseOnCores: root # Accepted values: root all # --- Offline biogenic VOC emissions --- #============================================================================== (((OFFLINE_BIOGENICVOC -0 BIOGENIC_ACET $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc ACET_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ACET - 4 2 -0 BIOGENIC_ALD2 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc ALD2_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ALD2 - 4 2 -0 BIOGENIC_C2H4 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc C2H4_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s C2H4 - 4 2 -0 BIOGENIC_EOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc EOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s EOH - 4 2 -0 BIOGENIC_ISOP $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc ISOP_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ISOP - 4 2 +0 BIOGENIC_ACET $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc ACET_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ACET - 4 2 +0 BIOGENIC_ALD2 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc ALD2_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ALD2 - 4 2 +0 BIOGENIC_C2H4 $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc C2H4_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s C2H4 - 4 2 +0 BIOGENIC_EOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc EOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s EOH - 4 2 +0 BIOGENIC_ISOP $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc ISOP_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s ISOP - 4 2 0 BIOGENIC_ISOP_SOAP - - - - - - SOAP 610 4 2 0 BIOGENIC_ISOP_SOAS - - - - - - SOAS 610 4 2 -0 BIOGENIC_LIMO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc LIMO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s LIMO - 4 2 +0 BIOGENIC_LIMO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc LIMO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s LIMO - 4 2 0 BIOGENIC_LIMO_SOAP - - - - - - SOAP 611 4 2 0 BIOGENIC_LIMO_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_MOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc MOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MOH - 4 2 -0 BIOGENIC_MTPA $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc MTPA_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPA - 4 2 +0 BIOGENIC_MOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc MOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MOH - 4 2 +0 BIOGENIC_MTPA $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc MTPA_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPA - 4 2 0 BIOGENIC_MTPA_SOAP - - - - - - SOAP 611 4 2 0 BIOGENIC_MTPA_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_MTPO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc MTPO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPO - 4 2 +0 BIOGENIC_MTPO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc MTPO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPO - 4 2 0 BIOGENIC_MTPO_SOAP - - - - - - SOAP 611 4 2 0 BIOGENIC_MTPO_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_PRPE $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc PRPE_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s PRPE - 4 2 -0 BIOGENIC_SESQ $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc SESQ_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s SESQ - 4 2 +0 BIOGENIC_PRPE $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc PRPE_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s PRPE - 4 2 +0 BIOGENIC_SESQ $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc SESQ_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s SESQ - 4 2 0 BIOGENIC_SESQ_SOAP - - - - - - SOAP 612 4 2 0 BIOGENIC_SESQ_SOAS - - - - - - SOAS 612 4 2 )))OFFLINE_BIOGENICVOC @@ -3169,13 +3169,13 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== (((OFFLINE_SEASALT (((.not.SeaSalt -0 SEASALT_SALA $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/seasalt_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc SALA_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALA - 3 2 +0 SEASALT_SALA $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/seasalt_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc SALA_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALA - 3 2 0 SEASALT_SALAAL - - - - - - SALAAL 615 3 2 0 SEASALT_SALACL - - - - - - SALACL 616 3 2 (((CalcBrSeasalt 0 SEASALT_BrSALA - - - - - - BrSALA 617 3 2 )))CalcBrSeasalt -0 SEASALT_SALC $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/seasalt_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc SALC_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALC - 3 2 +0 SEASALT_SALC $ROOT/OFFLINE_SEASALT/v2019-01/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/seasalt_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc SALC_TOTAL 1980-2022/1-12/1-31/* EFY xy kg/m2/s SALC - 3 2 0 SEASALT_SALCAL - - - - - - SALCAL 615 3 2 0 SEASALT_SALCCL - - - - - - SALCCL 616 3 2 (((CalcBrSeasalt @@ -3189,7 +3189,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== (((OFFLINE_SOILNOX (((.not.SoilNOx -0 SOILNOX_NO $ROOT/OFFLINE_SOILNOX/v2021-12/${RUNDIR_MET_NATIVE_RES}/$YYYY/$MM/soilnox_${RUNDIR_MET_LAT_RES}.$YYYY$MM$DD.nc SOIL_NOx 1980-2022/1-12/1-31/* EFY xy kg/m2/s NO - 3 2 +0 SOILNOX_NO $ROOT/OFFLINE_SOILNOX/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/soilnox_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc SOIL_NOx 1980-2022/1-12/1-31/* EFY xy kg/m2/s NO - 3 2 ))).not.SoilNOx )))OFFLINE_SOILNOX diff --git a/run/shared/settings/merra2.txt b/run/shared/settings/merra2.txt index 2cf28d353..5cdb54ff8 100644 --- a/run/shared/settings/merra2.txt +++ b/run/shared/settings/merra2.txt @@ -22,6 +22,9 @@ RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=false RUNDIR_MET_LCLIM='1980-2019' +RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' +RUNDIR_OFFLINE_EMIS_LAT_RES='05' + RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS=""" # --- 2D variables, 1-hr averaged --- From 788d8e4d879015115be9aea70af026ce2a250503 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 16 Feb 2024 14:32:10 -0500 Subject: [PATCH 090/331] Fix typo in BIOGENIC_MTPA entry in HEMCO_Config.rc.fullchem run/GCClassic/HEMCO/HEMCO_Config.rc.fullchem - In the entry for BIOGENIC_MTPA for OFFLINE_BIOGENICVOC, we have fixed a typo: RUN_MET_OFFLINE_RES -> RUNDIR_OFFLINE_EMIS_LAT_RES. This was causing GCClassic fullchem integration tests to fail Signed-off-by: Bob Yantosca --- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 47d84695f..0dcee3693 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -3153,7 +3153,7 @@ VerboseOnCores: root # Accepted values: root all 0 BIOGENIC_LIMO_SOAP - - - - - - SOAP 611 4 2 0 BIOGENIC_LIMO_SOAS - - - - - - SOAS 611 4 2 0 BIOGENIC_MOH $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc MOH_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MOH - 4 2 -0 BIOGENIC_MTPA $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_MET_OFFLINE_RES}.$YYYY$MM$DD.nc MTPA_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPA - 4 2 +0 BIOGENIC_MTPA $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc MTPA_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPA - 4 2 0 BIOGENIC_MTPA_SOAP - - - - - - SOAP 611 4 2 0 BIOGENIC_MTPA_SOAS - - - - - - SOAS 611 4 2 0 BIOGENIC_MTPO $ROOT/OFFLINE_BIOVOC/v2021-12/${RUNDIR_OFFLINE_EMIS_RES}/$YYYY/$MM/biovoc_${RUNDIR_OFFLINE_EMIS_LAT_RES}.$YYYY$MM$DD.nc MTPO_MEGAN 1980-2022/1-12/1-31/* EFY xy kg/m2/s MTPO - 4 2 From 44c406e39d5e5e661162e73fdfb01233345ba2ec Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 21 Feb 2024 10:41:19 -0500 Subject: [PATCH 091/331] Bug fix in time specification in ExtData.rc.CO2 run/GCHP/ExtData.rc.templates/ExtData.rc.CO2 - Fixed typo "Y Y" -> "Y V" Signed-off-by: Bob Yantosca --- run/GCHP/ExtData.rc.templates/ExtData.rc.CO2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.CO2 b/run/GCHP/ExtData.rc.templates/ExtData.rc.CO2 index db8703a22..0061e6f72 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.CO2 +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.CO2 @@ -152,7 +152,7 @@ CMSF_CO2_BN kgC/km2/s N Y F%y4-%m2-01T00:00:00 none 1e-6 CO2_Flux /nobac #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -TIMEZONES count Y Y 2017-%m2-01T00:00:00 none none UTC_OFFSET ./HcoDir/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc +TIMEZONES count Y V 2017-%m2-01T00:00:00 none none UTC_OFFSET ./HcoDir/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc # ############################################################################### ### From 5effeeed82bc7be1d01d7c77c6f6f0ea1c314334 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 21 Feb 2024 11:26:03 -0500 Subject: [PATCH 092/331] Update CHANGELOG.md message for more clarity CHANGELOG.md - Now state that the switch from fixed to monthly timezones is to better account for daylight savings time in emissions Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be7e3059c..8af2c598e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Diel and day-of-week scale factors for CEDS global base emissions ### Changed -- Now use updated timezones for HEMCO, which treat daylight savings time more accurately +- Switch from fixed to monthly timezones, which account for daylight savings time more accurately when computing emissions ### Fixed - Use rate-law function `GCARR_ac` for rxns that have Arrhenius `B` parameters that are zero From 79d211841606da7e97337b49307b72e35dd562c5 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 22 Feb 2024 10:56:20 -0500 Subject: [PATCH 093/331] Convert allSpeciesInDryMixingRatio from logical flag to routine GeosCore/calc_met_mod.F90 - Add PRIVATE routine allSpeciesInDryMixingRatio, to check if all species are either kg/kg dry or mol/mol dry before updating species mixing ratios in AIRQNT. GeosCore/hco_utilities_gc_mod.F90 Headers/state_chm_mod.F90 - Removed reference to State_Chm%allSpeciesInDryMixingRatio, this is now a private function in GeosCore/calc_met_mod.F90. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 +- GeosCore/calc_met_mod.F90 | 49 ++++++++++++++++++++++++++++++- GeosCore/hco_utilities_gc_mod.F90 | 3 -- Headers/state_chm_mod.F90 | 7 ----- 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 578d434ca..d7abde50a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Added`SpcConc%Units` and `SpcConc%Previous_Units` for species-specific unit conversion - Diel and day-of-week scale factors for CEDS global base emissions `State_Chm%all -- SpeciesInDryMixingRatio` logical flag, needed to check if all species are in dry mixing ratio before calling AIRQNT with `update_mixing_ratio=.TRUE.` +- allSpeciesInDryMixingRatio` routine in `calc_met_mod.F90`, to check if all species are in dry MR units before calling AIRQNT with `update_mixing_ratio=.TRUE.` ### Changed - Updated routines in `GeosUtil/unitconv_mod.F90` for species-specific unit conversion diff --git a/GeosCore/calc_met_mod.F90 b/GeosCore/calc_met_mod.F90 index db35c2b1b..36c705662 100644 --- a/GeosCore/calc_met_mod.F90 +++ b/GeosCore/calc_met_mod.F90 @@ -675,7 +675,7 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & ! The concentration update formula works only for dry mixing ratios ! (kg/kg or v/v) so check if units are correct - IF ( .not. State_Chm%allSpeciesInDryMixingRatio ) THEN + IF ( .not. allSpeciesInDryMixingRatio( State_Chm ) ) THEN ErrMsg = 'All species must be in dry mixing ratio when ' // & 'update_mixing_ratio=.TRUE.!' CALL GC_Error( ErrMsg, RC, ThisLoc ) @@ -1620,4 +1620,51 @@ SUBROUTINE Set_Clock_Tracer( State_Chm, State_Grid ) END SUBROUTINE Set_Clock_Tracer !EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Transport Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: allSpeciesinDryMixingRatio +! +! !DESCRIPTION: Returns a logical value to indicate if all species are +! in dry +!\\ +!\\ +! !INTERFACE: +! + FUNCTION allSpeciesInDryMixingRatio( State_Chm ) RESULT( isDryMixRatio ) +! +! !USES: +! + USE State_Chm_Mod, ONLY : ChmState + USE UnitConv_Mod, ONLY : KG_SPECIES_PER_KG_DRY_AIR + USE UnitConv_Mod, ONLY : MOLES_SPECIES_PER_MOLES_DRY_AIR +! +! !INPUT PARAMETERS: +! + TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry state object +! +! !RETURN VALUE: +! + LOGICAL :: isDryMixRatio ! All species are in dry MR +! +! !REVISION HISTORY: +! 21 Feb 2024 - R. Yantosca - Initial version +! See the subsequent Git history with the gitk browser! +!EOP +!------------------------------------------------------------------------------ +!BOC + + !================================================================= + ! allSpeciesInDryMixingRatio begins here! + !================================================================= + isDryMixRatio = ( & + ALL( State_Chm%Species(:)%Units == KG_SPECIES_PER_KG_DRY_AIR )& + .or. & + ALL( State_Chm%Species(:)%Units == MOLES_SPECIES_PER_MOLES_DRY_AIR )& + ) + + END FUNCTION allSpeciesInDryMixingRatio +!EOC END MODULE CALC_MET_MOD diff --git a/GeosCore/hco_utilities_gc_mod.F90 b/GeosCore/hco_utilities_gc_mod.F90 index 4031ee564..613de6d4c 100644 --- a/GeosCore/hco_utilities_gc_mod.F90 +++ b/GeosCore/hco_utilities_gc_mod.F90 @@ -1905,9 +1905,6 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & ENDDO - ! At this point all species are in dry mixing ratio - State_Chm%allSpeciesInDryMixingRatio = .TRUE. - ! If in debug mode, print out species min and max in [molec/cm3] IF ( Input_Opt%Verbose ) THEN diff --git a/Headers/state_chm_mod.F90 b/Headers/state_chm_mod.F90 index 8c3f7e26d..d63f28f7f 100644 --- a/Headers/state_chm_mod.F90 +++ b/Headers/state_chm_mod.F90 @@ -381,11 +381,6 @@ MODULE State_Chm_Mod REAL, POINTER :: rlam(:) #endif - !----------------------------------------------------------------------- - ! Flag to denote if all species are in mixing ratio units (so that - ! AIRQNT can update mixing ratios after updating airmass, etc.) - !----------------------------------------------------------------------- - LOGICAL :: allSpeciesInDryMixingRatio END TYPE ChmState ! ! !REMARKS: @@ -652,8 +647,6 @@ SUBROUTINE Zero_State_Chm( State_Chm, RC ) State_Chm%PSO4_SO2APM2 => NULL() #endif - State_Chm%allSpeciesInDryMixingRatio = .FALSE. - END SUBROUTINE Zero_State_Chm !EOC !------------------------------------------------------------------------------ From 4d3b0e9b7979583baba11de10a380cbb4759062d Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 22 Feb 2024 11:06:42 -0500 Subject: [PATCH 094/331] Make mapping an optional POINTER argument to Convert_Spc_Units GeosUtil/unitconv_mod.F90 - Now make mapping an INTEGER, OPTIONAL, POINTER argument - Add a local integer pointer "theMapping" to point to the mapping argument (if passed) or to State_Chm%Map_All (if not passed) - Now pass "theMapping" instead of "mapping" to all private unit conversion routines. - Remove reference to "State_Chm%allSpeciesinDryMixingRatio", which is now a private function in GeosCore/calc_met_mod.F90 - Also declare a local integer array "mapping" and pointer "theMapping" in routine Print_Global_Species_Kg", since the mapping argument now has to be a pointer. GeosCore/set_global_ch4_mod.F90 - Add an integer mapping array of size 1 - Add theMapping(:) integer pointer so that we can point to mapping and pass to Convert_Spc_Units CHANGELOG.md - Fixed typo from previous commit Signed-off-by: Bob Yantosca --- CHANGELOG.md | 3 +- GeosCore/set_global_ch4_mod.F90 | 15 ++- GeosUtil/unitconv_mod.F90 | 174 ++++++++++++++++++-------------- 3 files changed, 111 insertions(+), 81 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7abde50a..ef1460352 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Added - Added`SpcConc%Units` and `SpcConc%Previous_Units` for species-specific unit conversion - Diel and day-of-week scale factors for CEDS global base emissions -`State_Chm%all -- allSpeciesInDryMixingRatio` routine in `calc_met_mod.F90`, to check if all species are in dry MR units before calling AIRQNT with `update_mixing_ratio=.TRUE.` +- `allSpeciesInDryMixingRatio` routine in `calc_met_mod.F90`, to check if all species are in dry MR units before calling AIRQNT with `update_mixing_ratio=.TRUE.` ### Changed - Updated routines in `GeosUtil/unitconv_mod.F90` for species-specific unit conversion diff --git a/GeosCore/set_global_ch4_mod.F90 b/GeosCore/set_global_ch4_mod.F90 index 1e7c7eb72..cef9d7d56 100644 --- a/GeosCore/set_global_ch4_mod.F90 +++ b/GeosCore/set_global_ch4_mod.F90 @@ -99,10 +99,15 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Scalars INTEGER :: I, J, L, PBL_TOP, id_CH4, DT INTEGER :: previous_units - INTEGER :: mapping(1) REAL(fp) :: CH4, dCH4 LOGICAL :: FOUND + ! Arrays + INTEGER, TARGET :: mapping(1) + + ! Pointers + INTEGER, POINTER :: theMapping(:) + ! Strings CHARACTER(LEN=255) :: ErrMsg CHARACTER(LEN=255) :: ThisLoc @@ -131,6 +136,7 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Get species ID id_CH4 = Ind_( 'CH4' ) mapping(1) = id_CH4 + theMapping => mapping ! Get dynamic timestep DT = GET_TS_DYN() @@ -184,7 +190,7 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = mapping, & + mapping = theMapping, & new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & previous_units = previous_units, & RC = RC ) @@ -254,10 +260,13 @@ SUBROUTINE Set_CH4( Input_Opt, State_Chm, State_Diag, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = mapping, & + mapping = theMapping, & new_units = previous_units, & RC = RC ) + ! Free pointer + theMapping => NULL() + ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Unit conversion error at end of "SET_CH4"!' diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index 0bc2519bc..0f05411c6 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -151,9 +151,9 @@ MODULE UnitConv_Mod !\\ ! !INTERFACE: ! - SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & - State_Met, mapping, new_units, & - RC, previous_units ) + SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & + State_Met, new_units, RC, & + mapping, previous_units ) ! ! !USES: ! @@ -161,20 +161,20 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & ! ! !INPUT PARAMETERS: ! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid state object - TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId - INTEGER, INTENT(IN) :: new_units ! Units to convert to + TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object + TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid state object + TYPE(MetState), INTENT(IN) :: State_Met ! Met State object + INTEGER, INTENT(IN) :: new_units ! Units to convert to + INTEGER, OPTIONAL, POINTER :: mapping(:) ! Spc ID -> modelId ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chem State object ! ! !OUTPUT PARAMETERS: ! - INTEGER, INTENT(OUT) :: RC ! Success or failure? - INTEGER, OPTIONAL :: previous_units ! Previous units + INTEGER, INTENT(OUT) :: RC ! Success or failure? + INTEGER, OPTIONAL :: previous_units ! Previous units ! ! !REMARKS: ! The purpose of optional output argument origUnit is to enable conversion @@ -200,6 +200,9 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & LOGICAL :: isAdjoint INTEGER :: in_units + ! Pointers + INTEGER, POINTER :: theMapping(:) + ! Strings CHARACTER(LEN=255) :: errNoIn, errNoOut, errMsg, errUnits, thisLoc @@ -210,8 +213,13 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & CALL Timer_Start( "Unit conversions", RC ) ENDIF + ! Convert units for all species unless mapping is passed + ! NOTE: Avoid an ELSE statement here, which can be a bottleneck. + theMapping => State_Chm%Map_All + IF ( PRESENT( mapping ) ) theMapping => mapping + ! Error check the mapping argument - IF ( SIZE(mapping) < 1 ) THEN + IF ( SIZE(theMapping) < 1 ) THEN errMsg = 'The "mapping" argument has zero elements!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN @@ -252,6 +260,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & CALL Check_Units( State_Chm, mapping, in_units, RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error encountered in routine "Check_Units"!' + theMapping => NULL() CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -273,28 +282,28 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & CASE ( MOLES_SPECIES_PER_MOLES_DRY_AIR ) CALL ConvertSpc_KgKgDry_to_VVDry( & - State_Chm, State_Grid, mapping, & + State_Chm, State_Grid, theMapping, & isAdjoint, RC ) CASE ( KG_SPECIES_PER_KG_TOTAL_AIR ) CALL ConvertSpc_KgKgDry_to_KgKgTotal( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( KG_SPECIES ) CALL ConvertSpc_KgKgDry_to_Kg( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( KG_SPECIES_PER_M2 ) CALL ConvertSpc_KgKgDry_to_Kgm2( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( MOLECULES_SPECIES_PER_CM3 ) CALL ConvertSpc_KgKgDry_to_MND( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) @@ -310,24 +319,24 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & CASE ( KG_SPECIES_PER_KG_DRY_AIR ) CALL ConvertSpc_KgKgTotal_to_KgKgDry( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( KG_SPECIES ) CALL ConvertSpc_KgKgTotal_to_KgKgDry( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CALL ConvertSpc_KgKgDry_to_Kg( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( MOLECULES_SPECIES_PER_CM3 ) CALL ConvertSpc_KgKgTotal_to_KgKgDry( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CALL ConvertSpc_KgKgDry_to_MND( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) @@ -341,22 +350,22 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & SELECT CASE ( new_units ) CASE ( KG_SPECIES_PER_KG_DRY_AIR ) - CALL ConvertSpc_VVDry_to_KgKgDry( & - State_Chm, State_Grid, & - mapping, isAdjoint, RC ) + CALL ConvertSpc_VVDry_to_KgKgDry( & + State_Chm, State_Grid, & + theMapping, isAdjoint, RC ) CASE ( KG_SPECIES ) - CALL ConvertSpc_VVDry_to_Kg( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + CALL ConvertSpc_VVDry_to_Kg( & + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( KG_SPECIES_PER_M2 ) - CALL ConvertSpc_VVDry_to_KgKgDry( & - State_Chm, State_Grid, & - mapping, isAdjoint, RC ) - CALL ConvertSpc_KgKgDry_to_Kgm2( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + CALL ConvertSpc_VVDry_to_KgKgDry( & + State_Chm, State_Grid, & + theMapping, isAdjoint, RC ) + CALL ConvertSpc_KgKgDry_to_Kgm2( & + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) @@ -372,26 +381,26 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & CASE ( KG_SPECIES_PER_KG_DRY_AIR ) CALL ConvertSpc_Kg_to_KgKgDry( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( KG_SPECIES_PER_KG_TOTAL_AIR ) CALL ConvertSpc_Kg_to_KgKgDry( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CALL ConvertSpc_KgKgDry_to_KgKgTotal( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( MOLES_SPECIES_PER_MOLES_DRY_AIR ) CALL ConvertSpc_Kg_to_VVDry( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( MOLECULES_SPECIES_PER_CM3 ) CALL ConvertSpc_Kg_to_MND( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) @@ -407,16 +416,16 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & CASE( KG_SPECIES_PER_KG_DRY_AIR ) CALL ConvertSpc_Kgm2_to_KgKgDry( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( MOLES_SPECIES_PER_MOLES_DRY_AIR ) CALL ConvertSpc_Kgm2_to_KgKgDry( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CALL ConvertSpc_KgKgDry_to_VVDry( & - State_Chm, State_Grid, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, & + theMapping, isAdjoint, RC ) CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) @@ -432,21 +441,21 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & CASE ( KG_SPECIES ) CALL ConvertSpc_MND_to_Kg( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( KG_SPECIES_PER_KG_DRY_AIR ) CALL ConvertSpc_MND_to_KgKgDry( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE ( KG_SPECIES_PER_KG_TOTAL_AIR ) CALL ConvertSpc_MND_to_KgKgDry( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CALL ConvertSpc_KgKgDry_to_KgKgTotal( & - State_Chm, State_Grid, State_Met, & - mapping, isAdjoint, RC ) + State_Chm, State_Grid, State_Met, & + theMapping, isAdjoint, RC ) CASE DEFAULT CALL GC_Error( errNoOut, RC, thisLoc ) @@ -463,24 +472,21 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & ! Additional checks !======================================================================== - ! Test if all species have mixing ratio units (needed for AIRQNT) - State_Chm%allSpeciesInDryMixingRatio = ( & - ALL( State_Chm%Species(:)%Units == KG_SPECIES_PER_KG_DRY_AIR )& - .or. & - ALL( State_Chm%Species(:)%Units == MOLES_SPECIES_PER_MOLES_DRY_AIR )& - ) - ! Make sure that all species have consistent "previous_units" values IF ( PRESENT( previous_units ) ) THEN CALL Check_Previous_Units( State_Chm, mapping, in_units, RC ) IF ( RC /= GC_SUCCESS ) THEN errUnits = 'Error encountered in "Check_Previous_Units!"' + theMapping => NULL() CALL GC_Error( errUnits, RC, thisLoc ) RETURN ENDIF previous_units = in_units ENDIF + ! Free pointer + theMapping => NULL() + ! Error if problem within called conversion routine IF ( RC /= GC_SUCCESS ) THEN CALL GC_Error( errMsg, RC, thisLoc ) @@ -545,9 +551,18 @@ SUBROUTINE Print_Global_Species_Kg( I, J, L, & ! ! !LOCAL VARIABLES: ! + ! Scalars INTEGER :: N INTEGER :: previous_units REAL(fp) :: SpcTotal + + ! Arrays + INTEGER, TARGET :: mapping(1) + + ! Pointers + INTEGER, POINTER :: theMapping(:) + + ! Strings CHARACTER(LEN=12) :: SpcName CHARACTER(LEN=255) :: errMsg, errLoc @@ -563,13 +578,17 @@ SUBROUTINE Print_Global_Species_Kg( I, J, L, & ! Get species index N = Ind_(spc) + ! Create a pointer for the mapping indices + mapping(1) = N + theMapping => mapping + ! Convert species conc units to kg CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = (/ N /), & + mapping = theMapping, & new_units = KG_SPECIES, & previous_units = previous_units, & RC = RC ) @@ -612,10 +631,13 @@ SUBROUTINE Print_Global_Species_Kg( I, J, L, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = (/ N /), & + mapping = theMapping, & new_units = previous_units, & RC = RC ) + ! Free pointer + theMapping => NULL() + ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Unit conversion error!' From a80f173bb9d3eec9bdd3d57f9f213100a42600c5 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 22 Feb 2024 12:54:16 -0500 Subject: [PATCH 095/331] Convert Check_Units to a function; remove Check_Previous_Units GeosUtil/unitconv_mod.F90 - Convert Check_Units subroutine to a function that takes State_Chm and units arguments, plus a mapping optional argument. If mapping is not passed, then we will use State_Chm%Map_All internally to point to all species. - Update call to Check_Units in Convert_Spc_Units - Remove Check_Previous_Units, it is no longer needed. - Also remove call to Check_Previous_Units. GeosCore/diagnostics_mod.F90 GeosCore/set_boundary_conditions_mod.F90 - Convert subroutine calls to function calls for Check_Units Signed-off-by: Bob Yantosca --- GeosCore/diagnostics_mod.F90 | 55 +++------- GeosCore/set_boundary_conditions_mod.F90 | 9 +- GeosUtil/unitconv_mod.F90 | 126 +++++------------------ 3 files changed, 40 insertions(+), 150 deletions(-) diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index 876892f56..d497413d3 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -417,7 +417,7 @@ SUBROUTINE Set_SpcAdj_Diagnostic( Input_Opt, State_Chm, State_Diag, & USE State_Diag_Mod, ONLY : DgnMap USE State_Diag_Mod, ONLY : DgnState USE State_Grid_Mod, ONLY : GrdState - USE UnitConv_Mod + USE UnitConv_Mod, ONLY : Check_Units, KG_SPECIES_PER_KG_DRY_AIR ! ! !INPUT PARAMETERS: ! @@ -465,14 +465,9 @@ SUBROUTINE Set_SpcAdj_Diagnostic( Input_Opt, State_Chm, State_Diag, & Found = .FALSE. ThisLoc = ' -> Set_SpcAdj_Diagnostic (in GeosCore/diagnostics_mod.F90)' - ! Verify that incoming State_Chm%Species units are kg/kg dry air. - CALL Check_Units( & - State_Chm = State_Chm, & - mapping = State_Chm%Map_All, & - units = KG_SPECIES_PER_KG_DRY_AIR, & - RC = RC ) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_VVDry!' + ! Make sure all units are in kg/kg dry + IF ( .not. Check_Units( State_Chm, KG_SPECIES_PER_KG_DRY_AIR ) ) THEN + ErrMsg = 'Not all species are in "kg/kg dry" units!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF @@ -574,7 +569,7 @@ SUBROUTINE Set_SpcConc_Diags_VVDry( Input_Opt, State_Chm, State_Diag, & USE State_Diag_Mod, ONLY : DgnState USE State_Grid_Mod, ONLY : GrdState USE Time_Mod, ONLY : Get_LocalTime - USE UnitConv_Mod + USE UnitConv_Mod, ONLY : Check_Units, KG_SPECIES_PER_KG_DRY_AIR ! ! !INPUT PARAMETERS: ! @@ -626,13 +621,8 @@ SUBROUTINE Set_SpcConc_Diags_VVDry( Input_Opt, State_Chm, State_Diag, & ' -> at Set_SpcConc_Diags_VVDry (in GeosCore/diagnostics_mod.F90)' ! Verify that incoming State_Chm%Species units are kg/kg dry air. - CALL Check_Units( & - State_Chm = State_Chm, & - mapping = State_Chm%Map_All, & - units = KG_SPECIES_PER_KG_DRY_AIR, & - RC = RC ) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_VVDry!' + IF ( .not. Check_Units( State_Chm, KG_SPECIES_PER_KG_DRY_AIR ) ) THEN + ErrMsg = 'Not all species are in "kg/kg dry" units!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF @@ -839,7 +829,7 @@ SUBROUTINE Set_SpcConc_Diags_MND ( Input_Opt, State_Chm, State_Diag, & USE State_Diag_Mod, ONLY : DgnMap USE State_Diag_Mod, ONLY : DgnState USE State_Grid_Mod, ONLY : GrdState - USE UnitConv_Mod + USE UnitConv_Mod, ONLY : Check_Units, KG_SPECIES_PER_KG_DRY_AIR ! ! !INPUT PARAMETERS: ! @@ -885,13 +875,8 @@ SUBROUTINE Set_SpcConc_Diags_MND ( Input_Opt, State_Chm, State_Diag, & ' -> at Set_SpcConc_Diags_MND (in GeosCore/diagnostics_mod.F90)' ! Verify that incoming State_Chm%Species units are kg/kg dry air. - CALL Check_Units( & - State_Chm = State_Chm, & - mapping = State_Chm%Map_All, & - units = KG_SPECIES_PER_KG_DRY_AIR, & - RC = RC ) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_VVDry!' + IF ( .not. Check_Units( State_Chm, KG_SPECIES_PER_KG_DRY_AIR ) ) THEN + ErrMsg = 'Not all species are in "kg/kg dry" units!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF @@ -956,7 +941,7 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Grid, & USE State_Diag_Mod, ONLY : DgnMap USE State_Diag_Mod, ONLY : DgnState USE State_Grid_Mod, ONLY : GrdState - USE UnitConv_Mod + USE UnitConv_Mod, ONLY : Check_Units, KG_SPECIES_PER_KG_DRY_AIR ! ! !INPUT PARAMETERS: ! @@ -1020,13 +1005,8 @@ SUBROUTINE Compute_Budget_Diagnostics( Input_Opt, State_Chm, State_Grid, & spcMass = 0.0_f8 ! Verify that incoming State_Chm%Species units are kg/kg dry air. - CALL Check_Units( & - State_Chm = State_Chm, & - mapping = State_Chm%Map_All, & - units = KG_SPECIES_PER_KG_DRY_AIR, & - RC = RC ) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_VVDry!' + IF ( .not. Check_Units( State_Chm, KG_SPECIES_PER_KG_DRY_AIR ) ) THEN + ErrMsg = 'Not all species are in "kg/kg dry" units!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF @@ -1853,13 +1833,8 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & WAERSL => State_Chm%AerMass%WAERSL ! Verify that incoming State_Chm%Species units are kg/kg dry air. - CALL Check_Units( & - State_Chm = State_Chm, & - mapping = State_Chm%Map_All, & - units = KG_SPECIES_PER_KG_DRY_AIR, & - RC = RC ) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Incorrect species units in Set_SpcConc_Diags_VVDry!' + IF ( .not. Check_Units( State_Chm, KG_SPECIES_PER_KG_DRY_AIR ) ) THEN + ErrMsg = 'Not all species are in "kg/kg dry" units!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF diff --git a/GeosCore/set_boundary_conditions_mod.F90 b/GeosCore/set_boundary_conditions_mod.F90 index 719cc3156..e9692ea2c 100644 --- a/GeosCore/set_boundary_conditions_mod.F90 +++ b/GeosCore/set_boundary_conditions_mod.F90 @@ -117,13 +117,8 @@ SUBROUTINE Set_Boundary_Conditions( Input_Opt, State_Chm, State_Grid, RC ) ! simulation. Otherwise the BoundaryCond field won't be allocated. IF ( .not. State_Grid%NestedGrid ) RETURN - ! Verify that incoming State_Chm%Species units are kg/kg dry air. - CALL Check_Units( & - State_Chm = State_Chm, & - mapping = State_Chm%Map_All, & - units = KG_SPECIES_PER_KG_DRY_AIR, & - RC = RC ) - IF ( RC /= GC_SUCCESS ) THEN + ! Verify that incoming State_Chm%Species units are kg/kg dry air. + IF ( .not. Check_Units( State_Chm, KG_SPECIES_PER_KG_DRY_AIR ) ) THEN IF ( Input_Opt%amIRoot ) THEN WRITE(6, '(a)') 'Unit check failure: Current units are ' // & UNIT_STR(State_Chm%Species(1)%Units) // & diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index 0f05411c6..eb1b6d8f0 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -55,7 +55,6 @@ MODULE UnitConv_Mod ! !PUBLIC MEMBER FUNCTIONS: ! PUBLIC :: Check_Units - PUBLIC :: Check_Previous_Units PUBLIC :: Convert_Spc_Units PUBLIC :: Print_Global_Species_Kg @@ -257,9 +256,8 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & ENDIF ! Make sure all species have consistent starting units - CALL Check_Units( State_Chm, mapping, in_units, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error encountered in routine "Check_Units"!' + IF ( .not. Check_Units( State_Chm, in_units, theMapping ) ) THEN + errMsg = 'All species do not have consistent starting units!' theMapping => NULL() CALL GC_Error( errMsg, RC, thisLoc ) RETURN @@ -469,20 +467,11 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & END SELECT !======================================================================== - ! Additional checks + ! Cleanup and quit !======================================================================== - ! Make sure that all species have consistent "previous_units" values - IF ( PRESENT( previous_units ) ) THEN - CALL Check_Previous_Units( State_Chm, mapping, in_units, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errUnits = 'Error encountered in "Check_Previous_Units!"' - theMapping => NULL() - CALL GC_Error( errUnits, RC, thisLoc ) - RETURN - ENDIF - previous_units = in_units - ENDIF + ! Return the previous units (if necessary) + IF ( PRESENT( previous_units ) ) previous_units = in_units ! Free pointer theMapping => NULL() @@ -2610,25 +2599,26 @@ END SUBROUTINE ConvertBox_Kg_to_Kgm2 ! ! !IROUTINE: Check_Units ! -! !DESCRIPTION: Ensures that all species have the same Units value before -! unit conversion is done. +! !DESCRIPTION: Returns .TRUE. if all species have the same units, or +! .FALSE. if not. !\\ ! !INTERFACE: ! - SUBROUTINE Check_Units( State_Chm, mapping, units, RC ) + FUNCTION Check_Units( State_Chm, units, mapping ) RESULT( same ) ! ! !INPUT PARAMETERS: ! - INTEGER, INTENT(IN) :: mapping(:) ! Mapping to species Id - INTEGER, INTENT(IN) :: units ! Input units flag + INTEGER, INTENT(IN) :: units ! Input units flag + INTEGER, OPTIONAL, POINTER :: mapping(:) ! species ID -> model ID + ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry State object + TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry State object ! -! !OUTPUT PARAMETERS: +! !RETURN VALUE: ! - INTEGER, INTENT(OUT) :: RC ! Success or failure + LOGICAL :: same ! All species in same units? ! ! !REVISION HISTORY: ! 30 Nov 2023 - R. Yantosca - Initial version @@ -2639,92 +2629,22 @@ SUBROUTINE Check_Units( State_Chm, mapping, units, RC ) ! ! !LOCAL VARIABLES: ! - ! Scalars - INTEGER :: N, S - - ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc + INTEGER, POINTER :: theMapping(:) !======================================================================== ! Check_Units begins here! !======================================================================== - ! Initialize - RC = GC_SUCCESS - errMsg = '' - thisLoc = ' -> at Check_Units (in module GeosUtil/unitconv_mod.F90)' - - ! Make sure all species start with the proper unit, or throw an error - IF ( .not. ALL( State_Chm%Species(mapping)%Units == units ) ) THEN - errMsg = 'All species do not have Units = ' // & - TRIM( UNIT_STR( units ) ) - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - - END SUBROUTINE Check_Units -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Check_Previous_Units -! -! !DESCRIPTION: Ensures that all species have the same Previous_Units value -! before unit conversion is done. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Check_Previous_Units( State_Chm, mapping, units, RC ) -! -! !INPUT PARAMETERS: -! - INTEGER, INTENT(IN) :: mapping(:) ! Mapping to species Id - INTEGER, INTENT(IN) :: units ! Input unit flag -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry State object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure -! -! !REVISION HISTORY: -! 30 Nov 2023 - R. Yantosca - Initial version -! See the subsequent Git history with the gitk browser! -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - INTEGER :: N, S + ! Point to the mapping array (or use all species if not passed) + theMapping => State_Chm%Map_All + IF ( PRESENT( mapping ) ) theMapping => mapping - ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc + ! Are all species in the same units? + same = ALL( State_Chm%Species(theMapping)%Units == units ) - !======================================================================== - ! Check_Previous_Units begins here! - !======================================================================== - - ! Initialize - RC = GC_SUCCESS - errMsg = '' - thisLoc = & - ' -> at Check_PreviousUnits (in module GeosUtil/unitconv_mod.F90)' - - ! Make sure all species start with the proper unit, or throw an error - IF ( .not. ALL( State_Chm%Species(mapping)%Previous_Units == units ) ) THEN - errMsg = 'All species do not have Previous_Units = ' // & - TRIM( UNIT_STR( units ) ) - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF + ! Free pointer + theMapping => NULL() - END SUBROUTINE Check_Previous_Units + END FUNCTION Check_Units !EOC END MODULE UnitConv_Mod From fc1aed85d28551d1e7d99a10be3b2c89e1ed1ba1 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 22 Feb 2024 13:36:34 -0500 Subject: [PATCH 096/331] Remove State_Chm%Map_All from unitconv calls; Remove Previous_Units Removed references to State_Chm%Species(:)%Previous_Units in: - GeosCore/hco_utilities_gc_mod.F90 - GeosUtil/unitconv_mod.F90 - Headers/state_chm_mod.F90 - Interfaces/GCHP/gchp_chunk_mod.F90 Removed State_Chm%Map_All from calls to Convert_Spc_Units (since by default it will now convert units for all species) in: - GeosCore/chemistry_mod.F90 - GeosCore/fullchem_mod.F90 - GeosCore/hco_utilities_gc_mod.F90 - GeosCore/mercury_mod.F90 - GeosCore/vdiff_mod.F90 - Interfaces/GCHP/gchp_chunk_mod.F90 - Interfaces/GEOS/geos_CarbonInterface.F90 CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 +- GeosCore/chemistry_mod.F90 | 2 -- GeosCore/fullchem_mod.F90 | 2 -- GeosCore/hco_utilities_gc_mod.F90 | 5 +---- GeosCore/mercury_mod.F90 | 2 -- GeosCore/vdiff_mod.F90 | 2 -- GeosUtil/unitconv_mod.F90 | 18 ------------------ Headers/state_chm_mod.F90 | 1 - Interfaces/GCHP/gchp_chunk_mod.F90 | 3 --- Interfaces/GEOS/geos_CarbonInterface.F90 | 1 - Interfaces/GEOS/geos_interface.F90 | 2 -- 11 files changed, 2 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef1460352..543468f0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] - TBD ### Added -- Added`SpcConc%Units` and `SpcConc%Previous_Units` for species-specific unit conversion +- Added `SpcConc%Units` for species-specific unit conversion - Diel and day-of-week scale factors for CEDS global base emissions - `allSpeciesInDryMixingRatio` routine in `calc_met_mod.F90`, to check if all species are in dry MR units before calling AIRQNT with `update_mixing_ratio=.TRUE.` diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index d4193fe40..0e14e1ca1 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -214,7 +214,6 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = KG_SPECIES, & previous_units = previous_units, & RC = RC ) @@ -1075,7 +1074,6 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = previous_units, & RC = RC ) diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index a1fef33ca..0386b4b48 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -374,7 +374,6 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = MOLECULES_SPECIES_PER_CM3, & previous_units = previous_units, & RC = RC ) @@ -1596,7 +1595,6 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = previous_units, & RC = RC ) diff --git a/GeosCore/hco_utilities_gc_mod.F90 b/GeosCore/hco_utilities_gc_mod.F90 index 613de6d4c..3b3853099 100644 --- a/GeosCore/hco_utilities_gc_mod.F90 +++ b/GeosCore/hco_utilities_gc_mod.F90 @@ -1897,8 +1897,7 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & ENDIF ! Set the initial unit flags - State_Chm%Species(N)%Previous_Units = MOLES_SPECIES_PER_MOLES_DRY_AIR - State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR ! Free pointer SpcInfo => NULL() @@ -1923,7 +1922,6 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = MOLECULES_SPECIES_PER_CM3, & previous_units = previous_units, & RC = RC ) @@ -1962,7 +1960,6 @@ SUBROUTINE Get_GC_Restart( Input_Opt, State_Chm, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = previous_units, & RC = RC ) diff --git a/GeosCore/mercury_mod.F90 b/GeosCore/mercury_mod.F90 index 55f3c4407..f61bea1bf 100644 --- a/GeosCore/mercury_mod.F90 +++ b/GeosCore/mercury_mod.F90 @@ -903,7 +903,6 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = MOLECULES_SPECIES_PER_CM3, & previous_units = previous_units, & RC = RC ) @@ -1433,7 +1432,6 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = previous_units, & RC = RC ) diff --git a/GeosCore/vdiff_mod.F90 b/GeosCore/vdiff_mod.F90 index b3e77761c..2604f4164 100644 --- a/GeosCore/vdiff_mod.F90 +++ b/GeosCore/vdiff_mod.F90 @@ -2316,7 +2316,6 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & previous_units = previous_units, & RC = RC ) @@ -2389,7 +2388,6 @@ SUBROUTINE Do_Vdiff( Input_Opt, State_Chm, State_Diag, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = previous_units, & RC = RC ) diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index eb1b6d8f0..c081a3429 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -743,7 +743,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_VVDry( State_Chm, State_Grid, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = MOLES_SPECIES_PER_MOLES_DRY_AIR ENDDO @@ -857,7 +856,6 @@ SUBROUTINE ConvertSpc_VVDry_to_KgKgDry( State_Chm, State_Grid, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR ENDDO @@ -952,7 +950,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_KgKgTotal( State_Chm, State_Grid, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_TOTAL_AIR ENDDO !$OMP END PARALLEL DO @@ -1046,7 +1043,6 @@ SUBROUTINE ConvertSpc_KgKgTotal_to_KgKgDry( State_Chm, State_Grid, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR ENDDO @@ -1149,7 +1145,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kgm2( State_Chm, State_Grid, State_Met, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES_PER_M2 ENDDO @@ -1253,7 +1248,6 @@ SUBROUTINE ConvertSpc_Kgm2_to_KgKgDry( State_Chm, State_Grid, State_Met, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR ENDDO @@ -1374,7 +1368,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_MND( State_Chm, State_Grid, State_Met, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = MOLECULES_SPECIES_PER_CM3 ENDDO @@ -1499,7 +1492,6 @@ SUBROUTINE ConvertSpc_MND_to_KgKgDry( State_Chm, State_Grid, State_Met, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR ENDDO @@ -1620,7 +1612,6 @@ SUBROUTINE ConvertSpc_VVDry_to_Kg( State_Chm, State_Grid, State_Met, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES ENDDO @@ -1740,7 +1731,6 @@ SUBROUTINE ConvertSpc_Kg_to_VVDry( State_Chm, State_Grid, State_Met, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = MOLES_SPECIES_PER_MOLES_DRY_AIR ENDDO @@ -1849,7 +1839,6 @@ SUBROUTINE ConvertSpc_KgKgDry_to_Kg( State_Chm, State_Grid, State_Met, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES ENDDO @@ -1958,7 +1947,6 @@ SUBROUTINE ConvertSpc_Kg_to_KgKgDry( State_Chm, State_Grid, State_Met, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR ENDDO @@ -2083,7 +2071,6 @@ SUBROUTINE ConvertSpc_MND_to_Kg( State_Chm, State_Grid, State_Met, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES ENDDO @@ -2200,7 +2187,6 @@ SUBROUTINE ConvertSpc_Kg_to_MND( State_Chm, State_Grid, State_Met, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = MOLECULES_SPECIES_PER_CM3 ENDDO @@ -2297,7 +2283,6 @@ SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES ENDDO @@ -2394,7 +2379,6 @@ SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR ENDDO @@ -2489,7 +2473,6 @@ SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES ENDDO @@ -2584,7 +2567,6 @@ SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, & #endif ! Update units metadata - State_Chm%Species(N)%Previous_Units = State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES_PER_M2 ENDDO diff --git a/Headers/state_chm_mod.F90 b/Headers/state_chm_mod.F90 index d63f28f7f..0bdbdcd7b 100644 --- a/Headers/state_chm_mod.F90 +++ b/Headers/state_chm_mod.F90 @@ -958,7 +958,6 @@ SUBROUTINE Init_State_Chm( Input_Opt, State_Chm, State_Grid, RC ) State_Chm%Species(N)%Conc = 0.0_f8 #endif State_Chm%Species(N)%Units = 0 - State_Chm%Species(N)%Previous_Units = 0 ENDDO #ifdef ADJOINT diff --git a/Interfaces/GCHP/gchp_chunk_mod.F90 b/Interfaces/GCHP/gchp_chunk_mod.F90 index 4b2b9e022..371fb269a 100644 --- a/Interfaces/GCHP/gchp_chunk_mod.F90 +++ b/Interfaces/GCHP/gchp_chunk_mod.F90 @@ -516,7 +516,6 @@ SUBROUTINE GCHP_Chunk_Init( nymdB, nhmsB, nymdE, & State_Chm%Species(:)%Units = MOLES_SPECIES_PER_MOLES_DRY_AIR State_Chm%allSpeciesInDryMixingRatio = .TRUE. #endif - State_Chm%Species(:)%Previous_Units = -1 ! Initialize photolysis, including reading files for optical properties IF ( Input_Opt%ITS_A_FULLCHEM_SIM .or. & @@ -993,7 +992,6 @@ SUBROUTINE GCHP_Chunk_Run( GC, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = KG_SPECIES_PER_KG_DRY_AIR, & previous_units = previous_units, & RC = RC ) @@ -1679,7 +1677,6 @@ SUBROUTINE GCHP_Chunk_Run( GC, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = previous_units, & RC = RC ) _ASSERT(RC==GC_SUCCESS, 'Error calling CONVERT_SPC_UNITS') diff --git a/Interfaces/GEOS/geos_CarbonInterface.F90 b/Interfaces/GEOS/geos_CarbonInterface.F90 index 079e90e79..ba52b8364 100644 --- a/Interfaces/GEOS/geos_CarbonInterface.F90 +++ b/Interfaces/GEOS/geos_CarbonInterface.F90 @@ -524,7 +524,6 @@ SUBROUTINE GEOS_CarbonSetConc( Import, Input_Opt, State_Chm, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = KG_SPECIES_PER_KG_TOTAL_AIR, & previous_units = previous_units, & RC = RC ) diff --git a/Interfaces/GEOS/geos_interface.F90 b/Interfaces/GEOS/geos_interface.F90 index 9b3d71bef..d014e6d47 100644 --- a/Interfaces/GEOS/geos_interface.F90 +++ b/Interfaces/GEOS/geos_interface.F90 @@ -1316,7 +1316,6 @@ SUBROUTINE GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = KG_SPECIES_PER_KG_DRY_AIR, & previous_units = previous_units, & RC = RC ) @@ -1329,7 +1328,6 @@ SUBROUTINE GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_All, & new_units = previous_units, & RC = RC ) _ASSERT(RC==GC_SUCCESS, 'Error calling CONVERT_SPC_UNITS') From f9a888ef03e597dad24ba8c4cf23c6fffbf3e2ea Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 22 Feb 2024 13:58:50 -0500 Subject: [PATCH 097/331] Rename "in_units" to "current_units" in Convert_Spc_Units GeosUtil/unitconv_mod.F90 - Renamed the "in_units" variable to "current_units" at the suggestion of @lizziel (see PR #2072). - Bug fix: use "theMapping" instead of "mapping" when defining the current_units variable. This can cause a seg fault if mapping is not passed as an argument. - Now use a FORMAT statement for the debug printout Signed-off-by: Bob Yantosca --- GeosUtil/unitconv_mod.F90 | 41 ++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index c081a3429..c6f815789 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -197,7 +197,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & ! ! Scalars LOGICAL :: isAdjoint - INTEGER :: in_units + INTEGER :: current_units ! Pointers INTEGER, POINTER :: theMapping(:) @@ -225,29 +225,30 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & ENDIF ! Initialize - RC = GC_SUCCESS - in_units = State_Chm%Species(mapping(1))%Units - isAdjoint = .FALSE. - thisLoc = ' -> at Convert_Spc_Units (in GeosUtil/unitconv_mod.F90)' - errNoOut = 'Conversion to ' // TRIM( UNIT_STR(new_units)) // & - ' not defined!' - errNoIn = 'Conversion from ' // TRIM( UNIT_STR(in_units )) // & - ' not defined!' - errMsg = 'Error in conversion from ' // TRIM( UNIT_STR(in_units )) // & - ' to ' // TRIM( UNIT_STR(new_units)) // & - '!' + RC = GC_SUCCESS + current_units = State_Chm%Species(theMapping(1))%Units + isAdjoint = .FALSE. + thisLoc = ' -> at Convert_Spc_Units (in GeosUtil/unitconv_mod.F90)' + + ! Error messages + errNoOut = 'Conversion to ' // TRIM( UNIT_STR( new_units ) ) // & + ' is not defined!' + errNoIn = 'Conversion from ' // TRIM( UNIT_STR( current_units ) ) // & + ' is not defined!' + errMsg = 'Error in conversion from ' // & + TRIM( UNIT_STR( current_units ) ) // ' to ' // & + TRIM( UNIT_STR( new_units ) ) // '!' errUnits = '' - ! TODO: Re-enable debug print ! Debugging print IF ( Input_Opt%Verbose ) THEN - WRITE(6,'(a)') ' ### Species Unit Conversion: ' // & - TRIM( UNIT_STR(in_units ) ) // ' -> ' // & - TRIM( UNIT_STR(new_units) ) // ' ###' + WRITE( 6, 100 ) TRIM( UNIT_STR( current_units ) ), & + TRIM( UNIT_STR( new_units ) ) + 100 FORMAT( ' ### Species Unit Conversion: ', a, ' -> ', a ) ENDIF ! Exit if in and out units are the same - IF ( new_units == in_units ) THEN + IF ( new_units == current_units ) THEN IF ( PRESENT( previous_units ) ) previous_units = new_units IF ( Input_Opt%useTimers ) THEN CALL Timer_End( "Unit conversions", RC ) @@ -256,7 +257,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & ENDIF ! Make sure all species have consistent starting units - IF ( .not. Check_Units( State_Chm, in_units, theMapping ) ) THEN + IF ( .not. Check_Units( State_Chm, current_units, theMapping ) ) THEN errMsg = 'All species do not have consistent starting units!' theMapping => NULL() CALL GC_Error( errMsg, RC, thisLoc ) @@ -269,7 +270,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & #endif ! Convert based on input and output units - SELECT CASE ( in_units ) + SELECT CASE ( current_units ) !================================================================ ! Convert from kg/kg dry @@ -471,7 +472,7 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & !======================================================================== ! Return the previous units (if necessary) - IF ( PRESENT( previous_units ) ) previous_units = in_units + IF ( PRESENT( previous_units ) ) previous_units = current_units ! Free pointer theMapping => NULL() From a8e07311a54b278d09096fd61f2c22bc07e49bb5 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 22 Feb 2024 14:10:09 -0500 Subject: [PATCH 098/331] Update calling sequence header comments for Convert_Spc_Units GeosUtil/unitconv_mod.F90 - We have now updated the calling sequence example, which was out of date. Signed-off-by: Bob Yantosca --- GeosUtil/unitconv_mod.F90 | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index c6f815789..b7066f97b 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -175,16 +175,30 @@ SUBROUTINE Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & INTEGER, INTENT(OUT) :: RC ! Success or failure? INTEGER, OPTIONAL :: previous_units ! Previous units ! -! !REMARKS: -! The purpose of optional output argument origUnit is to enable conversion -! back to the original units in a second call to Convert_Spc_Units. -! For example: -! -! CALL Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & -! State_Met, unit, mapping, RC ) -! ...computation... -! CALL Convert_Spc_Units( Input_Opt, State_Chm, State_Grid, & -! State_Met, mapping, RC ) +! !CALLING SEQUENCE: +! +! ! Convert units from mol/mol dry to kg +! CALL Convert_Spc_Units( & +! Input_Opt = Input_Opt, & +! State_Chm = State_Chm, & +! State_Grid = State_Grid, & +! State_Met = State_Met, & +! mapping = State_Chm%Map_XXXXX, & ! Uses Map_All if omitted +! new_units = KG_SPECIES, & +! previous_units = previous_units, & +! RC = RC ) +! +! ...computation... +! +! ! Convert back to original units +! CALL Convert_Spc_Units( & +! Input_Opt = Input_Opt, & +! State_Chm = State_Chm, & +! State_Grid = State_Grid, & +! State_Met = State_Met, & +! mapping = State_Chm%Map_XXXXX, & ! Uses Map_All if omitted +! new_units = previous_units, & +! RC = RC ) ! ! !REVISION HISTORY: ! 14 Apr 2016 - C. Keller - Initial version From 48860276c5538fab872cd2cc5fceaeead3dab524 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 22 Feb 2024 14:36:05 -0500 Subject: [PATCH 099/331] Streamline IF statements in main.F90 for CH4 obs. operators This commit adds the following suggestion by @lizziel in PR #2072: Headers/input_opt_mod.F90 - Add new logical field "Satellite_CH4_Columns" - Set Input_Opt%Satellite_CH4_Columns to FALSE in the init phase GeosCore/input_mod.F90 - Set Input_Opt%Satellite_CH4_Columns to TRUE if any of the AIRS, GOSAT, TCCON observational operators are selected. Interfaces/GCClassic/main.F90 - Simplify the IF statement structure for the CH4 Simulation diagnostics as follows: - Only execute the entire code block if Input_Opt%Satellite_CH4_Columns is true. - Then execute the remaining code when ITS_A_NEW_HOUR() is true. - Then start the diagnostics timer. - Then execute the AIRS, GOSAT, and/or TCCON observational operators - Then stop the diagnostics timer - Updated comments CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 ++ GeosCore/input_mod.F90 | 5 ++++ Headers/input_opt_mod.F90 | 2 ++ Interfaces/GCClassic/main.F90 | 47 +++++++++++------------------------ 4 files changed, 24 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 543468f0e..504dcbc75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,10 +9,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Added `SpcConc%Units` for species-specific unit conversion - Diel and day-of-week scale factors for CEDS global base emissions - `allSpeciesInDryMixingRatio` routine in `calc_met_mod.F90`, to check if all species are in dry MR units before calling AIRQNT with `update_mixing_ratio=.TRUE.` +- `Input_Opt%Satellite_CH4_Columns` logical flag; Set this to true if any of AIRS, GOSAT, TCCON observational operators are selected ### Changed - Updated routines in `GeosUtil/unitconv_mod.F90` for species-specific unit conversion - Halt timers during calls to `Convert_Spc_Units` so as to time unit conversions separately +- Streamline `IF` statements for CH4 observational operators in `Interfaces/GCClassic/main.F90` ### Fixed - Use rate-law function `GCARR_ac` for rxns that have Arrhenius `B` parameters that are zero diff --git a/GeosCore/input_mod.F90 b/GeosCore/input_mod.F90 index ae4053b30..5dc8eb3e2 100644 --- a/GeosCore/input_mod.F90 +++ b/GeosCore/input_mod.F90 @@ -5100,6 +5100,11 @@ SUBROUTINE Config_CH4( Config, Input_Opt, RC ) WRITE(6,100) 'Use OH scale factors? : ', Input_Opt%UseOHSF ENDIF + ! Flag to denote if any AIRS, GOSAT, TCCON columns will be used + Input_Opt%Satellite_CH4_Columns = ( Input_Opt%AIRS_CH4_OBS .or. & + Input_Opt%GOSAT_CH4_OBS .or. & + Input_Opt%TCCON_CH4_OBS ) + ! FORMAT statements 90 FORMAT( /, A ) 95 FORMAT( A ) diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index 80ac70030..c51f482e6 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -371,6 +371,7 @@ MODULE Input_Opt_Mod !---------------------------------------- ! CH4 MENU fields !---------------------------------------- + LOGICAL :: Satellite_CH4_Columns LOGICAL :: GOSAT_CH4_OBS LOGICAL :: AIRS_CH4_OBS LOGICAL :: TCCON_CH4_OBS @@ -933,6 +934,7 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) !---------------------------------------- ! CH4 MENU fields !---------------------------------------- + Input_Opt%Satellite_CH4_Columns = .FALSE. Input_Opt%GOSAT_CH4_OBS = .FALSE. Input_Opt%AIRS_CH4_OBS = .FALSE. Input_Opt%TCCON_CH4_OBS = .FALSE. diff --git a/Interfaces/GCClassic/main.F90 b/Interfaces/GCClassic/main.F90 index 31c10c7e4..0d0167638 100644 --- a/Interfaces/GCClassic/main.F90 +++ b/Interfaces/GCClassic/main.F90 @@ -1886,50 +1886,33 @@ PROGRAM GEOS_Chem !------------------------------------------------------------------ ! ***** C H 4 S I M U L A T I O N D I A G N O S I C S ***** + ! + ! Get CH4 columns by applying satellite observational operators !------------------------------------------------------------------ - - ! CH4 columns from the GOSAT instrument - IF ( Input_Opt%GOSAT_CH4_OBS ) THEN + IF ( Input_Opt%Satellite_CH4_Columns ) THEN IF ( ITS_A_NEW_HOUR() ) THEN IF ( Input_Opt%useTimers ) THEN CALL Timer_Start( "Diagnostics", RC) ENDIF - CALL CALC_GOSAT_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & - State_Met ) - - IF ( Input_Opt%useTimers ) THEN - CALL Timer_End( "Diagnostics", RC ) + ! CH4 columns from the GOSAT instrument + IF ( Input_Opt%GOSAT_CH4_OBS ) THEN + CALL CALC_GOSAT_CH4_FORCE( Input_Opt, State_Chm, & + State_Grid, State_Met ) ENDIF - ENDIF - ENDIF - ! CH4 columns from the AIRS instrument - IF ( Input_Opt%AIRS_CH4_OBS ) THEN - IF ( ITS_A_NEW_HOUR() ) THEN - IF ( Input_Opt%useTimers ) THEN - CALL Timer_Start( "Diagnostics", RC) + ! CH4 columns from the AIRS instrument + IF ( Input_Opt%AIRS_CH4_OBS ) THEN + CALL CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, & + State_Grid, State_Met ) ENDIF - CALL CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & - State_Met ) - - IF ( Input_Opt%useTimers ) THEN - CALL Timer_End( "Diagnostics", RC ) - ENDIF - ENDIF - ENDIF - - ! CH4 columns from the TCCON instrument - IF ( Input_Opt%TCCON_CH4_OBS ) THEN - IF ( ITS_A_NEW_HOUR() ) THEN - IF ( Input_Opt%useTimers ) THEN - CALL Timer_Start( "Diagnostics", RC) + ! CH4 columns from the TCCON instrument + IF ( Input_Opt%TCCON_CH4_OBS ) THEN + CALL CALC_TCCON_CH4_FORCE( Input_Opt, State_Chm, & + State_Grid, State_Met ) ENDIF - CALL CALC_TCCON_CH4_FORCE( Input_Opt, State_Chm, State_Grid, & - State_Met ) - IF ( Input_Opt%useTimers ) THEN CALL Timer_End( "Diagnostics", RC ) ENDIF From ee72c2f36ffc27f857b9f4a1857968c5d0ac2e3c Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 22 Feb 2024 16:08:52 -0500 Subject: [PATCH 100/331] Restore unit checks in chemistry_mod.F90 GeosCore/chemistry_mod.F90 - Call Check_Units after Do_LinearChem and ChemSulfate to make sure that all species are in units of 'kg'. These unit checks were commented out because they used the obsolete State_Chm%Spc_Units variable (which is no longer supported). - Also trap errors in Do_LinearChem and ChemSulfate before doing the unit checks. Signed-off-by: Bob Yantosca --- GeosCore/chemistry_mod.F90 | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index 0e14e1ca1..f6e198ef0 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -457,11 +457,19 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & State_Met = State_Met, & errCode = RC ) - ! Check units (ewl, 10/5/15) - !IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - ! ErrMsg = 'Incorrect species units after DO_LINEARCHEM!' - ! CALL GC_Error( ErrMsg, RC, ThisLoc ) - !ENDIF + ! Trap potential errors + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error encountred in "Do_LinearChem"!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF + + ! Make sure all units are still in kg + IF ( .not. Check_Units( State_Chm, KG_SPECIES ) ) THEN + ErrMsg = 'Incorrect species after calling "Do_Linear_Chem"!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF IF ( Input_Opt%useTimers ) THEN CALL Timer_End( "=> Linearized chem", RC ) @@ -544,15 +552,16 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & FullRun = .TRUE., & RC = RC ) - !! Check units (ewl, 10/5/15) - !IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - ! ErrMsg = 'Incorrect species units after CHEMSULFATE!' - ! CALL GC_Error( ErrMsg, RC, ThisLoc ) - !ENDIF - ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered in "ChemSulfate"!' + ErrMsg = 'Error encountered after calling "ChemSulfate"!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF + + ! Make sure all units are still in kg + IF ( .not. Check_Units( State_Chm, KG_SPECIES ) ) THEN + ErrMsg = 'Incorrect species after calling "ChemSulfate"!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF From e3c5b18ac40ce9621e82107781e0cd09fa5eb6cd Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Mon, 26 Feb 2024 09:01:27 -0500 Subject: [PATCH 101/331] Update analysis interface to allow use of MAPL_read_bundle in GEOS environment. This is necessary for CDAS applications where the increment files are not yet available when ExtData scans for them --- Interfaces/GEOS/geos_analysis.F90 | 460 ++++++++++++++++-- run/GEOS/GEOSCHEMchem_ExtData.yaml | 18 - run/GEOS/HEMCO_Config.rc | 4 +- ...nalysis.yml => geoschem_analysis_cdas.yml} | 31 +- run/GEOS/geoschem_analysis_geosit.yml | 37 ++ 5 files changed, 485 insertions(+), 65 deletions(-) rename run/GEOS/{geoschem_analysis.yml => geoschem_analysis_cdas.yml} (78%) create mode 100644 run/GEOS/geoschem_analysis_geosit.yml diff --git a/Interfaces/GEOS/geos_analysis.F90 b/Interfaces/GEOS/geos_analysis.F90 index b161612c0..2cbccb4b5 100644 --- a/Interfaces/GEOS/geos_analysis.F90 +++ b/Interfaces/GEOS/geos_analysis.F90 @@ -1,3 +1,7 @@ +#ifdef MODEL_GEOS +#include "MAPL_Generic.h" +#endif + !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Model ! !------------------------------------------------------------------------------ @@ -14,6 +18,11 @@ MODULE GEOS_Analysis ! ! !USES: ! +#ifdef MODEL_GEOS + USE ESMF + USE MAPL_Mod +#endif + ! GEOS-Chem USE Error_Mod USE ErrCode_Mod @@ -35,6 +44,7 @@ MODULE GEOS_Analysis PRIVATE :: DoAnalysis_ PRIVATE :: GetAnaTime_ PRIVATE :: ReplaceChar_ + PRIVATE :: GetAnaBundle_ ! ! !PRIVATE TYPES: ! @@ -60,6 +70,10 @@ MODULE GEOS_Analysis INTEGER :: AnalysisMinute LOGICAL :: ForwardLooking LOGICAL :: SkipPredictor + LOGICAL :: ReadFromBundle + LOGICAL :: ReadAnaTime + CHARACTER(LEN=1023) :: FileTemplate + CHARACTER(LEN=63) :: FileVarName CHARACTER(LEN=127) :: FldNameHco CHARACTER(LEN=63) :: FileVarUnit INTEGER :: DryFlag @@ -96,6 +110,20 @@ MODULE GEOS_Analysis ! Main configuration file for analysis options CHARACTER(LEN=127), PARAMETER :: AnaConfigFile = './geoschem_analysis.yml' +#ifdef MODEL_GEOS + ! For GEOS runs, we have the option to read the analysis fields from file + ! using the MAPL bundle functionalities. This can be advantageous over the + ! default option that uses HEMCO(/ExtData) in cases where the analysis + ! fields are generated in runtime and ExtData might not have seen them in + ! time. To avoid excessive reading of the same file, the VarBundle is + ! defined here so that it can 'carry over' from one species to the next + ! in the DoAnalysis_ loop in GEOS_AnaRun. Variable CurrentFile carries + ! the file name that is loaded into VarBundle. This could also be queried + ! from the bundle directly but having a dedicated variable is easier, in + ! my opinion (cakelle2, 2/24/24). + type (ESMF_FieldBundle) :: VarBundle + CHARACTER(LEN=ESMF_MAXSTR) :: CurrentFile +#endif ! ! !REVISION HISTORY: ! 25 May 2022 - C. Keller - initial version (refactored Chem_GridCompMod) @@ -308,6 +336,18 @@ SUBROUTINE GEOS_AnaRun( Input_Opt, State_Met, State_Chm, State_Grid, State_Diag, ! Do analysis for all analysis species IF ( nAnaSpec > 0 .AND. ASSOCIATED(AnaConfig) ) THEN + +#ifdef MODEL_GEOS + ! Create VarBundle + CALL CreateVarBundle_( RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error creating VarBundle' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF + CurrentFile = 'N/A' +#endif + DO ispec=1,nAnaSpec IF ( AnaConfig(ispec)%Active ) THEN CALL DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, & @@ -319,6 +359,16 @@ SUBROUTINE GEOS_AnaRun( Input_Opt, State_Met, State_Chm, State_Grid, State_Diag, ENDIF ENDIF ENDDO + +#ifdef MODEL_GEOS + ! Destroy VarBundle + CALL DestroyVarBundle_( RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error destroying VarBundle' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF +#endif ENDIF ! Convert species back to original unit @@ -458,15 +508,14 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat REAL :: MinConc REAL :: IncConc, IncCol LOGICAL :: UpdateSpec2, DoIncColDiag - CHARACTER(LEN=255) :: Iam + LOGICAL :: HasMask CHARACTER(LEN=255) :: ErrMsg, ThisLoc + CHARACTER(LEN=255) :: only_vars ! Diagnostics INTEGER :: DgnId - ! temporary arrays - REAL, ALLOCATABLE :: Qtmp(:,:,:) - + ! field arrays REAL(hp), POINTER :: AnaPtr(:,:,:), MskPtr(:,:,:) !======================================================================= @@ -474,7 +523,7 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat !======================================================================= ! Callback - Iam = 'GEOS_Analysis::DoAnalysis_' + ThisLoc = 'GEOS_Analysis::DoAnalysis_' RC = GC_SUCCESS @@ -516,38 +565,67 @@ SUBROUTINE DoAnalysis_( ispec, Input_Opt, State_Met, State_Chm, State_Grid, Stat ! Check if file exists (only if it's time to do the analysis) HasField = .FALSE. - AnaPtr => NULL() + ALLOCATE(AnaPtr(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) + AnaPtr(:,:,:) = 0.0_hp IF ( TimeForAna ) THEN - ! HEMCO field name - FldName = iopt%FldNameHco - - ! Check first if the field exists / is valid (in ESMF, fields can become invalid) - CALL HCOIO_IsValid( HcoState, FldName, HasField, RC ) - IF ( RC /= GC_SUCCESS ) HasField = .FALSE. - - ! Evaluate field if it is valid to do so - IF ( HasField ) THEN - - ALLOCATE(AnaPtr(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) - CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, AnaPtr, RC ) - IF ( RC /= GC_SUCCESS ) HasField = .FALSE. + ! Attempt to read field from bundle if specified so + IF ( iopt%ReadFromBundle ) THEN + only_vars = TRIM(iopt%FileVarName) + CALL GetAnaBundle_( am_I_Root, State_Grid, AnaPtr, iopt%FileTemplate, & + yy, mm, dd, h, m, HasField, only_vars=only_vars, & + err_mode=iopt%ErrorMode, anatime=iopt%ReadAnaTime, RC=RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error getting variable from file: '//TRIM(iopt%FileTemplate) + CALL GC_Error( ErrMsg, RC, ThisLoc) + RETURN + ENDIF - ! Eventually read mask field - IF ( iopt%HasMask ) THEN - FldName = iopt%MskNameHco + ! Get mask + IF ( HasField .AND. iopt%HasMask ) THEN + only_vars = TRIM(iopt%MskNameHco) ALLOCATE(MskPtr(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) - CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, MskPtr, RC ) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error getting mask: '//TRIM(FldName) + CALL GetAnaBundle_( am_I_Root, State_Grid, MskPtr, iopt%FileTemplate, & + yy, mm, dd, h, m, HasMask, only_vars=only_vars, & + err_mode=iopt%ErrorMode, anatime=iopt%ReadAnaTime, RC=RC ) + IF ( (RC/=GC_SUCCESS) .OR. .NOT. HasMask ) THEN + ErrMsg = 'Error getting mask from file: '//TRIM(iopt%FileTemplate) CALL GC_Error( ErrMsg, RC, ThisLoc) RETURN ENDIF ENDIF + ! Read field via HEMCO otherwise + ELSE + FldName = iopt%FldNameHco + + ! Check first if the field exists / is valid (in ESMF, fields can become invalid) + CALL HCOIO_IsValid( HcoState, FldName, HasField, RC ) + IF ( RC /= GC_SUCCESS ) HasField = .FALSE. + + ! Evaluate field if it is valid to do so + IF ( HasField ) THEN + + CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, AnaPtr, RC ) + IF ( RC /= GC_SUCCESS ) HasField = .FALSE. + + ! Eventually read mask field + IF ( iopt%HasMask ) THEN + FldName = iopt%MskNameHco + ALLOCATE(MskPtr(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) + CALL HCO_GC_EvalFld ( Input_Opt, State_Grid, FldName, MskPtr, RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error getting mask: '//TRIM(FldName) + CALL GC_Error( ErrMsg, RC, ThisLoc) + RETURN + ENDIF + ENDIF + ENDIF + ENDIF + ! Handle cases where field is not found. If error mode is set to 0, stop with error. ! Print a warning otherwise. - ELSE + IF ( .NOT. HasField ) THEN IF ( iopt%ErrorMode == 0 ) THEN ErrMsg = 'Field not found: '//TRIM(iopt%FldNameHco)//'; to get past this error, set error mode to > 0' CALL GC_Error( ErrMsg, RC, ThisLoc) @@ -1013,6 +1091,189 @@ END SUBROUTINE GetAnaTime_ !------------------------------------------------------------------------------ !BOP ! +! !IROUTINE: GetAnaBundle_ +! +! !DESCRIPTION: Get analysis field from a bundle using MAPL_read_bundle. This +! only work in an ESMF/MAPL environment. For other environments, this routine +! simply sets the output array Ptr3D to zero. +!\\ +!\\ +! !INTERFACE: +! + SUBROUTINE GetAnaBundle_( am_I_Root, State_Grid, Ptr3D, FileTmpl, yy, mm, dd, h, m, & + HasField, only_vars, err_mode, anatime, RC ) +! +! !USES: +! + USE HCO_State_GC_Mod, ONLY : HcoState + USE State_Grid_Mod, ONLY : GrdState +! +! !INPUT/OUTPUT PARAMETERS: +! + LOGICAL, INTENT(IN) :: am_I_Root ! Root CPU? + TYPE(GrdState) :: State_Grid + REAL(hp), POINTER :: Ptr3D(:,:,:) + CHARACTER(LEN=*), INTENT(IN) :: FileTmpl ! file template + INTEGER, INTENT(IN) :: yy, mm, dd ! year, month, day + INTEGER, INTENT(IN) :: h, m ! hour, minute, second + LOGICAL, INTENT(INOUT) :: HasField ! Was field found? + CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: only_vars ! variables to read + INTEGER, INTENT(IN), OPTIONAL :: err_mode ! error mode + LOGICAL, INTENT(IN), OPTIONAL :: anatime ! round time to analysis time? + INTEGER, INTENT(OUT), OPTIONAL :: RC ! Success or failure? +! +! !REMARKS: +! +! !REVISION HISTORY: +! 01 Mar 2022 - C. Keller - Initial version +! See https://github.com/geoschem/geos-chem for history +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! LOCAL VARIABLES: +! +#ifdef MODEL_GEOS + CHARACTER(LEN=ESMF_MAXSTR) :: ifile_ + CHARACTER(LEN=4) :: syy + CHARACTER(LEN=2) :: smm, sdd, sh, sm + INTEGER :: nymd, nhms, incSecs + INTEGER :: yy_, mm_, dd_, h_, m_, s_, fid + TYPE(ESMF_TIME) :: currTime, fileTime_ + TYPE(ESMF_TimeInterval) :: tsInt + LOGICAL :: HasFile, anatime_ + INTEGER :: I, errmode_ + REAL, POINTER :: DtaPtr(:,:,:) => NULL() + + ! Begins here + __Iam__('GetAnaBundle_') + + ! Initialize + HasField = .FALSE. + errmode_ = 2 + anatime_ = .FALSE. + if ( present(err_mode) ) errmode_ = err_mode + if ( present(anatime ) ) anatime_ = anatime + + ! Get date & time of file. These are the passed values by default + yy_ = yy + mm_ = mm + dd_ = dd + h_ = h + m_ = m + ! If anatime is true, set time to closest analysis hour (0z, 6z, 12z, 18z) + IF ( anatime_ ) THEN + m_ = 0 + IF ( h < 3 ) THEN + h_ = 0 + ELSEIF ( h < 9 ) THEN + h_ = 6 + ELSEIF ( h < 15 ) THEN + h_ = 12 + ELSEIF ( h < 21 ) THEN + h_ = 18 + ! If 21z, get next day (but keep minutes) + ELSE + call ESMF_TimeSet(currTime, yy=yy_, mm=mm_, dd=dd_, h=23, m=m_, s=0) + call ESMF_TimeIntervalSet(tsInt, s_r8=real(7200.0,8), __RC__ ) + call ESMF_TimeGet( currTime+tsInt, yy=yy_, mm=mm_, dd=dd_) + h_ = 0 + ENDIF + ENDIF + + ! Parse file name + ifile_ = FileTmpl + write(syy,'(I4.4)') yy_ + CALL ReplaceChar_ ( ifile_, '%y4', syy ) + write(smm,'(I2.2)') mm_ + CALL ReplaceChar_ ( ifile_, '%m2', smm ) + write(sdd,'(I2.2)') dd_ + CALL ReplaceChar_ ( ifile_, '%d2', sdd ) + write(sh,'(I2.2)') h_ + CALL ReplaceChar_ ( ifile_, '%h2', sh ) + write(sm,'(I2.2)') m_ + CALL ReplaceChar_ ( ifile_, '%n2', sm ) + + ! set default file time + s_ = 0 + CALL ESMF_TimeSet(fileTime_, yy=yy_, mm=mm_, dd=dd_, h=h_, m=m_, s=s_) + + ! Check if requested file is already in memory (in the VarBundle) + IF ( TRIM(ifile_) == TRIM(CurrentFile) ) THEN + IF ( am_I_Root ) WRITE(*,*) 'GCC GetAnaBundle_: Accessing previously read file: '//TRIM(ifile_) + CALL ESMFL_BundleGetPointerToData( VarBundle, TRIM(only_vars), DtaPtr, __RC__ ) + ! Cast to local field, flip vertical axis + Ptr3D(:,:,:) = DtaPtr(:,:,State_Grid%NZ:1:-1) + HasField = .TRUE. + + ! If file is not already in memory, attempt to read from source + ELSE + + ! Check if file exists + INQUIRE( FILE=TRIM(ifile_), EXIST=HasFile ) + ! Try reading current time stamp on file + IF ( HasFile ) THEN + + ! Destroy old bundle first + CALL DestroyVarBundle_( RC ) + ASSERT_(RC==GC_SUCCESS) + + ! Recreate bundle + CALL CreateVarBundle_( RC ) + ASSERT_(RC==GC_SUCCESS) + + ! Read bundle. Read all variables as we might want them later on. + IF ( am_I_Root ) WRITE(*,*) 'GCC GetAnaBundle_: Reading '//TRIM(ifile_) + CALL MAPL_read_bundle( VarBundle, TRIM(FileTmpl), fileTime_, file_override=TRIM(ifile_), RC=STATUS ) + IF ( STATUS == ESMF_SUCCESS ) THEN + HasField = .TRUE. + CurrentFile = TRIM(ifile_) + ENDIF + + ! Get analysis field + IF ( HasField ) THEN + CALL ESMFL_BundleGetPointerToData( VarBundle, TRIM(only_vars), DtaPtr, __RC__ ) + ! Cast to local field, flip vertical axis + Ptr3D(:,:,:) = DtaPtr(:,:,State_Grid%NZ:1:-1) + ENDIF + + ! Clean up + DtaPtr => NULL() + + ! error handling if file not found + ELSE + ! If file not found and error mode is zero, stop with error + IF ( errmode_ == 0 ) THEN + IF ( am_I_Root ) THEN + WRITE(*,*) 'ERROR: file not found: '//TRIM(ifile_) + WRITE(*,*) 'You can get past this error setting the error mode to > 0' + ENDIF + ASSERT_(.FALSE.) + ! If file not found and error mode is not zero, just skip nudging + ELSE + IF ( am_I_Root ) WRITE(*,*) '*** GCC warning in GetAnaBundle_, file not found: '//TRIM(ifile_) + ENDIF + ENDIF + + ENDIF ! File already in memory + + ! Return + RETURN_(ESMF_SUCCESS) + RC = GC_SUCCESS + + ! Dummy routine for non-GEOS environment +#else + Ptr3D(:,:,:) = 0.0_hp + RC = GC_SUCCESS +#endif + + END SUBROUTINE GetAnaBundle_ +!EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Model ! +!------------------------------------------------------------------------------ +!BOP +! ! !IROUTINE: ReadSettings_ ! ! !DESCRIPTION: Reads the analysis settings from a given configuration file @@ -1051,7 +1312,6 @@ SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) ! ! !LOCAL VARIABLES: ! - CHARACTER(LEN=255) :: Iam CHARACTER(LEN=63) :: pkey, SpecName CHARACTER(LEN=3) :: intStr INTEGER :: C, ix @@ -1068,7 +1328,6 @@ SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) !======================================================================= ! ReadSettings_ begins here !======================================================================= - Iam = 'GEOS_Analysis:: ReadSettings_' ! Prefix for this entry WRITE( intStr, '(I3.3)' ) ispec @@ -1127,6 +1386,34 @@ SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) IF ( RC /= GC_SUCCESS ) RETURN AnaConfig(ispec)%SkipPredictor = v_bool + ! Read from bundle (GEOS only)? +#ifdef MODEL_GEOS + key = TRIM(pkey)//"%ReadFromBundle" + CALL GetKey_( Config, key, RC, vbool=v_bool, vbool_default=.TRUE. ) + IF ( RC /= GC_SUCCESS ) RETURN +#else + v_bool = .FALSE. +#endif + AnaConfig(ispec)%ReadFromBundle = v_bool + + ! Read analysis time? + key = TRIM(pkey)//"%ReadAnaTime" + CALL GetKey_( Config, key, RC, vbool=v_bool, vbool_default=.FALSE. ) + IF ( RC /= GC_SUCCESS ) RETURN + AnaConfig(ispec)%ReadAnaTime = v_bool + + ! File template + key = TRIM(pkey)//"%FileTemplate" + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='N/A' ) + IF ( RC /= GC_SUCCESS ) RETURN + AnaConfig(ispec)%FileTemplate = v_str + + ! Variable name + key = TRIM(pkey)//"%FileVarName" + CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='unknown' ) + IF ( RC /= GC_SUCCESS ) RETURN + AnaConfig(ispec)%FileVarName = v_str + ! HEMCO field name key = TRIM(pkey)//"%FldNameHco" CALL GetKey_( Config, key, RC, vstr=v_str, vstr_default='N/A' ) @@ -1336,6 +1623,11 @@ SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) AnaConfig(ispec)%Spec2 => NULL() ENDIF + ! Force some flags if spreading increments across observation window + IF ( AnaConfig(ispec)%IAU ) THEN + AnaConfig(ispec)%ReadAnaTime = .TRUE. + ENDIF + ! Verbose IF ( am_I_Root ) THEN WRITE(6,*) '----------------------------------------' @@ -1348,7 +1640,14 @@ SUBROUTINE ReadSettings_( am_I_Root, Config, ispec, RC ) WRITE(6,*) '- Analysis minute : ',AnaConfig(ispec)%AnalysisMinute WRITE(6,*) '- Forward looking file read : ', AnaConfig(ispec)%ForwardLooking WRITE(6,*) '- Ignore during predictor step : ', AnaConfig(ispec)%SkipPredictor - WRITE(6,*) '- HEMCO field name : ', TRIM(AnaConfig(ispec)%FldNameHco) + WRITE(6,*) '- Read data from bundle : ', AnaConfig(ispec)%ReadFromBundle + IF ( AnaConfig(ispec)%ReadFromBundle ) THEN + WRITE(6,*) '- File template : ', TRIM(AnaConfig(ispec)%FileTemplate) + WRITE(6,*) '- File variable name : ', TRIM(AnaConfig(ispec)%FileVarName) + WRITE(6,*) '- Read file at analysis time : ', AnaConfig(ispec)%ReadAnaTime + ELSE + WRITE(6,*) '- HEMCO field name : ', TRIM(AnaConfig(ispec)%FldNameHco) + ENDIF WRITE(6,*) '- Input variable unit : ', TRIM(AnaConfig(ispec)%FileVarUnit) WRITE(6,*) '- Dry air flag (0=dry, 1=total) : ', AnaConfig(ispec)%DryFlag WRITE(6,*) '- Field are increments : ', AnaConfig(ispec)%IsIncrement @@ -1629,4 +1928,107 @@ SUBROUTINE GetKey_( Config, key, RC, vint, vint_default, vbool, vbool_default, v END SUBROUTINE GetKey_ !EOC +#ifdef MODEL_GEOS +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: CreateVarBundle_ +! +! !DESCRIPTION: Helper routine to create the VarBundle (GEOS only). +!\\ +!\\ +! !INTERFACE: +! + SUBROUTINE CreateVarBundle_( RC ) +! +! !USES: +! + USE HCO_State_GC_Mod, ONLY : HcoState +! +! !INPUT/OUTPUT PARAMETERS: +! + INTEGER :: RC +! +! !REVISION HISTORY: +! 23 Feb 2024 - C. Keller - Initial version +! See https://github.com/geoschem/geos-chem for history +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! LOCAL VARIABLES: +! + TYPE(ESMF_Grid) :: grid + + ! starts here + __Iam__('CreateVarBundle_') + + ! Create bundle and attach grid to it + CALL ESMF_GridCompGet( HcoState%GridComp, grid=grid, __RC__ ) + VarBundle = ESMF_FieldBundleCreate(name='AnaBundle', __RC__ ) + CALL ESMF_FieldBundleSet( VarBundle, grid=grid, __RC__ ) + + ! Exit w/ success + RETURN_(ESMF_SUCCESS) + RC = GC_SUCCESS + + END SUBROUTINE CreateVarBundle_ +!EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: DestroyVarBundle_ +! +! !DESCRIPTION: Helper routine to destroy the VarBundle (GEOS only). +!\\ +!\\ +! !INTERFACE: +! + SUBROUTINE DestroyVarBundle_( RC ) +! +! !USES: +! +! +! !INPUT/OUTPUT PARAMETERS: +! + INTEGER :: RC +! +! !REVISION HISTORY: +! 23 Feb 2024 - C. Keller - Initial version +! See https://github.com/geoschem/geos-chem for history +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! LOCAL VARIABLES: +! + Integer :: I, fieldcount + Type(esmf_field) :: bundle_field + Character(len=ESMF_MAXSTR), allocatable :: fieldnames(:) + + ! starts here + __Iam__('DestroyVarBundle_') + + ! Destroy the bundle + CALL ESMF_FieldBundleGet(VarBundle,fieldcount=fieldcount, __RC__ ) + Allocate(fieldnames(fieldcount)) + CALL ESMF_FieldBundleGet(VarBundle,fieldNameList=fieldnames, __RC__ ) + Do I = 1,fieldCount + CALL ESMF_FieldBundleGet(VarBundle,trim(fieldnames(i)),field=bundle_field, __RC__ ) + CALL ESMF_FieldDestroy(bundle_field,noGarbage=.true., __RC__ ) + Enddo + Deallocate(fieldnames) + CALL ESMF_FieldBundleDestroy(VarBundle,noGarbage=.true., __RC__ ) + + ! Exit w/ success + RETURN_(ESMF_SUCCESS) + RC = GC_SUCCESS + + END SUBROUTINE DestroyVarBundle_ +!EOC +#endif END MODULE GEOS_Analysis diff --git a/run/GEOS/GEOSCHEMchem_ExtData.yaml b/run/GEOS/GEOSCHEMchem_ExtData.yaml index 19623a7dd..de5a09f27 100644 --- a/run/GEOS/GEOSCHEMchem_ExtData.yaml +++ b/run/GEOS/GEOSCHEMchem_ExtData.yaml @@ -6,8 +6,6 @@ Samplings: gcc_3hr: {time_interpolation: True, extrapolation: clim} gcc_monthly_clim: {update_reference_time: "0", update_frequency: P1M, time_interpolation: False, extrapolation: clim} geosit_sample: {update_offset: PT900S, exact: True} - cdas_sample: {update_offset: PT3H, exact: False, time_interpolation: False} - Collections: GCC_ACET_seawater: @@ -272,10 +270,6 @@ Collections: GCC_d5294_geosit_jan18: template: /home/dao_ops/d5294_geosit_jan18/run/.../archive/ana/Y%y4/M%m2/d5294_geosit_jan18.bkg.eta.%y4%m2%d2_%h2%n2z.nc4 freq: "PT3H" - CDAS.inc.eta: - template: /discover/nobackup/projects/gmao/geos_cf_dev/cakelle2/develop/c90_dev/tmp/CRtest_mls_c90.inc.eta.%y4%m2%d2_%h2%n2z.nc4 - freq: "PT6H" - ref_time: "2018-08-01T00:00" Exports: ACET_SEAWATER: @@ -2701,15 +2695,3 @@ Exports: sample: geosit_sample variable: ozone fail_on_missing_file: false - CDAS_NO2: - collection: CDAS.inc.eta - regrid: BILINEAR - sample: cdas_sample - variable: NO2 - fail_on_missing_file: false - CDAS_SO2: - collection: CDAS.inc.eta - regrid: BILINEAR - sample: cdas_sample - variable: SO2 - fail_on_missing_file: false diff --git a/run/GEOS/HEMCO_Config.rc b/run/GEOS/HEMCO_Config.rc index 95ee20019..cf9e337ec 100644 --- a/run/GEOS/HEMCO_Config.rc +++ b/run/GEOS/HEMCO_Config.rc @@ -1423,9 +1423,7 @@ VerboseOnCores: root # Accepted values: root all )))GEOS_3HR_CH4 # GEOS analysis fields -* GEOSIT_O3 /see/extdata ozone 1979-2099/1-12/1-31/0 C xyz ppmv * - 1 1 -* CDAS_NO2 /see/extdata NO2 1979-2099/1-12/1-31/0 C xyz v/v * - 1 1 -* CDAS_SO2 /see/extdata SO2 1979-2099/1-12/1-31/0 C xyz v/v * - 1 1 +#* GEOSIT_O3 /see/extdata ozone 1979-2099/1-12/1-31/0 C xyz ppmv * - 1 1 ### END SECTION BASE EMISSIONS diff --git a/run/GEOS/geoschem_analysis.yml b/run/GEOS/geoschem_analysis_cdas.yml similarity index 78% rename from run/GEOS/geoschem_analysis.yml rename to run/GEOS/geoschem_analysis_cdas.yml index 765ee1cf0..91d39abe1 100644 --- a/run/GEOS/geoschem_analysis.yml +++ b/run/GEOS/geoschem_analysis_cdas.yml @@ -1,4 +1,3 @@ ---- ### geoschem_analysis.yml #============================================================================ @@ -14,23 +13,24 @@ general: species: Spc001: SpeciesName: O3 - Active: false + Active: true AnalysisFreq: 6 AnalysisHour: 0 AnalysisMinute: 0 - ForwardLooking: true - FldNameHco: GEOSIT_O3 + ForwardLooking: false + FileTemplate: >>>EXPID<<<.inc.eta.%y4%m2%d2_%h200z.nc4 + FileVarName: ozone FileVarUnit: ppmv DryFlag: 0 - IsIncrement: false + IsIncrement: true InStrat: true - InTrop: false + InTrop: true + IAU: true AnaL1: 1 AnaL2: 1 AnaL3: 72 AnaL4: 72 - StratSponge: 2 - AnaFraction: 0.2 + AnaFraction: 1.0 MaxChangeStrat: -1.0 MaxChangeTrop: -1.0 HasSpec2: 0 @@ -38,12 +38,13 @@ species: Spc002: SpeciesName: NO2 - Active: false + Active: true AnalysisFreq: 6 AnalysisHour: 0 AnalysisMinute: 0 - ForwardLooking: true - FldNameHco: CDAS_NO2 + ForwardLooking: false + FileTemplate: >>>EXPID<<<.inc.eta.%y4%m2%d2_%h200z.nc4 + FileVarName: NO2 FileVarUnit: v/v DryFlag: 1 IsIncrement: true @@ -64,16 +65,16 @@ species: MinConc: 1.0e-32 HasSpec2: 0 ErrorMode: 1 - Verbose: 1 Spc003: SpeciesName: SO2 - Active: false + Active: true AnalysisFreq: 6 AnalysisHour: 0 AnalysisMinute: 0 - ForwardLooking: true - FldNameHco: CDAS_SO2 + ForwardLooking: false + FileTemplate: >>>EXPID<<<.inc.eta.%y4%m2%d2_%h200z.nc4 + FileVarName: SO2g FileVarUnit: v/v DryFlag: 1 IsIncrement: true diff --git a/run/GEOS/geoschem_analysis_geosit.yml b/run/GEOS/geoschem_analysis_geosit.yml new file mode 100644 index 000000000..f028ddfa5 --- /dev/null +++ b/run/GEOS/geoschem_analysis_geosit.yml @@ -0,0 +1,37 @@ +### geoschem_analysis.yml + +#============================================================================ +# General settings +#============================================================================ +general: + runphase: 2 + nspecies: 1 + +#============================================================================ +# List of used analysis species +#============================================================================ +species: + Spc001: + SpeciesName: O3 + Active: true + AnalysisFreq: 6 + AnalysisHour: 0 + AnalysisMinute: 0 + ForwardLooking: true + FldNameHco: GEOSIT_O3 + FileVarUnit: ppmv + DryFlag: 0 + IsIncrement: false + InStrat: true + InTrop: false + IAU: false + AnaL1: 1 + AnaL2: 1 + AnaL3: 72 + AnaL4: 72 + StratSponge: 2 + AnaFraction: 1.0 + MaxChangeStrat: -1.0 + MaxChangeTrop: -1.0 + HasSpec2: 0 + ErrorMode: 1 From 6ccf181b55f2e785140c9ec6dac8729c5348d3df Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Mon, 26 Feb 2024 09:22:27 -0500 Subject: [PATCH 102/331] Update analysis diagnostic names --- run/GEOS/HISTORY_CFv2.rc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/run/GEOS/HISTORY_CFv2.rc b/run/GEOS/HISTORY_CFv2.rc index 03685dd3b..e55ba9b17 100644 --- a/run/GEOS/HISTORY_CFv2.rc +++ b/run/GEOS/HISTORY_CFv2.rc @@ -1087,9 +1087,9 @@ PC180x91-DC.LM: 72 exp_tavg_1hr_g1440x721_v72.end_time: 210000, exp_tavg_1hr_g1440x721_v72.fields: 'CH4pseudoFlux' , 'GEOSCHEMCHEM' , 'EMIS_CH4_IMPLIED' , 'OHreactivity' , 'GEOSCHEMCHEM' , 'OH_reactivity' , - 'GCC_ANA_INC_O3' , 'GEOSCHEMCHEM' , - 'GCC_ANA_INC_NO2' , 'GEOSCHEMCHEM' , - 'GCC_ANA_INC_SO2' , 'GEOSCHEMCHEM' , + 'AnaInc_O3' , 'GEOSCHEMCHEM' , + 'AnaInc_NO2' , 'GEOSCHEMCHEM' , + 'AnaInc_SO2' , 'GEOSCHEMCHEM' , 'Prod_Ox' , 'GEOSCHEMCHEM' , 'Loss_Ox' , 'GEOSCHEMCHEM' , 'Prod_CO' , 'GEOSCHEMCHEM' , From 2a4059b81b97865c8ec34cd5a5e9229c5c7bbb30 Mon Sep 17 00:00:00 2001 From: ubuntu Date: Mon, 26 Feb 2024 20:47:42 +0000 Subject: [PATCH 103/331] Remove code bracketed in #ifdef BPCH_DIAG blocks Removed the following files: - GeosCore/diag3.F90 - GeosCore/diag_mod.F90 - GeosCore/gamap_mod.F90 - GeosCore/initialize.F90 - GeosCore/ndxx_setup.F90 - GeosUtil/bpch2_mod.F90 - Headers/CMN_DIAG_mod.F90 - Headers/CMN_O3_mod.F90 Headers/CMakeLists.txt GeosCore/CMakeLists.txt GeosUtil/CMakeLists.txt - Remove references to deleted files GeosCore/aero_drydep.F90 GeosCore/carbon_mod.F90 GeosCore/chemistry_mod.F90 GeosCore/dust_mod.F90 GeosCore/flexgrid_read_mod.F90 GeosCore/gc_environment_mod.F90 GeosCore/hcoi_gc_diagn_mod.F90 GeosCore/input_mod.F90 GeosCore/ocean_mercury_mod.F90 GeosCore/planeflight_mod.F90 GeosCore/sulfate_mod.F90 GeosCore/tomas_mod.F90 GeosUtil/time_mod.F90 Headers/input_opt_mod.F90 Interfaces/GCClassic/main.F90 - Removed code wrapped in #ifdef BPCH_DIAG blocks run/GCClassic/geoschem.config.yml.templates/geoschem_config.yml run/WRF/ch4/geoschem_config.yml run/WRF/fullchem/geoschem_config.yml - Removed the "legacy_bpch" YAML section and subsections test/shared/commonFunctionsForTests.sh - Removed "-DBPCH_DIAG=y" from the TOMAS compilation command Signed-off-by: Bob Yantosca --- GeosCore/CMakeLists.txt | 5 - GeosCore/aero_drydep.F90 | 94 - GeosCore/carbon_mod.F90 | 38 +- GeosCore/chemistry_mod.F90 | 2 +- GeosCore/cleanup.F90 | 23 - GeosCore/diag3.F90 | 1044 -------- GeosCore/diag_mod.F90 | 111 - GeosCore/dust_mod.F90 | 51 +- GeosCore/flexgrid_read_mod.F90 | 32 - GeosCore/gamap_mod.F90 | 2149 ----------------- GeosCore/gc_environment_mod.F90 | 64 - GeosCore/hcoi_gc_diagn_mod.F90 | 198 +- GeosCore/initialize.F90 | 138 -- GeosCore/input_mod.F90 | 1093 +-------- GeosCore/ndxx_setup.F90 | 200 -- GeosCore/ocean_mercury_mod.F90 | 4 - GeosCore/planeflight_mod.F90 | 25 - GeosCore/sulfate_mod.F90 | 123 +- GeosCore/tomas_mod.F90 | 36 - GeosUtil/CMakeLists.txt | 1 - GeosUtil/bpch2_mod.F90 | 452 ---- GeosUtil/time_mod.F90 | 1141 ++------- Headers/CMN_DIAG_mod.F90 | 135 -- Headers/CMN_O3_mod.F90 | 136 -- Headers/CMakeLists.txt | 2 - Headers/input_opt_mod.F90 | 183 -- Interfaces/GCClassic/main.F90 | 156 -- .../geoschem_config.yml.fullchem | 53 - run/WRF/ch4/geoschem_config.yml | 50 - run/WRF/fullchem/geoschem_config.yml | 53 - test/shared/commonFunctionsForTests.sh | 2 +- 31 files changed, 196 insertions(+), 7598 deletions(-) delete mode 100644 GeosCore/diag3.F90 delete mode 100644 GeosCore/diag_mod.F90 delete mode 100644 GeosCore/gamap_mod.F90 delete mode 100644 GeosCore/initialize.F90 delete mode 100644 GeosCore/ndxx_setup.F90 delete mode 100644 GeosUtil/bpch2_mod.F90 delete mode 100644 Headers/CMN_DIAG_mod.F90 delete mode 100644 Headers/CMN_O3_mod.F90 diff --git a/GeosCore/CMakeLists.txt b/GeosCore/CMakeLists.txt index 67a7f17ca..a0ee4ece4 100755 --- a/GeosCore/CMakeLists.txt +++ b/GeosCore/CMakeLists.txt @@ -30,16 +30,13 @@ add_library(GeosCore co2_mod.F90 convection_mod.F90 depo_mercury_mod.F90 - diag_mod.F90 diagnostics_mod.F90 - diag3.F90 drydep_mod.F90 dust_mod.F90 emissions_mod.F90 fast_jx_mod.F90 fjx_interface_mod.F90 fullchem_mod.F90 - gamap_mod.F90 gc_environment_mod.F90 get_ndep_mod.F90 global_br_mod.F90 @@ -49,7 +46,6 @@ add_library(GeosCore hco_state_gc_mod.F90 hco_interface_gc_mod.F90 hco_utilities_gc_mod.F90 - initialize.F90 input_mod.F90 isorropiaII_mod.F90 land_mercury_mod.F90 @@ -59,7 +55,6 @@ add_library(GeosCore mercury_mod.F90 mixing_mod.F90 modis_lai_mod.F90 - ndxx_setup.F90 ocean_mercury_mod.F90 olson_landmap_mod.F90 pbl_mix_mod.F90 diff --git a/GeosCore/aero_drydep.F90 b/GeosCore/aero_drydep.F90 index 452dc5ff2..297a05044 100644 --- a/GeosCore/aero_drydep.F90 +++ b/GeosCore/aero_drydep.F90 @@ -35,10 +35,6 @@ SUBROUTINE AERO_DRYDEP( Input_Opt, State_Chm, State_Diag, & USE State_Met_Mod, ONLY : MetState USE TIME_MOD, ONLY : GET_TS_CHEM USE TOMAS_MOD -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD - USE DIAG_MOD, ONLY : AD44 -#endif USE UnitConv_Mod IMPLICIT NONE @@ -327,41 +323,6 @@ SUBROUTINE AERO_DRYDEP( Input_Opt, State_Chm, State_Diag, & ! print *, BIN, TC0(L), TC(L), VTS(L) ENDDO -#ifdef BPCH_DIAG - !======================================================== - ! ND44: Dry deposition diagnostic [#/cm2/s] - !======================================================== - IF ( ND44 > 0 ) THEN - - ! Surface area [cm2] - AREA_CM2 = State_Grid%Area_M2(I,J) * 1e+4_fp - - ! Initialize - TOT1 = 0d0 - TOT2 = 0d0 - - ! Compute column totals of TCO(:) and TC(:) - DO L = 1, State_Grid%NZ - TOT1 = TOT1 + TC0(L) - TOT2 = TOT2 + TC(L) - ENDDO - - ! Convert dust flux from [kg/s] to [#/cm2/s] - FLUX = ( TOT1 - TOT2 ) / DTCHEM - FLUX = FLUX * State_Chm%SpcData(ID)%Info%MW_g * & - 1.e-3_fp / AREA_CM2 - - ! Save in AD44 - IF( JC == 1 ) THEN - AD44(I,J,DRYD(BIN),1) = AD44(I,J,DRYD(BIN),1) + FLUX - ELSE - AD44(I,J,nDryDep+BIN+(JC-2)*IBINS,1) = & - AD44(I,J,nDryDep+BIN+(JC-2)*IBINS,1) + FLUX - ENDIF - - ENDIF -#endif - ENDDO ! JC-loop ENDDO ! I-loop @@ -450,41 +411,6 @@ SUBROUTINE AERO_DRYDEP( Input_Opt, State_Chm, State_Diag, & X = X0(BIN,JC) ENDIF -#ifdef BPCH_DIAG - !============================================================== - ! ND44 Diagnostic: Drydep flux of bin1,..,bin30 [molec/cm2/s] - !============================================================== - IF ( ND44 > 0 .AND. RKT > 0d0 ) THEN - - ! Surface area [cm2] - AREA_CM2 = State_Grid%Area_M2(I,J) * 1e+4_fp - - ! Convert from [kg/timestep] to [molec/cm2/s] - ! Store in AD44 - FLUX = X0(BIN,JC) - X - FLUX = FLUX / (State_Chm%SpcData(ID)%Info%MW_g * & - 1.e-3_fp) / AREA_CM2 / DTCHEM * AVO - - IF ( JC == 1 ) THEN - AD44(I,J,DRYD(BIN),1) = AD44(I,J,DRYD(BIN),1)+ FLUX - ELSE - AD44(I,J,nDryDep+BIN+(JC-2)*IBINS,1) = & - AD44(I,J,nDryDep+BIN+(JC-2)*IBINS,1) + FLUX - ENDIF - - ENDIF - ! Debug - !if(i==ii .and. j==jj .and. bin==bb .and. JC==1) & - ! print *,'>',L, Spc(ID)%Conc(I,J,L), X0(BIN,JC) - X, FLUX, & - ! AD44(I,J,DRYD(BIN),1) - !if(i==ii .and. j==jj .and. bin==bb .and. JC==2) & - ! print *,'>',L, Spc(ID)%Conc(I,J,L), X0(BIN,JC) - X, FLUX, & - ! AD44(I,J,nDryDep+BIN+(JC-2)*IBINS,1) - !if(i==ix .and. j==jx .and. bin==bb .and. JC==ICOMP) & - ! print *, L, Spc(ID)%Conc(I,J,L), X0(BIN,JC) - X, FLUX, - ! AD44(I,J,nDryDep+BIN+(JC-2)*IBINS,1) -#endif - ! Swap X back into Spc array Spc(ID)%Conc(I,J,L) = X @@ -500,26 +426,6 @@ SUBROUTINE AERO_DRYDEP( Input_Opt, State_Chm, State_Diag, & RKT = DepFreq(I,J,H2SO4ID) * State_Met%F_UNDER_PBLTOP(I,J,L) Y = Y0 * EXP(-RKT) -#ifdef BPCH_DIAG - !============================================================== - ! ND44 Diagnostic: Drydep flux of H2SO4 [molec/cm2/s] - !============================================================== - IF ( ND44 > 0 .AND. RKT > 0d0 ) THEN - - ! Surface area [cm2] - AREA_CM2 = State_Grid%Area_M2(I,J) * 1e+4_fp - - ! Convert from [kg/timestep] to [molec/cm2/s] - ! Store in AD44 - FLUX = Y0 - Y - FLUX = FLUX / (State_Chm%SpcData(id_H2SO4)%Info%MW_g * & - 1.e-3_fp) / AREA_CM2 / DTCHEM * AVO - - AD44(I,J,H2SO4ID,1) = AD44(I,J,H2SO4ID,1) + FLUX - - ENDIF -#endif - !Swap final H2SO4 back into Spc array Spc(id_H2SO4)%Conc(I,J,L) = Y diff --git a/GeosCore/carbon_mod.F90 b/GeosCore/carbon_mod.F90 index c462e008f..df2132e5e 100644 --- a/GeosCore/carbon_mod.F90 +++ b/GeosCore/carbon_mod.F90 @@ -321,9 +321,6 @@ SUBROUTINE CHEMCARBON( Input_Opt, State_Chm, State_Diag, & USE HCO_TYPES_MOD, ONLY : DiagnCont USE HCO_STATE_MOD, ONLY : HCO_GetHcoID #endif -#ifdef BPCH_DIAG - USE CMN_O3_MOD, ONLY : SAVEOA -#endif #ifdef TOMAS USE TOMAS_MOD, ONLY : SOACOND USE TOMAS_MOD, ONLY : CHECKMN @@ -4335,12 +4332,6 @@ SUBROUTINE EMITSGC( Input_Opt, State_Chm, State_Grid, State_Met, & ! ! !USES: ! -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD ! ND59 - USE DIAG_MOD, ONLY : AD59_ECIL, AD59_ECOB - USE DIAG_MOD, ONLY : AD59_OCIL, AD59_OCOB - USE DIAG_MOD, ONLY : AD59_NUMB -#endif USE ERROR_MOD, ONLY : IT_IS_NAN USE Input_Opt_Mod, ONLY : OptInput USE Species_Mod, ONLY : SpcConc @@ -4574,33 +4565,6 @@ SUBROUTINE EMITSGC( Input_Opt, State_Chm, State_Grid, State_Met, & ENDDO ! L loop - !======================================================================= - ! ND59 Diagnostic: Size-resolved primary emission in - ! [kg/box/timestep] and the corresponding - ! number emission [no./box/timestep] - !======================================================================= -#ifdef BPCH_DIAG - IF ( ND59 > 0 ) THEN - DO L = 1, PBL_MAX - DO K = 1, IBINS - SELECT CASE (CTYPE) - CASE (1) - AD59_ECIL(I,J,1,K) = AD59_ECIL(I,J,1,K) + & - ( MIL1(L,K) - MIL0(L,K) ) - AD59_ECOB(I,J,1,K) = AD59_ECOB(I,J,1,K) + & - ( MOB1(L,K) - MOB0(L,K) ) - CASE (2) - AD59_OCIL(I,J,1,K) = AD59_OCIL(I,J,1,K) + & - ( MIL1(L,K) - MIL0(L,K) ) - AD59_OCOB(I,J,1,K) = AD59_OCOB(I,J,1,K) + & - ( MOB1(L,K) - MOB0(L,K) ) - END SELECT - AD59_NUMB(I,J,1,K) = AD59_NUMB(I,J,1,K) + ( N1(L,K) - N0(L,K) ) - ENDDO - ENDDO - ENDIF -#endif - 100 CONTINUE ENDDO ! I loop @@ -5233,7 +5197,7 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, & !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% !%%%% NOTE: BIOGENIC_SOAS is defined in hcoi_gc_diagn_mod.F90, %%%% - !%%%% which is only called if BPCH_DIAG=y.(bmy, 8/7/18) %%%% + !%%%% (bmy, 8/7/18) %%%% !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! READ IN directly emitted SOAS (sfarina / jkodros) Ptr2D => NULL() diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index 3972956ef..ef08d34c6 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -1041,7 +1041,7 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & ENDIF !===================================================================== - ! POPs (only used when compiled with BPCH_DIAG=y) + ! POPs !===================================================================== ELSE IF ( Input_Opt%ITS_A_POPS_SIM ) THEN diff --git a/GeosCore/cleanup.F90 b/GeosCore/cleanup.F90 index 48609d233..1fea26740 100644 --- a/GeosCore/cleanup.F90 +++ b/GeosCore/cleanup.F90 @@ -45,10 +45,6 @@ SUBROUTINE CLEANUP( Input_Opt, State_Grid, ERROR, RC ) USE EMISSIONS_MOD, ONLY : EMISSIONS_FINAL USE SFCVMR_MOD, ONLY : FixSfcVmr_Final USE VDiff_Mod, ONLY : Cleanup_Vdiff -#ifdef BPCH_DIAG - USE CMN_O3_Mod, ONLY : Cleanup_CMN_O3 - USE DIAG_MOD, ONLY : CLEANUP_DIAG -#endif #ifdef TOMAS USE TOMAS_MOD, ONLY : CLEANUP_TOMAS !sfarina, 1/16/13 #endif @@ -201,25 +197,6 @@ SUBROUTINE CLEANUP( Input_Opt, State_Grid, ERROR, RC ) RETURN ENDIF -#ifdef BPCH_DIAG - - CALL Cleanup_CMN_O3( RC ) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered in "Cleanup_CMN_O3"!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF -#endif - -#ifdef RRTMG - CALL Cleanup_RRTMG_Rad_Transfer( RC ) - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered in "Cleanup_RRTMG_Rad_Transfer"!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF -#endif - #ifdef TOMAS CALL CLEANUP_TOMAS() #endif diff --git a/GeosCore/diag3.F90 b/GeosCore/diag3.F90 deleted file mode 100644 index 139530359..000000000 --- a/GeosCore/diag3.F90 +++ /dev/null @@ -1,1044 +0,0 @@ -#ifdef BPCH_DIAG -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !MODULE: diag3.F90 -! -! !DESCRIPTION: Subroutine DIAG3 prints out diagnostics to the BINARY PUNCH -! format file. -!\\ -!\\ -! !INTERFACE: -! -SUBROUTINE DIAG3( Input_Opt, State_Chm, State_Grid, State_Met, RC ) -! -! !USES: -! - USE BPCH2_MOD ! For binary punch I/O routines - USE CMN_DIAG_MOD ! Diagnostic switches & arrays - USE CMN_O3_MOD ! FMOL - USE CMN_SIZE_MOD, ONLY : NDSTBIN - USE DEPO_MERCURY_MOD ! For offline Hg simulation - USE DIAG_MOD ! For diagnostic arrays - USE DRYDEP_MOD ! For dry deposition - USE ErrCode_Mod - USE ERROR_MOD, ONLY : ERROR_STOP - USE FILE_MOD - USE HCO_TYPES_MOD, ONLY : DiagnCont - USE HCO_DIAGN_MOD - USE HCO_ERROR_MOD - USE HCO_State_GC_Mod, ONLY : HcoState - USE Input_Opt_Mod, ONLY : OptInput - USE TIME_MOD - USE PhysConstants, ONLY : AVO ! Avogadro's # - USE Precision_Mod ! For GEOS-Chem Precision (fp) - USE Species_Mod, ONLY : Species - USE State_Chm_Mod, ONLY : ChmState - USE State_Chm_Mod, ONLY : Ind_ - USE State_Grid_Mod, ONLY : GrdState - USE State_Met_Mod, ONLY : MetState - USE WETSCAV_MOD ! For wet deposition -#ifdef APM - ! Modules from GeosApm directory - USE APM_DRIV_MOD, ONLY : IFTEMPOUT - USE APM_DRIV_MOD, ONLY : TEMPOUT - USE APM_DRIV_MOD, ONLY : NTEMPOUT - USE APM_DRIV_MOD, ONLY : NPOUTSTEPS - USE APM_DRIV_MOD, ONLY : APM_RADFOUT - USE APM_INIT_MOD, ONLY : IFRADF -#endif -#ifdef TOMAS - USE TOMAS_MOD, ONLY : ICOMP, IDIAG -#endif - - IMPLICIT NONE -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology State object -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry State object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REVISION HISTORY: -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: NA, nAdvect, nDryDep, NW, NFAM - INTEGER :: I, IREF, J, JREF, L, M, MM, MMB, Levs - INTEGER :: N, NN, NMAX, NTEST, N_TOT_TRC, T - INTEGER :: IE, IN, IS, IW, ITEMP(3) - INTEGER :: NSPECOUT - - INTEGER :: NN1 ! TOMAS tracers - INTEGER :: NBIN ! TOMAS bin counter (win, 1/25/10) - - REAL(fp) :: SCALE_TMP(State_Grid%NX,State_Grid%NY) - REAL(fp) :: SCALE_A3 - REAL(fp) :: SCALED, SCALEDYN - REAL(fp) :: SCALECONV, SCALESRCE, SCALECHEM - REAL(fp) :: SCALEDIAG, SCALE_ND66, SCALE_ND67 - REAL(fp) :: SCALERAD - REAL(fp) :: SCALEX, SECONDS, PMASS - REAL(fp) :: PRESSX, FDTT, AREA_M2 - REAL(fp) :: SCALE_I3 - REAL(f8) :: DIAGb, DIAGe - - ! For binary punch file, version 2.0 - CHARACTER (LEN=40) :: CATEGORY - REAL(f4) :: ARRAY(State_Grid%NX,State_Grid%NY,State_Grid%NZ+1) - REAL(f4) :: LONRES, LATRES - INTEGER :: IFIRST, JFIRST, LFIRST - INTEGER :: HALFPOLAR - INTEGER, PARAMETER :: CENTER180 = 1 - CHARACTER (LEN=20) :: MODELNAME - CHARACTER (LEN=40) :: UNIT - CHARACTER (LEN=40) :: RESERVED = '' - -#ifdef TOMAS - ! For ND06 diagnostics - CHARACTER(LEN=1) :: ISTR1 - CHARACTER(LEN=2) :: ISTR2 - - ! For ND60 TOMAS diagnostic, avoids an array temporary (bmy, 1/28/14) - REAL(f4) :: ARR2D(State_Grid%NY,State_Grid%NZ) -#endif - - ! Pointers - ! We need to define local arrays to hold corresponding values - ! from the Chemistry State (State_Chm) object. (mpayer, 12/6/12) - REAL(fp), POINTER :: Spc(:,:,:,:) - REAL(fp), POINTER :: AD(:,:,:) - - ! Interface w/ HEMCO diagnostics - INTEGER :: FLAG - INTEGER :: AFill - CHARACTER(LEN= 63) :: DiagnName, SrcName, SpcName, FullName - CHARACTER(LEN=255) :: MSG - TYPE(DiagnCont), POINTER :: DiagnCnt - REAL(fp) :: FACTOR, MW_G - REAL(fp), PARAMETER :: GPERKG = 1000e+0_fp - REAL(fp), PARAMETER :: MWC = 12e+0_fp ! hard-coded MW - REAL(fp), PARAMETER :: CM2PERM2 = 10000e+0_fp - REAL(fp), PARAMETER :: S_DMS = 32e+0_fp / 62e+0_fp - REAL(fp), PARAMETER :: S_SO2 = 32e+0_fp / 64e+0_fp - REAL(fp), PARAMETER :: S_SO4 = 32e+0_fp / 96e+0_fp - - CHARACTER(LEN=255), PARAMETER :: LOC = 'DIAG3 (diag3.F)' - - ! To point to the species database - CHARACTER(LEN=31) :: Name - TYPE(Species), POINTER :: SpcInfo - - ! Now define local tracer flags so that we can remove these from - ! tracerid_mod.F to facilitate FlexChem implementation (bmy, 5/2/16) - LOGICAL, SAVE :: FIRST = .TRUE. - INTEGER, SAVE :: id_POPG - INTEGER, SAVE :: id_POPPOCPO, id_POPPOCPI - INTEGER, SAVE :: id_POPPBCPO, id_POPPBCPI - INTEGER, SAVE :: id_DST1, id_DST2, id_DST3, id_DST4 - INTEGER, SAVE :: id_DAL1, id_DAL2, id_DAL3, id_DAL4 - INTEGER, SAVE :: id_BCPI, id_OCPI, id_POA1, id_MTPA - INTEGER, SAVE :: id_LIMO, id_MTPO, id_TSOA1 - INTEGER, SAVE :: id_ASOA1, id_OPOA1, id_OPOG1 - INTEGER, SAVE :: id_SALA, id_SALC, id_MOPO - INTEGER, SAVE :: id_MOPI, id_DMS, id_SO2, id_SO4 - INTEGER, SAVE :: id_NH3, id_NO, id_CO, id_ALK4 - INTEGER, SAVE :: id_ACET, id_MEK, id_ALD2, id_PRPE - INTEGER, SAVE :: id_C3H8, id_CH2O, id_C2H6, id_CH4 - INTEGER, SAVE :: id_ISOP, id_C2H4, id_CHBR3, id_BR2 - INTEGER, SAVE :: id_DUST01, id_NK01, id_SF01, id_SS01 - INTEGER, SAVE :: id_ECIL01, id_ECOB01, id_OCIL01, id_OCOB01 - INTEGER, SAVE :: id_CH2BR2 - INTEGER, SAVE :: id_PAN, id_HNO3, id_EOH, id_MGLY - INTEGER, SAVE :: id_BENZ, id_TOLU, id_XYLE, id_MOH - INTEGER, SAVE :: id_NAP, id_POG1, id_POG2 -! -!****************************************************************************** -! DIAG3 begins here! -! -! Define scale factors for division. -! Add a small number (e.g. 1d-32) to prevent division by zero errors. -!****************************************************************************** -! - ! Assume success - RC = GC_SUCCESS - - ! Number of advected species - nAdvect = State_Chm%nAdvect - - ! Number of dry-deposited species - nDryDep = State_Chm%nDryDep - - ! Initialize - SpcInfo => NULL() - DiagnCnt => NULL() - - ! Now use counter variables from "time_mod.f" (bmy, 3/27/03) - DIAGb = GET_DIAGb() - DIAGe = GET_DIAGe() - SECONDS = ( DIAGe - DIAGb ) * 3600e+0_fp - SCALED = 1e+0_fp - SCALEDYN = DBLE( GET_CT_DYN() ) + 1e-32_fp - SCALECONV = DBLE( GET_CT_CONV() ) + 1e-32_fp - SCALESRCE = DBLE( GET_CT_EMIS() ) + 1e-32_fp - SCALECHEM = DBLE( GET_CT_CHEM() ) + 1e-32_fp - SCALERAD = DBLE( GET_CT_RAD() ) + 1e-32_fp - SCALE_A3 = DBLE( GET_CT_A3() ) + 1e-32_fp - SCALE_I3 = DBLE( GET_CT_I3() ) + 1e-32_fp - SCALEDIAG = DBLE( GET_CT_DIAG() ) + 1e-32_fp -! -!****************************************************************************** -! Now define local tracer flags for certain specialty simulations -! so that we can remove them from tracerid_mod.F (bmy, 5/2/16) -!****************************************************************************** -! - IF ( FIRST ) THEN - - ! Initialize - id_POPG = Ind_('POPG' ) - id_POPPOCPO = Ind_('POPPOCPO') - id_POPPOCPI = Ind_('POPPOCPI') - id_POPPBCPO = Ind_('POPPBCPO') - id_POPPBCPI = Ind_('POPPBCPI') - id_DST1 = Ind_('DST1' ) - id_DST2 = Ind_('DST2' ) - id_DST3 = Ind_('DST3' ) - id_DST4 = Ind_('DST4' ) - id_DAL1 = Ind_('DSTAL1' ) - id_DAL2 = Ind_('DSTAL2' ) - id_DAL3 = Ind_('DSTAL3' ) - id_DAL4 = Ind_('DSTAL4' ) - id_BCPI = Ind_('BCPI' ) - id_OCPI = Ind_('OCPI' ) - id_POA1 = Ind_('POA1' ) - id_MTPA = Ind_('MTPA' ) - id_LIMO = Ind_('LIMO' ) - id_MTPO = Ind_('MTPO' ) - id_TSOA1 = Ind_('TSOA1' ) - id_ASOA1 = Ind_('ASOA1' ) - id_OPOA1 = Ind_('OPOA1' ) - id_OPOG1 = Ind_('OPOG1' ) - id_SALA = Ind_('SALA' ) - id_SALC = Ind_('SALC' ) - id_MOPO = Ind_('MOPO' ) - id_MOPI = Ind_('MOPI' ) - id_DMS = Ind_('DMS' ) - id_SO2 = Ind_('SO2' ) - id_SO4 = Ind_('SO4' ) - id_NH3 = Ind_('NH3' ) - id_NO = Ind_('NO' ) - id_CO = Ind_('CO' ) - id_ALK4 = Ind_('ALK4' ) - id_ACET = Ind_('ACET' ) - id_MEK = Ind_('MEK' ) - id_ALD2 = Ind_('ALD2' ) - id_PRPE = Ind_('PRPE' ) - id_C3H8 = Ind_('C3H8' ) - id_CH2O = Ind_('CH2O' ) - id_C2H6 = Ind_('C2H6' ) - id_ISOP = Ind_('ISOP' ) - id_C2H4 = Ind_('C2H4' ) - id_CHBR3 = Ind_('CHBR3' ) - id_CH2BR2 = Ind_('CH2BR2' ) - id_BR2 = Ind_('BR2' ) - id_DUST01 = Ind_('DUST01' ) - id_NK01 = Ind_('NK01' ) - id_SF01 = Ind_('SF01' ) - id_SS01 = Ind_('SS01' ) - id_ECIL01 = Ind_('ECIL01' ) - id_ECOB01 = Ind_('ECOB01' ) - id_OCIL01 = Ind_('OCIL01' ) - id_OCOB01 = Ind_('OCOB01' ) - id_PAN = Ind_('PAN' ) - id_HNO3 = Ind_('HNO3' ) - id_MOH = Ind_('MOH' ) - id_EOH = Ind_('EOH' ) - id_MGLY = Ind_('MGLY' ) - id_BENZ = Ind_('BENZ' ) - id_TOLU = Ind_('TOLU' ) - id_XYLE = Ind_('XYLE' ) - id_NAP = Ind_('NAP' ) - id_POG1 = Ind_('POG1' ) - id_POG2 = Ind_('POG2' ) - - ! NOTE: CH4 can be an advected species (in CH4 or UCX-based sims), - ! or a non-advected species (tropchem, soa, soa-svpoa). We only - ! want to print out diagnostics if CH4 is an advected species, - ! so make sure to use the 'A' flag in the call to Ind_(). - ! (bmy, 6/23/16) - id_CH4 = Ind_('CH4', 'A') - - ! Reset first-time flag - FIRST = .FALSE. - ENDIF -! -!****************************************************************************** -! Setup for binary punch file: -! -! IFIRST, JFIRST, LFIRST = I, J, L indices of the starting grid box -! LONRES = State_Grid%DX, cast to REAL*4 -! LATRES = State_Grid%DY, cast to REAL*4 -!****************************************************************************** -! - IFIRST = State_Grid%XMinOffset + 1 - JFIRST = State_Grid%YMinOffset + 1 - LFIRST = 1 - LONRES = State_Grid%DX - LATRES = State_Grid%DY - - ! Get the proper model name and HALFPOLAR setting for the bpch file - MODELNAME = GET_MODELNAME( Input_Opt, State_Grid ) - HALFPOLAR = GET_HALFPOLAR() - - ! HEMCO interface: get pointer to HcoState object (of hcoi_gc_main_mod.F90) - IF ( .NOT. ASSOCIATED(HcoState) ) THEN - CALL ERROR_STOP ( 'HcoState not defined!', LOC ) - ENDIF - -#ifdef TOMAS - - !**************************************************************************** - ! ND44: Drydep flux (molec/cm2/s) and velocity (cm/s) diagnostics - ! - ! # : Field : Quantity : Units : Scale factor - ! ------------------------------------------------------------------------- - ! (1 ) : DRYD-FLX : drydep fluxes : molec/cm2/s or kg/s : SCALECHEM - ! (2 ) : DRYD-VEL : drydep velocities : cm/s : SCALECHEM - !**************************************************************************** - IF ( ND44 > 0 ) THEN - - !============================================================== - ! Drydep fluxes - !============================================================== - - ! Category name - CATEGORY = 'DRYD-FLX' - - ! # of drydep flux tracers - IF ( Input_Opt%ITS_A_TAGO3_SIM .or. & - Input_Opt%ITS_A_MERCURY_SIM ) THEN - M = nAdvect - ELSE - ! Extend dry dep tracers if TOMAS aerosol is turned on - IF ( id_NK01 > 0 ) THEN - M = nDryDep + ( ( ICOMP - IDIAG )* State_Chm%nTomasBins ) - ELSE - M = nDryDep - ENDIF - ENDIF - - ! Loop over drydep species - DO N = 1, M - - IF ( Input_Opt%ITS_A_TAGO3_SIM .or. & - Input_Opt%ITS_A_MERCURY_SIM ) THEN - - ! Tagged O3 or Tagged Hg - UNIT = 'molec/cm2/s' - NN = N - - ELSE - - ! Other simulations - UNIT = 'molec/cm2/s' - - ! For extended drydep tracers, assign tracer ID of the TOMAS - ! aerosol mass (win, 7/14/09) - IF ( N <= nDryDep ) THEN - NN = State_Chm%Map_DryDep(N) - NN1 = NN - ELSE - ! To calculate the id_xxx of the associated - ! tracer. (ccc, 3/11/10) - NN = MOD( N - nDryDep-1, State_Chm%nTomasBins ) + id_NK01 - - ! Tracer number for bpch file - NN1 = ( N - nDryDep ) + ( id_NK01 + State_Chm%nTomasBins - 1 ) - ENDIF - - ENDIF - - ! To output only the species asked in geoschem_config.yml - ! (ccc, 5/15/09) - MM = 1 - MMB = 0 - DO WHILE ( MMB /= NN .AND. MM <= TMAX(44) ) - MMB = TINDEX(44,MM) - MM = MM + 1 - ENDDO - - ! Save into ARRAY - ARRAY(:,:,1) = ( AD44(:,:,N,1) / SCALECHEM ) - - ! Write to file - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, NN1, & - UNIT, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, 1, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1) ) - - ENDDO - - !============================================================== - ! Drydep velocities - !============================================================== - - ! Category and Unit - CATEGORY = 'DRYD-VEL' - UNIT = 'cm/s' - - ! # of drydep velocity tracers - IF ( Input_Opt%ITS_A_TAGO3_SIM ) THEN - M = 1 - ELSE IF ( Input_Opt%ITS_A_MERCURY_SIM ) THEN ! Ask Helen - M = 3 - ELSE - M = nDryDep - ENDIF - - ! Loop over drydep tracers - DO N = 1, M - - NN = State_Chm%Map_DryDep(N) - ! To output only the species asked in geoschem_config.yml - ! (ccc, 5/15/09) - MM = 1 - MMB = 0 - DO WHILE ( MMB /= NN .AND. MM <= TMAX(44) ) - MMB = TINDEX(44,MM) - MM = MM + 1 - ENDDO - - ! Tracer number plus GAMAP offset - ARRAY(:,:,1) = AD44(:,:,N,2) / SCALESRCE - - ! Write to file - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, NN, & - UNIT, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, 1, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1) ) - - ENDDO - ENDIF - - !**************************************************************************** - ! ND06: Dust aerosol emissions - ! - ! # : Field : Description : Units : Scale factor - ! -------------------------------------------------------------------------- - ! (1) DUST : Soil dust (4 different classes) : kg : 1 - !**************************************************************************** - IF ( ND06 > 0 .and. Input_Opt%LDUST .and. Input_Opt%DoEmissions ) THEN - - ! Category & unit string - UNIT = 'kg' - CATEGORY = 'DUSTSRCE' - FACTOR = 1.0e+0_fp - - ! Loop over # of dust bins (obtained from CMN_SIZE_mod) - DO N = 1, NDSTBIN - - !---------------------------------------------------- - ! TOMAS simulations: many dust tracers - !---------------------------------------------------- - - ! Tracer number - NN = id_DUST01 + ( N - 1 ) - - ! Get TOMAS dust string - IF ( N < 10 ) THEN - WRITE( ISTR1,'(i1)' ) N - DiagnName = 'AD06_DUST' // ISTR1 - ELSE - WRITE( ISTR2,'(i2)' ) N - DiagnName = 'AD06_DUST' // ISTR2 - ENDIF - - ! Write HEMCO diagnostics to bpch file - CALL DIAG2BPCH( HcoState, DiagnName, CATEGORY, & - UNIT, NN, 1, -1, .FALSE., FACTOR, RC ) - - ENDDO !N - - ! Include Dust alkalinity sources tdf 6/18/2K8 - IF ( Input_Opt%LDSTUP ) THEN - DO N = 5, NDSTBIN*2 - - SELECT CASE ( N ) - CASE ( 5 ) - NN = id_DAL1 - DiagnName = 'AD06_DSTAL1' - CASE ( 6 ) - NN = id_DAL2 - DiagnName = 'AD06_DSTAL2' - CASE ( 7 ) - NN = id_DAL3 - DiagnName = 'AD06_DSTAL3' - CASE ( 8 ) - NN = id_DAL4 - DiagnName = 'AD06_DSTAL4' - END SELECT - - ! Write to HEMCO diagnostics to bpch file - CALL DIAG2BPCH( HcoState, DiagnName, CATEGORY, & - UNIT, NN, 1, -1, .FALSE., FACTOR, RC ) - ENDDO - ENDIF - - ENDIF - - !**************************************************************************** - ! ND59: Size-resolved primary aerosol emission (win, 8/22/07) - ! Unit is amount of aerosol per time of simulation e.g. sulfate[=] kg S - ! - ! # : Field : Description : Units : Scale Factor - ! --------------------------------------------------------------------------- - ! (1 ) NK-EMISS : Size-resolved number emission : No : 1 - ! (2 ) SF-EMISS : Size-resolved sulfate emission : kg S : 1 - ! (3 ) SS-EMISS : Size-resolved sea-salt emission : kg : 1 - ! (4 ) ECIL-SRC : Size-resolved H-phillic EC emission : kg : 1 - ! (5 ) ECOB-SRC : Size-resolved H-phobic EC emission : kg : 1 - ! (6 ) OCIL-SRC : Size-resolved H-phillic OC emission : kg : 1 - ! (7 ) OCOB-SRC : Size-resolved H-phobic OC emission : kg : 1 - ! (8 ) DUST-SRC : Size-resolved dust emission : kg : 1 - !**************************************************************************** - IF ( ND59 > 0 ) THEN - - !============================================================== - ! Size-resolved primary aerosol number emission - !============================================================== - UNIT = 'No.' - CATEGORY = 'NK-EMISS' - DO NBIN = 1,State_Chm%nTomasBins - N = id_NK01 + NBIN - 1 - DO L = 1, 2 - ARRAY(:,:,L) = AD59_NUMB(:,:,L,NBIN) - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, N, & - UNIT, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, 2, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1:2) ) - ENDDO - - !============================================================== - ! Size-resolved primary aerosol sulfate mass emission - !============================================================== - UNIT = 'kg S' - CATEGORY = 'SF-EMISS' - DO NBIN = 1,State_Chm%nTomasBins - N = id_SF01 + NBIN - 1 - DO L = 1, 2 - ARRAY(:,:,L) = AD59_SULF(:,:,L,NBIN) - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, N, & - UNIT, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, 2, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1:2) ) - ENDDO - - !============================================================== - ! Size-resolved primary aerosol sea-salt mass emission - !============================================================== - UNIT = 'kg' - CATEGORY = 'SS-EMISS' - DO NBIN = 1,State_Chm%nTomasBins - N = id_SS01 + NBIN - 1 - DO L = 1, 2 - ARRAY(:,:,L) = AD59_SALT(:,:,L,NBIN) - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, N, & - UNIT, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, 2, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1:2) ) - ENDDO - - !============================================================== - ! Size-resolved primary Hydrophillic EC mass emission - !============================================================== - UNIT = 'kg' - CATEGORY = 'ECIL-SRC' - DO NBIN = 1,State_Chm%nTomasBins - N = id_ECIL01 - 1 + NBIN - DO L = 1, 2 - ARRAY(:,:,L) = AD59_ECIL(:,:,L,NBIN) - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, N, & - UNIT, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, 2, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1:2) ) - ENDDO - - !============================================================== - ! Size-resolved primary Hydrophobic EC mass emission - !============================================================== - UNIT = 'kg' - CATEGORY = 'ECOB-SRC' - DO NBIN = 1,State_Chm%nTomasBins - N = id_ECOB01 - 1 + NBIN - DO L = 1, 2 - ARRAY(:,:,L) = AD59_ECOB(:,:,L,NBIN) - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, N, & - UNIT, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, 2, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1:2) ) - ENDDO - - !============================================================== - ! Size-resolved primary Hydrophillic OC mass emission - !============================================================== - UNIT = 'kg' - CATEGORY = 'OCIL-SRC' - DO NBIN = 1,State_Chm%nTomasBins - N = id_OCIL01 - 1 + NBIN - DO L = 1, 2 - ARRAY(:,:,L) = AD59_OCIL(:,:,L,NBIN) - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, N, & - UNIT, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, 2, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1:2) ) - ENDDO - - !============================================================== - ! Size-resolved primary Hydrophobic OC mass emission - !============================================================== - UNIT = 'kg' - CATEGORY = 'OCOB-SRC' - DO NBIN = 1,State_Chm%nTomasBins - N = id_OCOB01 - 1 + NBIN - DO L = 1, 2 - ARRAY(:,:,L) = AD59_OCOB(:,:,L,NBIN) - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, N, & - UNIT, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, 2, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1:2) ) - ENDDO - - !============================================================== - ! Size-resolved dust mass emission - !============================================================== - UNIT = 'kg' - CATEGORY = 'DUST-SRC' - DO NBIN = 1,State_Chm%nTomasBins - N = id_DUST01 - 1 + NBIN - DO L = 1, 2 - ARRAY(:,:,L) = AD59_DUST(:,:,L,NBIN) - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, N, & - UNIT, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, 2, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1:2) ) - - ENDDO - - ENDIF - - !**************************************************************************** - ! ND60: TOMAS Aerosol microphysical rate (win, 7/9/07) - ! Unit is amount of aerosol per time of simulation e.g. sulfate[=] kg S - ! - ! # : Field : Description : Units : Scale Factor - ! --------------------------------------------------------------------------- - ! (1) TMS-COND : Condensation rate : no. or kg : NONE - ! (2) TMS-COAG : Coagulation rate : no. or kg : NONE - ! (3) TMS-NUCL : Nucleation rate : no. or kg : NONE - ! (4) TMS-AQOX : Aqueous oxidation rate : no. or kg : NONE - ! (5) AERO-FIX : Accumulated error fixed : no. or kg : NONE - ! (6) TMS-SOA : SOA condensation rate : no. or kg : NONE - !**************************************************************************** - IF ( ND60 > 0 ) THEN - - !============================================================== - ! Condensation rate - !============================================================== - - ! Category name - CATEGORY = 'TMS-COND' - DO M = 1,TMAX(60) - NN = TINDEX(60,M) - - SCALEX = 1.e+0_fp - - IF ( ( NN .ge. id_NK01 ) .and. & - ( NN .lt. id_NK01+State_Chm%nTomasBins ) ) THEN - UNIT = 'no.' - ELSE - UNIT = 'kg' - ENDIF - - DO L = 1, LD60 - ARR2D(:,L) = AD60_COND(1,:,L,M) / SCALEX - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, NN, & - UNIT, DIAGb, DIAGe, RESERVED, & - 1, State_Grid%NY, LD60, IFIRST, & - JFIRST, LFIRST, ARR2D(:,1:LD60) ) - ENDDO - - !============================================================== - ! Coagulation rate - !============================================================== - - ! Category name - CATEGORY = 'TMS-COAG' - DO M = 1,TMAX(60) - NN = TINDEX(60,M) - - SCALEX = 1.e+0_fp - - IF ( ( NN .ge. id_NK01 ) .and. & - ( NN .lt. id_NK01+State_Chm%nTomasBins ) ) THEN - UNIT = 'no.' - ELSE - UNIT = 'kg' - ENDIF - - DO L = 1, LD60 - ARR2D(:,L) = AD60_COAG(1,:,L,M) / SCALEX - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, NN, & - UNIT, DIAGb, DIAGe, RESERVED, & - 1, State_Grid%NY, LD60, IFIRST, & - JFIRST, LFIRST, ARR2D(:,1:LD60) ) - ENDDO - - !============================================================== - ! Nucleation rate - !============================================================== - - ! Category name - CATEGORY = 'TMS-NUCL' - DO M = 1,TMAX(60) - NN = TINDEX(60,M) - - SCALEX = 1.e+0_fp - - IF ( ( NN .ge. id_NK01 ) .and. & - ( NN .lt. id_NK01+State_Chm%nTomasBins ) ) THEN - UNIT = 'no.' - ELSE - UNIT = 'kg' - ENDIF - - DO L = 1, LD60 - ARR2D(:,L) = AD60_NUCL(1,:,L,M) / SCALEX - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, NN, & - UNIT, DIAGb, DIAGe, RESERVED, & - 1, State_Grid%NY, LD60, IFIRST, & - JFIRST, LFIRST, ARR2D(:,1:LD60) ) - ENDDO - - !============================================================== - ! Aqueous oxidation rate - !============================================================== - - ! Category name - CATEGORY = 'TMS-AQOX' - DO M = 1,TMAX(60) - NN = TINDEX(60,M) - - SCALEX = 1.e+0_fp - - IF ( ( NN .ge. id_NK01 ) .and. & - ( NN .lt. id_NK01+State_Chm%nTomasBins ) ) THEN - UNIT = 'no.' - ELSE - UNIT = 'kg' - ENDIF - - DO L = 1, LD60 - ARR2D(:,L) = AD60_AQOX(1,:,L,M) / SCALEX - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, NN, & - UNIT, DIAGb, DIAGe, RESERVED, & - 1, State_Grid%NY, LD60, IFIRST, & - JFIRST, LFIRST, ARR2D(:,1:LD60) ) - ENDDO - - !============================================================== - ! Error fudging during aerosol microphysics - !============================================================== - - ! Category name - CATEGORY = 'AERO-FIX' - DO M = 1,TMAX(60) - NN = TINDEX(60,M) - - SCALEX = 1.e+0_fp - - IF ( ( NN .ge. id_NK01 ) .and. & - ( NN .lt. id_NK01+State_Chm%nTomasBins ) ) THEN - UNIT = 'no.' - ELSE - UNIT = 'kg' - ENDIF - - DO L = 1, LD60 - ARR2D(:,L) = AD60_ERROR(1,:,L,M) / SCALEX - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, NN, & - UNIT, DIAGb, DIAGe, RESERVED, & - 1, State_Grid%NY, LD60, IFIRST, & - JFIRST, LFIRST, ARR2D(:,1:LD60) ) - ENDDO - - !============================================================== - ! SOA Condensation rate (win, 9/25/07) - !============================================================== - - ! Category name - CATEGORY = 'TMS-SOA' - DO M = 1,TMAX(60) - NN = TINDEX(60,M) - - SCALEX = 1.e+0_fp - - IF ( ( NN .ge. id_NK01 ) .and. & - ( NN .lt. id_NK01+State_Chm%nTomasBins ) ) THEN - UNIT = 'no.' - ELSE - UNIT = 'kg' - ENDIF - - DO L = 1, LD60 - ARR2D(:,L) = AD60_SOA(1,:,L,M) / SCALEX - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, NN, & - UNIT, DIAGb, DIAGe, RESERVED, & - 1, State_Grid%NY, LD60, IFIRST, & - JFIRST, LFIRST, ARR2D(:,1:LD60) ) - ENDDO - - ENDIF - - !**************************************************************************** - ! ND61: TOMAS microphysics process rate saved in 3-D (kg/s) - ! - ! Remark: for aerosol number, the unit 'kg' is used as a fake kg where - ! 1 fake kg = 1 aerosol number. - ! Molecular weight of aerosol number is 1g/mol and - ! - ! # : Field : Description : Units : Scale Factor - ! -------------------------------------------------------------------------- - ! (1) TOMAS-3D : 3-D microphysics rate : kg/s : SCALECHEM - !**************************************************************************** - IF ( ND61 > 0 ) THEN - CATEGORY = 'TOMAS-3D' - - DO M = 1, TMAX(61) - NN = TINDEX(61,M) - - SCALEX = SCALECHEM - - UNIT = 'cm-3s-1' - - DO L = 1, LD61 - ARRAY(:,:,L) = AD61(:,:,L,NN) / SCALEX - ENDDO - - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, NN, & - UNIT, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, LD61, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1:LD61) ) - ENDDO - ENDIF -#endif - -CONTAINS -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: diag2bpch -! -! !DESCRIPTION: Wrapper routine to get diagnostics from HEMCO and write -! them to bpch. This will look up diagnostics 'dName' and write the -! corresponding diagnostics array to the bpch output file. -!\\ -!\\ -! NOTE: This is a "bridge" routine intended to provide backwards compatibility -! with the existing GEOS-Chem diagnostics. Eventually we will write all -! GEOS-Chem diagnostics to netCDF format but we are not yet at that point. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE DIAG2BPCH( HcoState, dname, bcat, bUnit, bN, & - dAF, dZ, dOPTIONAL, dFACTOR, ERR, AreaScal ) -! -! !USES: -! - USE HCO_STATE_MOD, ONLY : HCO_State -! -! !INPUT PARAMETERS: -! - TYPE(HCO_State), POINTER :: HcoState ! HEMCO State object - CHARACTER(LEN=*), INTENT(IN) :: dname ! Diagnostics name - CHARACTER(LEN=*), INTENT(IN) :: bCat ! BPCH category - CHARACTER(LEN=*), INTENT(IN) :: bUnit ! BPCH units - INTEGER, INTENT(IN) :: bN ! BPCH ID - INTEGER, INTENT(IN) :: dAF ! AutoFill of diagnostic - INTEGER, INTENT(IN) :: dZ ! # of vertical levels - LOGICAL, INTENT(IN) :: dOPTIONAL ! Optional field? - REAL(fp), INTENT(IN) :: dFACTOR ! Scale factor - INTEGER, OPTIONAL :: AreaScal ! Area scaling -! -! !INPUT/OUTPUT PARAMETERS: -! - INTEGER, INTENT(INOUT) :: ERR ! Return code -! -! !REMARKS: -! (1) Data is multiplied by factor dFACTOR before writing to disk. -! (2) dAF determines the autofill flag used for the diagnostics lookup. -! (3) dZ are the number of vertical levels. Set to -1 for 2D arrays, -! otherwise a 3D array with exactly that many levels is written. -! (4) dOptional determines whether or not this is an optional diagnostics. -! For optional diagnostics, zeros are written out if no corresponding -! HEMCO diagnostics could be found (because it is undefined or because -! they have never been updated). For non-optional diagnostics, the -! routine stops with an error if no HEMCO diagnostics is found. -! (5) AScal can be used to multiply (1) or divide (-1) the data by the grid -! area. -! -! !REVISION HISTORY: -! 06 Aug 2014 - C. Keller - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !DEFINED PARAMETERS: -! - CHARACTER(LEN=255), PARAMETER :: LC = 'DIAG2BPCH (diag3.F)' -! -! !LOCAL VARIABLES: -! - ! Scalars - INTEGER :: II, FLG, LEVS, ASCL - CHARACTER(LEN=255) :: MG - - ! Pointers - TYPE(DiagnCont), POINTER :: DgnCont - - !================================================================= - ! DIAG2BPCH begins here! - !================================================================= - - ! Initialize - ARRAY = 0e0 - DgnCont => NULL() - - ! Set default for area scaling - ASCL = 0 - IF ( PRESENT(AreaScal) ) ASCL = AreaScal - - ! Get diagnostics - DgnCont => NULL() - CALL Diagn_Get( HcoState, .FALSE., DgnCont, & - FLG, ERR, cName=TRIM(dname), & - AutoFill=dAF, COL=HcoState%Diagn%HcoDiagnIDManual) - - ! If diagnostic not found, write error message - IF ( ERR /= HCO_SUCCESS ) THEN - MG = 'Cannot find diagnostics ' // TRIM(dname) - CALL ERROR_STOP ( MG, LC ) - ENDIF - - ! Vertical levels - levs = MAX(dz,1) - - ! Save into ARRAY. Apply scale factor if required - IF ( FLG == HCO_SUCCESS ) THEN - IF ( dz > 0 ) THEN - ARRAY(:,:,1:levs) = DgnCont%Arr3D%Val(:,:,1:levs) * dFACTOR - ELSE - ARRAY(:,:,1) = DgnCont%Arr2D%Val(:,:) * dFACTOR - ENDIF - ELSE - MG = 'No diagnostics returned: ' // TRIM(dname) - IF ( dOptional ) THEN - MG = TRIM(MG) // ' - will write zeros!' - CALL HCO_WARNING ( MG, ERR, THISLOC=LC ) - ARRAY(:,:,1:levs) = 0.0 - ELSE - CALL ERROR_STOP ( MG, LC ) - ENDIF - ENDIF - - ! Eventually scale by area - IF ( ASCL == 1 ) THEN - DO II=1,levs - ARRAY(:,:,II) = ARRAY(:,:,II) * HcoState%Grid%AREA_M2%Val(:,:) - ENDDO - ELSEIF ( ASCL == -1 ) THEN - DO II=1,levs - ARRAY(:,:,II) = ARRAY(:,:,II) / HcoState%Grid%AREA_M2%Val(:,:) - ENDDO - ENDIF - - ! Write to bpch file - CALL BPCH2( IU_BPCH, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, bCat, bN, & - bUnit, DIAGb, DIAGe, RESERVED, & - State_Grid%NX, State_Grid%NY, LEVS, IFIRST, & - JFIRST, LFIRST, ARRAY(:,:,1:levs) ) - - ! Return w/ success - ERR = HCO_SUCCESS - - ! Nullify pointer - DgnCont => NULL() - - END SUBROUTINE DIAG2BPCH -!EOC -END SUBROUTINE DIAG3 -#endif diff --git a/GeosCore/diag_mod.F90 b/GeosCore/diag_mod.F90 deleted file mode 100644 index 927f3c470..000000000 --- a/GeosCore/diag_mod.F90 +++ /dev/null @@ -1,111 +0,0 @@ -#ifdef BPCH_DIAG -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !MODULE: diag_mod.F90 -! -! !DESCRIPTION: Module DIAG\_MOD contains declarations for allocatable arrays -! for use with GEOS-CHEM diagnostics. -!\\ -!\\ -! !INTERFACE: -! -MODULE DIAG_MOD -! -! !USES: -! - USE PRECISION_MOD ! For GEOS-Chem Precision (fp) - - IMPLICIT NONE - PUBLIC -! -! !PUBLIC MEMBER FUNCTIONS: -! - PUBLIC :: CLEANUP_DIAG -! -! !PUBLIC DATA MEMBERS: -! -#ifdef TOMAS - ! For ND44 -- Dry deposition fluxes & velocities - REAL*4, ALLOCATABLE :: AD44 (:,:,:,:) - REAL*4, ALLOCATABLE :: AD59_NUMB(:,:,:,:) - REAL*4, ALLOCATABLE :: AD59_SULF(:,:,:,:) - REAL*4, ALLOCATABLE :: AD59_SALT(:,:,:,:) - REAL*4, ALLOCATABLE :: AD59_ECIL(:,:,:,:) - REAL*4, ALLOCATABLE :: AD59_ECOB(:,:,:,:) - REAL*4, ALLOCATABLE :: AD59_OCIL(:,:,:,:) - REAL*4, ALLOCATABLE :: AD59_OCOB(:,:,:,:) - REAL*4, ALLOCATABLE :: AD59_DUST(:,:,:,:) - - ! For ND60 -- TOMAS condensation rate diagnostic - REAL*4, ALLOCATABLE :: AD60_COND (:,:,:,:) - REAL*4, ALLOCATABLE :: AD60_COAG (:,:,:,:) - REAL*4, ALLOCATABLE :: AD60_NUCL (:,:,:,:) - REAL*4, ALLOCATABLE :: AD60_AQOX (:,:,:,:) - REAL*4, ALLOCATABLE :: AD60_ERROR(:,:,:,:) - REAL*4, ALLOCATABLE :: AD60_SOA (:,:,:,:) - - ! For ND61 -- 3D TOMAS rate diagnostic - REAL*4, ALLOCATABLE :: AD61(:,:,:,:) - REAL*4, ALLOCATABLE :: AD61_inst(:,:,:,:) - - ! Prod/loss rates - REAL*4, ALLOCATABLE :: AD65(:,:,:,:) -#endif -! -! !REVISION HISTORY: -! 30 Nov 1999 - A. Fiore - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -CONTAINS -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: cleanup_diag -! -! !DESCRIPTION: Subroutine CLEANUP\_DIAG deallocates all module arrays. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE CLEANUP_DIAG() -! -! !REVISION HISTORY: -! 13 Dec 2002 - R. Yantosca - Initial version -!EOP -!------------------------------------------------------------------------------ -!BOC - !================================================================= - ! CLEANUP_DIAG begins here! - !================================================================= -#ifdef TOMAS - IF ( ALLOCATED( AD44 ) ) DEALLOCATE( AD44 ) - IF ( ALLOCATED( AD59_NUMB ) ) DEALLOCATE( AD59_NUMB ) - IF ( ALLOCATED( AD59_SULF ) ) DEALLOCATE( AD59_SULF ) - IF ( ALLOCATED( AD59_SALT ) ) DEALLOCATE( AD59_SALT ) - IF ( ALLOCATED( AD59_ECIL ) ) DEALLOCATE( AD59_ECIL ) - IF ( ALLOCATED( AD59_ECOB ) ) DEALLOCATE( AD59_ECOB ) - IF ( ALLOCATED( AD59_OCIL ) ) DEALLOCATE( AD59_OCIL ) - IF ( ALLOCATED( AD59_OCOB ) ) DEALLOCATE( AD59_OCOB ) - IF ( ALLOCATED( AD59_DUST ) ) DEALLOCATE( AD59_DUST ) - IF ( ALLOCATED( AD60_COND ) ) DEALLOCATE( AD60_COND ) - IF ( ALLOCATED( AD60_COAG ) ) DEALLOCATE( AD60_COAG ) - IF ( ALLOCATED( AD60_NUCL ) ) DEALLOCATE( AD60_NUCL ) - IF ( ALLOCATED( AD60_AQOX ) ) DEALLOCATE( AD60_AQOX ) - IF ( ALLOCATED( AD60_ERROR ) ) DEALLOCATE( AD60_ERROR ) - IF ( ALLOCATED( AD60_SOA ) ) DEALLOCATE( AD60_SOA ) - IF ( ALLOCATED( AD61 ) ) DEALLOCATE( AD61 ) - IF ( ALLOCATED( AD61_inst ) ) DEALLOCATE( AD61_inst ) - IF ( ALLOCATED( AD65 ) ) DEALLOCATE( AD65 ) -#endif - END SUBROUTINE CLEANUP_DIAG -!EOC -END MODULE DIAG_MOD -#endif diff --git a/GeosCore/dust_mod.F90 b/GeosCore/dust_mod.F90 index 029f3ccca..e38b03e31 100644 --- a/GeosCore/dust_mod.F90 +++ b/GeosCore/dust_mod.F90 @@ -339,17 +339,13 @@ SUBROUTINE SETTLEDUST( Input_Opt, State_Chm, State_Diag, & ! ! !USES: ! -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD ! ND44 - USE DIAG_MOD, ONLY : AD44 -#endif USE ErrCode_Mod USE ERROR_MOD USE Input_Opt_Mod, ONLY : OptInput USE PhysConstants, ONLY : AVO USE Species_Mod, ONLY : Species, SpcConc USE State_Chm_Mod, ONLY : ChmState - USE State_Diag_Mod, ONLY : DgnState + USE State_Diag_Mod, ONLY : DgnState USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE TIME_MOD, ONLY : GET_TS_CHEM @@ -483,27 +479,6 @@ SUBROUTINE SETTLEDUST( Input_Opt, State_Chm, State_Diag, & DT_SETTL * AVO / & ( 1.e-3_fp * ThisSpc%MW_g ) / AREA_CM2 ENDDO - -#ifdef BPCH_DIAG - !=========================================================== - ! Dry deposition diagnostic [#/cm2/s] (bpch) - !=========================================================== - IF ( ND44 > 0 ) THEN - - !-------------------------------------------------------- - ! ND44 DIAGNOSTIC (bpch) - ! Dry deposition flux loss [#/cm2/s] - ! - ! NOTE: Bpch diagnostics are being phased out. - !-------------------------------------------------------- - !%%% NOTE: Now use TOMAS_IDDEP, which replicates the - !%%% since-removed Input_Opt%IDDEP field (bmy, 3/17/17) - AD44(I,J,TOMAS_IDDEP(BIN),1) = AD44(I,J,TOMAS_IDDEP(BIN),1) + & - FLUXN - AD44(I,J,NN,1) = AD44(I,J,NN,1) + FLUXD - ENDIF -#endif - ENDDO ENDDO @@ -536,10 +511,6 @@ SUBROUTINE EMISSDUST( Input_Opt, State_Chm, State_Diag, & ! ! !USES: ! -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD ! ND59 - USE DIAG_MOD, ONLY : AD59_DUST, AD59_NUMB !(win, 7/17/09) -#endif USE ErrCode_Mod USE ERROR_MOD, ONLY : DEBUG_MSG USE Input_Opt_Mod, ONLY : OptInput @@ -646,26 +617,6 @@ SUBROUTINE EMISSDUST( Input_Opt, State_Chm, State_Diag, & ENDIF ENDIF -#ifdef BPCH_DIAG - IF ( ND59 > 0 ) THEN - DO K = 1, State_Chm%nTomasBins - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - MEMIS = Spc(id_DUST01-1+K)%Conc(I,J,1) - MINIT(I,J,1,K) - IF ( MEMIS == 0.e+0_fp ) GOTO 10 - - AD59_DUST(I,J,1,K) = AD59_DUST(I,J,1,K) + MEMIS ! kg ???? - Spc(id_NK01-1+K)%Conc(I,J,1) = Spc(id_NK01-1+K)%Conc(I,J,1) + & - MEMIS / (sqrt(Xk(K)*Xk(K+1))) - - AD59_NUMB(I,J,1,K) = AD59_NUMB(I,J,1,K) + & - MEMIS / (sqrt(Xk(K)*Xk(K+1))) -10 CONTINUE - ENDDO - ENDDO - ENDDO - ENDIF -#endif ENDIF ! Free pointers diff --git a/GeosCore/flexgrid_read_mod.F90 b/GeosCore/flexgrid_read_mod.F90 index a79f4bbfa..52ca031ab 100644 --- a/GeosCore/flexgrid_read_mod.F90 +++ b/GeosCore/flexgrid_read_mod.F90 @@ -543,9 +543,6 @@ SUBROUTINE FlexGrid_Read_A3( YYYYMMDD, HHMMSS, Input_Opt, State_Grid, & USE Input_Opt_Mod, ONLY : OptInput USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState -#ifdef BPCH_DIAG - USE Time_Mod, ONLY : Set_Ct_A3 -#endif ! ! !INPUT PARAMETERS: ! @@ -605,11 +602,6 @@ SUBROUTINE FlexGrid_Read_A3( YYYYMMDD, HHMMSS, Input_Opt, State_Grid, & ! Cleanup and quit !====================================================================== -#ifdef BPCH_DIAG - ! Increment the # of times that A3 fields have been read - CALL Set_Ct_A3( INCREMENT=.TRUE. ) -#endif - ! Save date & time for next iteration lastDate = YYYYMMDD lastTime = HHMMSS @@ -1165,9 +1157,6 @@ SUBROUTINE FlexGrid_Read_I3_1( YYYYMMDD, HHMMSS, Input_Opt, State_Grid, & USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE Get_Met_Mod -#ifdef BPCH_DIAG - USE Time_Mod, ONLY : Set_Ct_I3 -#endif ! ! !INPUT PARAMETERS: ! @@ -1295,15 +1284,6 @@ SUBROUTINE FlexGrid_Read_I3_1( YYYYMMDD, HHMMSS, Input_Opt, State_Grid, & State_Met%T = State_Met%TMPU1 State_Met%SPHU = State_Met%SPHU1 - !====================================================================== - ! Diagnostics, cleanup, and quit - !====================================================================== - -#ifdef BPCH_DIAG - ! Increment the # of times I3 fields have been read - CALL Set_Ct_I3( INCREMENT=.TRUE. ) -#endif - END SUBROUTINE FlexGrid_Read_I3_1 !EOC !------------------------------------------------------------------------------ @@ -1328,9 +1308,6 @@ SUBROUTINE FlexGrid_Read_I3_2( YYYYMMDD, HHMMSS, Input_Opt, State_Grid, & USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE Get_Met_Mod -#ifdef BPCH_DIAG - USE Time_Mod, ONLY : Set_Ct_I3 -#endif ! ! !INPUT PARAMETERS: ! @@ -1466,15 +1443,6 @@ SUBROUTINE FlexGrid_Read_I3_2( YYYYMMDD, HHMMSS, Input_Opt, State_Grid, & State_Met%PS2_WET = State_Met%PS2_WET * 1e-2_fp ENDIF - !====================================================================== - ! Diagnostics, cleanup, and quit - !====================================================================== - -#ifdef BPCH_DIAG - ! Increment the # of times I3 fields have been read - CALL Set_Ct_I3( INCREMENT=.TRUE. ) -#endif - END SUBROUTINE FlexGrid_Read_I3_2 !EOC !------------------------------------------------------------------------------ diff --git a/GeosCore/gamap_mod.F90 b/GeosCore/gamap_mod.F90 deleted file mode 100644 index 8084eb5bd..000000000 --- a/GeosCore/gamap_mod.F90 +++ /dev/null @@ -1,2149 +0,0 @@ -#ifdef BPCH_DIAG -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !MODULE: gamap_mod.F90 -! -! !DESCRIPTION: Module GAMAP\_MOD contains routines to create GAMAP -! "tracerinfo.dat" and "diaginfo.dat" files which are customized to each -! particular GEOS-Chem simulation. -!\\ -!\\ -! !INTERFACE: -! -MODULE GAMAP_MOD -! -! !USES: -! - USE CMN_DIAG_MOD ! Diagnostic parameters - USE inquireMod, ONLY : findFreeLUN - USE PRECISION_MOD ! For GEOS-Chem Precision (fp) - - IMPLICIT NONE - PRIVATE -! -! !PUBLIC MEMBER FUNCTIONS: -! - PUBLIC :: DO_GAMAP -! -! !PRIVATE MEMBER FUNCTIONS: -! - PRIVATE :: CREATE_DINFO - PRIVATE :: CREATE_TINFO - PRIVATE :: WRITE_TINFO - PRIVATE :: WRITE_SEPARATOR - PRIVATE :: INIT_DIAGINFO - PRIVATE :: INIT_TRACERINFO - PRIVATE :: INIT_GAMAP - PRIVATE :: CLEANUP_GAMAP -! -! !REMARKS: -! For more information, please see the GAMAP Online Users' Manual: -! http://acmg.seas.harvard.edu/gamap/doc/index.html -! -! !REVISION HISTORY: -! 03 May 2005 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !PRIVATE TYPES: -! - ! For "diaginfo.dat" - INTEGER, PARAMETER :: MAXCAT = 160 - INTEGER, PARAMETER :: SPACING = 1000 - INTEGER :: NCATS - INTEGER, ALLOCATABLE :: OFFSET(:) - CHARACTER(LEN=40), ALLOCATABLE :: CATEGORY(:) - CHARACTER(LEN=40), ALLOCATABLE :: DESCRIPT(:) - CHARACTER(LEN=255) :: DFILE - - ! For "tracerinfo.dat" - INTEGER, PARAMETER :: MAXDIAG = MAX_DIAG - INTEGER, PARAMETER :: MAXTRACER = 2 * MAX_TRACER - INTEGER, ALLOCATABLE :: NTRAC(:) - INTEGER, ALLOCATABLE :: INDEX(:,:) - REAL*4, ALLOCATABLE :: MWT(:,:) - REAL*4, ALLOCATABLE :: SCALE(:,:) - CHARACTER(LEN=40), ALLOCATABLE :: NAME(:,:) - CHARACTER(LEN=40), ALLOCATABLE :: FNAME(:,:) - CHARACTER(LEN=40), ALLOCATABLE :: UNIT(:,:) - CHARACTER(LEN=255) :: TFILE - - ! Other variables - CHARACTER(LEN=16) :: STAMP - CHARACTER(LEN=40) :: SIM_NAME - - ! Species ID flags - INTEGER :: id_NK01 - -CONTAINS -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: do_gamap -! -! !DESCRIPTION: Subroutine DO\_GAMAP is the driver program for creating -! the customized GAMAP files "diaginfo.dat" and "tracerinfo.dat". -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE DO_GAMAP( Input_Opt, State_Chm, RC ) -! -! !USES: -! - USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput - USE State_Chm_Mod, ONLY : ChmState - USE TIME_MOD, ONLY : SYSTEM_TIMESTAMP -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry State object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REVISION HISTORY: -! 03 May 2005 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - - ! Assume success - RC = GC_SUCCESS - - ! Exit if this is a dry-run - IF ( Input_Opt%DryRun ) RETURN - - ! Allocate and initialize variables - CALL INIT_GAMAP( Input_Opt, State_Chm, RC ) - - ! Create a timestamp with the system date & time - STAMP = SYSTEM_TIMESTAMP() - - ! Get simulation name - SIM_NAME = Input_Opt%SimulationName - - ! Write "diaginfo.dat" file - CALL CREATE_DINFO() - - ! Write "tracerinfo.dat" file - CALL CREATE_TINFO( Input_Opt, State_Chm, RC ) - - ! Deallocate variables - CALL CLEANUP_GAMAP - - END SUBROUTINE DO_GAMAP -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: create_dinfo -! -! !DESCRIPTION: Subroutine CREATE\_DINFO writes information about diagnostic -! categories to a customized "diaginfo.dat" file. (bmy, 5/3/05) -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE CREATE_DINFO() -! -! !USES: -! - USE FILE_MOD, ONLY : IOERROR -! -! !REVISION HISTORY: -! 03 May 2005 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: IOS, N - INTEGER :: IU_FILE - - !================================================================= - ! CREATE_DINFO begins here! - !================================================================= - - ! Find a free file LUN - IU_FILE = findFreeLUN() - - ! Open "diaginfo.dat" file for output - OPEN( IU_FILE, FILE=TRIM( DFILE ), STATUS='UNKNOWN', IOSTAT=IOS ) - IF ( IOS /= 0 ) CALL IOERROR( IOS, IU_FILE, 'create_dinfo:1' ) - - ! Write file header - WRITE( IU_FILE, '(a)' ) '#' // REPEAT( '=', 78 ) - WRITE( IU_FILE, 100 ) STAMP - WRITE( IU_FILE, 105 ) TRIM( SIM_NAME ) - WRITE( IU_FILE, 110 ) - WRITE( IU_FILE, 115 ) - WRITE( IU_FILE, '(a)' ) '# File Format:' - WRITE( IU_FILE, '(a)' ) '# ' // REPEAT( '-', 77 ) - WRITE( IU_FILE, 120 ) - WRITE( IU_FILE, 125 ) - WRITE( IU_FILE, 130 ) - WRITE( IU_FILE, 135 ) - WRITE( IU_FILE, 125 ) - WRITE( IU_FILE, '(a)' ) '#' - WRITE( IU_FILE, 140 ) SPACING - WRITE( IU_FILE, '(a)' ) '#' // REPEAT( '=', 78 ) - - ! Loop over categories - DO N = 1, NCATS - - ! Write one line to "diaginfo.dat" file - WRITE( IU_FILE, 145, IOSTAT=IOS ) & - OFFSET(N), ADJUSTL( CATEGORY(N) ), ADJUSTL( DESCRIPT(N) ) - - ! Error check - IF ( IOS /= 0 ) CALL IOERROR( IOS, IU_FILE, 'create_dinfo:1' ) - ENDDO - - ! FORMAT strings -100 FORMAT( '# diaginfo.dat: Created by GEOS-CHEM at ', a, /,'#' ) -105 FORMAT( '# ****** CUSTOMIZED FOR ', a, ' SIMULATION *****',/,'#' ) -110 FORMAT( '# This file contains category names and the offsets', & - ' which they are stored' ) -115 FORMAT( '# in file "tracerinfo.dat". This file is read into', & - ' GAMAP by routine', /, '# "ctm_diaginfo.pro".', /,'#' ) -120 FORMAT( '# OFFSET (I8 ) Constant to add to tracer numbers', & - ' in order to distinguish', /, '#', 18x, 'for the given',& - ' diagnostic category, as stored in file', /, '#', 18x, & - '"tracerinfo.dat". OFFSET may be up to 8 digits long.' ) -125 FORMAT( '# -- (1X ) 1-character spacer' ) -130 FORMAT( '# CATEGORY (A40) Category name for CTM diagnostics.', & - ' NOTE: The category name', /, '#', 18x, & - 'can be up to 40 chars long, but historically the', & - ' GEOS-CHEM', /,'#', 18x, 'and GISS models have used an',& - ' 8-character category name.' ) -135 FORMAT( '# COMMENT (A ) Descriptive comment string', /,'#' ) -140 FORMAT('##### SPACING BETWEEN DIAGNOSTIC CATEGORY OFFSETS = ',i8 ) -145 FORMAT( i8, 1x, a40, 1x, a ) - - ! Close file - CLOSE( IU_FILE ) - - END SUBROUTINE CREATE_DINFO -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: create_tinfo -! -! !DESCRIPTION: Subroutine CREATE\_TINFO writes information about tracers to -! a customized tracerinfo.dat" file. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE CREATE_TINFO( Input_Opt, State_Chm, RC ) -! -! !USES: -! - USE ErrCode_Mod - USE FILE_MOD, ONLY : IOERROR - USE Input_Opt_Mod, ONLY : OptInput - USE State_Chm_Mod, ONLY : ChmState -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry State object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REVISION HISTORY: -! 21 Apr 2005 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: D, IOS, N, T - INTEGER :: IU_FILE - REAL*4 :: SCALE_NEW - CHARACTER(LEN=2) :: C - CHARACTER(LEN=40) :: UNIT_NEW, NAME_NEW, FNAME_NEW - - !================================================================= - ! CREATE_TINFO begins here! - !================================================================= - - ! Assume success - RC = GC_SUCCESS - - ! Find a free file LUN - IU_FILE = findFreeLUN() - - ! Open "tracerinfo.dat" file for output - OPEN( IU_FILE, FILE=TRIM( TFILE ), STATUS='UNKNOWN', IOSTAT=IOS ) - IF ( IOS /= 0 ) CALL IOERROR( IOS, IU_FILE, 'create_tinfo:1' ) - - ! Write file header - WRITE( IU_FILE, '(a)' ) '#' // REPEAT( '=', 78 ) - WRITE( IU_FILE, 100 ) STAMP - WRITE( IU_FILE, 105 ) TRIM( SIM_NAME ) - WRITE( IU_FILE, 110 ) - WRITE( IU_FILE, 115 ) - WRITE( IU_FILE, '(a)' ) '# File Format:' - WRITE( IU_FILE, '(a)' ) '# ' // REPEAT( '-', 77 ) - WRITE( IU_FILE, 120 ) - WRITE( IU_FILE, 125 ) - WRITE( IU_FILE, 130 ) - WRITE( IU_FILE, 135 ) - WRITE( IU_FILE, 145 ) - WRITE( IU_FILE, 150 ) - WRITE( IU_FILE, 125 ) - WRITE( IU_FILE, 155 ) - - ! FORMAT strings -100 FORMAT( '# tracerinfo.dat: Created by GEOS-CHEM at ', a, /,'#' ) -105 FORMAT( '# ****** CUSTOMIZED FOR ', a, ' SIMULATION *****',/,'#' ) -110 FORMAT( '# This file contains name weight and index', & - ' information about GEOS-CHEM' ) -115 FORMAT( '# tracers. It is read by routine ', & - '"ctm_tracerinfo.pro" of the GAMAP package.', /,'#' ) -120 FORMAT( '# NAME (A8 ) Tracer name (up to 8 chars)' ) -125 FORMAT( '# -- (1X ) 1-character spacer' ) -130 FORMAT( '# FULLNAME (A30 ) Full tracer name (up to 30 chars)' ) -135 FORMAT( '# MOLWT (E10.0) Molecular weight (kg/mole)' ) -145 FORMAT( '# TRACER (I9 ) Tracer number (up to 9 digits)' ) -150 FORMAT( '# SCALE (E10.3) Standard scale factor to convert', & - ' to unit given below' ) -155 FORMAT( '# UNIT (A40 ) Unit string', /,'#' ) - - !------------------------------------- - ! 0: Tracers [ppbv] - !------------------------------------- - - ! Write separator line - CALL WRITE_SEPARATOR( IU_FILE, 0 ) - - ! Loop over tracers - DO T = 1, NTRAC(45) - - ! GAMAP tracer number - N = ( SPACING * 0 ) + T - - ! Write tracers [ppbv] to "tracerinfo.dat" file - CALL WRITE_TINFO( IU_FILE, NAME(T,45), FNAME(T,45), MWT(T,45), & - SCALE(T,45), UNIT(T,45), N ) - ENDDO - - !------------------------------------- - ! SPACING*1: Tracers [molec/cm2/s] - !------------------------------------- - - ! Write separator line - CALL WRITE_SEPARATOR( IU_FILE, 100 ) - - ! Loop over tracers - DO T = 1, NTRAC(45) - - ! GAMAP tracer number - N = ( SPACING * 1 ) + T - - ! New scale - SCALE_NEW = 1.0e0 - - ! New unit - IF ( TRIM( UNIT(T,45) ) == 'ppbC' ) THEN - UNIT_NEW = 'atoms C/cm2/s' - ELSE - UNIT_NEW = 'molec/cm2/s' - ENDIF - - ! Write tracers [molec/cm2/s] to "tracerinfo.dat" - CALL WRITE_TINFO( IU_FILE, NAME(T,45), FNAME(T,45), MWT(T,45), & - SCALE_NEW, UNIT_NEW, N ) - ENDDO - - !------------------------------------- - ! SPACING*2: Tracers [molec/cm2] - !------------------------------------- - - ! Write separator line - CALL WRITE_SEPARATOR( IU_FILE, 200 ) - - ! Loop over tracers - DO T = 1, NTRAC(45) - - ! GAMAP tracer number - N = ( SPACING * 2 ) + T - - ! New scale - SCALE_NEW = 1.0e0 - - ! New unit - IF ( TRIM( UNIT(T,45) ) == 'ppbC' ) THEN - UNIT_NEW = 'atoms C/cm2' - ELSE - UNIT_NEW = 'molec/cm2' - ENDIF - - ! Write tracers [molec/cm2] to "tracerinfo.dat" - CALL WRITE_TINFO( IU_FILE, NAME(T,45), FNAME(T,45), MWT(T,45), & - SCALE_NEW, UNIT_NEW, N ) - ENDDO - - !------------------------------------- - ! SPACING*3: Tracers [kg/s] - !------------------------------------- - - ! Write separator line - CALL WRITE_SEPARATOR( IU_FILE, 300 ) - - ! Loop over tracers - DO T = 1, NTRAC(45) - - ! GAMAP tracer number - N = ( SPACING * 3 ) + T - - ! New scale - SCALE_NEW = 1.0e0 - - ! New unit - IF ( TRIM( UNIT(T,45) ) == 'ppbC' ) THEN - UNIT_NEW = 'kg C/s' - ELSE - UNIT_NEW = 'kg/s' - ENDIF - - ! Write tracers [kg/s] to "tracerinfo.dat" - CALL WRITE_TINFO( IU_FILE, NAME(T,45), FNAME(T,45), MWT(T,45), & - SCALE_NEW, UNIT_NEW, N ) - ENDDO - - !------------------------------------- - ! SPACING*4: Tracers [kg] - !------------------------------------- - - ! Write separator line - CALL WRITE_SEPARATOR( IU_FILE, 400 ) - - ! Loop over tracers - DO T = 1, NTRAC(45) - - ! GAMAP tracer number - N = ( SPACING * 4 ) + T - - ! New scale - SCALE_NEW = 1.0e0 - - ! New unit - IF ( TRIM( UNIT(T,45) ) == 'ppbC' ) THEN - UNIT_NEW = 'kg C' - ELSE - UNIT_NEW = 'kg' - ENDIF - - ! Write tracers [kg] to "tracerinfo.dat" - CALL WRITE_TINFO( IU_FILE, NAME(T,45), FNAME(T,45), MWT(T,45), & - SCALE_NEW, UNIT_NEW, N ) - ENDDO - - !------------------------------------- - ! All other diagnostics - !------------------------------------- - DO D = 1, MAXDIAG - - ! If tracers are defined then... - IF ( NTRAC(D) > 0 ) THEN - - ! Skip ND45, we already wrote tracers above - IF ( D == 45 ) CYCLE - - ! Write separator - CALL WRITE_SEPARATOR( IU_FILE, D ) - - ! Write tracers to file - DO T = 1, NTRAC(D) - CALL WRITE_TINFO( IU_FILE, NAME(T,D), FNAME(T,D), MWT(T,D), & - SCALE(T,D), UNIT(T,D), INDEX(T,D) ) - ENDDO - ENDIF - ENDDO - - END SUBROUTINE CREATE_TINFO -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: write_tinfo -! -! !DESCRIPTION: Subroutine WRITE\_TINFO writes one line to the customized -! "tracerinfo.dat" file. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE WRITE_TINFO( IU_FILE, NAME, FNAME, MWT, SCALE, UNIT, N ) -! -! !USES: -! - USE FILE_MOD, ONLY : IOERROR -! -! !INPUT PARAMETERS: -! - INTEGER, INTENT(IN) :: IU_FILE ! Logical unit number - CHARACTER(LEN=*), INTENT(IN) :: NAME ! GAMAP short tracer name - CHARACTER(LEN=*), INTENT(IN) :: FNAME ! GAMAP long tracer name - REAL*4, INTENT(IN) :: MWT ! Molecular weight [kg/mole] - INTEGER, INTENT(IN) :: N ! Tracer number - REAL*4, INTENT(IN) :: SCALE ! GAMAP scale factor - CHARACTER(LEN=*), INTENT(IN) :: UNIT ! Unit string -! -! !REVISION HISTORY: -! 03 May 2005 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: IOS - - !================================================================= - ! WRITE_TINFO begins here! - !================================================================= - - ! Write one line to "tracerinfo.dat" file - WRITE( IU_FILE, 100, IOSTAT=IOS ) & - ADJUSTL( NAME ), ADJUSTL( FNAME ), MWT, 1, N, SCALE, TRIM( UNIT ) - - ! Error check - IF ( IOS /= 0 ) CALL IOERROR( IOS, IU_FILE, 'write_tinfo:1' ) - - ! FORMAT string -100 FORMAT( a8, 1x, a30, es10.3, i3, i9, es10.3, 1x, a ) - - END SUBROUTINE WRITE_TINFO -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: write_separator - -! -! !DESCRIPTION: Subroutine WRITE\_SEPARATOR writes a separator block to the -! customized "tracerinfo.dat" file. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE WRITE_SEPARATOR( IU_FILE, DIAG ) -! -! !USES: -! - USE FILE_MOD, ONLY : IOERROR -! -! !INPUT PARAMETERS: -! - INTEGER, INTENT(IN) :: IU_FILE - INTEGER, INTENT(IN) :: DIAG ! GEOS-Chem diagnostic number -! -! !REVISION HISTORY: -! 03 May 2005 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: IOS - CHARACTER(LEN=79) :: SEPARATOR - - !================================================================= - ! WRITE_SEPARATOR begins here! - !================================================================= - - ! Create separator string - SEPARATOR = '#' // REPEAT( '=', 78 ) - - ! Write separator string - WRITE( IU_FILE, '(a)', IOSTAT=IOS ) SEPARATOR - IF ( IOS /= 0 ) CALL IOERROR( IOS, IU_FILE, 'write_separator:1' ) - - ! Write the appropriate message - SELECT CASE( DIAG ) - CASE( 0 ) - WRITE( IU_FILE, 100, IOSTAT=IOS ) - CASE( 100 ) - WRITE( IU_FILE, 110, IOSTAT=IOS ) - CASE( 200 ) - WRITE( IU_FILE, 120, IOSTAT=IOS ) - CASE( 300 ) - WRITE( IU_FILE, 130, IOSTAT=IOS ) - CASE( 400 ) - WRITE( IU_FILE, 140, IOSTAT=IOS ) - CASE( 500 ) - WRITE( IU_FILE, 150, IOSTAT=IOS ) - CASE( 600 ) - WRITE( IU_FILE, 160, IOSTAT=IOS ) - CASE( 700 ) !(win, 7/9/09) - WRITE( IU_FILE, 190, IOSTAT=IOS ) !sfarina - this can stay - CASE( 999 ) - WRITE( IU_FILE, 170, IOSTAT=IOS ) - CASE DEFAULT - WRITE( IU_FILE, 180, IOSTAT=IOS ) DIAG - END SELECT - - ! Error check - IF ( IOS /= 0 ) CALL IOERROR( IOS, IU_FILE, 'write_separator:2' ) - - ! Write separator string - WRITE( IU_FILE, '(a)', IOSTAT=IOS ) SEPARATOR - IF ( IOS /= 0 ) CALL IOERROR( IOS, IU_FILE, 'write_separator:3' ) - - ! FORMAT strings -100 FORMAT( '# GEOS-CHEM tracers [ppbv]' ) -110 FORMAT( '# GEOS-CHEM tracers [molec/cm2/s]' ) -120 FORMAT( '# GEOS-CHEM tracers [molec/cm2]' ) -130 FORMAT( '# GEOS-CHEM tracers [kg/s]' ) -140 FORMAT( '# GEOS-CHEM tracers [kg]' ) -150 FORMAT( '# GEOS-CHEM tracers [ug/m3]' ) -160 FORMAT( '# SOA GPROD & APROD [kg/kg]' ) -170 FORMAT( '# Quantities for Soil NOx restart file' ) -180 FORMAT( '# ND', i2.2, ' diagnostic quantities' ) -190 FORMAT( '# TOMAS aerosol rate [cm-3 s-1]' ) !(win, 7/9/09) - - END SUBROUTINE WRITE_SEPARATOR -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: init_diaginfo -! -! !DESCRIPTION: Subroutine INIT\_DIAGINFO initializes the CATEGORY, DESCRIPT, -! and OFFSET variables, which are used to define the "diaginfo.dat" file -! for GAMAP. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE INIT_DIAGINFO() -! -! !REVISION HISTORY: -! 17 Oct 1996 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: N - - !================================================================= - ! INIT_DIAGINFO begins here! - !================================================================= - - N = 1 - CATEGORY(N) = 'IJ-AVG-$' - DESCRIPT(N) = 'Tracer concentration' - OFFSET(N) = SPACING * 0 - - N = N + 1 - CATEGORY(N) = 'IJ-24H-$' - DESCRIPT(N) = '24-hr avg tracer conc.' - OFFSET(N) = SPACING * 0 - - N = N + 1 - CATEGORY(N) = 'INST-MAP' - DESCRIPT(N) = 'Instantaneous tracer' - OFFSET(N) = SPACING * 0 - - N = N + 1 - CATEGORY(N) = 'DUSTSRCE' - DESCRIPT(N) = 'Dust emission' - OFFSET(N) = SPACING * 4 - -#ifdef TOMAS - N = N + 1 !(win, 7/9/09) - CATEGORY(N) = 'NK-EMISS' - DESCRIPT(N) = 'Size-res aerosol number emissions' - OFFSET(N) = SPACING * 4 - - N = N + 1 !(win, 7/9/09) - CATEGORY(N) = 'SF-EMISS' - DESCRIPT(N) = 'Size-res sulfate mass emissions' - OFFSET(N) = SPACING * 4 - - N = N + 1 !(win, 7/9/09) - CATEGORY(N) = 'SS-EMISS' - DESCRIPT(N) = 'Size-res sea-salt mass emissions' - OFFSET(N) = SPACING * 4 - - N = N + 1 !(win, 7/9/09) - CATEGORY(N) = 'ECIL-SRC' - DESCRIPT(N) = 'Size-res H-phillic EC mass emissions' - OFFSET(N) = SPACING * 4 - - N = N + 1 !(win, 7/9/09) - CATEGORY(N) = 'ECOB-SRC' - DESCRIPT(N) = 'Size-res H-phobic EC mass emissions' - OFFSET(N) = SPACING * 4 - - N = N + 1 !(win, 7/9/09) - CATEGORY(N) = 'OCIL-SRC' - DESCRIPT(N) = 'Size-res H-phillic OC mass emissions' - OFFSET(N) = SPACING * 4 - - N = N + 1 !(win, 7/9/09) - CATEGORY(N) = 'OCOB-SRC' - DESCRIPT(N) = 'Size-res H-phobic OC mass emissions' - OFFSET(N) = SPACING * 4 - - N = N + 1 !(win, 7/9/09) - CATEGORY(N) = 'DUST-SRC' - DESCRIPT(N) = 'Size-res dust mass emissions' - OFFSET(N) = SPACING * 4 - - N = N + 1 - CATEGORY(N) = 'TMS-COND' - DESCRIPT(N) = 'Condensation rate' - OFFSET(N) = SPACING * 6 - - N = N + 1 - CATEGORY(N) = 'TMS-COAG' - DESCRIPT(N) = 'Condensation rate' - OFFSET(N) = SPACING * 6 - - N = N + 1 - CATEGORY(N) = 'TMS-NUCL' - DESCRIPT(N) = 'Condensation rate' - OFFSET(N) = SPACING * 6 - - N = N + 1 - CATEGORY(N) = 'TMS-AQOX' - DESCRIPT(N) = 'Condensation rate' - OFFSET(N) = SPACING * 6 - - N = N + 1 - CATEGORY(N) = 'AERO-FIX' - DESCRIPT(N) = 'Condensation rate' - OFFSET(N) = SPACING * 6 - - N = N + 1 - CATEGORY(N) = 'TMS-SOA' - DESCRIPT(N) = 'Condensation rate' - OFFSET(N) = SPACING * 6 - - N = N + 1 !(win, 7/9/09) - CATEGORY(N) = 'TOMAS-3D' - DESCRIPT(N) = '3-D aerosol rate of a selected microphysics' - OFFSET(N) = SPACING * 7 -#endif - - N = N + 1 - CATEGORY(N) = 'PEDGE-$' - DESCRIPT(N) = 'Pressure at level edges' - OFFSET(N) = SPACING * 10 - - N = N + 1 - CATEGORY(N) = 'DAO-FLDS' - DESCRIPT(N) = 'GMAO 2-D met fields' - OFFSET(N) = SPACING * 11 - - N = N + 1 - CATEGORY(N) = 'DAO-3D-$' - DESCRIPT(N) = 'GMAO 3-D met fields' - OFFSET(N) = SPACING * 12 - - N = N + 1 - CATEGORY(N) = 'OD-MAP-$' - DESCRIPT(N) = 'Optical Depths' - OFFSET(N) = SPACING * 14 - - N = N + 1 - CATEGORY(N) = 'CHEM-L=$' - DESCRIPT(N) = 'Chemical Prod/Loss' - OFFSET(N) = SPACING * 16 - - N = N + 1 - CATEGORY(N) = 'TIME-SER' - DESCRIPT(N) = 'Timeseries quantities' - OFFSET(N) = SPACING * 19 - - N = N + 1 - CATEGORY(N) = 'BXHGHT-$' - DESCRIPT(N) = 'Boxheight, airmass, etc' - OFFSET(N) = SPACING * 24 - - N = N + 1 - CATEGORY(N) = 'PBLDEPTH' - DESCRIPT(N) = 'Afternoon PBL height' - OFFSET(N) = SPACING * 27 - - N = N + 1 - CATEGORY(N) = 'HG-SRCE' - DESCRIPT(N) = 'Hg emissions' - OFFSET(N) = SPACING * 34 - - N = N + 1 - CATEGORY(N) = 'HG0-ANTH' - DESCRIPT(N) = 'Hg(0) Anthro Emissions' - OFFSET(N) = SPACING * 61 - - N = N + 1 - CATEGORY(N) = 'HG0-AQUA' - DESCRIPT(N) = 'Hg(0) Ocean Mass' - OFFSET(N) = SPACING * 62 - - N = N + 1 - CATEGORY(N) = 'HG0-RECY' - DESCRIPT(N) = 'Hg(0) Land Prompt Recycling' - OFFSET(N) = SPACING * 63 - - N = N + 1 - CATEGORY(N) = 'HGNET-OC' - DESCRIPT(N) = 'Hg(0) Net Ocean Emissions' - OFFSET(N) = SPACING * 64 - - N = N + 1 - CATEGORY(N) = 'HG0-GEOG' - DESCRIPT(N) = 'Hg(0) Geogenic Emissions' - OFFSET(N) = SPACING * 65 - - N = N + 1 - CATEGORY(N) = 'HG2-ANTH' - DESCRIPT(N) = 'Hg(II) Anthro Emissions' - OFFSET(N) = SPACING * 66 - - N = N + 1 - CATEGORY(N) = 'HG2-AQUA' - DESCRIPT(N) = 'Hg(II) Ocean Mass' - OFFSET(N) = SPACING * 67 - - N = N + 1 - CATEGORY(N) = 'HG2-SINK' - DESCRIPT(N) = 'Hg(II) Sinking' - OFFSET(N) = SPACING * 68 - - N = N + 1 - CATEGORY(N) = 'HGP-ANTH' - DESCRIPT(N) = 'Hg(P) Anthro Emissions' - OFFSET(N) = SPACING * 69 - - N = N + 1 - CATEGORY(N) = 'HGT-AQUA' - DESCRIPT(N) = 'Hg Total Ocean Mass' - OFFSET(N) = SPACING * 70 - - N = N + 1 - CATEGORY(N) = 'HGP-AQUA' - DESCRIPT(N) = 'Hg(P) Ocean Mass' - OFFSET(N) = SPACING * 71 - - N = N + 1 - CATEGORY(N) = 'HGP-CONV' - DESCRIPT(N) = 'Hg(II) Aqeous Conversion to Particle' - OFFSET(N) = SPACING * 72 - - N = N + 1 - CATEGORY(N) = 'HG0-BURN' - DESCRIPT(N) = 'Hg(0) Biomass Burning Emissions' - OFFSET(N) = SPACING * 73 - - N = N + 1 - CATEGORY(N) = 'HG0-VEGT' - DESCRIPT(N) = 'Hg(0) Veg Transp. Emissions' - OFFSET(N) = SPACING * 74 - - N = N + 1 - CATEGORY(N) = 'HG0-SOIL' - DESCRIPT(N) = 'Hg(0) Soil Emissions' - OFFSET(N) = SPACING * 75 - - N = N + 1 - CATEGORY(N) = 'HG0-FXUP' - DESCRIPT(N) = 'Hg(0) Gross Ocean Up Flux' - OFFSET(N) = SPACING * 76 - - N = N + 1 - CATEGORY(N) = 'HG0-FXDN' - DESCRIPT(N) = 'Hg(0) Gross Ocean Down Flux' - OFFSET(N) = SPACING * 77 - - N = N + 1 - CATEGORY(N) = 'HG0-SNOW' - DESCRIPT(N) = 'Hg(0) Snow Emissions' - OFFSET(N) = SPACING * 78 - - N = N + 1 - CATEGORY(N) = 'HG-NETOX' - DESCRIPT(N) = 'Hg(0) to Hg(II) Net Oxidation' - OFFSET(N) = SPACING * 79 - - N = N + 1 - CATEGORY(N) = 'HG2-OXOH' - DESCRIPT(N) = 'Hg(0) Oxidation to Hg(II) by OH' - OFFSET(N) = SPACING * 80 - - N = N + 1 - CATEGORY(N) = 'HG2-OXO3' - DESCRIPT(N) = 'Hg(0) Oxidation to Hg(II) by O3' - OFFSET(N) = SPACING * 81 - - N = N + 1 - CATEGORY(N) = 'HG2-SALT' - DESCRIPT(N) = 'Hg(II) Loss by Sea Salt' - OFFSET(N) = SPACING * 82 - - N = N + 1 - CATEGORY(N) = 'HG2-SSRX' - DESCRIPT(N) = 'Hg(0) Sea Salt Reaction Rate' - OFFSET(N) = SPACING * 83 - - N = N + 1 - CATEGORY(N) = 'HG2-OXBR' - DESCRIPT(N) = 'Hg(0) Oxidation to Hg(II) by Br' - OFFSET(N) = SPACING * 84 - - N = N + 1 - CATEGORY(N) = 'PL-HG2-$' - DESCRIPT(N) = 'Prod / loss of Hg2' - OFFSET(N) = SPACING * 35 - - N = N + 1 - CATEGORY(N) = 'DRYD-FLX' - DESCRIPT(N) = 'Drydep fluxes' - OFFSET(N) = SPACING * 36 - - N = N + 1 - CATEGORY(N) = 'DRYD-VEL' - DESCRIPT(N) = 'Drydep velocities' - OFFSET(N) = SPACING * 37 - - N = N + 1 - CATEGORY(N) = 'CO2-SRCE' - DESCRIPT(N) = 'CO2 fluxes' - OFFSET(N) = SPACING * 40 - - N = N + 1 - CATEGORY(N) = 'OCEAN-HG' - DESCRIPT(N) = 'Oceanic Hg emissions' - OFFSET(N) = SPACING * 41 - - N = N + 1 - CATEGORY(N) = 'LFLASH-$' - DESCRIPT(N) = 'Lightning flash rates' - OFFSET(N) = SPACING * 42 - - N = N + 1 - CATEGORY(N) = 'IJ-SOA-$' - DESCRIPT(N) = 'SOA concentrations' - OFFSET(N) = SPACING * 43 - - ! For mercury simulation only so we can use same spacing. (ccc, 5/21/10) - N = N + 1 - CATEGORY(N) = 'SNOW-HG' - DESCRIPT(N) = 'Reducible Hg mass in ocean snow and ice' - OFFSET(N) = SPACING * 49 - - ! Non-reducible snow Hg reservoir - N = N + 1 - CATEGORY(N) = 'SNOW-HGN' - DESCRIPT(N) = 'Non-reducible Hg mass in ocean snow and ice' - OFFSET(N) = SPACING * 50 - - N = N + 1 - CATEGORY(N) = 'SNHG-LN' - DESCRIPT(N) = 'Reducible Hg mass in land snow and ice' - OFFSET(N) = SPACING * 51 - - N = N + 1 - CATEGORY(N) = 'SNHGN-LN' - DESCRIPT(N) = 'Non-reducible Hg mass in snow and ice' - OFFSET(N) = SPACING * 52 - - !(FP 06/19/2009) - N = N + 1 - CATEGORY(N) = 'THETA-$' - DESCRIPT(N) = 'Potential temperature' - OFFSET(N) = SPACING * 57 - - N = N + 1 - CATEGORY(N) = 'SHIP-$$$' - DESCRIPT(N) = 'Ship diagnostics' - OFFSET(N) = SPACING * 59 - - N = N + 1 - CATEGORY(N) = 'RST-SOIL' - DESCRIPT(N) = 'Soil NOx restart file' - OFFSET(N) = SPACING * 60 - - ! Added for POPs (clf, 3/2/2011) - N = N + 1 - CATEGORY(N) = 'PG-SRCE' - DESCRIPT(N) = 'POPs Emissions' - OFFSET(N) = SPACING * 52 - - N = N + 1 - CATEGORY(N) = 'PG-PP-$' - DESCRIPT(N) = 'POP partitioning/oxidation' - OFFSET(N) = SPACING * 53 - - N = N + 1 - CATEGORY(N) = 'RADMAP-$' - DESCRIPT(N) = 'Radiative diagnostics' - OFFSET(N) = SPACING * 72 - - ! Number of categories - NCATS = N - - END SUBROUTINE INIT_DIAGINFO -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: init_tracerinfo -! -! !DESCRIPTION: Subroutine INIT\_TRACERINFO initializes the NAME, FNAME, -! MWT, INDEX, UNIT arrays which are used to define the -! "tracerinfo.dat" file. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE INIT_TRACERINFO( Input_Opt, State_Chm, RC ) -! -! !USES: -! -#ifdef FASTJX - USE CMN_FJX_Mod, ONLY : W_ -#else - USE Cldj_Cmn_Mod, ONLY : W_ -#endif - USE CMN_SIZE_MOD, ONLY : NRHAER, NDUST, NSTRATAER - USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput - USE Species_Mod, ONLY : Species - USE State_Chm_Mod, ONLY : ChmState - USE State_Chm_Mod, ONLY : Ind_ -#ifdef TOMAS - USE TOMAS_MOD, ONLY : ICOMP, IDIAG -#endif -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry State object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REVISION HISTORY: -! 17 Oct 1996 - R. Yantosca & P. Le Sager - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: N, NN, NYMDb, NHMSb, T, T0, T1 - INTEGER :: nAdvect, nDryDep, nSpecies - LOGICAL :: DO_TIMESERIES - CHARACTER(LEN=40) :: NAME5, NAME6 - REAL(fp), SAVE :: POP_XMW - REAL(fp) :: DUM - INTEGER :: SPC_INDEX - - ! Objects - TYPE(Species), POINTER :: SpcInfo - - !================================================================= - ! INIT_TRACERINFO begins here! - !================================================================= - - ! Initialize - RC = GC_SUCCESS - SpcInfo => NULL() - - ! Initialization - DUM = 1.0 - - ! Set a flag if any timeseries diagnostics are turned on - DO_TIMESERIES = ( Input_Opt%DO_ND51 .or. Input_Opt%DO_ND51b ) - - ! Number of total species - nSpecies = State_Chm%nSpecies - - ! Number of advected species - nAdvect = State_Chm%nAdvect - - ! Number of drydep species - nDryDep = State_Chm%nDryDep - - !---------------------------------- - ! General tracer information - !---------------------------------- - - ! NOTE: Write metadata for all GEOS-Chem species to tracerinfo.dat - ! so that GAMAP will be able to read the new netCDF restart file. - ! (bmy, 1/23/17) - DO T = 1, nSpecies - - ! Set pointer to this species information - ! NOTE: requires 1:1 tracer index to species index mapping - SpcInfo => State_Chm%SpcData(T)%Info - - ! Store quantities for each tracer - NAME (T,45) = SpcInfo%Name - FNAME(T,45) = TRIM( NAME(T,45) ) // ' tracer' - SCALE(T,45) = 1.0e+9 - INDEX(T,45) = T !changed from N (phs, 3/19/03) - MWT (T,45) = SpcInfo%MW_g * 1.e-3_fp - UNIT(T,45) = 'ppbv' - - ! Special handling for TransportTracer simulation (bmy, 5/11/05) - IF ( Input_Opt%ITS_A_TRACER_SIM ) THEN - SELECT CASE( T ) - CASE( 1 ) - UNIT (T,45) = 'mBq/SCM' - SCALE(T,45) = 5.6397E+22 - CASE( 2, 3 ) - UNIT (T,45) = 'mBq/SCM' - SCALE(T,45) = 2.6141E+19 - CASE( 4, 5, 6, 7 ) - UNIT (T,45) = 'mBq/SCM' - SCALE(T,45) = 4.0513E+21 - CASE DEFAULT - ! Nothing - END SELECT - ENDIF - - ! For mercury, print as pptv (bmy, 1/24/06) - IF ( Input_Opt%ITS_A_MERCURY_SIM ) THEN - UNIT(T,45) = 'pptv' - SCALE(T,45) = 1.0e+12 - ENDIF - - ENDDO - - ! Number of ND45 tracers, now all species (bmy, 1/23/17) - NTRAC(45) = nSpecies - - - IF ( DO_TIMESERIES ) THEN - - !------------------------------------- - ! Optical depths - !------------------------------------- - - ! Number of tracers - NTRAC(21) = 8 + (NRHAER+NDUST)*3 + (NRHAER*2) + (NSTRATAER*3) - - ! Loop over tracers - DO T = 1, NTRAC(21) - - ! Define quantities - UNIT (T,21) = 'unitless' - INDEX(T,21) = T + ( SPACING * 14 ) - MWT (T,21) = 0e0 - SCALE(T,21) = 1e0 - - ! Get name long-name (and sometimes, unit) - SELECT CASE( T ) - CASE( 1 ) - NAME (T,21) = 'OPTD' - FNAME(T,21) = 'Cloud optical depth' - CASE( 2 ) - ! GEOS-3, GEOS-4: CLDTOT - NAME (T,21) = 'CLDTOT' - FNAME(T,21) = '3-D cloud frc' - CASE( 3 ) - NAME (T,21) = 'OBSOLETE1' - FNAME(T,21) = 'This diagnostic is obsolete' - CASE( 4 ) - NAME (T,21) = 'OPD' - FNAME(T,21) = 'Mineral dust opt depth' - CASE( 5 ) - NAME (T,21) = 'SD' - FNAME(T,21) = 'Mineral dust surface area' - UNIT (T,21) = 'cm2/cm3' - CASE( 6 ) - NAME (T,21) = 'OPSO4'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Sulfate opt depth (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 7 ) - NAME (T,21) = 'HGSO4' - FNAME(T,21) = 'Hygr growth of SO4' - CASE( 8 ) - NAME (T,21) = 'SSO4' - FNAME(T,21) = 'Sulfate surface area' - UNIT (T,21) = 'cm2/cm3' - CASE( 9 ) - NAME (T,21) = 'OPBC'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Black carbon opt depth (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 10 ) - NAME (T,21) = 'HGBC' - FNAME(T,21) = 'Hygr growth of BC' - CASE( 11 ) - NAME (T,21) = 'SBC' - FNAME(T,21) = 'BC surface area' - UNIT (T,21) = 'cm2/cm3' - CASE( 12 ) - NAME (T,21) = 'OPOC'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Org carbon opt depth (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 13 ) - NAME (T,21) = 'HGOC' - FNAME(T,21) = 'Hygr growth of OC' - CASE( 14 ) - NAME (T,21) = 'SOC' - FNAME(T,21) = 'OC surface area' - UNIT (T,21) = 'cm2/cm3' - CASE( 15 ) - NAME (T,21) = 'OPSSa'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Seasalt (accum) opt depth (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 16 ) - NAME (T,21) = 'HGSSa' - FNAME(T,21) = 'Hygr growth of seasalt (accum)' - CASE( 17 ) - NAME (T,21) = 'SSSa' - FNAME(T,21) = 'Seasalt (accum) surface area' - UNIT (T,21) = 'cm2/cm3' - CASE( 18 ) - NAME (T,21) = 'OPSSc'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Seasalt (coarse) opt depth (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 19 ) - NAME (T,21) = 'HGSSc' - FNAME(T,21) = 'Hygr growth of seasalt (coarse)' - CASE( 20 ) - NAME (T,21) = 'SSSc' - FNAME(T,21) = 'Seasalt (coarse) surface area' - UNIT (T,21) = 'cm2/cm3' - CASE( 21 ) - NAME (T,21) = 'OPD1'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Dust bin 1 AOD (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 22 ) - NAME (T,21) = 'OPD2'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Dust bin 2 AOD (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 23 ) - NAME (T,21) = 'OPD3'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Dust bin 3 AOD (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 24 ) - NAME (T,21) = 'OPD4'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Dust bin 4 AOD (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 25 ) - NAME (T,21) = 'OPD5'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Dust bin 5 AOD (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 26 ) - NAME (T,21) = 'OPD6'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Dust bin 6 AOD (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 27 ) - NAME (T,21) = 'OPD7'//Input_Opt%STRWVSELECT(1) - FNAME(T,21) = 'Dust bin 7 AOD (' & - // Input_Opt%STRWVSELECT(1) //'nm)' - CASE( 28 ) - NAME (T,21) = 'OPSO4'//Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'Seasalt (accum) opt depth (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 29 ) - NAME (T,21) = 'OPBC' // Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'BC opt depth (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 30 ) - NAME (T,21) = 'OPOC' // Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'OC opt depth (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 31 ) - NAME (T,21) = 'OPSSa' // Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'Seasalt (accum) opt depth (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 32 ) - NAME (T,21) = 'OPSSc' // Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'seasalt (coarse) opt depth (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 33 ) - NAME (T,21) = 'OPD1' // Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'Dust bin 1 AOD (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 34 ) - NAME (T,21) = 'OPD2' // Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'Dust bin 2 AOD (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 35 ) - NAME (T,21) = 'OPD3' // Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'Dust bin 3 AOD (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 36 ) - NAME (T,21) = 'OPD4' // Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'Dust bin 4 AOD (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 37 ) - NAME (T,21) = 'OPD5' // Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'Dust bin 5 AOD (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 38 ) - NAME (T,21) = 'OPD6' // Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'Dust bin 6 AOD (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 39 ) - NAME (T,21) = 'OPD7' // Input_Opt%STRWVSELECT(2) - FNAME(T,21) = 'Dust bin 7 AOD (' & - // Input_Opt%STRWVSELECT(2) // 'nm)' - CASE( 40 ) - NAME (T,21) = 'OPSO4' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'Seasalt (accum) opt depth (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - CASE( 41 ) - NAME (T,21) = 'OPBC' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'BC opt depth (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - CASE( 42 ) - NAME (T,21) = 'OPOC' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'OC opt depth (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - CASE( 43 ) - NAME (T,21) = 'OPSSa' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'Seasalt (accum) opt depth (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - CASE( 44 ) - NAME (T,21) = 'OPSSc' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'seasalt (coarse) opt depth (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - CASE( 45 ) - NAME (T,21) = 'OPD1' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'Dust bin 1 AOD (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - CASE( 46 ) - NAME (T,21) = 'OPD2' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'Dust bin 2 AOD (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - CASE( 47 ) - NAME (T,21) = 'OPD3' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'Dust bin 3 AOD (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - CASE( 48 ) - NAME (T,21) = 'OPD4' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'Dust bin 4 AOD (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - CASE( 49 ) - NAME (T,21) = 'OPD5' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'Dust bin 5 AOD (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - CASE( 50 ) - NAME (T,21) = 'OPD6' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'Dust bin 6 AOD (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - CASE( 51 ) - NAME (T,21) = 'OPD7' // Input_Opt%STRWVSELECT(3) - FNAME(T,21) = 'Dust bin 7 AOD (' & - // Input_Opt%STRWVSELECT(3) // 'nm)' - - ! For the UCX simualtion - CASE( 52 ) - NAME (T,21) = 'ODSLA' - FNAME(T,21) = 'SLA AOD (600 nm)' - CASE( 53 ) - NAME (T,21) = 'SASLA' - FNAME(T,21) = 'SLA surface area' - UNIT (T,21) = 'cm2/cm3' - CASE( 54 ) - NAME (T,21) = 'NDSLA' - FNAME(T,21) = 'SLA number density' - UNIT (T,21) = 'num/cm3' - CASE( 55 ) - NAME (T,21) = 'ODSPA' - FNAME(T,21) = 'PSC type 1a/2 AOD (600 nm)' - CASE( 56 ) - NAME (T,21) = 'SASPA' - FNAME(T,21) = 'PSC type 1a/2 surface area' - UNIT (T,21) = 'cm2/cm3' - CASE( 57 ) - NAME (T,21) = 'NDSPA' - FNAME(T,21) = 'SPA number density' - UNIT (T,21) = 'num/cm3' - CASE( 58 ) - NAME (T,21) = 'ISOPAOD' - FNAME(T,21) = 'Isoprene AOD (550 nm)' - CASE( 59 ) - NAME (T,21) = 'AQAVOL' - FNAME(T,21) = 'Aq. aerosol vol (cm3/cm3)' - CASE( 60 ) - NAME (T,21) = 'OBSOLETE2' - FNAME(T,21) = 'This diagnostic is obsolete' - CASE DEFAULT - ! Nothing - END SELECT - - ENDDO - - !------------------------------------- - ! Surface pressure (ND31) - !------------------------------------- - T = 1 - NTRAC(31) = T - NAME (T,31) = 'PSURF' - FNAME(T,31) = 'Surface pressure' - UNIT (T,31) = 'hPa' - INDEX(T,31) = T + ( SPACING * 10 ) - MWT (T,31) = 0e0 - SCALE(T,31) = 1e0 - - !------------------------------------- - ! Afternoon-average boundary - ! layer heights (ND41) + timeseries - !------------------------------------- - - ! Number of tracers - NTRAC(41) = 2 - - ! Loop over tracers - DO T = 1, NTRAC(41) - - ! Get name and unit for each met field - SELECT CASE( T ) - CASE( 1 ) - NAME(T,41) = 'PBL-M' - UNIT(T,41) = 'm' - CASE( 2 ) - NAME(T,41) = 'PBL-L' - UNIT(T,41) = 'levels' - CASE DEFAULT - ! Nothing - END SELECT - - ! Define the rest of the quantities - FNAME(T,41) = 'PBL depth' - INDEX(T,41) = T + ( SPACING * 27 ) - MWT (T,41) = 0e0 - SCALE(T,41) = 1e0 - - ENDDO - - !------------------------------------- - ! Chemically-produced OH, etc (ND43) - !------------------------------------- - - ! Number of tracers - NTRAC(43) = 4 - - ! Loop over tracers - DO T = 1, NTRAC(43) - - ! Get name and unit for each met field - SELECT CASE( T ) - CASE( 1 ) - NAME (T,43) = 'OH' - UNIT (T,43) = 'molec/cm3' - MWT (T,43) = 17e-3 - INDEX(T,43) = 1 + ( SPACING * 16 ) - CASE( 2 ) - NAME(T,43) = 'HO2' - UNIT(T,43) = 'v/v' - MWT (T,43) = 33e-3 - INDEX(T,43) = 3 + ( SPACING * 16 ) - CASE( 3 ) - NAME(T,43) = 'O1D' - UNIT(T,43) = 'molec/cm3' - MWT (T,43) = 16e-3 - INDEX(T,43) = 4 + ( SPACING * 16 ) - CASE( 4 ) - NAME(T,43) = 'O' - UNIT(T,43) = 'molec/cm3' - MWT (T,43) = 16e-3 - INDEX(T,43) = 5 + ( SPACING * 16 ) - CASE DEFAULT - ! Nothing - END SELECT - - ! Define the rest of the quantities - FNAME(T,43) = 'Chemically produced ' // TRIM( NAME(T,43) ) - SCALE(T,43) = 1e0 - ENDDO - - ENDIF ! DO_TIMESERIES - -#ifdef TOMAS - !------------------------------------- - ! Dry deposition fluxes (ND44) - ! Dry deposition velocities (ND44) - !------------------------------------- - IF ( ND44 > 0 ) THEN - - ! Loop over # of dry depositing species - DO N = 1, nDryDep + (ICOMP-IDIAG)* State_Chm%nTomasBins - - IF ( N <= nDryDep ) THEN - - !----------------------------------------------- - ! Drydep flux - !----------------------------------------------- - T = State_Chm%Map_DryDep(N) - SpcInfo => State_Chm%SpcData(T)%Info - NAME (N,44) = TRIM( SpcInfo%Name ) // 'df' - FNAME(N,44) = TRIM( SpcInfo%Name ) // ' drydep flux' - MWT (N,44) = SpcInfo%MW_g * 1.e-3_fp - SCALE(N,44) = 1.0e0 - INDEX(N,44) = T + ( SPACING * 36 ) - NTRAC(44) = NTRAC(44) + 1 - - ! For the Rn simulation, unit is kg/s (bmy, 2/22/08) - IF ( Input_Opt%ITS_A_TRACER_SIM ) THEN - UNIT(N,44) = 'kg/s' - ELSE - UNIT(N,44) = 'molec/cm2/s' - ENDIF - - !----------------------------------------------- - ! Drydep velocity - !----------------------------------------------- - NN = N + nDryDep +(ICOMP-IDIAG)*State_Chm%nTomasBins - NAME (NN,44) = TRIM( SpcInfo%Name ) // 'dv' - FNAME(NN,44) = TRIM( SpcInfo%Name ) // ' drydep velocity' - MWT (NN,44) = SpcInfo%MW_g * 1.e-3_fp - UNIT (NN,44) = 'cm/s' - SCALE(NN,44) = 1.0e0 - INDEX(NN,44) = T + ( SPACING * 37 ) - NTRAC(44) = NTRAC(44) + 1 - - ELSE - - !----------------------------------------------- - ! Drydep flux: TOMAS aerosol tracers - !----------------------------------------------- - T = id_NK01 + State_Chm%nTomasBins - 1 + ( N - nDryDep ) - SpcInfo => State_Chm%SpcData(T)%Info - - ! Drydep flux (extended deposited species) - NAME (N,44) = TRIM( SpcInfo%Name ) // 'df' - FNAME(N,44) = TRIM( SpcInfo%Name ) // ' drydep flux' - UNIT (N,44) = 'molec/cm2/s' - MWT (N,44) = SpcInfo%MW_g * 1.e-3_fp - SCALE(N,44) = 1.0e0 - INDEX(N,44) = T + ( SPACING * 36 ) - NTRAC(44) = NTRAC(44) + 1 - - !----------------------------------------------- - ! Drydep velocity all other G-C tracers - !----------------------------------------------- - NN = N + nDryDep + (ICOMP-IDIAG)* State_Chm%nTomasBins - NAME (NN,44) = TRIM( SpcInfo%Name ) // 'dv' - FNAME(NN,44) = TRIM( SpcInfo%Name ) // ' drydep velocity' - MWT (NN,44) = SpcInfo%MW_g * 1.e-3_fp - UNIT (NN,44) = 'cm/s' - SCALE(NN,44) = 1.0e0 - INDEX(NN,44) = T + ( SPACING * 37 ) - NTRAC(44) = NTRAC(44) + 1 - - ENDIF - - ENDDO - - ENDIF -#endif - - !------------------------------------- - ! Timeseries diagnostics - !------------------------------------- - IF ( DO_TIMESERIES ) THEN - - ! Number of tracers - ! Increased from 26 to 32 (mpb,2009) - NTRAC(48) = 17 - - ! Loop over tracers - DO T = 1, NTRAC(48) - - ! Define quantities - INDEX(T,48) = T + ( SPACING * 19 ) - MWT (T,48) = 0e0 - SCALE(T,48) = 1e0 - - ! Get name, long-name (and others where necessary) - SELECT CASE( T ) - CASE( 1 ) - NAME (T,48) = 'OH' - FNAME(T,48) = 'OH time series' - UNIT (T,48) = 'molec/cm3' - CASE( 2 ) - NAME (T,48) = 'NOy' - FNAME(T,48) = 'NOy time series' - UNIT (T,48) = 'ppbv' - SCALE(T,48) = 1.0e+9 - CASE( 3 ) - NAME (T,48) = 'RH' - FNAME(T,48) = 'Relative humidity' - UNIT (T,48) = '%' - CASE( 4 ) - NAME (T,48) = 'CF' - FNAME(T,48) = 'Cloud fraction' - UNIT (T,48) = 'unitless' - CASE( 5 ) - NAME (T,48) = 'ODCOL' - FNAME(T,48) = 'Cloud optical depth' - UNIT (T,48) = 'unitless' - CASE( 6 ) - NAME (T,48) = 'CThgt' - FNAME(T,48) = 'Cloud top height' - UNIT (T,48) = 'hPa' - CASE( 7 ) - NAME (T,48) = 'AIRDEN' - FNAME(T,48) = 'Air density' - UNIT (T,48) = 'molec/cm3' - CASE( 8 ) - NAME (T,48) = 'TOTSALT' - FNAME(T,48) = 'Total seasalt tracer' - UNIT (T,48) = 'ppbv' - MWT (T,48) = 36e-3 - SCALE(T,48) = 1.0e+9 - CASE( 9 ) - NAME (T,48) = 'D_LAI' - FNAME(T,48) = 'Daily LAI' - UNIT (T,48) = 'm2/m2' - CASE( 10 ) - NAME (T,48) = 'NO_SOIL' - FNAME(T,48) = 'Soil NO' - UNIT (T,48) = 'molec/cm2/s' - CASE( 11 ) - NAME (T,48) = 'NO_FERT' - FNAME(T,48) = 'Fertilizer NO' - UNIT (T,48) = 'molec/cm2/s' - CASE( 12 ) - NAME (T,48) = 'P_DRY' - FNAME(T,48) = 'Dry period' - UNIT (T,48) = 'hours' - CASE( 13 ) - NAME (T,48) = 'PFACTOR' - FNAME(T,48) = 'Pulsing factor' - UNIT (T,48) = 'unitless' - CASE( 14 ) - NAME (T,48) = 'GWET_PRV' - FNAME(T,48) = 'Soil moisture' - UNIT (T,48) = 'unitless' - CASE( 15 ) - NAME (T,48) = 'SZA' - FNAME(T,48) = 'Cosine Solar Zenith Angle' - UNIT (T,48) = 'unitless' - CASE( 16 ) - NAME (T,48) = 'GLYX' - FNAME(T,48) = 'Glyoxal time series' - UNIT (T,48) = 'molec/cm3' - CASE( 17 ) - NAME (T,48) = 'AERMASS' - FNAME(T,48) = 'Aerosol mass time series' - UNIT (T,48) = 'ug/m3' - CASE DEFAULT - ! Nothing - END SELECT - - ENDDO - ENDIF - -#ifdef TOMAS - !------------------------------------- - ! TOMAS 3-D rate (ND60) - !------------------------------------- - IF ( ND60 > 0 ) THEN - - ! # of tracers - NTRAC(60) = TMAX(60) - - ! Loop over tracers - DO T = 1, NTRAC(60) - - ! Set pointer to this species information - ! NOTE: requires 1:1 tracer index to species index mapping - SpcInfo => State_Chm%SpcData(T)%Info - - IF ( ( T .ge. id_NK01 ) .and. & - ( T .lt. id_NK01+State_Chm%nTomasBins ) ) THEN - UNIT(T,60) = 'no.' - ELSE - UNIT(T,60) = 'kg' - ENDIF - - ! Define the rest of the quantities - NAME (T,60) = SpcInfo%Name - FNAME(T,60) = 'Rates from ND60 TOMAS diagnostic' - INDEX(T,60) = T + ( SPACING * 6 ) - MWT (T,60) = 1e0 - SCALE(T,60) = 1e0 - ENDDO - - ENDIF - - !------------------------------------- - ! TOMAS 3-D rate (ND61) !(win, 7/9/09) - !------------------------------------- - IF ( ND61 > 0 ) THEN - NTRAC(61) = 2 - - ! Loop over tracers - DO T = 1, NTRAC(61) - - ! Get name and long name for each tracer - SELECT CASE( T ) - CASE( 1 ) - NAME (T,61) = 'NUC10NM' - FNAME(T,61) = 'Particle Dp>10nm formation rate' - CASE( 2 ) - NAME (T,61) = 'NUC_1NM' - FNAME(T,61) = 'Nucleation rate (cluster size)' - CASE DEFAULT - !Nothing - END SELECT - - ! Define the rest of the quantities - UNIT (T,61) = 'cm-3s-1' - INDEX(T,61) = T + ( SPACING * 7 ) - MWT (T,61) = 1e0 - SCALE(T,61) = 1e0 - ENDDO - ENDIF - - !------------------------------------- - ! Family prod & loss (ND65) - !------------------------------------- - IF ( Input_Opt%DO_SAVE_PL ) THEN - - ! Number of P/L families - NTRAC(65) = Input_Opt%NFAM - - ! Loop over each P/L family - DO T = 1, NTRAC(65) - NAME (T,65) = Input_Opt%FAM_NAME( T ) - FNAME(T,65) = TRIM( NAME(T,65) ) // ' P/L family' - INDEX(T,65) = T + ( SPACING * 17 ) - MWT (T,65) = 0e0 - SCALE(T,65) = 1e0 - - ! Unit for Tag O3 is kg/s, otherwise molec/cm3/s - IF ( Input_Opt%ITS_A_TAGO3_SIM ) THEN - UNIT(T,65) = 'kg/s' - ELSE - UNIT(T,65) = 'molec/cm3/s' - ENDIF - - ! For sulfur tracking species, use 'kg S' unit and - ! give a descriptive FNAME. (win, 8/9/09) - IF ( NAME(T,65) == 'PSO21' ) THEN - FNAME(T,65) = 'P(SO2) from DMS+OH (Online)' - UNIT(T,65) = 'kg S' - MWT(T,65) = 64e-3 - ELSE IF ( NAME(T,65) == 'PSO22' ) THEN - FNAME(T,65) = 'P(SO2) from DMS+NO3 (Online)' - UNIT(T,65) = 'kg S' - MWT(T,65) = 64e-3 - ELSE IF ( NAME(T,65) == 'PSO4' ) THEN - FNAME(T,65) = 'P(H2SO4) from SO2+OH (Online)' - UNIT(T,65) = 'kg S' - ELSE IF ( NAME(T,65) == 'PMSA' ) THEN - FNAME(T,65) = 'P(MSA) from DMS (Online)' - UNIT(T,65) = 'kg S' - ENDIF - - ENDDO - - ENDIF -#endif - - IF ( DO_TIMESERIES ) THEN - - !------------------------------------- - ! 3-D GMAO met fields (ND66) - ! also for timeseries diagnostics - !------------------------------------- - - ! Number of tracers - NTRAC(66) = 7 - - ! Loop over tracers - DO T = 1, NTRAC(66) - - ! Get name and unit for each met field - SELECT CASE( T ) - CASE( 1 ) - NAME(T,66) = 'UWND' - UNIT(T,66) = 'm/s' - CASE( 2 ) - NAME(T,66) = 'VWND' - UNIT(T,66) = 'm/s' - CASE( 3 ) - NAME(T,66) = 'TMPU' - UNIT(T,66) = 'K' - CASE( 4 ) - NAME(T,66) = 'SPHU' - UNIT(T,66) = 'g/kg' - CASE( 5 ) - NAME(T,66) = 'CMFMC' - UNIT(T,66) = 'kg/m2/s' - CASE( 6 ) - NAME(T,66) = 'DTRAIN' - UNIT(T,66) = 'kg/m2/s' - CASE( 7 ) - NAME(T,66) = 'OMEGA' - UNIT(T,66) = 'Pa/s' - CASE DEFAULT - ! Nothing - END SELECT - - ! Define the rest of the quantities - FNAME(T,66) = 'GMAO ' // TRIM( NAME(T,66) ) // ' field' - INDEX(T,66) = T + ( SPACING * 12 ) - MWT (T,66) = 0e0 - SCALE(T,66) = 1e0 - ENDDO - - !------------------------------------- - ! 2-D GMAO met fields (ND67) - !------------------------------------- - - ! Number of tracers - NTRAC(67) = 23 ! (Lin, 03/31/09) - - ! Loop over tracers - DO T = 1, NTRAC(67) - - ! Get name and unit for each met field - SELECT CASE( T ) - CASE( 1 ) - NAME(T,67) = 'HFLUX' - UNIT(T,67) = 'W/m2' - CASE( 2 ) - NAME(T,67) = 'RADSWG' - UNIT(T,67) = 'W/m2' - CASE( 3 ) - NAME(T,67) = 'PREACC' - UNIT(T,67) = 'mm/day' - CASE( 4 ) - NAME(T,67) = 'PRECON' - UNIT(T,67) = 'mm/day' - CASE( 5 ) - NAME(T,67) = 'TS' - UNIT(T,67) = 'K' - CASE( 6 ) - NAME(T,67) = 'RADSWT' - UNIT(T,67) = 'W/m2' - CASE( 7 ) - NAME(T,67) = 'USTAR' - UNIT(T,67) = 'm/s' - CASE( 8 ) - NAME(T,67) = 'Z0' - UNIT(T,67) = 'm' - CASE( 9 ) - NAME(T,67) = 'PBL' - UNIT(T,67) = 'm' - CASE( 10 ) - NAME(T,67) = 'CLDFRC' - UNIT(T,67) = 'unitless' - CASE( 11 ) - NAME(T,67) = 'U10M' - UNIT(T,67) = 'm/s' - CASE( 12 ) - NAME(T,67) = 'V10M' - UNIT(T,67) = 'm/s' - CASE( 13 ) - NAME(T,67) = 'PS_PBL' - UNIT(T,67) = 'hPa' - CASE( 14 ) - NAME(T,67) = 'ALBD' - UNIT(T,67) = 'unitless' - CASE( 15 ) - NAME(T,67) = 'PHIS' - UNIT(T,67) = 'm' - CASE( 16 ) - NAME(T,67) = 'CLDTOP' - UNIT(T,67) = 'level' - CASE( 17 ) - NAME(T,67) = 'TROPPRAW' - UNIT(T,67) = 'hPa' - CASE( 18 ) - NAME(T,67) = 'SLP' - UNIT(T,67) = 'hPa' - CASE( 19 ) - NAME(T,67) = 'TSKIN' - UNIT(T,67) = 'K' - CASE( 20 ) - NAME(T,67) = 'PARDF' - UNIT(T,67) = 'W/m2' - CASE( 21 ) - NAME(T,67) = 'PARDR' - UNIT(T,67) = 'W/m2' - CASE( 22 ) - NAME(T,67) = 'GWET' - UNIT(T,67) = 'unitless' - CASE( 23 ) - ! Add EFLUX (Lin, 05/16/08) - NAME(T,67) = 'EFLUX' - UNIT(T,67) = 'W/m2' - CASE DEFAULT - ! Nothing - END SELECT - - ! Define the rest of the quantities - FNAME(T,67) = 'GMAO ' // TRIM( NAME(T,67) ) // ' field' - INDEX(T,67) = T + ( SPACING * 11 ) - MWT (T,67) = 0e0 - SCALE(T,67) = 1e0 - ENDDO - - !------------------------------------- - ! Grid box heights and related - ! quantities (ND68) + timeseries - !------------------------------------- - - ! Number of tracers - NTRAC(68) = 8 - - ! Loop over tracers - DO T = 1, NTRAC(68) - - ! Get name and unit for each met field - SELECT CASE( T ) - CASE( 1 ) - NAME (T,68) = 'BXHEIGHT' - FNAME(T,68) = 'Grid box height' - UNIT (T,68) = 'm' - CASE( 2 ) - NAME (T,68) = 'AD' - FNAME(T,68) = 'Air mass in grid box' - UNIT (T,68) = 'kg' - CASE( 3 ) - NAME (T,68) = 'AVGW' - FNAME(T,68) = 'Mixing ratio of H2O vapor' - UNIT (T,68) = 'v/v' - CASE( 4 ) - NAME (T,68) = 'AIRNUMDEN' - FNAME(T,68) = 'Dry air number density' - UNIT (T,68) = 'molec air/cm3' - CASE( 5 ) - NAME (T,68) = 'T' - FNAME(T,68) = 'Temperature' - UNIT (T,68) = 'K' - CASE( 6 ) - NAME (T,68) = 'PMID' - FNAME(T,68) = 'Pressure at average pressure level' - UNIT (T,68) = 'hPa' - CASE( 7 ) - NAME (T,68) = 'PEDGE' - FNAME(T,68) = 'Pressure at grid box lower edge' - UNIT (T,68) = 'hPa' - CASE( 8 ) - NAME (T,68) = 'RH' - FNAME(T,68) = 'Relative humidity' - UNIT (T,68) = '%' - CASE DEFAULT - ! Nothing - END SELECT - - ! Define the rest of the quantities - INDEX(T,68) = T + ( SPACING * 24 ) - MWT (T,68) = 0e0 - SCALE(T,68) = 1e0 - ENDDO - - ENDIF ! DO_TIMERSERIES - - ! Nullify pointer - SpcInfo => NULL() - - END SUBROUTINE INIT_TRACERINFO -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: init_gamap -! -! !DESCRIPTION: Subroutine INIT\_GAMAP allocates and initializes all -! module variables. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE INIT_GAMAP( Input_Opt, State_Chm, RC ) -! -! !USES: -! - USE ErrCode_Mod - USE ERROR_MOD, ONLY : ALLOC_ERR - USE Input_Opt_Mod, ONLY : OptInput - USE State_Chm_Mod, ONLY : ChmState - USE State_Chm_Mod, ONLY : Ind_ - USE TIME_MOD, ONLY : EXPAND_DATE, GET_NHMSb, GET_NYMDb -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry State object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REVISION HISTORY: -! 22 Apr 2005 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: AS, NYMDb, NHMSb - INTEGER :: N - - !================================================================= - ! INIT_GAMAP begins here! - !================================================================= - - ! Assume success - RC = GC_SUCCESS - - ! Save from arguments to module variables - DFILE = Input_Opt%GAMAP_DIAGINFO - TFILE = Input_Opt%GAMAP_TRACERINFO - - ! Get starting date & time - NYMDb = GET_NYMDb() - NHMSb = GET_NHMSb() - - ! Replace any date/time tokens in the file names - CALL EXPAND_DATE( DFILE, NYMDb, NHMSb ) - CALL EXPAND_DATE( TFILE, NYMDb, NHMSb ) - - !================================================================= - ! Define species ID flags - !================================================================= - id_NK01 = Ind_('NK01' ) - - !================================================================= - ! Allocate module arrays - !================================================================= - - ALLOCATE( OFFSET( MAXCAT ), STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'OFFSET' ) - OFFSET = 0 - - ALLOCATE( CATEGORY( MAXCAT ), STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'CATEGORY' ) - CATEGORY = '' - - ALLOCATE( DESCRIPT( MAXCAT ), STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'DESCRIPT' ) - DESCRIPT = '' - - ALLOCATE( NTRAC( MAXDIAG ), STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'NTRAC' ) - NTRAC = 0 - - ALLOCATE( INDEX( MAXTRACER, MAXDIAG ), STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'INDEX' ) - INDEX = 0 - - ALLOCATE( MWT( MAXTRACER, MAXDIAG ), STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'MWT' ) - MWT = 0.0 - - ALLOCATE( SCALE( MAXTRACER, MAXDIAG ), STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'SCALE' ) - SCALE = 0.0 - - ALLOCATE( NAME( MAXTRACER, MAXDIAG ), STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'NAME' ) - NAME = '' - - ALLOCATE( FNAME( MAXTRACER, MAXDIAG ), STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'FNAME' ) - FNAME = '' - - ALLOCATE( UNIT( MAXTRACER, MAXDIAG ), STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'UNIT' ) - UNIT = '' - - !================================================================= - ! Initialize arrays for "diaginfo.dat" & "tracerinfo.dat" files - !================================================================= - - ! Initialize arrays for "diaginfo.dat" - CALL INIT_DIAGINFO() - - ! Initialize arrays for "tracerinfo.dat" - CALL INIT_TRACERINFO( Input_Opt, State_Chm, RC ) - - END SUBROUTINE INIT_GAMAP -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: cleanup_gamap -! -! !DESCRIPTION: Subroutine CLEANUP\_GAMAP deallocates all module arrays. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE CLEANUP_GAMAP -! -! !REVISION HISTORY: -! 25 Apr 2005 - R. Yantosca - Initial version -! 03 Aug 2010 - R. Yantosca - Added ProTeX headers -!EOP -!------------------------------------------------------------------------------ -!BOC - IF ( ALLOCATED( CATEGORY ) ) DEALLOCATE( CATEGORY ) - IF ( ALLOCATED( DESCRIPT ) ) DEALLOCATE( DESCRIPT ) - IF ( ALLOCATED( FNAME ) ) DEALLOCATE( FNAME ) - IF ( ALLOCATED( INDEX ) ) DEALLOCATE( INDEX ) - IF ( ALLOCATED( MWT ) ) DEALLOCATE( MWT ) - IF ( ALLOCATED( NAME ) ) DEALLOCATE( NAME ) - IF ( ALLOCATED( NTRAC ) ) DEALLOCATE( NTRAC ) - IF ( ALLOCATED( OFFSET ) ) DEALLOCATE( OFFSET ) - IF ( ALLOCATED( SCALE ) ) DEALLOCATE( SCALE ) - IF ( ALLOCATED( UNIT ) ) DEALLOCATE( UNIT ) - - END SUBROUTINE CLEANUP_GAMAP -!EOC -END MODULE GAMAP_MOD -#endif diff --git a/GeosCore/gc_environment_mod.F90 b/GeosCore/gc_environment_mod.F90 index 70c1af9fc..6d4b413fe 100644 --- a/GeosCore/gc_environment_mod.F90 +++ b/GeosCore/gc_environment_mod.F90 @@ -85,10 +85,6 @@ SUBROUTINE GC_Allocate_All( Input_Opt, & USE ErrCode_Mod USE Input_Opt_Mod USE State_Grid_Mod, ONLY : GrdState -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD, ONLY : Init_CMN_DIAG - USE CMN_O3_Mod, ONLY : Init_CMN_O3 -#endif IMPLICIT NONE ! @@ -157,32 +153,6 @@ SUBROUTINE GC_Allocate_All( Input_Opt, & ENDIF #endif -#ifdef BPCH_DIAG - !======================================================================= - ! THESE ROUTINES ARE ONLY USED WHEN COMPILING GEOS-CHEM w/ BPCH_DIAG=y - !======================================================================= - - ! Set dimensions in CMN_DEP_mod.F90 and allocate arrays - CALL Init_CMN_DIAG( Input_Opt, State_Grid, RC ) - - ! Trap potential errors - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered within call to "Init_CMN_DIAG"!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - - ! Initialize CMN_O3_mod.F90 - CALL Init_CMN_O3( Input_Opt, State_Grid, RC ) - - ! Trap potential errors - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered within call to "Init_CMN_O3"!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF -#endif - END SUBROUTINE GC_Allocate_All !EOC !------------------------------------------------------------------------------ @@ -443,13 +413,6 @@ SUBROUTINE GC_Init_Extra( Diag_List, Input_Opt, State_Chm, & USE Tagged_O3_Mod, ONLY : Init_Tagged_O3 USE Vdiff_Mod, ONLY : Init_Vdiff USE WetScav_Mod, ONLY : Init_WetScav -#ifdef MODEL_CLASSIC -#ifdef BPCH_DIAG - ! NOTE: Restore this call until we can remove TOMAS BPCH diagnostics - ! -- Bob Yantosca (03 Nov 2022) - USE Gamap_Mod, ONLY : Do_Gamap -#endif -#endif ! ! !INPUT PARAMETERS: ! @@ -785,33 +748,6 @@ SUBROUTINE GC_Init_Extra( Diag_List, Input_Opt, State_Chm, & ENDIF ENDIF -#ifdef MODEL_CLASSIC -#ifdef BPCH_DIAG - !================================================================= - ! These routines are only needed when compiling GEOS-Chem - ! with BPCH_DIAG=y. (bmy, 10/4/19) - !================================================================= - - !----------------------------------------------------------------- - ! Diagnostics - !----------------------------------------------------------------- - - ! Allocate and initialize variables - CALL Ndxx_Setup( Input_Opt, State_Chm, State_Grid, RC ) - - !-------------------------------------------------------------------- - ! Write out diaginfo.dat, tracerinfo.dat files for this simulation - ! - ! NOTE: Do not do this for GCHP, because this will cause a file to - ! be written out to disk for each core. - ! - ! ALSO NOTE: Eventually we will remove the ESMF_ C-preprocessor - ! but we have to keep it for the time being (bmy, 4/11/18) - !-------------------------------------------------------------------- - CALL Do_Gamap( Input_Opt, State_Chm, RC ) -#endif -#endif - IF ( Input_Opt%Verbose ) CALL DEBUG_MSG( '### a GC_INIT_EXTRA' ) END SUBROUTINE GC_Init_Extra diff --git a/GeosCore/hcoi_gc_diagn_mod.F90 b/GeosCore/hcoi_gc_diagn_mod.F90 index 269a9e40a..b0cfa425e 100644 --- a/GeosCore/hcoi_gc_diagn_mod.F90 +++ b/GeosCore/hcoi_gc_diagn_mod.F90 @@ -33,10 +33,6 @@ MODULE HCOI_GC_Diagn_Mod ! ! !USES: ! -#ifdef BPCH_DIAG - USE CMN_DIAG_Mod - USE DIAG_Mod -#endif USE HCO_Diagn_Mod USE HCO_Error_Mod @@ -137,9 +133,7 @@ SUBROUTINE HCOI_GC_Diagn_Init( Input_Opt, HcoState, ExtState, RC ) !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% !%%%% NOTE: Emissions for CH4 specialty simulations are passed to %%%% !%%%% global_ch4_mod.F90 via HEMCO diagnostics, and not directly %%%% - !%%%% from the HEMCO state pointer. Therefore, we need to make %%%% - !%%%% sure that routine DIAGN_CH4 is outside the BPCH_DIAG #if %%%% - !%%%% block. -- Bob Yantosca (25 Jan 2018) %%%% + !%%%% from the HEMCO state pointer. -- Bob Yantosca (25 Jan 2018) %%%% !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CALL Diagn_CH4( Input_Opt, HcoState, ExtState, RC ) @@ -150,14 +144,8 @@ SUBROUTINE HCOI_GC_Diagn_Init( Input_Opt, HcoState, ExtState, RC ) RETURN ENDIF - !======================================================================= - ! Define manual diagnostics - !======================================================================= - CALL Diagn_Dust ( Input_Opt, HcoState, ExtState, RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - #ifdef TOMAS - CALL Diagn_TOMAS ( Input_Opt, HcoState, ExtState, RC ) + CALL Diagn_TOMAS( Input_Opt, HcoState, ExtState, RC ) IF ( RC /= HCO_SUCCESS ) RETURN #endif @@ -677,7 +665,7 @@ SUBROUTINE Diagn_CH4( Input_Opt, HcoState, ExtState, RC ) IF ( HcoID > 0 ) THEN - ! Create diagnostic container + ! Create diagnostic container< DiagnName = 'CH4_RESERVOIRS' CALL Diagn_Create( HcoState = HcoState, & cName = TRIM( DiagnName ), & @@ -696,186 +684,6 @@ SUBROUTINE Diagn_CH4( Input_Opt, HcoState, ExtState, RC ) END SUBROUTINE Diagn_CH4 !EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Diagn_Dust -! -! !DESCRIPTION: Subroutine Diagn\_Dust initializes diagnostics for the -! mineral dust aerosols (ND06). -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Diagn_Dust( Input_Opt, HcoState, ExtState, RC ) -! -! !USES: -! - USE CMN_SIZE_Mod, ONLY : NDSTBIN - USE HCO_ExtList_Mod, ONLY : GetExtNr - USE HCO_State_Mod, ONLY : HCO_State - USE HCOX_State_Mod, ONLY : Ext_State - USE Input_Opt_Mod, ONLY : OptInput -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(OptInput), INTENT(INOUT) :: Input_Opt ! Input opts - TYPE(HCO_State), POINTER :: HcoState ! HEMCO state object - TYPE(EXT_State), POINTER :: ExtState ! Extensions state object - INTEGER, INTENT(INOUT) :: RC ! Failure or success -! -! !REMARKS: -! Split off code from HCOI_GC_Diagn_Init into smaller routines in order to -! make the code more manageable. -! -! !REVISION HISTORY: -! 20 Aug 2014 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - LOGICAL :: Is_DustDead - LOGICAL :: Is_DustGinoux - INTEGER :: ExtNr, Cat, HcoID, I, N - CHARACTER(LEN=1) :: ISTR1 - CHARACTER(LEN=2) :: ISTR2 - CHARACTER(LEN=15) :: SpcName - CHARACTER(LEN=31) :: DiagnName - CHARACTER(LEN=255) :: MSG - CHARACTER(LEN=255) :: LOC = 'DIAGN_DUST (hcoi_gc_diagn_mod.F90)' - - !======================================================================= - ! DIAGN_DUST begins here! - !======================================================================= - - ! Assume success - RC = HCO_SUCCESS - -#ifdef BPCH_DIAG - - ! Exit if we are doing a specialty simulation w/o dust - IF ( ( .not. Input_Opt%ITS_A_FULLCHEM_SIM ) .and. & - ( .not. Input_Opt%ITS_AN_AEROSOL_SIM ) ) THEN - RETURN - ENDIF - - ! Now use local LOGICAL variables to save ExtState%DustDead and - ! ExtState%DustGinoux. This will make sure these variables are - ! cast to LOGICAL, so that we can compare them in the same IF - ! statement. Otherwise GNU Fortran will choke. (bmy, 10/25/16) - Is_DustDead = ( ExtState%DustDead > 0 ) - Is_DustGinoux = ( ExtState%DustGinoux > 0 ) - - ! Define diagnostics if dust is used - IF ( Input_Opt%ND06 > 0 ) THEN - - ! Get Ext. Nr - IF ( Is_DustDead ) THEN - ExtNr = GetExtNr( HcoState%Config%ExtList, 'DustDead' ) - Cat = -1 - ELSEIF ( Is_DustGinoux ) THEN - ExtNr = GetExtNr( HcoState%Config%ExtList, 'DustGinoux' ) - Cat = -1 - ELSE - ! Use offline dust emissions - ExtNr = 0 - Cat = CATEGORY_NATURAL - ENDIF - - ! Do for each dust bin - DO I = 1, NDSTBIN - -#ifdef TOMAS - - ! Get species name (i.e. DUST01 .. DUST40) for TOMAS simulatiosn - IF ( I < 10 ) THEN - WRITE( ISTR1,'(i1)' ) I - SpcName = 'DUST' // ISTR1 - ELSE - WRITE( ISTR2,'(i2)' ) I - SpcName = 'DUST' // ISTR2 - ENDIF -#else - - ! Get species name (i.e. DST1 .. DST4) for non TOMAS simualtions - WRITE( ISTR1,'(i1)' ) I - SpcName = 'DST' // ISTR1 - -#endif - - DiagnName = 'AD06_' // TRIM( SpcName ) - - ! HEMCO species ID - HcoID = GetHemcoId( TRIM( SpcName ), HcoState, LOC, RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - - ! Create diagnostic container - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - - ENDDO - - ! Add diagnostics for dust alkalinity - IF ( Input_Opt%LDSTUP ) THEN - - ! Get Ext. Nr of used extension - ExtNr = GetExtNr( HcoState%Config%ExtList, 'DustAlk' ) - IF ( ExtNr <= 0 ) THEN - CALL HCO_Error( 'Cannot find dust alk extension', RC, & - THISLOC=LOC ) - RETURN - ENDIF - - ! Do for each dust bin - DO I = 1, NDSTBIN - - ! Get species name (i.e. DSTAL1 .. DSTAL4) - WRITE( ISTR1,'(i1)' ) I - SpcName = 'DSTAL' // ISTR1 - DiagnName = 'AD06_' // TRIM( SpcName ) - - ! HEMCO species ID - HcoID = GetHemcoId( TRIM( SpcName ), HcoState, LOC, RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - - ! Create diagnostic container - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = -1, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDDO - ENDIF - - ENDIF -#endif - - END SUBROUTINE Diagn_Dust -!EOC #ifdef TOMAS !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! diff --git a/GeosCore/initialize.F90 b/GeosCore/initialize.F90 deleted file mode 100644 index 8fd15b9c4..000000000 --- a/GeosCore/initialize.F90 +++ /dev/null @@ -1,138 +0,0 @@ -#ifdef BPCH_DIAG -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !ROUTINE: initialize.F90 -! -! !DESCRIPTION: Subroutine INITIALIZE does the following: -! -! \begin{enumerate} -! \item Zeroes globally defined GEOS-CHEM variables. -! \item Zeroes accumulating diagnostic arrays. -! \item Resets certain year/month/day and counter variables used -! in GEOS-Chem diagnostic subroutines. -! \end{enumerate} -! -! !INTERFACE: -! -SUBROUTINE INITIALIZE( Input_Opt, State_Grid, IFLAG, RC ) -! -! !USES: -! - USE CMN_DIAG_MOD - USE DIAG_MOD - USE ErrCode_Mod - USE ERROR_MOD - USE Input_Opt_Mod, ONLY : OptInput - USE Precision_Mod - USE State_Grid_Mod, ONLY : GrdState - USE TIME_MOD - - IMPLICIT NONE -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - - ! If IFLAG=1, zero global CTM arrays - ! If IFLAG=2, zero accumulating diagnostic arrays - ! If IFLAG=3, zero accumulating diagnostic counters - INTEGER, INTENT(IN) :: IFLAG -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REMARKS: -! Eventually we will fold this into "diag_mod.f" in a cleaner, -! more consistent fashion. Think about this later (bmy, 11/14/02) -! -! !REVISION HISTORY: -! 15 Jun 1998 - M. Prather - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - !================================================================= - ! INITIALIZE begins here! - !================================================================= - - ! Assume success - RC = GC_SUCCESS - - ! Error condition if IFLAG does not equal 2, or 3! - IF ( IFLAG < 2 .or. IFLAG > 3 ) THEN - CALL ERROR_STOP( 'Invalid IFLAG!', 'initialize.f' ) - ENDIF - - !================================================================= - ! If IFLAG=2 then zero the accumulating arrays - !================================================================= - IF ( IFLAG == 2 ) THEN - - ! Allocatable arrays are zeroed only if their - ! respective diagnostics are turned on (bmy, 2/17/00) - -#ifdef TOMAS - !------------------------------ - ! TOMAS-specific diagnostics - !------------------------------ - IF ( ND44 > 0 ) AD44 = 0e0 ! netcdf DRYDEP diag group - - IF ( ND59 > 0 ) THEN - AD59_NUMB = 0e0 - AD59_SULF = 0e0 - AD59_SALT = 0e0 - AD59_ECIL = 0e0 - AD59_ECOB = 0e0 - AD59_OCIL = 0e0 - AD59_OCOB = 0e0 - AD59_DUST = 0e0 - ENDIF - - IF ( ND60 > 0 ) THEN - AD60_COND = 0e0 - AD60_COAG = 0e0 - AD60_NUCL = 0e0 - AD60_AQOX = 0e0 - AD60_ERROR = 0e0 - AD60_SOA = 0e0 - ENDIF - - IF ( ND61 > 0 ) AD61 = 0e0 -#endif - - ! Echo output - IF ( Input_Opt%amIRoot ) THEN - WRITE( 6, '(a)' ) ' - INITIALIZE: Diag arrays zeroed!' - ENDIF - ENDIF - - !================================================================= - ! If IFLAG=3 then zero the counter variables & arrays - !================================================================= - IF ( IFLAG == 3 ) THEN - - ! Now reset timesteps here for now - CALL SET_CT_CHEM( RESET=.TRUE. ) - CALL SET_CT_RAD ( RESET=.TRUE. ) - CALL SET_CT_CONV( RESET=.TRUE. ) - CALL SET_CT_DYN( RESET=.TRUE. ) - CALL SET_CT_EMIS( RESET=.TRUE. ) - CALL SET_CT_DIAG( RESET=.TRUE. ) - - ! Echo output - IF ( Input_Opt%amIRoot ) THEN - WRITE( 6, '(a)' ) ' - INITIALIZE: Diag counters zeroed!' - ENDIF - ENDIF - -END SUBROUTINE INITIALIZE -!EOC -#endif diff --git a/GeosCore/input_mod.F90 b/GeosCore/input_mod.F90 index ae4053b30..9cabbe48b 100644 --- a/GeosCore/input_mod.F90 +++ b/GeosCore/input_mod.F90 @@ -321,65 +321,6 @@ SUBROUTINE Read_Input_File( Input_Opt, State_Grid, RC ) RETURN ENDIF -#ifdef BPCH_DIAG - ! GAMAP metadata files - ! (Skip if we are connecting to an external model) - CALL Config_Gamap( Config, Input_Opt, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error in "Config_Gamap"!' - CALL GC_Error( errMsg, RC, thisLoc ) - CALL QFYAML_CleanUp( Config ) - CALL QFYAML_CleanUp( ConfigAnchored ) - RETURN - ENDIF - - ! ND51 timeseries - ! (Skip if we are connecting to an external model) - CALL Config_ND51( Config, Input_Opt, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error in "Config_ND51"!' - CALL GC_Error( errMsg, RC, thisLoc ) - CALL QFYAML_CleanUp( Config ) - CALL QFYAML_CleanUp( ConfigAnchored ) - RETURN - ENDIF - - ! ND51b timeseries - ! (Skip if we are connecting to an external model) - CALL Config_ND51b( Config, Input_Opt, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error in "Config_ND51b"!' - CALL GC_Error( errMsg, RC, thisLoc ) - CALL QFYAML_CleanUp( Config ) - CALL QFYAML_CleanUp( ConfigAnchored ) - RETURN - ENDIF - - ! Bpch diagnostic output - ! (Skip if we are connecting to an external model) - CALL Config_Bpch_Output( Config, Input_Opt, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error in "Config_Bpch_Output"!' - CALL GC_Error( errMsg, RC, thisLoc ) - CALL QFYAML_CleanUp( Config ) - CALL QFYAML_CleanUp( ConfigAnchored ) - RETURN - ENDIF - -#ifdef TOMAS - ! Bpch prod & loss -- only needed for TOMAS - ! (Skip if we are connecting to an external model) - CALL Config_Bpch_ProdLoss( Config, Input_Opt, RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error in "Config_Bpch_ProdLoss"!' - CALL GC_Error( errMsg, RC, thisLoc ) - CALL QFYAML_CleanUp( Config ) - CALL QFYAML_CleanUp( ConfigAnchored ) - RETURN - ENDIF -#endif -#endif - !======================================================================== ! Check GEOS-CHEM timesteps ! NOTE: Skip for GCHP/GEOS, as this is called from GCHP_Chunk_Run @@ -850,14 +791,6 @@ SUBROUTINE Config_Simulation( Config, Input_Opt, RC ) ! Set the current time CALL Set_Current_Time() -#ifdef BPCH_DIAG - !------------------------------------------------------------------------ - ! Set the start of the 1st diagnostic interval - ! Only applies when GEOS-Chem is configured with -DBPCH_DIAG=y - !------------------------------------------------------------------------ - CALL Set_DiagB( GET_TAU() ) -#endif - #endif !======================================================================== @@ -1411,7 +1344,7 @@ SUBROUTINE Config_Transport( Config, Input_Opt, RC ) ! !USES: ! USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput, Set_Input_Opt_Advect + USE Input_Opt_Mod, ONLY : OptInput ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1597,9 +1530,6 @@ SUBROUTINE Config_Transport( Config, Input_Opt, RC ) Input_Opt%LSPLIT = .FALSE. ENDIF - ! Initialize arrays in Input_Opt that depend on N_ADVECT - CALL Set_Input_Opt_Advect( Input_Opt, RC ) - END SUBROUTINE Config_Transport !EOC !------------------------------------------------------------------------------ @@ -3543,240 +3473,6 @@ SUBROUTINE Config_DryDep_WetDep( Config, Input_Opt, RC ) END SUBROUTINE Config_DryDep_WetDep !!EOC #if !(defined( EXTERNAL_GRID ) || defined( EXTERNAL_FORCING )) -#ifdef BPCH_DIAG -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: config_gamap -! -! !DESCRIPTION: Copies GAMAP information from the Config object -! to Input_Opt, and does necessary checks. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Config_Gamap( Config, Input_Opt, RC ) -! -! !USES: -! - USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(QFYAML_t), INTENT(INOUT) :: Config ! YAML Config object - TYPE(OptInput), INTENT(INOUT) :: Input_Opt ! Input Options object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure -! -! !REVISION HISTORY: -! 25 Apr 2005 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - ! Strings - CHARACTER(LEN=255) :: thisLoc - CHARACTER(LEN=512) :: errMsg - CHARACTER(LEN=QFYAML_NamLen) :: key - CHARACTER(LEN=QFYAML_StrLen) :: v_str - - !======================================================================== - ! Config_Gamap begins here! - !======================================================================== - - ! Initialize - RC = GC_SUCCESS - errMsg = '' - thisLoc = ' -> at Config_Gamap (in module GeosCore/input_mod.F90)' - - !------------------------------------------------------------------------ - ! diaginfo.dat - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%gamap%diaginfo_dat_file" - v_str = MISSING_STR - CALL QFYAML_Add_Get( Config, TRIM( key ), v_str, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%GAMAP_DIAGINFO = TRIM( ADJUSTL( v_str ) ) - - !------------------------------------------------------------------------ - ! tracerinfo.dat - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%gamap%tracerinfo_dat_file" - v_str = MISSING_STR - CALL QFYAML_Add_Get( Config, TRIM( key ), v_str, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%GAMAP_TRACERINFO = TRIM( ADJUSTL( v_str ) ) - - !======================================================================== - ! Print to screen - !======================================================================== - IF ( Input_Opt%amIRoot ) THEN - WRITE( 6, '(/,a)' ) 'GAMAP SETTINGS (when -DBPCH_DIAG=y)' - WRITE( 6, '( a)' ) '-----------------------------------' - WRITE( 6, '(a,a)' ) 'GAMAP "diaginfo.dat" file : ', & - TRIM( Input_Opt%GAMAP_DIAGINFO ) - WRITE( 6, '(a,a)' ) 'GAMAP "tracerinfo.dat" file : ', & - TRIM( Input_Opt%GAMAP_TRACERINFO ) - ENDIF - - END SUBROUTINE Config_Gamap -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: config_bpch_output - -! !DESCRIPTION: Copies bpch output information from the Config object -! to Input_Opt, and does necessary checks. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Config_Bpch_Output( Config, Input_Opt, RC ) -! -! !USES: -! - USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput - USE QFYAML_Mod, ONLY : QFYAML_t -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(QFYAML_t), INTENT(INOUT) :: Config ! YAML Config object - TYPE(OptInput), INTENT(INOUT) :: Input_Opt ! Input options -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure -! -! !REVISION HISTORY: -! 20 Jul 2004 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - INTEGER :: N - INTEGER :: v_int - - ! Strings - CHARACTER(LEN=255) :: thisLoc - CHARACTER(LEN=512) :: errMsg - CHARACTER(LEN=QFYAML_NamLen) :: key - CHARACTER(LEN=QFYAML_StrLen) :: v_str - - ! String arrays - CHARACTER(LEN=3) :: mon(12)= (/'JAN', 'FEB', 'MAR', 'APR', & - 'MAY', 'JUN', 'JUL', 'AUG', & - 'SEP', 'OCT', 'NOV', 'DEC'/) - - !======================================================================== - ! Config_Bpch_Output begins here! - !======================================================================== - - ! Initialize - RC = GC_SUCCESS - errMsg = '' - thisLoc = ' -> at Config_Bpch_Output (in module GeosCore/input_mod.F90)' - - !======================================================================== - ! Read data into the Input_Opt%NJDAY array - !======================================================================== - DO N = 1, 12 - - key = "extra_diagnostics%legacy_bpch%output_menu%" // & - "schedule_output_for_" // mon(N) - v_str = MISSING_STR - CALL QFYAML_Add_Get( Config, TRIM( key ), v_str, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - - ! Parse string into NJDAY array by month - SELECT CASE( N ) - CASE( 1 ) - READ( v_str, '(31i1)' ) Input_Opt%NJDAY(1:31) - CASE( 2 ) - READ( v_str, '(29i1)' ) Input_Opt%NJDAY(32:60) - CASE( 3 ) - READ( v_str, '(31i1)' ) Input_Opt%NJDAY(61:91) - CASE( 4 ) - READ( v_str, '(30i1)' ) Input_Opt%NJDAY(92:121) - CASE( 5 ) - READ( v_str, '(31i1)' ) Input_Opt%NJDAY(122:152) - CASE( 6 ) - READ( v_str, '(30i1)' ) Input_Opt%NJDAY(153:182) - CASE( 7 ) - READ( v_str, '(31i1)' ) Input_Opt%NJDAY(183:213) - CASE( 8 ) - READ( v_str, '(31i1)' ) Input_Opt%NJDAY(214:244) - CASE( 9 ) - READ( v_str, '(30i1)' ) Input_Opt%NJDAY(245:274) - CASE( 10 ) - READ( v_str, '(31i1)' ) Input_Opt%NJDAY(275:305) - CASE( 11 ) - READ( v_str, '(30i1)' ) Input_Opt%NJDAY(306:335) - CASE( 12 ) - READ( v_str, '(31i1)' ) Input_Opt%NJDAY(336:366) - END SELECT - ENDDO - - !================================================================= - ! Print to screen - !================================================================= - IF( Input_Opt%amIRoot ) THEN - WRITE( 6, '(/,a)' ) 'BPCH OUTPUT SETTINGS' - WRITE( 6, '( a)' ) '--------------------' - WRITE( 6, 110 ) - WRITE( 6, 120 ) - WRITE( 6, 130 ) - WRITE( 6, 140 ) Input_Opt%NJDAY - ENDIF - - ! FORMAT statements -110 FORMAT( ' 1111111111222222222233' ) -120 FORMAT( ' 1234567890123456789012345678901' ) -130 FORMAT( ' -------------------------------' ) -140 FORMAT( 'JAN--', 31i1, /, 'FEB--', 29i1, /, 'MAR--', 31i1, /, & - 'APR--', 30i1, /, 'MAY--', 31i1, /, 'JUN--', 30i1, /, & - 'JUL--', 31i1, /, 'AUG--', 31i1, /, 'SEP--', 30i1, /, & - 'OCT--', 31i1, /, 'NOV--', 30i1, /, 'DEC--', 31i1 ) - - ! Make sure we have output at end of run - CALL IS_LAST_DAY_GOOD( Input_Opt, RC ) - - ! Trap potential errors - IF ( RC /= GC_SUCCESS ) THEN - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - - END SUBROUTINE Config_Bpch_Output -!EOC -#endif !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ @@ -4073,28 +3769,25 @@ SUBROUTINE Config_ObsPack( Config, Input_Opt, RC ) END SUBROUTINE Config_ObsPack !EOC #if !(defined( EXTERNAL_GRID ) || defined( EXTERNAL_FORCING )) -#ifdef BPCH_DIAG -!EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: config_nd51 +! !IROUTINE: config_Hg ! -! !DESCRIPTION: Copies ND51 satellite diagnostic information from the Config -! object to Input_Opt, and does necessary checks. +! !DESCRIPTION: Copies Hg simulation information from the Config object +! to Input_Opt, and does necessary checks. !\\ !\\ ! !INTERFACE: ! - SUBROUTINE Config_ND51( Config, Input_Opt, RC ) + SUBROUTINE Config_Hg( Config, Input_Opt, RC ) ! ! !USES: ! USE ErrCode_Mod USE Input_Opt_Mod, ONLY : OptInput - USE RoundOff_Mod, ONLY : Cast_and_RoundOff ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -4111,11 +3804,8 @@ SUBROUTINE Config_ND51( Config, Input_Opt, RC ) ! !LOCAL VARIABLES: ! ! Scalars - LOGICAL :: v_bool INTEGER :: N - - ! Arrays - INTEGER :: a_int(QFYAML_MaxArr) + LOGICAL :: v_bool ! Strings CHARACTER(LEN=255) :: thisLoc @@ -4123,23 +3813,19 @@ SUBROUTINE Config_ND51( Config, Input_Opt, RC ) CHARACTER(LEN=QFYAML_NamLen) :: key CHARACTER(LEN=QFYAML_StrLen) :: v_str - ! String arrays - CHARACTER(LEN=QFYAML_StrLen) :: a_str(QFYAML_MaxArr) - - - !======================================================================== - ! Config_ND51 begins here! - !======================================================================== + !================================================================= + ! Config_Hg begins here! + !================================================================= ! Initialize RC = GC_SUCCESS errMsg = '' - thisLoc = ' -> at Config_ND51 (in module GeosCore/input_mod.F90)' + thisLoc = ' -> at Config_Hg (in module GeosCore/input_mod.F90)' !------------------------------------------------------------------------ - ! Turn on ND51 diagnostic + ! Use dynamic ocean Hg? !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51_satellite%activate" + key = "Hg_simulation_options%sources%use_dynamic_ocean_Hg" v_bool = MISSING_BOOL CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) IF ( RC /= GC_SUCCESS ) THEN @@ -4147,683 +3833,53 @@ SUBROUTINE Config_ND51( Config, Input_Opt, RC ) CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF - Input_Opt%DO_ND51 = v_bool + Input_Opt%LDYNOCEAN = v_bool !------------------------------------------------------------------------ - ! Instantaneous 3-D timeseries file + ! Use preindustrial Hg? !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51_satellite%output_file" - v_str = MISSING_STR - CALL QFYAML_Add_Get( Config, key, v_str, "", RC ) + key = "Hg_simulation_options%sources%use_preindustrial_Hg" + v_bool = MISSING_BOOL + CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error parsing ' // TRIM( key ) // '!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF - Input_Opt%ND51_FILE = TRIM( v_str ) + Input_Opt%LPREINDHG = v_bool !------------------------------------------------------------------------ - ! Tracers to include + ! Use arctic river Hg? !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51_satellite%tracers" - a_int = MISSING_INT - CALL QFYAML_Add_Get( Config, key, a_int, "", RC, dynamic_size=.TRUE. ) + key = "Hg_simulation_options%sources%use_arctic_river_Hg" + v_bool = MISSING_BOOL + CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error parsing ' // TRIM( key ) // '!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF - DO N = 1, SIZE( a_int ) - IF ( a_int(N) == MISSING_INT ) EXIT - Input_Opt%ND51_TRACERS(N) = a_int(N) - ENDDO - Input_Opt%N_ND51 = N - 1 + Input_Opt%LARCTICRIV = v_bool !------------------------------------------------------------------------ - ! NHMS_WRITE + ! Tie Hg2(aq) reduction to UV-B radiation? !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51_satellite%UTC_hour_for_write" - v_str = MISSING_STR - CALL QFYAML_Add_Get( Config, key, v_str, "", RC ) + key = "Hg_simulation_options%chemistry%tie_HgIIaq_reduction_to_UVB" + v_bool = MISSING_BOOL + CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error parsing ' // TRIM( key ) // '!' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF - Input_Opt%ND51_HR_WRITE = Cast_and_RoundOff( v_str, places=2 ) - - ! Make sure ND51_HR_WRITE is in the range 0-23.999 hrs - Input_Opt%ND51_HR_WRITE = MOD( Input_Opt%ND51_HR_WRITE, 24.0_fp ) + Input_Opt%LKRedUV = v_bool !------------------------------------------------------------------------ - ! HR1, HR2 - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51_satellite%averaging_period_in_LT" - a_str = MISSING_STR - CALL QFYAML_Add_Get( Config, key, a_str, "", RC, dynamic_size=.TRUE. ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%ND51_HR1 = Cast_and_RoundOff( a_str(1), places=2 ) - Input_Opt%ND51_HR2 = Cast_and_RoundOff( a_str(2), places=2 ) - - !------------------------------------------------------------------------ - ! IMIN, IMAX - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51_satellite%IMIN_and_IMAX_of_region" - a_int = MISSING_INT - CALL QFYAML_Add_Get( Config, key, a_int, "", RC, dynamic_size=.TRUE. ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%ND51_IMIN = a_int(1) - Input_Opt%ND51_IMAX = a_int(2) - - !------------------------------------------------------------------------ - ! JMIN, JMAX - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51_satellite%JMIN_and_JMAX_of_region" - a_int = MISSING_INT - CALL QFYAML_Add_Get( Config, key, a_int, "", RC, dynamic_size=.TRUE. ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%ND51_JMIN = a_int(1) - Input_Opt%ND51_JMAX = a_int(2) - - !------------------------------------------------------------------------ - ! LMIN, LMAX - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51_satellite%LMIN_and_LMAX_of_region" - a_int = MISSING_INT - CALL QFYAML_Add_Get( Config, key, a_int, "", RC, dynamic_size=.TRUE. ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%ND51_LMIN = a_int(1) - Input_Opt%ND51_LMAX = a_int(2) - - !======================================================================== - ! Print to screen - !======================================================================== - IF ( Input_Opt%amIRoot ) THEN - WRITE( 6,90 ) 'ND51 TIMESERIES SETTINGS (when -DBPCH_DIAG=y)' - WRITE( 6,95 ) '---------------------------------------------' - WRITE( 6,100 ) 'Turn on ND51 timeseries? : ', Input_Opt%DO_ND51 - WRITE( 6,110 ) 'ND51 timeseries file name : ', & - TRIM( Input_Opt%ND51_FILE ) - WRITE( 6,120 ) 'ND51 timeseries tracers : ', & - ( Input_Opt%ND51_TRACERS(N), N=1, Input_Opt%N_ND51 ) - WRITE( 6,140 ) 'ND51 hour to write to disk : ', Input_Opt%ND51_HR_WRITE - WRITE( 6,140 ) 'ND51 averaging period [GMT] : ', Input_Opt%ND51_HR1, & - Input_Opt%ND51_HR2 - WRITE( 6,130 ) 'ND51 longitude limits : ', Input_Opt%ND51_IMIN, & - Input_Opt%ND51_IMAX - WRITE( 6,130 ) 'ND51 latitude limits : ', Input_Opt%ND51_JMIN, & - Input_Opt%ND51_JMAX - WRITE( 6,130 ) 'ND51 altitude limits : ', Input_Opt%ND51_LMIN, & - Input_Opt%ND51_LMAX - ENDIF - - ! FORMAT statements -90 FORMAT( /, A ) -95 FORMAT( A ) -100 FORMAT( A, L5 ) -110 FORMAT( A, A ) -120 FORMAT( A, 100I4 ) -130 FORMAT( A, 2I5 ) -140 FORMAT( A, 2F5.1 ) - - END SUBROUTINE Config_Nd51 -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: config_nd51b -! -! !DESCRIPTION: Copies ND51b satellite diagnostic information from the Config -! object to Input_Opt, and does necessary checks. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Config_ND51b( Config, Input_Opt, RC ) -! -! !USES: -! - USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput - USE RoundOff_Mod, ONLY : Cast_and_RoundOff -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(QFYAML_t), INTENT(INOUT) :: Config ! YAML Config object - TYPE(OptInput), INTENT(INOUT) :: Input_Opt ! Input Options object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - LOGICAL :: v_bool - INTEGER :: N - - ! Arrays - INTEGER :: a_int(QFYAML_MaxArr) - - ! Strings - CHARACTER(LEN=255) :: thisLoc - CHARACTER(LEN=255) :: errMsg - CHARACTER(LEN=QFYAML_NamLen) :: key - CHARACTER(LEN=QFYAML_StrLen) :: v_str - - ! String arrays - CHARACTER(LEN=QFYAML_StrLen) :: a_str(QFYAML_MaxArr) - - !======================================================================== - ! Config_ND51b begins here! - !======================================================================== - - ! Initialize - RC = GC_SUCCESS - errMsg = '' - thisLoc = ' -> at Config_ND51b (in module GeosCore/input_mod.F90)' - - !------------------------------------------------------------------------ - ! Turn on ND51b diagnostic - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51b_satellite%activate" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%DO_ND51b = v_bool - - !------------------------------------------------------------------------ - ! Instantaneous 3-D timeseries file - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51b_satellite%output_file" - v_str = MISSING_STR - CALL QFYAML_Add_Get( Config, key, v_str, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%ND51b_FILE = TRIM( v_str ) - - !------------------------------------------------------------------------ - ! Tracers to include - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51b_satellite%tracers" - a_int = MISSING_INT - CALL QFYAML_Add_Get( Config, key, a_int, "", RC, dynamic_size=.TRUE. ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - DO N = 1, SIZE( a_int ) - IF ( a_int(N) == MISSING_INT ) EXIT - Input_Opt%ND51b_TRACERS(N) = a_int(N) - ENDDO - Input_Opt%N_ND51b = N - 1 - - !------------------------------------------------------------------------ - ! NHMS_WRITE - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51b_satellite%UTC_hour_for_write" - v_str = MISSING_STR - CALL QFYAML_Add_Get( Config, key, v_str, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%ND51b_HR_WRITE = Cast_and_RoundOff( v_str, places=2 ) - - ! Make sure ND51b_HR_WRITE is in the range 0-23.999 hrs - Input_Opt%ND51b_HR_WRITE = MOD( Input_Opt%ND51b_HR_WRITE, 24.0_fp ) - - !------------------------------------------------------------------------ - ! HR1, HR2 - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51b_satellite%averaging_period_in_LT" - a_str = MISSING_STR - CALL QFYAML_Add_Get( Config, key, a_str, "", RC, dynamic_size=.TRUE. ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%ND51b_HR1 = Cast_and_RoundOff( a_str(1), places=2 ) - Input_Opt%ND51b_HR2 = Cast_and_RoundOff( a_str(2), places=2 ) - - !------------------------------------------------------------------------ - ! IMIN, IMAX - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51b_satellite%IMIN_and_IMAX_of_region" - a_int = MISSING_INT - CALL QFYAML_Add_Get( Config, key, a_int, "", RC, dynamic_size=.TRUE. ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%ND51b_IMIN = a_int(1) - Input_Opt%ND51b_IMAX = a_int(2) - - !------------------------------------------------------------------------ - ! JMIN, JMAX - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51b_satellite%JMIN_and_JMAX_of_region" - a_int = MISSING_INT - CALL QFYAML_Add_Get( Config, key, a_int, "", RC, dynamic_size=.TRUE. ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%ND51b_JMIN = a_int(1) - Input_Opt%ND51b_JMAX = a_int(2) - - !------------------------------------------------------------------------ - ! LMIN, LMAX - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%ND51b_satellite%LMIN_and_LMAX_of_region" - a_int = MISSING_INT - CALL QFYAML_Add_Get( Config, key, a_int, "", RC, dynamic_size=.TRUE. ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%ND51b_LMIN = a_int(1) - Input_Opt%ND51b_LMAX = a_int(2) - - !======================================================================== - ! Print to screen - !======================================================================== - IF ( Input_Opt%amIRoot ) THEN - WRITE( 6,90 ) 'ND51b TIMESERIES SETTINGS (when -DBPCH_DIAG=y)' - WRITE( 6,95 ) '----------------------------------------------' - WRITE( 6,100 ) 'Turn on ND51b timeseries? : ', Input_Opt%DO_ND51b - WRITE( 6,110 ) 'ND51b timeseries file name : ', & - TRIM( Input_Opt%ND51b_FILE ) - WRITE( 6,120 ) 'ND51b timeseries tracers : ', & - ( Input_Opt%ND51b_TRACERS(N), N=1, Input_Opt%N_ND51b ) - WRITE( 6,140 ) 'ND51b hour to write to disk : ', Input_Opt%ND51b_HR_WRITE - WRITE( 6,140 ) 'ND51b averaging period [GMT]: ', Input_Opt%ND51b_HR1, & - Input_Opt%ND51b_HR2 - WRITE( 6,130 ) 'ND51b longitude limits : ', Input_Opt%ND51b_IMIN,& - Input_Opt%ND51b_IMAX - WRITE( 6,130 ) 'ND51b latitude limits : ', Input_Opt%ND51b_JMIN,& - Input_Opt%ND51b_JMAX - WRITE( 6,130 ) 'ND51b altitude limits : ', Input_Opt%ND51b_LMIN,& - Input_Opt%ND51b_LMAX - ENDIF - - ! FORMAT statements -90 FORMAT( /, A ) -95 FORMAT( A ) -100 FORMAT( A, L5 ) -110 FORMAT( A, A ) -120 FORMAT( A, 100I4 ) -130 FORMAT( A, 2I5 ) -140 FORMAT( A, 2F5.1 ) - - END SUBROUTINE Config_Nd51b -#ifdef TOMAS -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: config_bpch_prodloss - -! !DESCRIPTION: Copies bpch prodloss information from the Config object -! to Input_Opt, and does necessary checks. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Config_Bpch_ProdLoss( Config, Input_Opt, RC ) -! -! !USES: -! - USE ErrCode_Mod - USE CMN_DIAG_MOD, ONLY : ND65 - USE gckpp_Monitor, ONLY : Fam_Names - USE gckpp_Parameters, ONLY : nFam - USE Input_Opt_Mod, ONLY : OptInput - USE QFYAML_Mod, ONLY : QFYAML_t -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(QFYAML_t), INTENT(INOUT) :: Config ! YAML Config object - TYPE(OptInput), INTENT(INOUT) :: Input_Opt ! Input options -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure -! -! !REVISION HISTORY: -! 20 Jul 2004 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - LOGICAL :: v_bool - INTEGER :: v_int, F, N, n_Advect - - ! Strings - CHARACTER(LEN=255) :: thisLoc - CHARACTER(LEN=512) :: errMsg - CHARACTER(LEN=QFYAML_NamLen) :: key - CHARACTER(LEN=QFYAML_StrLen) :: v_str - - ! Arrays -! CHARACTER(LEN=255) :: SUBSTRS(MAXDIM) - - !========================================================================= - ! Config_Bpch_ProdLoss begins here! - !========================================================================= - - ! Initialize - RC = GC_SUCCESS - errMsg = 'Error reading the "geoschem_config.yml" file!' - thisLoc = ' -> at Config_Bpch_ProdLoss (in module GeosCore/input_mod.F90)' - - !------------------------------------------------------------------------ - ! Activate bpch ND65 diagnostic? - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%bpch_diagnostics%" // & - "ND65_prodloss%activate" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%DO_SAVE_PL = v_bool - - !------------------------------------------------------------------------ - ! Number of levels for ND65 bpch diagnostic - !------------------------------------------------------------------------ - key = "extra_diagnostics%legacy_bpch%bpch_diagnostics%" // & - "ND65_prodloss%number_of_levels" - v_int = MISSING_INT - CALL QFYAML_Add_Get( Config, key, v_int, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%ND65 = v_int - - ! Copy field to variable in CMN_DIAG - ND65 = Input_Opt%ND65 - - !================================================================= - ! Error check families for certain types of simulations - !================================================================= - - ! Offline aerosol -- turn off DO_SAVE_PL - IF ( Input_Opt%ITS_AN_AEROSOL_SIM ) THEN - Input_Opt%DO_SAVE_PL = .FALSE. - Input_Opt%ND65 = 0 - ENDIF - - !================================================================= - ! Set fields of Input Options object - !================================================================= - - ! Number of advected species - N_ADVECT = Input_Opt%N_ADVECT - - IF ( Input_Opt%DO_SAVE_PL ) THEN - IF ( Input_Opt%ITS_A_FULLCHEM_SIM ) THEN - ! Fullchem - Obtain NFAM from KPP - Input_Opt%NFAM = NFAM - ELSEIF ( Input_Opt%ITS_A_TAGO3_SIM ) THEN - ! Tagged O3 - Input_Opt%NFAM = 2*N_ADVECT - ELSEIF ( Input_Opt%ITS_A_TAGCO_SIM ) THEN - ! Tagged CO - IF ( Input_Opt%LPCO_NMVOC ) THEN - Input_Opt%NFAM = N_ADVECT+2 - ELSE - Input_Opt%NFAM = N_ADVECT+6 - ENDIF - ENDIF - ENDIF - - ! Return if there are no prod/loss families - ! or if we have turned off this diagnostic - IF ( .not. ( Input_Opt%DO_SAVE_PL .and. Input_Opt%NFAM > 0 )) THEN - Input_Opt%DO_SAVE_PL = .FALSE. - Input_Opt%ND65 = 0 - ENDIF - - ! Loop over families - DO F = 1, Input_Opt%NFAM - - IF ( Input_Opt%ITS_A_FULLCHEM_SIM ) THEN - - ! Fullchem - Obtain FAM_NAME from KPP - Input_Opt%FAM_NAME(F) = FAM_NAMES(F) - - ELSEIF ( Input_Opt%ITS_A_TAGO3_SIM ) THEN - - ! Tagged O3 - IF ( F <= N_ADVECT ) THEN - Input_Opt%FAM_NAME(F) = & - 'P' // TRIM(Input_Opt%AdvectSpc_Name(F)) - ELSE - Input_Opt%FAM_NAME(F) = & - 'L' // TRIM(Input_Opt%AdvectSpc_Name(F-N_ADVECT)) - ENDIF - - ELSEIF ( Input_Opt%ITS_A_TAGCO_SIM ) THEN - - ! Tagged CO - IF ( F <= N_ADVECT ) THEN - Input_Opt%FAM_NAME(F) = 'L'//Input_Opt%AdvectSpc_Name(F) - ELSEIF ( F == N_ADVECT+1 ) THEN - Input_Opt%FAM_NAME(F) = 'PCO_CH4' - ELSEIF ( F == N_ADVECT+2 ) THEN - Input_Opt%FAM_NAME(F) = 'PCO_NMVOC' - ELSEIF ( F == N_ADVECT+3 ) THEN - Input_Opt%FAM_NAME(F) = 'PCO_ISOP' - ELSEIF ( F == N_ADVECT+4 ) THEN - Input_Opt%FAM_NAME(F) = 'PCO_CH3OH' - ELSEIF ( F == N_ADVECT+5 ) THEN - Input_Opt%FAM_NAME(F) = 'PCO_MONO' - ELSEIF ( F == N_ADVECT+6 ) THEN - Input_Opt%FAM_NAME(F) = 'PCO_ACET' - ENDIF - - ENDIF - - ! Get family type as prod or loss - IF ( Input_Opt%FAM_NAME(F)(1:1) == 'P' .or. & - Input_Opt%FAM_NAME(F)(1:1) == 'p' ) THEN - Input_Opt%FAM_TYPE(F) = 'prod' - ELSE - Input_Opt%FAM_TYPE(F) = 'loss' - ENDIF - - ENDDO - - !================================================================= - ! Print to screen - !================================================================= - IF ( Input_Opt%amIRoot ) THEN - WRITE( 6, '(/,a)' ) 'PROD & LOSS DIAGNOSTIC SETTINGS' - WRITE( 6, '( a)' ) '-------------------------------' - WRITE( 6, 100 ) 'Turn on prod & loss diag? : ', & - Input_Opt%DO_SAVE_PL - WRITE( 6, 110 ) '# of levels for P/L diag : ', & - Input_Opt%ND65 - - ! Loop over families - DO F = 1, Input_Opt%NFAM - - ! Write family name and type - WRITE( 6, 120 ) TRIM(Input_Opt%FAM_NAME(F)), & - TRIM(Input_Opt%FAM_TYPE(F)) - - ENDDO - - ENDIF - - ! FORMAT statements -90 FORMAT( /, A ) -95 FORMAT( A ) -100 FORMAT( A, L5 ) -110 FORMAT( A, I5 ) -120 FORMAT( /, 'Family=', A10, ' Type=', A4 ) - - END SUBROUTINE Config_Bpch_ProdLoss -!EOC -#endif -#endif -#endif -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: config_Hg -! -! !DESCRIPTION: Copies Hg simulation information from the Config object -! to Input_Opt, and does necessary checks. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Config_Hg( Config, Input_Opt, RC ) -! -! !USES: -! - USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(QFYAML_t), INTENT(INOUT) :: Config ! YAML Config object - TYPE(OptInput), INTENT(INOUT) :: Input_Opt ! Input Options object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - INTEGER :: N - LOGICAL :: v_bool - - ! Strings - CHARACTER(LEN=255) :: thisLoc - CHARACTER(LEN=255) :: errMsg - CHARACTER(LEN=QFYAML_NamLen) :: key - CHARACTER(LEN=QFYAML_StrLen) :: v_str - - !================================================================= - ! Config_Hg begins here! - !================================================================= - - ! Initialize - RC = GC_SUCCESS - errMsg = '' - thisLoc = ' -> at Config_Hg (in module GeosCore/input_mod.F90)' - - !------------------------------------------------------------------------ - ! Use dynamic ocean Hg? - !------------------------------------------------------------------------ - key = "Hg_simulation_options%sources%use_dynamic_ocean_Hg" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LDYNOCEAN = v_bool - - !------------------------------------------------------------------------ - ! Use preindustrial Hg? - !------------------------------------------------------------------------ - key = "Hg_simulation_options%sources%use_preindustrial_Hg" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LPREINDHG = v_bool - - !------------------------------------------------------------------------ - ! Use arctic river Hg? - !------------------------------------------------------------------------ - key = "Hg_simulation_options%sources%use_arctic_river_Hg" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LARCTICRIV = v_bool - - !------------------------------------------------------------------------ - ! Tie Hg2(aq) reduction to UV-B radiation? - !------------------------------------------------------------------------ - key = "Hg_simulation_options%chemistry%tie_HgIIaq_reduction_to_UVB" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LKRedUV = v_bool - - !------------------------------------------------------------------------ - ! Use GTMM soil model - ! - ! NOTE: As of April 2022, GTMM is broken. We look to the community - ! to take the lead in restoring it. Until that happens, these options - ! will have no effect. -- Bob Yantosca (04 Apr 2022) + ! Use GTMM soil model + ! + ! NOTE: As of April 2022, GTMM is broken. We look to the community + ! to take the lead in restoring it. Until that happens, these options + ! will have no effect. -- Bob Yantosca (04 Apr 2022) !------------------------------------------------------------------------ key = "Hg_simulation_options%GTMM_soil_model%activate" v_bool = MISSING_BOOL @@ -5338,6 +4394,7 @@ SUBROUTINE Config_POPs( Config, Input_Opt, RC ) RC = GC_SUCCESS END SUBROUTINE Config_POPs +#endif !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! @@ -5705,88 +4762,6 @@ SUBROUTINE Check_Time_Steps( Input_Opt, State_Grid, RC ) END SUBROUTINE Check_Time_Steps !EOC -#if !(defined( EXTERNAL_GRID ) || defined( EXTERNAL_FORCING )) -#ifdef BPCH_DIAG -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: is_last_day_good -! -! !DESCRIPTION: Tests to see if there is output scheduled on the last day of -! the run. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE IS_LAST_DAY_GOOD( Input_Opt, RC ) -! -! !USES: -! - USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput - USE JULDAY_MOD, ONLY : JULDAY - USE TIME_MOD, ONLY : GET_NYMDe, ITS_A_LEAPYEAR, YMD_EXTRACT -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(OptInput), INTENT(INOUT) :: Input_Opt ! Input options - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REVISION HISTORY: -! 20 Jul 2004 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - LOGICAL :: IS_LEAPYEAR - INTEGER :: NYMDe, Y, M, D, LASTDAY - REAL(fp) :: JD, JD0 - - ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc - - !================================================================= - ! Is_Last_Day_Good begins here! - !================================================================= - - ! Initialize - RC = GC_SUCCESS - errMsg = '' - thisLoc = ' -> at Is_Last_Day_Good (in module GeosCore/input_mod.F90)' - - ! Astronomical Julian Day corresponding to NYMDe - NYMDe = GET_NYMDe() - CALL YMD_EXTRACT( NYMDe, Y, M, D ) - JD = JULDAY( Y, M, DBLE( D ) ) - - ! Astronomical Julian Day corresponding to the 1st of the year - JD0 = JULDAY( Y, 1, 0d0 ) - - ! LASTDAY is the day of year corresponding to NYMDe - LASTDAY = JD - JD0 - - ! Skip past the element of NJDAY for Feb 29, if necessary - IF ( .not. ITS_A_LEAPYEAR( Y, .TRUE. ) .and. LASTDAY > 59 ) THEN - LASTDAY = LASTDAY + 1 - ENDIF - - ! Exit w/ error if THIS_NJDAY = 0 - IF ( Input_Opt%NJDAY(LASTDAY) == 0 ) THEN - errMsg = 'No output scheduled on last day of run!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - - END SUBROUTINE IS_LAST_DAY_GOOD -!EOC -#endif -#endif !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ diff --git a/GeosCore/ndxx_setup.F90 b/GeosCore/ndxx_setup.F90 deleted file mode 100644 index 0a7b0a31c..000000000 --- a/GeosCore/ndxx_setup.F90 +++ /dev/null @@ -1,200 +0,0 @@ -#ifdef BPCH_DIAG -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !ROUTINE: ndxx_setup.F90 -! -! !DESCRIPTION: Subroutine NDXX\_SETUP dynamically allocates memory for -! certain diagnostic arrays that are declared allocatable in "diag\_mod.F90". -!\\ -!\\ -! This allows us to reduce the amount of memory that needs to be declared -! globally. We only allocate memory for arrays if the corresponding -! diagnostic is turned on. -!\\ -!\\ -! !INTERFACE: -! -SUBROUTINE NDXX_SETUP( Input_Opt, State_Chm, State_Grid, RC ) -! -! !USES: -! - USE CMN_DIAG_MOD - USE DIAG_MOD - USE ErrCode_Mod - USE ERROR_MOD - USE Input_Opt_Mod, ONLY : OptInput - USE State_Chm_Mod, ONLY : ChmState - USE State_Chm_Mod, ONLY : Ind_ - USE State_Grid_Mod, ONLY : GrdState - USE State_Met_Mod, ONLY : MetState -#ifdef TOMAS - USE TOMAS_MOD, ONLY : ICOMP, IDIAG -#endif - - IMPLICIT NONE -! -! !INPUT PARAMETERS: -! - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(OptInput), INTENT(INOUT) :: Input_Opt ! Input Options object - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REVISION HISTORY: -! 16 Jun 1998 - I. Bey, R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: NMAX, AS - - !================================================================= - ! NDXX_SETUP begins here! - !================================================================= - - ! Assume success - RC = GC_SUCCESS - - ! Exit if this is a dry-run - IF ( Input_Opt%DryRun ) RETURN - -#ifdef TOMAS - !================================================================= - ! ND44: Drydep fluxes [s-1] and drydep velocities [cm/s] - ! --> uses AD44 arrays (allocatable) - !================================================================= - IF ( .not. Input_Opt%LDRYD ) ND44 = 0 - - IF ( ND44 > 0 ) THEN - ! add space in diag array for TOMAS aerosol mass (win, 7/14/09) - ! Now use State_Chm%nDryDep for # dry depositing species - ! (ewl, 10/14/15) - IF ( Ind_('NK01') > 1 ) THEN - NMAX = State_Chm%nDryDep + ( ICOMP - IDIAG )* State_Chm%nTomasBins - ELSE - NMAX = State_Chm%nDryDep - ENDIF - ! Allocate AD44 array - ALLOCATE( AD44( State_Grid%NX, State_Grid%NY, NMAX, 2 ), STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD44' ) - ENDIF - - !================================================================= - ! ND59: Size-resolved primary aerosol emissions !(win, 7/9/09) - ! Emissions to number, sulfate, sea-salt, carb, dust - ! ----> save 3-D (I,J,1) or up to (I,J,2) - !================================================================= - IF ( ND59 > 0 ) THEN - LD59 = MIN( ND59, State_Grid%NZ ) - - ! Number emission - ALLOCATE( AD59_NUMB( State_Grid%NX, State_Grid%NY, 2, State_Chm%nTomasBins ), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD59_NUMB' ) - - ALLOCATE( AD59_SULF( State_Grid%NX, State_Grid%NY, 2, State_Chm%nTomasBins ), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD59_SULF' ) - - ALLOCATE( AD59_SALT( State_Grid%NX, State_Grid%NY, 2, State_Chm%nTomasBins ), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD59_SALT' ) - - ALLOCATE( AD59_ECIL( State_Grid%NX, State_Grid%NY, 2, State_Chm%nTomasBins ), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD59_ECIL' ) - - ALLOCATE( AD59_ECOB( State_Grid%NX, State_Grid%NY, 2, State_Chm%nTomasBins ), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD59_ECOB' ) - - ALLOCATE( AD59_OCIL( State_Grid%NX, State_Grid%NY, 2, State_Chm%nTomasBins ), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD59_OCIL' ) - - ALLOCATE( AD59_OCOB( State_Grid%NX, State_Grid%NY, 2, State_Chm%nTomasBins ), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD59_OCOB' ) - - ALLOCATE( AD59_DUST( State_Grid%NX, State_Grid%NY, 2, State_Chm%nTomasBins ), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD59_DUST' ) - ENDIF - - !================================================================= - ! ND60: TOMAS microphysical process rates (condensation, - ! coagulation, nucleation, aqueous oxidation, - ! error-fudging) - ! ---> save 2-D (J,L) for 30-bin of each aerosol species - !================================================================= - IF ( ND60 > 0 ) THEN - LD60 = MIN( ND60, State_Grid%NZ ) - - ! Now the array dimension is State_Chm%nTomasBins*(ICOMP-IDIAG+1) because - ! we need it for all prognostic mass species + 1 for number - ! IDIAG = # of diagnostic species. (win, 9/27/08) - !Condensation rate - ALLOCATE( AD60_COND(1,State_Grid%NY,LD60,State_Chm%nTomasBins*(ICOMP-IDIAG+1)), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD60_COND' ) - - !Coagulation rate - ALLOCATE( AD60_COAG(1,State_Grid%NY,LD60,State_Chm%nTomasBins*(ICOMP-IDIAG+1)), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD60_COAG' ) - - !Nucleation rate - ALLOCATE( AD60_NUCL(1,State_Grid%NY,LD60,State_Chm%nTomasBins*(ICOMP-IDIAG+1)), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD60_NUCL' ) - - !Aqueous oxidation rate - ALLOCATE( AD60_AQOX(1,State_Grid%NY,LD60,State_Chm%nTomasBins*(ICOMP-IDIAG+1)), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD60_AQOX' ) - - !Accumulated error-fudging - ALLOCATE( AD60_ERROR(1,State_Grid%NY,LD60,State_Chm%nTomasBins*(ICOMP-IDIAG+1)), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD60_ERROR' ) - - !SOA Condensation rate - ALLOCATE( AD60_SOA(1,State_Grid%NY,LD60,State_Chm%nTomasBins*(ICOMP-IDIAG+1)), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD60_SOA' ) - ENDIF - - !================================================================= - ! ND61: 3-D TOMAS process rate diagnostic - ! --> Uses AD61 array (allocatable) - ! NOTE: ND61 is used for 10-nm particle formation - ! rate and cluster-size nucleation rate. So the array - ! is declared for (NX,NY,LD61,2) (win, 10/6/08) - !================================================================= - IF ( ND61 > 0 ) THEN - LD61 = MIN( ND61, State_Grid%NZ ) - - ALLOCATE( AD61( State_Grid%NX, State_Grid%NY, LD61, PD61 ), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD61' ) - ALLOCATE( AD61_INST( State_Grid%NX, State_Grid%NY, LD61, PD61), & - STAT=AS ) - IF ( AS /= 0 ) CALL ALLOC_ERR( 'AD61_INST' ) - ENDIF -#endif - -END SUBROUTINE NDXX_SETUP -!EOC -#endif diff --git a/GeosCore/ocean_mercury_mod.F90 b/GeosCore/ocean_mercury_mod.F90 index b235c693d..42b1e2435 100644 --- a/GeosCore/ocean_mercury_mod.F90 +++ b/GeosCore/ocean_mercury_mod.F90 @@ -223,10 +223,6 @@ SUBROUTINE READ_HG2_PARTITIONING( Input_Opt, State_Grid, State_Met, & ! !USES: ! USE ErrCode_Mod -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD - USE TIME_MOD, ONLY : SET_Hg2_DIAG -#endif USE ERROR_MOD, ONLY : GEOS_CHEM_STOP, ERROR_STOP USE HCO_State_GC_Mod, ONLY : HcoState USE HCO_EmisList_Mod, ONLY : HCO_GetPtr diff --git a/GeosCore/planeflight_mod.F90 b/GeosCore/planeflight_mod.F90 index 5b9ea7a51..d3606ede2 100644 --- a/GeosCore/planeflight_mod.F90 +++ b/GeosCore/planeflight_mod.F90 @@ -1517,11 +1517,6 @@ SUBROUTINE PLANEFLIGHT( Input_Opt, State_Chm, State_Diag, & USE State_Met_Mod, ONLY : MetState USE TIME_MOD USE UnitConv_Mod, ONLY : Convert_Spc_Units -#ifdef TOMAS -#ifdef BPCH_DIAG - USE DIAG_MOD, ONLY : AD61_INST ! (win, 7/28/09) -#endif -#endif ! ! !INPUT PARAMETERS: ! @@ -2286,26 +2281,6 @@ SUBROUTINE PLANEFLIGHT( Input_Opt, State_Chm, State_Diag, & IF ( VARI(V) < TINY ) VARI(V) = 0.0_fp -#ifdef TOMAS -#ifdef BPCH_DIAG - !--------------------------------------------------------------- - ! TOMAS microphysics rate [kg/s] or [no./cm3/s] - !--------------------------------------------------------------- - CASE( 200000:299999 ) - - ! Remove offset from PVAR - N = PVAR(V) - 200000 - - ! Archive the microphysics rate - VARI(V) = AD61_INST(I,J,L,N) - - IF ( Input_Opt%amIRoot ) THEN - write (6,*) 'ARCHIVE TO PLANEFLIGHT DIAG', & - 'AD61_INST at',I,J,L,N,'=',AD61_INST(I,J,L,N) - ENDIF -#endif -#endif - !--------------------------------------------------------------- ! Otherwise it's an error! !--------------------------------------------------------------- diff --git a/GeosCore/sulfate_mod.F90 b/GeosCore/sulfate_mod.F90 index 1844d4520..28ea82bfc 100644 --- a/GeosCore/sulfate_mod.F90 +++ b/GeosCore/sulfate_mod.F90 @@ -917,10 +917,6 @@ SUBROUTINE SRCSF30( Input_Opt, State_Grid, State_Met, State_Chm, TC2, RC ) ! ! !USES: ! -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD ! ND13 (for now) - USE DIAG_MOD, ONLY : AD59_SULF, AD59_NUMB -#endif USE ERROR_MOD, ONLY : ERROR_STOP, IT_IS_NAN USE Input_Opt_Mod, ONLY : OptInput USE Species_Mod, ONLY : SpcConc @@ -1370,40 +1366,6 @@ SUBROUTINE SRCSF30( Input_Opt, State_Grid, State_Met, State_Chm, TC2, RC ) ! [kg S/box/timestep] and the corresponding ! number emission [no./box/timestep] !============================================================== -#ifdef BPCH_DIAG - IF ( ND59 > 0 ) THEN - !print*, 'JACK IN ND59 SULFATE' - DO K = 1, IBINS - !if(TC2(I,J,L,K)-M0(L,K) < 0d0) - ! print *,'Negative SF emis ',TC2(I,J,L,K)-M0(L,K), & - ! 'at',I,J,L,K - !if(TC1(id_NK01+K-1)%Conc(I,J,L)-N0(L,K) < 0d0) then - ! print *,'Negative NK emis ',TC1(id_NK01+K-1)%Conc(I,J,L)-N0(L,K), & - ! 'at',I,J,L,K - ! print *,'tc1, N0 ',TC1(id_NK01+K-1)%Conc(I,J,L),N0(L,K) - !end if - - !sfarina - I have studied this extensively and determined that - !negative NK emis as defined here is not an accurate statement. - !The particle number in a given bin IS reduced by this - !subroutine, but it is not reduced by emission. Particle - !number is reduced by mnfix. - !if the bin is just about to boil over, that added sulfate mass - !will trigger a big particle shift in mnfix and it will look - !like a 'negative number emission' event as defined by this - !inequality - - !sfarina - changing the definition of this diagnostic to ignore - ! changes to the distribution by mnfix - !AD59_SULF(I,J,1,K) = AD59_SULF(I,J,1,K) + & - ! (TC2(I,J,L,K)-M0(L,K))*S_SO4 - !AD59_NUMB(I,J,1,K) = AD59_NUMB(I,J,1,K) + - ! TC1(id_NK01+K-1)%Conc(I,J,L)-N0(L,K) & - AD59_SULF(I,J,1,K) = AD59_SULF(I,J,1,K) + Mdiag(K) - AD59_NUMB(I,J,1,K) = AD59_NUMB(I,J,1,K) + Ndiag(K) - ENDDO - ENDIF -#endif ELSE ! Distributing primary emission without sub-grid coagulation @@ -1422,28 +1384,6 @@ SUBROUTINE SRCSF30( Input_Opt, State_Grid, State_Met, State_Chm, TC2, RC ) ENDDO ENDDO -#ifdef BPCH_DIAG - !============================================================== - ! ND59 Diagnostic: Size-resolved primary sulfate emission in - ! [kg S/box/timestep] and the corresponding - ! number emission [no./box/timestep] - !============================================================== - IF ( ND59 > 0 ) THEN - SO4anbf(:,:,1) = SO4an(:,:,1) + SO4bf(:,:) - SO4anbf(:,:,2) = SO4an(:,:,2) - - DO L = 1, 2 - DO K = 1, IBINS - AD59_SULF(I,J,L,K) = AD59_SULF(I,J,L,K) + & - ( SO4anbf(I,J,L) * BFRAC(K) * S_SO4 * DTSRCE ) - AD59_NUMB(I,J,L,K) = AD59_NUMB(I,J,L,K) + & - ( SO4anbf(I,J,L) * BFRAC(K) / AVGMASS(K) * DTSRCE ) - ENDDO - ENDDO - - ENDIF -#endif - ENDIF !SGCOAG ENDDO @@ -1484,12 +1424,6 @@ SUBROUTINE GRAV_SETTLING( Input_Opt, State_Chm, State_Diag, State_Grid, & USE State_Met_Mod, ONLY : MetState USE Species_Mod, ONLY : Species USE TIME_MOD, ONLY : GET_TS_CHEM -#ifdef TOMAS -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD - USE DIAG_MOD, ONLY : AD44 -#endif -#endif ! ! !INPUT PARAMETERS: ! @@ -1781,44 +1715,6 @@ SUBROUTINE GRAV_SETTLING( Input_Opt, State_Chm, State_Diag, State_Grid, & * TC(I,J,L+1) ) ENDDO - !============================================================== - ! DIAGNOSTIC: Drydep flux [molec/cm2/s] - ! (specifically sea salt loss diagnostics) - !============================================================== -#ifdef TOMAS -#ifdef BPCH_DIAG - !----------------------------------------------------------- - ! ND44 DIAGNOSTIC (bpch) - ! Dry deposition flux loss [molec/cm2/s] - ! - ! NOTE: Bpch diagnostics are being phased out. - !----------------------------------------------------------- - IF ( ND44 > 0 ) THEN - - ! Initialize - TOT1 = 0e+0_fp - TOT2 = 0e+0_fp - - ! Compute column totals of TCO(:) and TC(I,J,:,N) - DO L = 1, State_Grid%NZ - TOT1 = TOT1 + TC0(L) - TOT2 = TOT2 + TC(I,J,L) - ENDDO - - ! Surface area [cm2] - AREA_CM2 = State_Grid%Area_M2(I,J) * 1e+4_fp - - ! Convert sea salt/dust flux from [kg/s] to [molec/cm2/s] - FLUX = ( TOT1 - TOT2 ) / DTCHEM - FLUX = FLUX * AVO / ( MW_g * 1.e-3_fp ) / AREA_CM2 - - ! Store in global AD44 array for bpch diagnostic output - AD44(I,J,DryDep_Id,1) = AD44(I,J,DryDep_Id,1) + FLUX - - ENDIF -#endif -#endif - !----------------------------------------------------------- ! HISTORY (aka netCDF diagnostics) ! Dry deposition flux loss [molec/cm2/s] @@ -8246,15 +8142,10 @@ END SUBROUTINE CHEM_NIT !\\ ! !INTERFACE: - SUBROUTINE CHEM_CL( Input_Opt, & - State_Met, State_Chm, State_Grid, RC ) - + SUBROUTINE CHEM_CL( Input_Opt, State_Met, State_Chm, State_Grid, RC ) +! ! !USES: - -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD -#endif - +! USE CMN_SIZE_MOD USE ErrCode_Mod USE Input_Opt_Mod, ONLY : OptInput @@ -8262,15 +8153,15 @@ SUBROUTINE CHEM_CL( Input_Opt, & USE State_Chm_Mod, ONLY : ChmState USE State_Met_Mod, ONLY : MetState USE State_Grid_Mod, ONLY : GrdState +! ! !INPUT PARAMETERS: - - !LOGICAL, INTENT(IN) :: am_I_Root ! Are we on the root CPU? +! TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology State object TYPE(GrdState), INTENT(IN) :: State_Grid - +! ! !INPUT/OUTPUT PARAMETERS: - +! TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry State object ! ! !OUTPUT PARAMETERS: diff --git a/GeosCore/tomas_mod.F90 b/GeosCore/tomas_mod.F90 index fa309a6b5..b297cb53e 100644 --- a/GeosCore/tomas_mod.F90 +++ b/GeosCore/tomas_mod.F90 @@ -298,10 +298,6 @@ SUBROUTINE AEROPHYS( Input_Opt, State_Chm, State_Grid, State_Met, & ! ! !USES: ! -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD - USE DIAG_MOD, ONLY : AD61, AD61_INST -#endif USE ErrCode_Mod USE ERROR_MOD USE Input_Opt_Mod, ONLY : OptInput @@ -498,14 +494,6 @@ SUBROUTINE AEROPHYS( Input_Opt, State_Chm, State_Grid, State_Met, & DO J = 1, State_Grid%NY DO L = 1, State_Grid%NZ -#ifdef BPCH_DIAG - ! Reset the AD61_INST array used for tracking instantaneous - ! certain rates. As of now, tracking nucleation (win, 10/7/08) - IF ( Input_Opt%ND61 > 0 ) THEN - AD61_INST(I,J,L,:) = 0e0 - ENDIF -#endif - ! Skip non-chemgrid boxes IF ( .not. State_Met%InChemGrid(I,J,L) ) CYCLE @@ -804,15 +792,6 @@ SUBROUTINE AEROPHYS( Input_Opt, State_Chm, State_Grid, State_Met, & State_Diag%TomasNUCRATEFN(I,J,L) = fn ENDIF -#ifdef BPCH_DIAG - IF ( ND61 > 0 ) THEN - IF ( L <= LD61 ) AD61(I,J,L,2) = AD61(I,J,L,2) + fn - - ! Tracks nucleation rates instantaneously for planeflight - AD61_INST(I,J,L,2) = fn - ENDIF -#endif - DO N = 1, IBINS NK(N) = NKout(N) DO JC = 1, ICOMP @@ -3486,9 +3465,6 @@ SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & ! ! !USES: ! -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD ! ND60 -#endif USE ErrCode_Mod USE ERROR_MOD USE Input_Opt_Mod, ONLY : OptInput @@ -3834,9 +3810,6 @@ SUBROUTINE SOACOND( MSOA, I, J, L, BOXVOL, TEMPTMS, PRES, BOXMASS,& ! ! !USES: ! -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD -#endif USE ErrCode_Mod USE ERROR_MOD USE Species_Mod, ONLY : SpcConc @@ -5978,12 +5951,6 @@ SUBROUTINE AERODIAG( PTYPE, I, J, L, Nk, Nkd, Mk, Mkd, BOXMASS, & ! ! !USES: ! -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD - USE DIAG_MOD, ONLY : AD60_COND, AD60_COAG, AD60_NUCL - USE DIAG_MOD, ONLY : AD60_AQOX, AD60_ERROR, AD60_SOA - USE DIAG_MOD, ONLY : AD61, AD61_INST -#endif USE ERROR_MOD, ONLY : IT_IS_NAN USE State_Grid_Mod, ONLY : GrdState USE State_Diag_Mod, ONLY : DgnState @@ -7694,9 +7661,6 @@ SUBROUTINE CHECKMN( II, JJ, LL, Input_Opt, State_Chm, & ! ! !USES: ! -#ifdef BPCH_DIAG - USE CMN_DIAG_MOD ! ND60 -#endif USE ErrCode_Mod USE ERROR_MOD USE Input_Opt_Mod, ONLY : OptInput diff --git a/GeosUtil/CMakeLists.txt b/GeosUtil/CMakeLists.txt index d271130fe..e2ac006c1 100755 --- a/GeosUtil/CMakeLists.txt +++ b/GeosUtil/CMakeLists.txt @@ -6,7 +6,6 @@ target_link_libraries(JulDay ) add_library(GeosUtil STATIC EXCLUDE_FROM_ALL - bpch2_mod.F90 error_mod.F90 file_mod.F90 gc_grid_mod.F90 diff --git a/GeosUtil/bpch2_mod.F90 b/GeosUtil/bpch2_mod.F90 deleted file mode 100644 index 4e2574837..000000000 --- a/GeosUtil/bpch2_mod.F90 +++ /dev/null @@ -1,452 +0,0 @@ -#ifdef BPCH_DIAG -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !MODULE: bpch2_mod.F90 -! -! !DESCRIPTION: Module BPCH2\_MOD contains the routines used to read data -! from and write data to binary punch (BPCH) file format (v2.0). -!\\ -!\\ -! !INTERFACE: -! -MODULE BPCH2_MOD -! -! !USES: -! - USE inquireMod, ONLY : findFreeLUN - USE inquireMod, ONLY : I_Am_UnOPENed - - USE PRECISION_MOD ! For GEOS-Chem Precision (fp) - - IMPLICIT NONE - PRIVATE -! -! !PUBLIC MEMBER FUNCTIONS: -! - PUBLIC :: OPEN_BPCH2_FOR_READ - PUBLIC :: OPEN_BPCH2_FOR_WRITE - PUBLIC :: BPCH2 - PUBLIC :: BPCH2_HDR - PUBLIC :: GET_MODELNAME - PUBLIC :: GET_HALFPOLAR -! -! !REMARKS: -! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -! %%% NOTE: THIS MODULE WILL BE A STUB UNLESS GEOS-Chem IS COMPILED %%% -! %%% WITH THE BPCH_DIAG=y OPTION. (bmy, 10/4/19) %%% -! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -! -! !REVISION HISTORY: -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -CONTAINS -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Open_Bpch2_For_Read -! -! !DESCRIPTION: Subroutine OPEN\_BPCH2\_FOR\_READ opens a binary punch file -! (version 2.0 format) for reading only. Also reads FTI and TITLE strings. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE OPEN_BPCH2_FOR_READ( IUNIT, FILENAME, TITLE ) -! -! !USES: -! - USE ERROR_MOD, ONLY : ERROR_STOP - USE FILE_MOD, ONLY : IOERROR -! -! !INPUT PARAMETERS: -! - INTEGER, INTENT(IN) :: IUNIT ! LUN for file I/O - CHARACTER(LEN=*), INTENT(IN) :: FILENAME ! File to open -! -! !OUTPUT PARAMETERS: -! - CHARACTER(LEN=80), INTENT(OUT), OPTIONAL :: TITLE ! File title string -! -! !REMARKS: -! ########################################################################### -! ##### BINARY PUNCH INPUT IS BEING PHASED OUT. MOST INPUT IS NOW READ ##### -! ##### FROM COARDS-COMPLIANT netCDF FILES VIA HEMCO (bmy, 4/1/15) ##### -! ########################################################################### -! -! !REVISION HISTORY: -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: IOS - CHARACTER(LEN=40) :: FTI - CHARACTER(LEN=80) :: TMP_TITLE - - !================================================================= - ! OPEN_BPCH2_FOR_READ begins here! - !================================================================= - - ! Open file for input -- readonly - OPEN( IUNIT, FILE=TRIM( FILENAME ), STATUS='OLD', & - IOSTAT=IOS, FORM='UNFORMATTED', ACCESS='SEQUENTIAL' ) - - ! Error check - IF ( IOS /= 0 ) THEN - WRITE(6,*)'Error opening filename=',trim(filename) - CALL FLUSH(6) - CALL IOERROR( IOS, IUNIT, 'open_bpch2_for_read:1') - ENDIF - - ! Read file type identifier - READ( IUNIT, IOSTAT=IOS ) FTI - - ! Error check - IF ( IOS /= 0 ) THEN - WRITE(6,*)'Error reading FTI for filename=',trim(filename) - CALL FLUSH(6) - CALL IOERROR( IOS, IUNIT, 'open_bpch2_for_read:2' ) - ENDIF - - ! Stop if this is not a binary punch file - IF ( TRIM( FTI ) /= 'CTM bin 02' ) THEN - WRITE(6,*)'Error filename=',trim(filename) - CALL FLUSH(6) - CALL ERROR_STOP( 'Invalid file format!', & - 'OPEN_BPCH2_FOR_READ (bpch2_mod.F90)') - ENDIF - - ! Read top title - READ( IUNIT, IOSTAT=IOS ) TMP_TITLE - - ! Error check - IF ( IOS /= 0 ) THEN - WRITE(6,*)'Error reading filename=',trim(filename) - CALL FLUSH(6) - CALL IOERROR( IOS, IUNIT, 'open_bpch2_for_read:3' ) - ENDIF - - ! Copy value of TMP_TITLE to TITLE for return - IF ( PRESENT( TITLE ) ) TITLE = TMP_TITLE - - END SUBROUTINE OPEN_BPCH2_FOR_READ -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Open_Bpch2_For_Write -! -! !DESCRIPTION: Subroutine OPEN\_BPCH2\_FOR\_WRITE opens a binary punch file -! (version 2.0) for writing. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE OPEN_BPCH2_FOR_WRITE( IUNIT, FILENAME, TITLE ) -! -! !USES: -! - USE FILE_MOD, ONLY : IOERROR -! -! !INPUT PARAMETERS: -! - INTEGER, INTENT(IN) :: IUNIT ! LUN for file I/O - CHARACTER(LEN=*), INTENT(IN) :: FILENAME ! Name of file -! -! !OUTPUT PARAMETERS: -! - CHARACTER(LEN=80), INTENT(OUT), OPTIONAL :: TITLE ! File title string -! -! !REMARKS: -! ########################################################################### -! ##### BINARY PUNCH INPUT IS BEING PHASED OUT. MOST INPUT IS NOW READ ##### -! ##### FROM COARDS-COMPLIANT netCDF FILES VIA HEMCO (bmy, 4/1/15) ##### -! ########################################################################### -! -! !REVISION HISTORY: -! 30 Jul 2002 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: IOS - CHARACTER(LEN=80) :: TMP_TITLE - - !================================================================= - ! OPEN_BPCH2_FOR_WRITE begins here! - !================================================================= - - ! If TITLE is not passed, create a default title string - IF ( PRESENT( TITLE ) ) THEN - TMP_TITLE = TITLE - ELSE - TMP_TITLE = 'GEOS-CHEM binary punch file v. 2.0' - ENDIF - - ! Open file for output - OPEN( IUNIT, FILE=TRIM( FILENAME ), STATUS='UNKNOWN', & - IOSTAT=IOS, FORM='UNFORMATTED', ACCESS='SEQUENTIAL' ) - - ! Error check - IF ( IOS /= 0 ) THEN - WRITE(6,*) ' ' - WRITE(6,*) "CANNOT WRITE : " // FILENAME - CALL IOERROR( IOS, IUNIT,'open_bpch2_for_write:1') - ENDIF - - ! Write the top-of-file title to disk - CALL BPCH2_HDR( IUNIT, TMP_TITLE ) - - END SUBROUTINE OPEN_BPCH2_FOR_WRITE -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Bpch2_hdr -! -! !DESCRIPTION: Subroutine BPCH2\_HDR writes a header at the top of the binary -! punch file, version 2.0. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE BPCH2_HDR ( IUNIT, TITLE ) -! -! !USES: -! - USE FILE_MOD, ONLY : IOERROR -! -! !INPUT PARAMETERS: -! - INTEGER, INTENT(IN) :: IUNIT ! LUN for file I/O - CHARACTER(LEN=80), INTENT(IN) :: TITLE ! Top-of-file title string -! -! !REMARKS: -! ########################################################################### -! ##### BINARY PUNCH INPUT IS BEING PHASED OUT. MOST INPUT IS NOW READ ##### -! ##### FROM COARDS-COMPLIANT netCDF FILES VIA HEMCO (bmy, 4/1/15) ##### -! ########################################################################### -! -! !REVISION HISTORY: -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: IOS - CHARACTER(LEN=40) :: FTI = 'CTM bin 02' - - !================================================================= - ! BPCH2_HDR begins here! - ! - ! Write header information to binary punch file - ! Also be sure to trap I/O Error conditions - !================================================================= - - WRITE ( IUNIT, IOSTAT=IOS ) FTI - IF ( IOS /= 0 ) CALL IOERROR( IOS, IUNIT, 'bpch2_hdr:1' ) - - WRITE ( IUNIT, IOSTAT=IOS ) TITLE - IF ( IOS /= 0 ) CALL IOERROR( IOS, IUNIT, 'bpch2_hdr:2' ) - - END SUBROUTINE BPCH2_HDR -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Bpch2 -! -! !DESCRIPTION: Subroutine BPCH2 writes binary punch file (version 2.0) to -! disk. Information about the model grid is also stored with each data block. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE BPCH2( IUNIT, MODELNAME, LONRES, LATRES, & - HALFPOLAR, CENTER180, CATEGORY, NTRACER, & - UNIT, TAU0, TAU1, RESERVED, & - NI, NJ, NL, IFIRST, & - JFIRST, LFIRST, ARRAY ) -! -! !USES: -! - USE FILE_MOD, ONLY : IOERROR -! -! !INPUT PARAMETERS: -! - INTEGER, INTENT(IN) :: IUNIT ! LUN for file I/O - CHARACTER(LEN=20), INTENT(IN) :: MODELNAME ! Met field type - REAL*4, INTENT(IN) :: LONRES ! Lon resolution [deg] - REAL*4, INTENT(IN) :: LATRES ! Lat resolution [deg] - INTEGER, INTENT(IN) :: HALFPOLAR ! 1/2-size polar boxes? - INTEGER, INTENT(IN) :: CENTER180 ! 1st box center -180? - CHARACTER(LEN=40), INTENT(IN) :: CATEGORY ! Diag. category name - INTEGER, INTENT(IN) :: NTRACER ! Tracer index # - CHARACTER(LEN=40), INTENT(IN) :: UNIT ! Unit string - REAL(f8), INTENT(IN) :: TAU0 ! TAU values @ start & - REAL(f8), INTENT(IN) :: TAU1 ! end of diag interval - CHARACTER(LEN=40), INTENT(IN) :: RESERVED ! Extra string - INTEGER, INTENT(IN) :: NI, NJ, NL ! Dimensions of ARRAY - INTEGER, INTENT(IN) :: IFIRST ! (I,J,L) indices of - INTEGER, INTENT(IN) :: JFIRST ! the first grid box - INTEGER, INTENT(IN) :: LFIRST ! in Fortran notation - REAL*4, INTENT(IN) :: ARRAY(NI,NJ,NL) ! Data array -! -! !REMARKS: -! ############################################################################ -! ##### BINARY PUNCH OUTPUT IS BEING PHASED OUT. (bmy, 4/1/15) ##### -! ############################################################################ -! -! !REVISION HISTORY: -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: I, J, L, NSKIP, IOS -! -! !DEFINED PARAMETERS: -! - INTEGER, PARAMETER :: BYTES_PER_NUMBER = 4 - INTEGER, PARAMETER :: END_OF_RECORD = 8 - - !================================================================= - ! BPCH2 begins here!! - ! - ! Compute the number of bytes to skip between the end of one - ! data block and the beginning of the next data header line - !================================================================= - NSKIP = ( BYTES_PER_NUMBER * ( NI * NJ * NL ) ) + END_OF_RECORD - - !================================================================= - ! Write data block to binary punch file - ! Check for I/O errors - !================================================================= - WRITE( IUNIT, IOSTAT=IOS ) & - MODELNAME, LONRES, LATRES, HALFPOLAR, CENTER180 - - IF ( IOS /= 0 ) CALL IOERROR( IOS, IUNIT, 'bpch2:1' ) - - WRITE( IUNIT, IOSTAT = IOS ) & - CATEGORY, NTRACER, UNIT, TAU0, TAU1, RESERVED, & - NI, NJ, NL, IFIRST, JFIRST, LFIRST, NSKIP - - IF ( IOS /= 0 ) CALL IOERROR( IOS, IUNIT, 'bpch2:2' ) - - WRITE( IUNIT, IOSTAT=IOS ) & - ( ( ( ARRAY(I,J,L), I=1,NI ), J=1,NJ ), L=1,NL ) - - IF ( IOS /= 0 ) CALL IOERROR( IOS, IUNIT, 'bpch2:3' ) - - END SUBROUTINE BPCH2 -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_Modelname -! -! !DESCRIPTION: Function GET\_MODELNAME returns the proper value of MODELNAME -! for current met field type. MODELNAME is written to the binary punch file -! and is also used by the GAMAP package. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_MODELNAME( Input_Opt, State_Grid ) & - RESULT( MODELNAME ) -! -! !USES: -! - USE Input_Opt_Mod, ONLY : OptInput - USE State_Grid_Mod, ONLY : GrdState -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input options - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State -! -! !RETURN VALUE: -! - CHARACTER(LEN=20) :: MODELNAME ! Model name for the current met field -! -! !REMARKS: -! We now read many data files via HEMCO, so we don't have much of a need -! of constructing file names w/in the code. This routine is now pretty -! much obsolete and is slated for eventual removal. -! -! !REVISION HISTORY: -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - -#if defined( EXTERNAL_FORCING ) || defined ( EXTERNAL_GRID ) - MODELNAME = 'EXTERNAL' -#else - IF ( State_Grid%NZ == 47 ) THEN - MODELNAME = TRIM(Input_Opt%MetField) // '_47L' - ELSE - MODELNAME = TRIM(Input_Opt%MetField) - ENDIF -#endif - - END FUNCTION GET_MODELNAME -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_Halfpolar -! -! !DESCRIPTION: Function GET\_HALFPOLAR returns 1 if the current grid has -! half-sized polar boxes (e.g. GEOS) or zero otherwise (e.g. GCAP). -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_HALFPOLAR() RESULT( HALFPOLAR ) -! -! !RETURN VALUE: -! - INTEGER :: HALFPOLAR ! =1 if we have half-sized polar boxes, =0 if not -! -! !REVISION HISTORY: -! 28 Jun 2005 - S. Wu & R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - - ! All GEOS grids have half-sized polar boxes - HALFPOLAR = 1 - - END FUNCTION GET_HALFPOLAR -!EOC -END MODULE BPCH2_MOD -#endif diff --git a/GeosUtil/time_mod.F90 b/GeosUtil/time_mod.F90 index 3bcd2e171..8e3ca7a0e 100644 --- a/GeosUtil/time_mod.F90 +++ b/GeosUtil/time_mod.F90 @@ -102,37 +102,6 @@ MODULE TIME_MOD !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PUBLIC :: Accept_External_Date_Time #endif -#ifdef BPCH_DIAG - !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - !%%% NOTE: THESE ROUTINES WILL BE OMITTED UNLESS GEOS-Chem %%% - !%%% IS COMPILED WITH BPCH_DIAG=y (bmy, 10/4/19) %%% - !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - PUBLIC :: GET_DIAGb - PUBLIC :: GET_DIAGe - PUBLIC :: GET_CT_CHEM - PUBLIC :: GET_CT_CONV - PUBLIC :: GET_CT_DYN - PUBLIC :: GET_CT_EMIS - PUBLIC :: GET_CT_RAD - PUBLIC :: GET_CT_A3 - PUBLIC :: GET_CT_I3 - PUBLIC :: GET_CT_DIAG - PUBLIC :: GET_NYMD_DIAG - PUBLIC :: SET_CT_CHEM - PUBLIC :: SET_CT_CONV - PUBLIC :: SET_CT_DYN - PUBLIC :: SET_CT_EMIS - PUBLIC :: SET_CT_DIAG - PUBLIC :: SET_CT_RAD - PUBLIC :: SET_CT_A3 - PUBLIC :: SET_CT_I3 - PUBLIC :: SET_DIAGb - PUBLIC :: SET_DIAGe - PUBLIC :: SET_Hg2_DIAG - PUBLIC :: ITS_TIME_FOR_BPCH - PUBLIC :: ITS_TIME_FOR_DIAG - PUBLIC :: GET_Hg2_DIAG -#endif ! ! !REMARKS: ! References: @@ -540,37 +509,6 @@ SUBROUTINE SET_DIAGb( THISDIAGb ) DIAGb = THISDIAGb END SUBROUTINE SET_DIAGb -#ifdef BPCH_DIAG -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Set_diage -! -! !DESCRIPTION: Subroutine SET\_DIAGe initializes DIAGe, the TAU value at the -! end of the diagnostic averaging interval. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE SET_DIAGe( THISDIAGe ) -! -! !INPUT PARAMETERS: -! - REAL(f8), INTENT(IN) :: THISDIAGe ! Initial DIAGe value [hrs from 1/1/85] -! -! !REVISION HISTORY: -! 21 Mar 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - DIAGe = THISDIAGe - - END SUBROUTINE SET_DIAGe -#endif !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! @@ -619,19 +557,6 @@ SUBROUTINE SET_TIMESTEPS( Input_Opt, CHEMISTRY, CONVECTION, DYNAMICS, & TS_DIAG = DIAGNOS TS_RAD = RADIATION - ! Zero timestep counters -#ifdef BPCH_DIAG - CT_CHEM = 0 - CT_CONV = 0 - CT_DYN = 0 - CT_EMIS = 0 - CT_RAD = 0 - CT_A3 = 0 - CT_I3 = 0 - CT_DIAG = 0 - Hg2_DIAG = 0 -#endif - ! Echo to stdout IF ( Input_Opt%amIRoot ) THEN WRITE( 6, '(/,a)' ) 'TIMESTEPS SETTINGS' @@ -646,314 +571,6 @@ SUBROUTINE SET_TIMESTEPS( Input_Opt, CHEMISTRY, CONVECTION, DYNAMICS, & ENDIF END SUBROUTINE SET_TIMESTEPS -#ifdef BPCH_DIAG -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Set_ct_chem -! -! !DESCRIPTION: Subroutine SET\_CT\_CHEM increments CT\_CHEM, the counter -! of chemistry timesteps executed thus far. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE SET_CT_CHEM( INCREMENT, RESET ) -! -! !INPUT PARAMETERS: -! - LOGICAL, INTENT(IN), OPTIONAL :: INCREMENT ! Increment counter? - LOGICAL, INTENT(IN), OPTIONAL :: RESET ! Reset counter? -! -! !REVISION HISTORY: -! 21 Mar 2009 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - IF ( PRESENT( INCREMENT ) ) THEN - CT_CHEM = CT_CHEM + 1 - ELSE IF ( PRESENT( RESET ) ) THEN - CT_CHEM = 0 - ENDIF - - END SUBROUTINE SET_CT_CHEM -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Set_ct_rad -! -! !DESCRIPTION: Subroutine SET\_CT\_RAD increments CT\_RAD, the -! counter of radiation timesteps executed thus far. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE SET_CT_RAD( INCREMENT, RESET ) -! -! !INPUT PARAMETERS: -! - LOGICAL, INTENT(IN), OPTIONAL :: INCREMENT ! Increment counter? - LOGICAL, INTENT(IN), OPTIONAL :: RESET ! Reset counter? -! -! !REVISION HISTORY: -! 06 Oct 2012 - D. Ridley - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - IF ( PRESENT( INCREMENT ) ) THEN - CT_RAD = CT_RAD + 1 - ELSE IF ( PRESENT( RESET ) ) THEN - CT_RAD = 0 - ENDIF - - END SUBROUTINE SET_CT_RAD -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Set_hg2_diag -! -! !DESCRIPTION: Subroutine SET\_Hg2\_DIAG increments Hg2\_DIAG, the counter for -! the number of times AAD03\_Fg and AD03\_Fp are recorded. (hma 20100218) -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE SET_Hg2_DIAG( INCREMENT, RESET ) -! -! !INPUT PARAMETERS: -! - LOGICAL, INTENT(IN), OPTIONAL :: INCREMENT ! Increment counter? - LOGICAL, INTENT(IN), OPTIONAL :: RESET ! Reset counter? -! -! !REVISION HISTORY: -! 18 Feb 2012 - H. Amos - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - IF ( PRESENT( INCREMENT ) ) THEN - Hg2_DIAG = Hg2_DIAG + 1 - ELSE IF ( PRESENT( RESET ) ) THEN - Hg2_DIAG = 0 - ENDIF - - END SUBROUTINE SET_Hg2_DIAG -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Set_ct_conv -! -! !DESCRIPTION: Subroutine SET\_CT\_CONV increments CT\_CONV, the counter -! of convection timesteps executed thus far. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE SET_CT_CONV( INCREMENT, RESET ) -! -! !INPUT PARAMETERS: -! - LOGICAL, INTENT(IN), OPTIONAL :: INCREMENT ! Increment counter? - LOGICAL, INTENT(IN), OPTIONAL :: RESET ! Reset counter? -! -! !REVISION HISTORY: -! 21 Mar 2009 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - IF ( PRESENT( INCREMENT ) ) THEN - CT_CONV = CT_CONV + 1 - ELSE IF ( PRESENT( RESET ) ) THEN - CT_CONV = 0 - ENDIF - - END SUBROUTINE SET_CT_CONV -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Set_ct_dyn -! -! !DESCRIPTION: Subroutine SET\_CT\_DYN increments CT\_DYN, the counter -! of dynamical timesteps executed thus far. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE SET_CT_DYN( INCREMENT, RESET ) -! -! !INPUT PARAMETERS: -! - LOGICAL, INTENT(IN), OPTIONAL :: INCREMENT ! Increment counter? - LOGICAL, INTENT(IN), OPTIONAL :: RESET ! Reset counter? -! -! !REVISION HISTORY: -! 21 Mar 2009 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - IF ( PRESENT( INCREMENT ) ) THEN - CT_DYN = CT_DYN + 1 - ELSE IF ( PRESENT( RESET ) ) THEN - CT_DYN = 0 - ENDIF - - END SUBROUTINE SET_CT_DYN -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Set_ct_emis -! -! !DESCRIPTION: Subroutine SET\_CT\_EMIS increments CT\_EMIS, the counter -! of emission timesteps executed thus far. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE SET_CT_EMIS( INCREMENT, RESET ) -! -! !INPUT PARAMETERS: -! - LOGICAL, INTENT(IN), OPTIONAL :: INCREMENT ! Increment counter? - LOGICAL, INTENT(IN), OPTIONAL :: RESET ! Reset counter? -! -! !REVISION HISTORY: -! 21 Mar 2009 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - IF ( PRESENT( INCREMENT ) ) THEN - CT_EMIS = CT_EMIS + 1 - ELSE IF ( PRESENT( RESET ) ) THEN - CT_EMIS = 0 - ENDIF - - END SUBROUTINE SET_CT_EMIS -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Set_ct_diag -! -! !DESCRIPTION: Subroutine SET\_CT\_DIAG increments CT\_DIAG, the counter -! of largest timesteps executed thus far. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE SET_CT_DIAG( INCREMENT, RESET ) -! -! !INPUT PARAMETERS: -! - LOGICAL, INTENT(IN), OPTIONAL :: INCREMENT ! Increment counter? - LOGICAL, INTENT(IN), OPTIONAL :: RESET ! Reset counter? -! -! !REVISION HISTORY: -! 13 May 2009 - C. Carouge - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - IF ( PRESENT( INCREMENT ) ) THEN - CT_DIAG = CT_DIAG + 1 - ELSE IF ( PRESENT( RESET ) ) THEN - CT_DIAG = 0 - ENDIF - - END SUBROUTINE SET_CT_DIAG -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Set_ct_a3 -! -! !DESCRIPTION: Subroutine SET\_CT\_A3 increments CT\_A3, the counter of the -! number of times we have read in A-3 fields. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE SET_CT_A3( INCREMENT, RESET ) -! -! !INPUT PARAMETERS: -! - LOGICAL, INTENT(IN), OPTIONAL :: INCREMENT ! Increment counter? - LOGICAL, INTENT(IN), OPTIONAL :: RESET ! Reset counter? -! -! !REVISION HISTORY: -! 21 Mar 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - IF ( PRESENT( INCREMENT ) ) THEN - CT_A3 = CT_A3 + 1 - ELSE IF ( PRESENT( RESET ) ) THEN - CT_A3 = 0 - ENDIF - - END SUBROUTINE SET_CT_A3 -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Set_ct_i3 -! -! !DESCRIPTION: Subroutine SET\_CT\_I3 increments CT\_I3, the counter of the -! number of times we have read in I-3 fields. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE SET_CT_I3( INCREMENT, RESET ) -! -! !INPUT PARAMETERS: -! - LOGICAL, INTENT(IN), OPTIONAL :: INCREMENT ! Increment counter? - LOGICAL, INTENT(IN), OPTIONAL :: RESET ! Reset counter? -! -! !REVISION HISTORY: -! 03 Feb 2012 - R. Yantosca - Initial version, for GEOS-5.7.2 -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - IF ( PRESENT( INCREMENT ) ) THEN - CT_I3 = CT_I3 + 1 - ELSE IF ( PRESENT( RESET ) ) THEN - CT_I3 = 0 - ENDIF - - END SUBROUTINE SET_CT_I3 -#endif !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! @@ -1623,484 +1240,162 @@ FUNCTION GET_TAUe() RESULT( THISTAUe ) !BOC THISTAUe = TAUe - END FUNCTION GET_TAUe -#ifdef BPCH_DIAG -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_diagb -! -! !DESCRIPTION: Function GET\_DIAGb returns DIAGb (hours since 1 Jan 1985 -! at the start of a diagnostic interval) to the calling program. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_DIAGb() RESULT( THISDIAGb ) -! -! !RETURN VALUE: -! - REAL(f8) :: THISDIAGb ! DIAGb [hrs sincd 1/1/1985] -! -! !REVISION HISTORY: -! 05 Feb 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - THISDIAGb = DIAGb - - END FUNCTION GET_DIAGb -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_diage -! -! !DESCRIPTION: Function GET\_DIAGe returns DIAGe (hours since 1 Jan 1985 -! at the end of a diagnostic interval) to the calling program. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_DIAGe() RESULT( THISDIAGe ) -! -! !RETURN VALUE: -! - REAL(f8) :: THISDIAGe ! DIAGe [hrs sincd 1/1/1985] -! -! !REVISION HISTORY: -! 05 Feb 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - THISDIAGe = DIAGe - - END FUNCTION GET_DIAGe -#endif -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_localtime -! -! !DESCRIPTION: Function GET\_LOCALTIME returns the local time of a grid -! box to the calling program. (bmy, 2/5/03) -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_LOCALTIME( I, J, L, State_Grid, GMT ) & - RESULT( THISLOCALTIME ) -! -! !USES: -! - USE State_Grid_Mod, ONLY : GrdState -! -! !INPUT PARAMETERS: -! - INTEGER, INTENT(IN) :: I ! Longitude index - INTEGER, INTENT(IN) :: J ! Latitude index - INTEGER, INTENT(IN) :: L ! Level index - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - REAL(f8), INTENT(IN), OPTIONAL :: GMT ! GMT time of day [hrs] -! -! !RETURN VALUE: -! - REAL(f8) :: THISLOCALTIME ! Local time [hrs] -! -! !REMARKS: -! Local Time = GMT + ( longitude / 15 ) since each hour of time -! corresponds to 15 degrees of longitude on the globe -! -! !REVISION HISTORY: -! 05 Feb 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - REAL(f8) :: GMT_HRS - - ! Save the value of the argument GMT in a local variable - ! If not passed, then use the current GMT time from time_mod.F90 - IF ( PRESENT( GMT ) ) THEN - GMT_HRS = GMT - ELSE - GMT_HRS = GET_GMT() - ENDIF - - ! Local time = GMT time [hrs] + longitude / 15 - THISLOCALTIME = GMT_HRS + ( State_Grid%XMid(I,J) / 15.0_f8 ) - - ! Make sure that THISLOCALTIME is in the range 0-24 hours - IF ( THISLOCALTIME > 24.0_f8 ) THEN - THISLOCALTIME = THISLOCALTIME - 24.0_f8 - ENDIF - - IF ( THISLOCALTIME < 0.0_f8 ) THEN - THISLOCALTIME = THISLOCALTIME + 24.0_f8 - ENDIF - - END FUNCTION GET_LOCALTIME -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_LocalTime_In_Sec -! -! !DESCRIPTION: Function GET\_LOCALTIME returns the local time of a grid -! box to the calling program. (bmy, 2/5/03) -!\\ -!\\ -! !INTERFACE: -! - FUNCTION Get_LocalTime_In_Sec( I, J, L, State_Grid ) & - RESULT( Lt_In_Sec ) -! -! !USES: -! - USE State_Grid_Mod, ONLY : GrdState -! -! !INPUT PARAMETERS: -! - INTEGER, INTENT(IN) :: I ! Longitude index - INTEGER, INTENT(IN) :: J ! Latitude index - INTEGER, INTENT(IN) :: L ! Level index - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object -! -! !RETURN VALUE: -! - INTEGER :: Lt_In_Sec ! Local time [s] -! -! !REMARKS: -! Local Time = GMT + ( longitude / 15 ) since each hour of time -! corresponds to 15 degrees of longitude on the globe -! -! !REVISION HISTORY: -! 18 Apr 2019 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: Offset_Sec, UTC_In_Sec - - ! Compute UTC value in seconds - UTC_In_Sec = ( Hour * 3600 ) + ( Minute * 60 ) + Second - - ! 15 degrees of longitude on Earth is 1 hour or 3600 sec of time - ! Use NINT to avoid roundoff issues - Offset_Sec = NINT(( State_Grid%XMid(I,J) / 15.0_f8 ) * 3600.0_f8 ) - - ! Add offset to UTC to get local time - Lt_In_Sec = UTC_In_Sec + Offset_Sec - - ! Make sure that local time is in the range 0-86400 - IF ( Lt_In_Sec > 86400 ) THEN - Lt_In_Sec = Lt_In_Sec - 86400 - ENDIF - - IF ( Lt_In_Sec < 0 ) THEN - Lt_In_Sec = Lt_In_Sec + 86400 - ENDIF - - END FUNCTION Get_LocalTime_In_Sec -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_ts_chem -! -! !DESCRIPTION: Function GET\_TS\_CHEM returns the chemistry timestep in -! seconds. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_TS_CHEM() RESULT( THIS_TS_CHEM ) -! -! !RETURN VALUE: -! - INTEGER :: THIS_TS_CHEM ! ! Chemistry timestep [sec] -! -! !REVISION HISTORY: -! 21 Mar 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - THIS_TS_CHEM = TS_CHEM - - END FUNCTION GET_TS_CHEM -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_ts_rad -! -! !DESCRIPTION: Function GET\_TS\_RAD returns the radiation timestep in -! seconds. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_TS_RAD() RESULT( THIS_TS_RAD ) -! -! !RETURN VALUE: -! - INTEGER :: THIS_TS_RAD ! ! Radiation timestep [sec] -! -! !REVISION HISTORY: -! 06 Oct 2012 - D. Ridley - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - THIS_TS_RAD = TS_RAD - - END FUNCTION GET_TS_RAD -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_ts_conv -! -! !DESCRIPTION: Function GET\_TS\_CONV returns the convection timestep in -! seconds. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_TS_CONV() RESULT( THIS_TS_CONV ) -! -! !RETURN VALUE: -! - INTEGER :: THIS_TS_CONV ! Convective timestep [sec] -! -! !REVISION HISTORY: -! 21 Mar 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - THIS_TS_CONV = TS_CONV - - END FUNCTION GET_TS_CONV -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_ts_diag -! -! !DESCRIPTION: Function GET\_TS\_DIAG returns the diagnostic timestep in -! seconds. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_TS_DIAG() RESULT( THIS_TS_DIAG ) -! -! !RETURN VALUE: -! - INTEGER :: THIS_TS_DIAG ! Diagnostic timestep [sec] -! -! !REVISION HISTORY: -! 21 Mar 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - THIS_TS_DIAG = TS_DIAG - - END FUNCTION GET_TS_DIAG -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_ts_dyn -! -! !DESCRIPTION: Function GET\_TS\_DIAG returns the diagnostic timestep in -! seconds. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_TS_DYN() RESULT( THIS_TS_DYN ) -! -! !RETURN VALUE: -! - INTEGER :: THIS_TS_DYN ! Dynamic timestep [sec] -! -! !REVISION HISTORY: -! 21 Mar 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - THIS_TS_DYN = TS_DYN - - END FUNCTION GET_TS_DYN -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_ts_emis -! -! !DESCRIPTION: Function GET\_TS\_EMIS returns the emission timestep in -! seconds. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_TS_EMIS() RESULT( THIS_TS_EMIS ) -! -! !RETURN VALUE: -! - INTEGER :: THIS_TS_EMIS ! Emissions timestep [sec] -! -! !REVISION HISTORY: -! 21 Mar 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - THIS_TS_EMIS = TS_EMIS - - END FUNCTION GET_TS_EMIS -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_ts_unit -! -! !DESCRIPTION: Function GET\_TS\_UNIT returns the unit-conversion timestep -! in seconds. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_TS_UNIT() RESULT( THIS_TS_UNIT ) -! -! !RETURN VALUE: -! - INTEGER :: THIS_TS_UNIT ! Unit conversion timestep [sec] -! -! !REVISION HISTORY: -! 21 Mar 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - THIS_TS_UNIT = TS_UNIT - - END FUNCTION GET_TS_UNIT -#ifdef BPCH_DIAG + END FUNCTION GET_TAUe !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: Get_ct_chem +! !IROUTINE: Get_localtime ! -! !DESCRIPTION: Function GET\_CT\_CHEM returns the chemistry timestep counter -! to the calling program. +! !DESCRIPTION: Function GET\_LOCALTIME returns the local time of a grid +! box to the calling program. (bmy, 2/5/03) !\\ !\\ ! !INTERFACE: ! - FUNCTION GET_CT_CHEM() RESULT( THIS_CT_CHEM ) + FUNCTION GET_LOCALTIME( I, J, L, State_Grid, GMT ) & + RESULT( THISLOCALTIME ) +! +! !USES: +! + USE State_Grid_Mod, ONLY : GrdState +! +! !INPUT PARAMETERS: +! + INTEGER, INTENT(IN) :: I ! Longitude index + INTEGER, INTENT(IN) :: J ! Latitude index + INTEGER, INTENT(IN) :: L ! Level index + TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object + REAL(f8), INTENT(IN), OPTIONAL :: GMT ! GMT time of day [hrs] ! ! !RETURN VALUE: ! - INTEGER :: THIS_CT_CHEM + REAL(f8) :: THISLOCALTIME ! Local time [hrs] +! +! !REMARKS: +! Local Time = GMT + ( longitude / 15 ) since each hour of time +! corresponds to 15 degrees of longitude on the globe ! ! !REVISION HISTORY: -! 21 Mar 2003 - R. Yantosca - Initial Version +! 05 Feb 2003 - R. Yantosca - Initial Version ! See https://github.com/geoschem/geos-chem for complete history !EOP !------------------------------------------------------------------------------ !BOC - THIS_CT_CHEM = CT_CHEM +! +! !LOCAL VARIABLES: +! + REAL(f8) :: GMT_HRS + + ! Save the value of the argument GMT in a local variable + ! If not passed, then use the current GMT time from time_mod.F90 + IF ( PRESENT( GMT ) ) THEN + GMT_HRS = GMT + ELSE + GMT_HRS = GET_GMT() + ENDIF + + ! Local time = GMT time [hrs] + longitude / 15 + THISLOCALTIME = GMT_HRS + ( State_Grid%XMid(I,J) / 15.0_f8 ) + + ! Make sure that THISLOCALTIME is in the range 0-24 hours + IF ( THISLOCALTIME > 24.0_f8 ) THEN + THISLOCALTIME = THISLOCALTIME - 24.0_f8 + ENDIF + + IF ( THISLOCALTIME < 0.0_f8 ) THEN + THISLOCALTIME = THISLOCALTIME + 24.0_f8 + ENDIF - END FUNCTION GET_CT_CHEM + END FUNCTION GET_LOCALTIME !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: Get_ct_rad +! !IROUTINE: Get_LocalTime_In_Sec ! -! !DESCRIPTION: Function GET\_CT\_RAD returns the radiation timestep counter -! to the calling program. +! !DESCRIPTION: Function GET\_LOCALTIME returns the local time of a grid +! box to the calling program. (bmy, 2/5/03) !\\ !\\ ! !INTERFACE: ! - FUNCTION GET_CT_RAD() RESULT( THIS_CT_RAD ) + FUNCTION Get_LocalTime_In_Sec( I, J, L, State_Grid ) & + RESULT( Lt_In_Sec ) +! +! !USES: +! + USE State_Grid_Mod, ONLY : GrdState +! +! !INPUT PARAMETERS: +! + INTEGER, INTENT(IN) :: I ! Longitude index + INTEGER, INTENT(IN) :: J ! Latitude index + INTEGER, INTENT(IN) :: L ! Level index + TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object ! ! !RETURN VALUE: ! - INTEGER :: THIS_CT_RAD + INTEGER :: Lt_In_Sec ! Local time [s] +! +! !REMARKS: +! Local Time = GMT + ( longitude / 15 ) since each hour of time +! corresponds to 15 degrees of longitude on the globe ! ! !REVISION HISTORY: -! 06 Oct 2012 - D. Ridley - Initial version +! 18 Apr 2019 - R. Yantosca - Initial Version ! See https://github.com/geoschem/geos-chem for complete history !EOP !------------------------------------------------------------------------------ !BOC - THIS_CT_RAD = CT_RAD +! +! !LOCAL VARIABLES: +! + INTEGER :: Offset_Sec, UTC_In_Sec + + ! Compute UTC value in seconds + UTC_In_Sec = ( Hour * 3600 ) + ( Minute * 60 ) + Second + + ! 15 degrees of longitude on Earth is 1 hour or 3600 sec of time + ! Use NINT to avoid roundoff issues + Offset_Sec = NINT(( State_Grid%XMid(I,J) / 15.0_f8 ) * 3600.0_f8 ) + + ! Add offset to UTC to get local time + Lt_In_Sec = UTC_In_Sec + Offset_Sec + + ! Make sure that local time is in the range 0-86400 + IF ( Lt_In_Sec > 86400 ) THEN + Lt_In_Sec = Lt_In_Sec - 86400 + ENDIF + + IF ( Lt_In_Sec < 0 ) THEN + Lt_In_Sec = Lt_In_Sec + 86400 + ENDIF - END FUNCTION GET_CT_RAD + END FUNCTION Get_LocalTime_In_Sec !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: Get_ct_conv +! !IROUTINE: Get_ts_chem ! -! !DESCRIPTION: Function GET\_CT\_CONV returns the convection timestep -! counter to the calling program. +! !DESCRIPTION: Function GET\_TS\_CHEM returns the chemistry timestep in +! seconds. !\\ !\\ ! !INTERFACE: ! - FUNCTION GET_CT_CONV() RESULT( THIS_CT_CONV ) + FUNCTION GET_TS_CHEM() RESULT( THIS_TS_CHEM ) ! ! !RETURN VALUE: ! - INTEGER :: THIS_CT_CONV ! # of convection timesteps + INTEGER :: THIS_TS_CHEM ! ! Chemistry timestep [sec] ! ! !REVISION HISTORY: ! 21 Mar 2003 - R. Yantosca - Initial Version @@ -2108,58 +1403,57 @@ FUNCTION GET_CT_CONV() RESULT( THIS_CT_CONV ) !EOP !------------------------------------------------------------------------------ !BOC - THIS_CT_CONV = CT_CONV + THIS_TS_CHEM = TS_CHEM - END FUNCTION GET_CT_CONV + END FUNCTION GET_TS_CHEM !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: Get_ct_dyn +! !IROUTINE: Get_ts_rad ! -! !DESCRIPTION: Function GET\_CT\_CHEM returns the dynamic timestep counter -! to the calling program. +! !DESCRIPTION: Function GET\_TS\_RAD returns the radiation timestep in +! seconds. !\\ !\\ ! !INTERFACE: ! - FUNCTION GET_CT_DYN() RESULT( THIS_CT_DYN ) + FUNCTION GET_TS_RAD() RESULT( THIS_TS_RAD ) ! ! !RETURN VALUE: ! - INTEGER :: THIS_CT_DYN ! # of dynamics timesteps + INTEGER :: THIS_TS_RAD ! ! Radiation timestep [sec] ! ! !REVISION HISTORY: -! 21 Mar 2003 - R. Yantosca - Initial Version +! 06 Oct 2012 - D. Ridley - Initial version ! See https://github.com/geoschem/geos-chem for complete history !EOP !------------------------------------------------------------------------------ !BOC - THIS_CT_DYN = CT_DYN + THIS_TS_RAD = TS_RAD - END FUNCTION GET_CT_DYN + END FUNCTION GET_TS_RAD !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: Get_ct_emis +! !IROUTINE: Get_ts_conv ! -! !DESCRIPTION: Function GET\_CT\_CHEM returns the emissions timestep counter -! to the calling program. +! !DESCRIPTION: Function GET\_TS\_CONV returns the convection timestep in +! seconds. !\\ !\\ ! !INTERFACE: ! - FUNCTION GET_CT_EMIS() RESULT( THIS_CT_EMIS ) + FUNCTION GET_TS_CONV() RESULT( THIS_TS_CONV ) ! ! !RETURN VALUE: ! - INTEGER :: THIS_CT_EMIS ! # of emissions timesteps -! + INTEGER :: THIS_TS_CONV ! Convective timestep [sec] ! ! !REVISION HISTORY: ! 21 Mar 2003 - R. Yantosca - Initial Version @@ -2167,28 +1461,28 @@ FUNCTION GET_CT_EMIS() RESULT( THIS_CT_EMIS ) !EOP !------------------------------------------------------------------------------ !BOC - THIS_CT_EMIS = CT_EMIS + THIS_TS_CONV = TS_CONV - END FUNCTION GET_CT_EMIS + END FUNCTION GET_TS_CONV !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: Get_ct_a3 +! !IROUTINE: Get_ts_diag ! -! !DESCRIPTION: Function GET\_CT\_A3 returns the A-3 fields timestep -! counter to the calling program. +! !DESCRIPTION: Function GET\_TS\_DIAG returns the diagnostic timestep in +! seconds. !\\ !\\ ! !INTERFACE: ! - FUNCTION GET_CT_A3() RESULT( THIS_CT_A3 ) + FUNCTION GET_TS_DIAG() RESULT( THIS_TS_DIAG ) ! ! !RETURN VALUE: ! - INTEGER :: THIS_CT_A3 ! # of A-3 timesteps + INTEGER :: THIS_TS_DIAG ! Diagnostic timestep [sec] ! ! !REVISION HISTORY: ! 21 Mar 2003 - R. Yantosca - Initial Version @@ -2196,97 +1490,96 @@ FUNCTION GET_CT_A3() RESULT( THIS_CT_A3 ) !EOP !------------------------------------------------------------------------------ !BOC - THIS_CT_A3 = CT_A3 + THIS_TS_DIAG = TS_DIAG - END FUNCTION GET_CT_A3 + END FUNCTION GET_TS_DIAG !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: Get_ct_i3 +! !IROUTINE: Get_ts_dyn ! -! !DESCRIPTION: Function GET\_CT\_I3 returns the I-3 fields timestep counter -! to the calling program +! !DESCRIPTION: Function GET\_TS\_DIAG returns the diagnostic timestep in +! seconds. !\\ !\\ ! !INTERFACE: ! - FUNCTION GET_CT_I3() RESULT( THIS_CT_I3 ) + FUNCTION GET_TS_DYN() RESULT( THIS_TS_DYN ) ! ! !RETURN VALUE: ! - INTEGER :: THIS_CT_I3 ! # of I-6 timesteps + INTEGER :: THIS_TS_DYN ! Dynamic timestep [sec] ! ! !REVISION HISTORY: -! 03 Feb 2012 - R. Yantosca - Initial version, for GEOS-5.7.2 +! 21 Mar 2003 - R. Yantosca - Initial Version ! See https://github.com/geoschem/geos-chem for complete history !EOP !------------------------------------------------------------------------------ !BOC - THIS_CT_I3 = CT_I3 + THIS_TS_DYN = TS_DYN - END FUNCTION GET_CT_I3 + END FUNCTION GET_TS_DYN !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: Get_ct_diag +! !IROUTINE: Get_ts_emis ! -! !DESCRIPTION: Function GET\_CT\_DIAG returns the DIAG timestep counter to the -! calling program. +! !DESCRIPTION: Function GET\_TS\_EMIS returns the emission timestep in +! seconds. !\\ !\\ ! !INTERFACE: ! - FUNCTION GET_CT_DIAG() RESULT( THIS_CT_DIAG ) + FUNCTION GET_TS_EMIS() RESULT( THIS_TS_EMIS ) ! ! !RETURN VALUE: ! - INTEGER :: THIS_CT_DIAG ! # of diagnostic timesteps + INTEGER :: THIS_TS_EMIS ! Emissions timestep [sec] ! ! !REVISION HISTORY: -! 21 May 2009 - C. Carouge - Initial Version +! 21 Mar 2003 - R. Yantosca - Initial Version ! See https://github.com/geoschem/geos-chem for complete history !EOP !------------------------------------------------------------------------------ !BOC - THIS_CT_DIAG = CT_DIAG + THIS_TS_EMIS = TS_EMIS - END FUNCTION GET_CT_DIAG + END FUNCTION GET_TS_EMIS !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: Get_hg2_diag +! !IROUTINE: Get_ts_unit ! -! !DESCRIPTION: Function GET\_Hg2\_DIAG returns the DIAG timestep counter to -! the calling program. (hma 20100218) +! !DESCRIPTION: Function GET\_TS\_UNIT returns the unit-conversion timestep +! in seconds. !\\ !\\ ! !INTERFACE: ! - FUNCTION GET_Hg2_DIAG() RESULT( THIS_Hg2_DIAG ) + FUNCTION GET_TS_UNIT() RESULT( THIS_TS_UNIT ) ! ! !RETURN VALUE: ! - INTEGER :: THIS_Hg2_DIAG ! # of diagnostic timesteps + INTEGER :: THIS_TS_UNIT ! Unit conversion timestep [sec] ! ! !REVISION HISTORY: -! 18 Feb 2012 - H. Amos - Initial version +! 21 Mar 2003 - R. Yantosca - Initial Version ! See https://github.com/geoschem/geos-chem for complete history !EOP !------------------------------------------------------------------------------ !BOC - THIS_Hg2_DIAG = Hg2_DIAG + THIS_TS_UNIT = TS_UNIT - END FUNCTION GET_Hg2_DIAG -#endif + END FUNCTION GET_TS_UNIT !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! @@ -2975,38 +2268,6 @@ FUNCTION ITS_TIME_FOR_UNIT() RESULT( FLAG ) FLAG = ( MOD( ELAPSED_SEC, TS_DYN ) == 0 ) END FUNCTION ITS_TIME_FOR_UNIT -#ifdef BPCH_DIAG -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Its_Time_For_diag -! -! !DESCRIPTION: Function ITS\_TIME\_FOR\_DIAG returns TRUE if it is time to -! archive certain diagnostics, or FALSE otherwise. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION ITS_TIME_FOR_DIAG() RESULT( FLAG ) -! -! !RETURN VALUE: -! - LOGICAL :: FLAG -! -! !REVISION HISTORY: -! 21 Mar 2003 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - ! Is it time for diagnostics? - FLAG = ( MOD( ELAPSED_SEC, TS_DIAG ) == 0 ) - - END FUNCTION ITS_TIME_FOR_DIAG -#endif !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! @@ -3172,80 +2433,6 @@ FUNCTION ITS_TIME_FOR_EXIT() RESULT( FLAG ) FLAG = ( TAU >= TAUe ) END FUNCTION ITS_TIME_FOR_EXIT -#ifdef BPCH_DIAG -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Its_Time_For_bpch -! -! !DESCRIPTION: Function ITS\_TIME\_FOR\_BPCH returns TRUE if it's time to -! write output to the bpch file, or FALSE otherwise. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION ITS_TIME_FOR_BPCH( Input_Opt ) RESULT( DO_BPCH ) -! -! !USES: -! - USE Input_Opt_Mod, ONLY : OptInput -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input options -! -! !RETURN VALUE: -! - LOGICAL :: DO_BPCH -! -! !REMARKS: -! NJDAY is now located in CMN_SIZE_mod.F90, so that we can eventually -! retire the obsolete CMN_DIAG_mod.F90. (bmy, 1/16/18) -! -! !REVISION HISTORY: -! 02 Feb 2007 - R. Yantosca - Initial Version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: DOY, THIS_NJDAY - - !================================================================= - ! ITS_TIME_FOR_BPCH begins here! - !================================================================= - - ! Return FALSE if it's the first timestep - IF ( TAU == TAUb ) THEN - DO_BPCH = .FALSE. - RETURN - ENDIF - - ! Day of year (0..365 or 0..366 leapyears) - DOY = DAY_OF_YEAR - - ! Look up appropriate value of NJDAY array. We may need to add a - ! day to skip past the Feb 29 element of NJDAY for non-leap-years. - IF ( .not. ITS_A_LEAPYEAR( FORCE=.TRUE. ) .and. DOY > 59 ) THEN - THIS_NJDAY = Input_Opt%NJDAY( DOY + 1 ) - ELSE - THIS_NJDAY = Input_Opt%NJDAY( DOY ) - ENDIF - - ! Test if this is the day & time to write to the BPCH file! - IF ( ( THIS_NJDAY > 0 ) .and. NHMS == NHMSe ) THEN - DO_BPCH = .TRUE. - ELSE - DO_BPCH = .FALSE. - ENDIF - - END FUNCTION ITS_TIME_FOR_BPCH -#endif !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! @@ -4304,38 +3491,6 @@ SUBROUTINE TIMESTAMP_DIAG NYMD_DIAG = GET_NYMD() END SUBROUTINE TIMESTAMP_DIAG -#ifdef BPCH_DIAG -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Get_nymd_diag -! -! !DESCRIPTION: Function GET\_NYMD\_DIAG returns the previous NYMD value -! (YYYYMMDD) to the calling program. Used for diagnostic filenames. -!\\ -!\\ -! !INTERFACE: -! - FUNCTION GET_NYMD_DIAG() RESULT( THISNYMD ) -! -! !RETURN VALUE: -! - INTEGER :: THISNYMD -! -! !REVISION HISTORY: -! 12 Aug 2009 - C. Carouge - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - - THISNYMD = NYMD_DIAG - - END FUNCTION GET_NYMD_DIAG -#endif !EOC #if defined( ESMF_ ) || defined( MODEL_ ) !------------------------------------------------------------------------------ diff --git a/Headers/CMN_DIAG_mod.F90 b/Headers/CMN_DIAG_mod.F90 deleted file mode 100644 index 87bd689a5..000000000 --- a/Headers/CMN_DIAG_mod.F90 +++ /dev/null @@ -1,135 +0,0 @@ -#ifdef BPCH_DIAG -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !MODULE: CMN_DIAG_mod.F90 -! -! !DESCRIPTION: Module CMN\_DIAG\_mod contains size parameters and global -! variables for the GEOS-Chem diagnostic arrays. This is mostly historical -! baggage. -!\\ -!\\ -! !INTERFACE: -! -MODULE CMN_DIAG_MOD -! -! !USES: -! - IMPLICIT NONE - PUBLIC -! -! !DEFINED PARAMETERS: -! - INTEGER, PARAMETER :: MAX_TRACER = 600 ! Large placeholder value - -#if defined(TOMAS) - !================================================================= - ! Settings for TOMAS aerosol microphysics (win, bmy, 1/22/10) - !================================================================= - - INTEGER, PARAMETER :: TOMASSPEC = 8 - -#if defined(TOMAS40) - INTEGER, PARAMETER :: TOMASBIN = 40 -#elif defined(TOMAS15) - INTEGER, PARAMETER :: TOMASBIN = 15 -#elif defined(TOMAS12) - INTEGER, PARAMETER :: TOMASBIN = 12 -#else - INTEGER, PARAMETER :: TOMASBIN = 30 ! Number of TOMAS bins -#endif - - INTEGER, PARAMETER :: PD59=TOMASBIN*TOMASSPEC - INTEGER, PARAMETER :: PD60=TOMASBIN*TOMASSPEC - INTEGER, PARAMETER :: PD61=2 - INTEGER :: PD65 - INTEGER, PARAMETER :: MAX_DIAG = 80 - INTEGER, PARAMETER :: MAXFAM = 40 - -#else - !================================================================= - ! For non-TOMAS and non-RRTMG with BPCH_DIAG=y - !================================================================= - INTEGER, PARAMETER :: MAX_DIAG = 80 - -#endif -! -! !PUBLIC DATA MEMBERS: -! - !================================================================= - ! NDxx diagnostic flags - !================================================================= -#ifdef TOMAS - INTEGER :: LD06, LD44, LD65, LD59, LD60, LD61 - INTEGER :: ND06, ND44, ND65, ND59, ND60, ND61 -#endif - - !================================================================= - ! Variables for printing out selected tracers in diagnostic output - !================================================================= - INTEGER :: TINDEX(MAX_DIAG,MAX_TRACER) - INTEGER :: TCOUNT(MAX_DIAG) - INTEGER :: TMAX(MAX_DIAG) -! -! !REMARKS: -! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -! %%% NOTE: THIS MODULE WILL BE A STUB UNLESS GEOS-Chem IS COMPILED %%% -! %%% WITH THE BPCH_DIAG=y OPTION. (bmy, 10/4/19) %%% -! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -! -! !REVISION HISTORY: -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -CONTAINS -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Init_Cmn_Diag -! -! !DESCRIPTION: Subroutine INIT\_CMN\_DIAG initializes quantities based on -! the grid-independent size parameters. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Init_CMN_DIAG( Input_Opt, State_Grid, RC ) -! -! !USES: -! - USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput - USE State_Grid_Mod, ONLY : GrdState -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REVISION HISTORY: -! 19 Nov 2012 - R. Yantosca - Added ProTeX headers -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - ! Assume success - RC = GC_SUCCESS - -#ifdef TOMAS - PD65 = State_Grid%NZ * MAXFAM -#endif - - END SUBROUTINE Init_CMN_DIAG -!EOC -END MODULE CMN_DIAG_MOD -#endif diff --git a/Headers/CMN_O3_mod.F90 b/Headers/CMN_O3_mod.F90 deleted file mode 100644 index 3076e3bbe..000000000 --- a/Headers/CMN_O3_mod.F90 +++ /dev/null @@ -1,136 +0,0 @@ -#ifdef BPCH_DIAG -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !MODULE: CMN_O3_mod.F90 -! -! !DESCRIPTION: Common blocks for anthro emissions (via SMVGEAR!) -!\\ -!\\ -! !INTERFACE: -! -MODULE CMN_O3_MOD -! -! !USES: -! - USE PRECISION_MOD - - IMPLICIT NONE - PUBLIC -! -! !PUBLIC DATA MEMBERS: -! - ! SAVEEOH = array to save EOH fields (evf, 5/21/13) - ! SAVEGLYX= array to save GLYX fields (eam, 8/25/14 ) - ! SAVEOA = array for total organic aerosol (trc 6 of ND42, eam,7/10/14) - REAL(fp), ALLOCATABLE :: SAVEEOH(:,:,:) - REAL(fp), ALLOCATABLE :: SAVEGLYX(:,:,:) - REAL(fp), ALLOCATABLE :: SAVEOA(:,:,:) -! -! !REMARKS: -! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -! %%% NOTE: THIS MODULE WILL BE A STUB UNLESS GEOS-Chem IS COMPILED %%% -! %%% WITH THE BPCH_DIAG=y OPTION. (bmy, 10/4/19) %%% -! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -! -! !REVISION HISTORY: -! 23 Aug 2011 - M. Long - Converted to Module from Header file -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -CONTAINS -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Init_Cmn_O3 -! -! !DESCRIPTION: Subroutine INIT\_CMN\_O3 allocates all module arrays. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Init_CMN_O3( Input_Opt, State_Grid, RC ) -! -! !USES: -! - USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput - USE State_Grid_Mod, ONLY : GrdState -! -! !INPUT PARAMETERS: -! - TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REVISION HISTORY: -! 19 Nov 2012 - R. Yantosca - Added ProTeX headers -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - ! Assume success - RC = GC_SUCCESS - - ! Allocate arrays - ALLOCATE( SAVEEOH (State_Grid%NX,State_Grid%NY,State_Grid%NZ), STAT=RC ) - ALLOCATE( SAVEGLYX(State_Grid%NX,State_Grid%NY,State_Grid%NZ), STAT=RC ) - ALLOCATE( SAVEOA (State_Grid%NX,State_Grid%NY,State_Grid%NZ), STAT=RC ) - - ! Zero arrays - SAVEEOH = 0e+0_fp - SAVEGLYX = 0e+0_fp - SAVEOA = 0e+0_fp - - END SUBROUTINE Init_CMN_O3 -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Cleanup_Cmn_O3 -! -! !DESCRIPTION: Subroutine CLEANUP\_CMN\_O3 allocates all module arrays. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Cleanup_CMN_O3( RC ) -! -! !USES: -! - USE ErrCode_Mod -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REVISION HISTORY: -! 19 Nov 2012 - R. Yantosca - Added ProTeX headers -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - ! Assume success - RC = GC_SUCCESS - - ! Deallocate arrays - IF ( ALLOCATED( SAVEEOH ) ) DEALLOCATE( SAVEEOH ) - IF ( ALLOCATED( SAVEGLYX ) ) DEALLOCATE( SAVEGLYX ) - IF ( ALLOCATED( SAVEOA ) ) DEALLOCATE( SAVEOA ) - - END SUBROUTINE Cleanup_CMN_O3 -!EOC -END MODULE CMN_O3_MOD -#endif - diff --git a/Headers/CMakeLists.txt b/Headers/CMakeLists.txt index 3255c8fc2..8103fbcda 100755 --- a/Headers/CMakeLists.txt +++ b/Headers/CMakeLists.txt @@ -7,9 +7,7 @@ add_library(Headers STATIC EXCLUDE_FROM_ALL aermass_container_mod.F90 charpak_mod.F90 - CMN_DIAG_mod.F90 CMN_FJX_MOD.F90 - CMN_O3_mod.F90 CMN_SIZE_mod.F90 diaglist_mod.F90 dictionary_m.F90 diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index 80ac70030..307feffd9 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -26,7 +26,6 @@ MODULE Input_Opt_Mod ! !PUBLIC MEMBER FUNCTIONS: ! PUBLIC :: Set_Input_Opt - PUBLIC :: Set_Input_Opt_Advect PUBLIC :: Cleanup_Input_Opt ! ! !PUBLIC DATA MEMBERS: @@ -53,7 +52,6 @@ MODULE Input_Opt_Mod !---------------------------------------- ! SIZE PARAMETER fields !---------------------------------------- - INTEGER :: Max_BPCH_Diag INTEGER :: Max_Families INTEGER :: Max_AdvectSpc @@ -270,21 +268,6 @@ MODULE Input_Opt_Mod ! DIAGNOSTIC MENU fields !---------------------------------------- CHARACTER(LEN=255) :: HistoryInputFile - INTEGER :: ND03 ! Hg - INTEGER :: ND06 ! TOMAS - INTEGER :: ND44 ! TOMAS - INTEGER :: ND53 ! POPs - INTEGER :: ND59 ! TOMAS - INTEGER :: ND60 ! TOMAS - INTEGER :: ND61 ! TOMAS - - INTEGER :: TS_DIAG - INTEGER, POINTER :: TINDEX(:,:) - INTEGER, POINTER :: TCOUNT(:) - INTEGER, POINTER :: TMAX(:) - LOGICAL :: DO_DIAG_WRITE - - ! Collection ids INTEGER :: DIAG_COLLECTION INTEGER :: GC_RST_COLLECTION ! Used only for NetCDF @@ -541,14 +524,6 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) Input_Opt%SALC_REDGE_um => NULL() Input_Opt%LSKYRAD => NULL() Input_Opt%LSPECRADMENU => NULL() - Input_Opt%NJDAY => NULL() - Input_Opt%TINDEX => NULL() - Input_Opt%TCOUNT => NULL() - Input_Opt%TMAX => NULL() - Input_Opt%ND51_TRACERS => NULL() - Input_Opt%ND51b_TRACERS => NULL() - Input_Opt%FAM_NAME => NULL() - Input_Opt%FAM_TYPE => NULL() Input_Opt%LINOZ_TPARM => NULL() !---------------------------------------- @@ -570,11 +545,6 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) ! ! Set to large placeholder values !---------------------------------------- -#ifdef RRTMG - Input_Opt%Max_BPCH_Diag = 187 ! Mirror MAX_DIAG in CMN_DIAG_mod.F90 -#else - Input_Opt%Max_BPCH_Diag = 80 ! Mirror MAX_DIAG in CMN_DIAG_mod.F90 -#endif Input_Opt%Max_Families = 250 Input_Opt%Max_AdvectSpc = 600 @@ -805,13 +775,6 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) Input_Opt%RS_SCALE = 1.0_fp Input_Opt%RA_Alt_Above_Sfc = 10 ! default height - - !---------------------------------------- - ! GAMAP_MENU fields - !---------------------------------------- - Input_Opt%GAMAP_DIAGINFO = '' - Input_Opt%GAMAP_TRACERINFO = '' - !---------------------------------------- ! OUTPUT MENU fields !---------------------------------------- @@ -827,28 +790,6 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) !---------------------------------------- Input_Opt%HistoryInputFile = '' Input_Opt%DIAG_COLLECTION = -999 - Input_Opt%TS_DIAG = 0 - ALLOCATE( Input_Opt%TCOUNT( Input_Opt%Max_BPCH_Diag ), STAT=RC ) - ALLOCATE( Input_Opt%TMAX ( Input_Opt%Max_BPCH_Diag ), STAT=RC ) - - Input_Opt%ND03 = 0 - Input_Opt%ND06 = 0 - Input_Opt%ND44 = 0 - Input_Opt%ND53 = 0 - Input_Opt%ND59 = 0 - Input_Opt%ND60 = 0 - Input_Opt%ND61 = 0 - Input_Opt%ND65 = 0 - Input_Opt%TCOUNT(:) = 0 - Input_Opt%TMAX(:) = 0 -#if defined( ESMF_ ) || defined( EXTERNAL_GRID ) || defined( EXTERNAL_FORCING ) - ! Need to shut off G-C diagnostics when - ! connecting to an external GCM (bmy, 3/29/13) - Input_Opt%DO_DIAG_WRITE = .FALSE. -#else - ! For traditional G-C runs, always write diags (bmy, 3/29/13) - Input_Opt%DO_DIAG_WRITE = .TRUE. -#endif !---------------------------------------- ! PLANEFLIGHT MENU fields @@ -1028,74 +969,6 @@ END SUBROUTINE Set_Input_Opt !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: Set_Input_Opt_Advect -! -! !DESCRIPTION: Subroutine SET\_INPUT\_OPT\_ADVECT intializes all GEOS-Chem -! options carried in Input Options derived type object that depend on -! the number of advected species (Input\_Opt%N_ADVECT). -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Set_Input_Opt_Advect( Input_Opt, RC ) -! -! !USES: -! - USE ErrCode_Mod -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(OptInput), INTENT(INOUT) :: Input_Opt ! Input Options object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? -! -! !REMARKS: -! NOTE: These arrays are all for bpch diagnostics, and will eventually -! be removed from GEOS-Chem. - -! !REVISION HISTORY: -! 26 Jan 2018 - M. Sulprizio- Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - ! Initialize - RC = GC_SUCCESS - - !======================================================================= - ! Allocate arrays - !======================================================================= - - ALLOCATE( Input_Opt%TINDEX(Input_Opt%Max_BPCH_Diag,Input_Opt%N_ADVECT), & - STAT=RC ) - CALL GC_CheckVar( 'Input_Opt%TINDEX', 0, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - Input_Opt%TINDEX = 0 - - ALLOCATE( Input_Opt%ND51_TRACERS (Input_Opt%N_ADVECT+Input_Opt%Max_BPCH_Diag),& - STAT=RC ) - CALL GC_CheckVar( 'Input_Opt%ND51_TRACERS', 0, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - Input_Opt%ND51_TRACERS = 0 - - ALLOCATE( Input_Opt%ND51b_TRACERS(Input_Opt%N_ADVECT+Input_Opt%Max_BPCH_Diag),& - STAT=RC ) - CALL GC_CheckVar( 'Input_Opt%ND51b_TRACERS', 0, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - Input_Opt%ND51b_TRACERS = 0 - - END SUBROUTINE Set_Input_Opt_Advect -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! ! !IROUTINE: Cleanup_Input_Opt ! ! !DESCRIPTION: Subroutine CLEANUP\_INPUT\_OPT deallocates all @@ -1152,62 +1025,6 @@ SUBROUTINE Cleanup_Input_Opt( Input_Opt, RC ) Input_Opt%SALC_REDGE_um => NULL() ENDIF - IF ( ASSOCIATED( Input_Opt%NJDAY ) ) THEN - DEALLOCATE( Input_Opt%NJDAY, STAT=RC ) - CALL GC_CheckVar( 'Input_Opt%NJDAY', 2, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - Input_Opt%NJDAY => NULL() - ENDIF - - IF ( ASSOCIATED( Input_Opt%TINDEX ) ) THEN - DEALLOCATE( Input_Opt%TINDEX, STAT=RC ) - CALL GC_CheckVar( 'Input_Opt%TINDEX', 2, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - Input_Opt%TINDEX => NULL() - ENDIF - - IF ( ASSOCIATED( Input_Opt%TCOUNT ) ) THEN - DEALLOCATE( Input_Opt%TCOUNT, STAT=RC ) - CALL GC_CheckVar( 'Input_Opt%TCOUNT', 2, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - Input_Opt%TCOUNT => NULL() - ENDIF - - IF ( ASSOCIATED( Input_Opt%TMAX ) ) THEN - DEALLOCATE( Input_Opt%TMAX, STAT=RC ) - CALL GC_CheckVar( 'Input_Opt%TMAX', 2, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - Input_Opt%TMAX => NULL() - ENDIF - - IF ( ASSOCIATED( Input_Opt%ND51_TRACERS ) ) THEN - DEALLOCATE( Input_Opt%ND51_TRACERS, STAT=RC ) - CALL GC_CheckVar( 'Input_Opt%ND51_TRACERS', 2, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - Input_Opt%ND51_TRACERS => NULL() - ENDIF - - IF ( ASSOCIATED( Input_Opt%ND51b_TRACERS ) ) THEN - DEALLOCATE( Input_Opt%ND51b_TRACERS, STAT=RC ) - CALL GC_CheckVar( 'Input_Opt%ND51b_TRACERS', 2, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - Input_Opt%ND51b_TRACERS => NULL() - ENDIF - - IF ( ASSOCIATED( Input_Opt%FAM_NAME ) ) THEN - DEALLOCATE( Input_Opt%FAM_NAME, STAT=RC ) - CALL GC_CheckVar( 'Input_Opt%FAM_NAME', 2, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - Input_Opt%FAM_NAME => NULL() - ENDIF - - IF ( ASSOCIATED( Input_Opt%FAM_TYPE ) ) THEN - DEALLOCATE( Input_Opt%FAM_TYPE, STAT=RC ) - CALL GC_CheckVar( 'Input_Opt%FAM_TYPE', 2, RC ) - IF ( RC /= GC_SUCCESS ) RETURN - Input_Opt%FAM_TYPE => NULL() - ENDIF - IF ( ASSOCIATED( Input_Opt%LINOZ_TPARM ) ) THEN DEALLOCATE( Input_Opt%LINOZ_TPARM, STAT=RC ) CALL GC_CheckVar( 'Input_Opt%LINOZ_TPARM', 2, RC ) diff --git a/Interfaces/GCClassic/main.F90 b/Interfaces/GCClassic/main.F90 index b74afbe3a..da68d118a 100644 --- a/Interfaces/GCClassic/main.F90 +++ b/Interfaces/GCClassic/main.F90 @@ -82,10 +82,6 @@ PROGRAM GEOS_Chem !-------------------------------------------------------------------------- ! GEOS-Chem diagnostics modules !-------------------------------------------------------------------------- -#ifdef BPCH_DIAG - USE DIAG_MOD ! G-C diagnostic arrays & counters - USE CMN_DIAG_MOD ! Logical switches for G-C diagnostics -#endif USE PLANEFLIGHT_MOD ! For planeflight track diag USE HISTORY_MOD ! Updated netCDF diagnostics USE OBSPACK_MOD ! For ObsPack diagnostics @@ -583,17 +579,6 @@ PROGRAM GEOS_Chem ENDIF #endif -#ifdef BPCH_DIAG - !-------------------------------------------------------------------------- - ! Initialize bpch diagnostic arrays and counters - !-------------------------------------------------------------------------- - IF ( notDryRun ) THEN - CALL Initialize( Input_Opt, State_Grid, 2, RC ) - CALL Initialize( Input_Opt, State_Grid, 3, RC ) - IF ( VerboseAndRoot ) CALL Debug_Msg( '### MAIN: a INITIALIZE' ) - ENDIF -#endif - !-------------------------------------------------------------------------- ! Register the horizontal and vertical grid information so that ! the History component can use it for netCDF metadata @@ -980,77 +965,6 @@ PROGRAM GEOS_Chem ENDIF ENDIF -#ifdef BPCH_DIAG - !===================================================================== - ! ***** W R I T E B P C H D I A G N O S T I C S ***** - !===================================================================== - IF ( ITS_TIME_FOR_BPCH( Input_Opt ) .and. notDryRun ) THEN - - IF ( Input_Opt%useTimers ) THEN - CALL Timer_Start( "Diagnostics", RC ) - ENDIF - - ! Set time at end of diagnostic timestep - CALL SET_DIAGe( TAU ) - - ! Write bpch file - IF ( Input_Opt%DO_DIAG_WRITE ) THEN - ! Write data to the "trac_avg." bpch file - CALL DIAG3( Input_Opt, State_Chm, State_Grid, State_Met, RC ) - - ! Flush file units - CALL CTM_FLUSH() - ENDIF - - ! Set time at beginning of next diagnostic timestep - CALL SET_DIAGb( TAU ) - - !================================================================== - ! ***** Z E R O B P C H D I A G N O S T I C S ***** - !================================================================== - CALL INITIALIZE( Input_Opt, State_Grid, 2, RC ) - CALL INITIALIZE( Input_Opt, State_Grid, 3, RC ) - - IF ( Input_Opt%useTimers ) THEN - CALL Timer_End( "Diagnostics", RC ) - ENDIF - ENDIF -#endif - -#ifdef GTMM_Hg -#ifdef BPCH_DIAG - !==================================================================== - ! ***** W R I T E G T M M R E S T A R T F I L E ***** - ! ***** MUST be done after call to diag3 **** - ! - ! %%%%% NOTE: THIS MAY BE BROKEN %%%% - !==================================================================== - ! Make land restart file: for GTMM runs only, beginning of each - ! month but not start of the run. - IF ( LGTMM .AND. ITS_A_NEW_MONTH() .AND. NYMD /= NYMDb ) THEN - IF (.NOT.( ITS_TIME_FOR_BPCH( Input_Opt ) )) THEN - - ! Get the species ID (NNN) from the wetdep ID (N) - N = 1 - NNN = State_Chm%Map_Wetdep(N) - - DO - ! Exit once we encounter Hg2 - If ( State_Chm%SpcData(NNN)%Info%Is_Hg2 ) THEN - EXIT - ENDIF - - ! Get the species ID (NNN) from the wetdep ID (N) - N = N + 1 - NNN = State_Chm%Map_Wetdep(N) - ENDDO - CALL UPDATE_DEP( N ) - ENDIF - CALL MAKE_GTMM_RESTART( Input_Opt, State_Grid, NYMD, NHMS, TAU, RC ) - ENDIF -#endif -#endif - !===================================================================== ! ***** T E S T F O R E N D O F R U N ***** !===================================================================== @@ -1370,11 +1284,6 @@ PROGRAM GEOS_Chem !--------------------------------------------------------------------- IF ( ITS_TIME_FOR_EMIS() ) THEN -#ifdef BPCH_DIAG - ! Increment emission counter - CALL Set_Ct_Emis( INCREMENT=.TRUE. ) -#endif - !================================================================== ! ***** D R Y D E P O S I T I O N ***** !================================================================== @@ -1446,11 +1355,6 @@ PROGRAM GEOS_Chem !--------------------------------------------------------------------- IF ( ITS_TIME_FOR_CONV() .and. notDryRun ) THEN -#ifdef BPCH_DIAG - ! Increment the convection timestep - CALL Set_Ct_Conv( INCREMENT=.TRUE. ) -#endif - !================================================================== ! ***** M I X E D L A Y E R M I X I N G ***** !================================================================== @@ -1551,11 +1455,6 @@ PROGRAM GEOS_Chem ! Every chemistry timestep... IF ( ITS_TIME_FOR_CHEM() ) THEN -#ifdef BPCH_DIAG - ! Increment chemistry timestep counter - CALL Set_Ct_Chem( INCREMENT=.TRUE. ) -#endif - ! SDE 05/28/13: Set H2O to State_Chm tracer if relevant IF ( Input_Opt%ITS_A_FULLCHEM_SIM .and. id_H2O > 0 ) THEN CALL Set_H2O_Trac( .FALSE., & @@ -1754,11 +1653,6 @@ PROGRAM GEOS_Chem 520 FORMAT( 5x, '- Calling RRTMG to compute fluxes and optics: ', & a4, ' (Index = ', i4.4, ')' ) -#ifdef BPCH_DIAG - ! Increment radiation timestep counter - CALL Set_Ct_Rad( INCREMENT=.TRUE. ) -#endif - IF ( VerboseAndRoot ) THEN CALL Debug_Msg( '### MAIN: a DO_RRTMG_RAD_TRANSFER' ) ENDIF @@ -2012,10 +1906,6 @@ PROGRAM GEOS_Chem !------------------------------------------------------------------------ ! ***** W R I T E H E M C O R E S T A R T S ***** - ! - ! NOTE: If BPCH_DIAG=y, then this is done above whenever - ! ITS_TIME_FOR_BPCH is TRUE. If BPCH_DIAG=n, then we have to - ! add this here to make sure we get HEMCO restart otuput. !------------------------------------------------------------------------ IF ( Input_Opt%useTimers ) THEN CALL Timer_Start( "HEMCO", RC ) @@ -2282,15 +2172,6 @@ SUBROUTINE Display_Model_Info() WRITE( 6, 150 ) 'ON' #endif - !----------------------------------------------------------------- - ! Print status of binary punch (bpch) diagnostics - !----------------------------------------------------------------- -#ifdef BPCH_DIAG - WRITE( 6, 160 ) 'ON' -#else - WRITE( 6, 160 ) 'OFF' -#endif - !----------------------------------------------------------------- ! Print status of netCDF diagnostics (aka History) - always on !----------------------------------------------------------------- @@ -2335,43 +2216,6 @@ SUBROUTINE Display_Model_Info() 190 FORMAT( /, '===> SIMULATION START TIME: ', a, ' <===', / ) END SUBROUTINE Display_Model_Info -#ifdef BPCH_DIAG -!EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: ctm_flush -! -! !DESCRIPTION: Internal subroutine CTM\_FLUSH flushes certain diagnostic -! file buffers to disk. -!\\ -!\\ -! CTM\_FLUSH should normally be called after each diagnostic output, so that -! in case the run dies, the output files from the last diagnostic timestep -! will not be lost. -!\\ -!\\ -! FLUSH is an intrinsic FORTRAN subroutine and takes as input the unit number -! of the file to be flushed to disk. -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE CTM_Flush() -! -! !REVISION HISTORY: -! 31 Aug 2000 - R. Yantosca - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC - - CALL FLUSH( IU_BPCH ) - - END SUBROUTINE CTM_Flush -#endif !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem index a4af8ecd6..a47f7b2b8 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -407,56 +407,3 @@ extra_diagnostics: activate: false flight_track_file: Planeflight.dat.YYYYMMDD output_file: plane.log.YYYYMMDD - - legacy_bpch: # 1 2 3 - output_menu: # 1234567890123456789012345678901 - schedule_output_for_JAN: 3000000000000000000000000000000 - schedule_output_for_FEB: 30000000000000000000000000000 - schedule_output_for_MAR: 3000000000000000000000000000000 - schedule_output_for_APR: 300000000000000000000000000000 - schedule_output_for_MAY: 3000000000000000000000000000000 - schedule_output_for_JUN: 300000000000000000000000000000 - schedule_output_for_JUL: 3000000000000000000000000000000 - schedule_output_for_AUG: 3000000000000000000000000000000 - schedule_output_for_SEP: 300000000000000000000000000000 - schedule_output_for_OCT: 3000000000000000000000000000000 - schedule_output_for_NOV: 300000000000000000000000000000 - schedule_output_for_DEC: 3000000000000000000000000000000 - - gamap: - diaginfo_dat_file: ./diaginfo.dat - tracerinfo_dat_file: ./tracerinfo.dat - - bpch_diagnostics: - TOMAS_aerosol_emissions: "0 all" - TOMAS_rate: "0 all" - TOMAS_3D_rate: "0 all" - ND65_prodloss: - activate: true - number_of_levels: 72 - - ND51_satellite: - activate: false - output_file: ts_satellite.YYYYMMDD.bpch - tracers: - - 1 - - 2 - - 501 - UTC_hour_for_write: 0 - averaging_period_in_LT: [9, 11] - IMIN_and_IMAX_of_region: [1, 72] - JMIN_and_JMAX_of_region: [1, 46] - LMIN_and_LMAX_of_region: [1, 1] - - ND51b_satellite: - activate: false - output_file: ts_13_15_NA..YYYYMMDD.bpch - tracers: - - 1 - - 2 - - 501 - UTC_hour_for_write: 1 - averaging_period_in_LT: [13, 15] - IMIN_and_IMAX_of_region: [1, 72] - JMIN_and_JMAX_of_region: [1, 46] - LMIN_and_LMAX_of_region: [1, 1] diff --git a/run/WRF/ch4/geoschem_config.yml b/run/WRF/ch4/geoschem_config.yml index 121728e47..ffa0bea51 100644 --- a/run/WRF/ch4/geoschem_config.yml +++ b/run/WRF/ch4/geoschem_config.yml @@ -77,53 +77,3 @@ extra_diagnostics: activate: false flight_track_file: Planeflight.dat.YYYYMMDD output_file: plane.log.YYYYMMDD - - legacy_bpch: # 1 2 3 - output_menu: # 1234567890123456789012345678901 - schedule_output_for_JAN: 3000000000000000000000000000000 - schedule_output_for_FEB: 30000000000000000000000000000 - schedule_output_for_MAR: 3000000000000000000000000000000 - schedule_output_for_APR: 300000000000000000000000000000 - schedule_output_for_MAY: 3000000000000000000000000000000 - schedule_output_for_JUN: 300000000000000000000000000000 - schedule_output_for_JUL: 3000000000000000000000000000000 - schedule_output_for_AUG: 3000000000000000000000000000000 - schedule_output_for_SEP: 300000000000000000000000000000 - schedule_output_for_OCT: 3000000000000000000000000000000 - schedule_output_for_NOV: 300000000000000000000000000000 - schedule_output_for_DEC: 3000000000000000000000000000000 - - gamap: - diaginfo_dat_file: ./diaginfo.dat - tracerinfo_dat_file: ./tracerinfo.dat - - bpch_diagnostics: - TOMAS_aerosol_emissions: "0 all" - TOMAS_rate: "0 all" - TOMAS_3D_rate: "0 all" - - ND51_satellite: - activate: false - output_file: ts_satellite.YYYYMMDD.bpch - tracers: - - 1 - - 2 - - 501 - UTC_hour_for_write: 0 - averaging_period_in_LT: [9, 11] - IMIN_and_IMAX_of_region: [1, 72] - JMIN_and_JMAX_of_region: [1, 46] - LMIN_and_LMAX_of_region: [1, 1] - - ND51b_satellite: - activate: false - output_file: ts_13_15_NA..YYYYMMDD.bpch - tracers: - - 1 - - 2 - - 501 - UTC_hour_for_write: 1 - averaging_period_in_LT: [13, 15] - IMIN_and_IMAX_of_region: [1, 72] - JMIN_and_JMAX_of_region: [1, 46] - LMIN_and_LMAX_of_region: [1, 1] diff --git a/run/WRF/fullchem/geoschem_config.yml b/run/WRF/fullchem/geoschem_config.yml index b32a84fe7..50d7d7520 100644 --- a/run/WRF/fullchem/geoschem_config.yml +++ b/run/WRF/fullchem/geoschem_config.yml @@ -374,56 +374,3 @@ extra_diagnostics: activate: false flight_track_file: Planeflight.dat.YYYYMMDD output_file: plane.log.YYYYMMDD - - legacy_bpch: # 1 2 3 - output_menu: # 1234567890123456789012345678901 - schedule_output_for_JAN: 3000000000000000000000000000000 - schedule_output_for_FEB: 30000000000000000000000000000 - schedule_output_for_MAR: 3000000000000000000000000000000 - schedule_output_for_APR: 300000000000000000000000000000 - schedule_output_for_MAY: 3000000000000000000000000000000 - schedule_output_for_JUN: 300000000000000000000000000000 - schedule_output_for_JUL: 3000000000000000000000000000000 - schedule_output_for_AUG: 3000000000000000000000000000000 - schedule_output_for_SEP: 300000000000000000000000000000 - schedule_output_for_OCT: 3000000000000000000000000000000 - schedule_output_for_NOV: 300000000000000000000000000000 - schedule_output_for_DEC: 3000000000000000000000000000000 - - gamap: - diaginfo_dat_file: ./diaginfo.dat - tracerinfo_dat_file: ./tracerinfo.dat - - bpch_diagnostics: - TOMAS_aerosol_emissions: "0 all" - TOMAS_rate: "0 all" - TOMAS_3D_rate: "0 all" - ND65_prodloss: - activate: true - number_of_levels: 72 - - ND51_satellite: - activate: false - output_file: ts_satellite.YYYYMMDD.bpch - tracers: - - 1 - - 2 - - 501 - UTC_hour_for_write: 0 - averaging_period_in_LT: [9, 11] - IMIN_and_IMAX_of_region: [1, 72] - JMIN_and_JMAX_of_region: [1, 46] - LMIN_and_LMAX_of_region: [1, 1] - - ND51b_satellite: - activate: false - output_file: ts_13_15_NA..YYYYMMDD.bpch - tracers: - - 1 - - 2 - - 501 - UTC_hour_for_write: 1 - averaging_period_in_LT: [13, 15] - IMIN_and_IMAX_of_region: [1, 72] - JMIN_and_JMAX_of_region: [1, 46] - LMIN_and_LMAX_of_region: [1, 1] diff --git a/test/shared/commonFunctionsForTests.sh b/test/shared/commonFunctionsForTests.sh index f88184644..4a72155fb 100755 --- a/test/shared/commonFunctionsForTests.sh +++ b/test/shared/commonFunctionsForTests.sh @@ -447,7 +447,7 @@ function config_options() { elif [[ ${dir} =~ "rrtmg" ]]; then options="${baseOptions} -DRRTMG=y -DEXE_FILE_NAME=${exeFileName}" elif [[ ${dir} =~ "tomas15" ]]; then - options="${baseOptions} -DTOMAS=y -DTOMAS_BINS=15 -DBPCH_DIAG=y -DEXE_FILE_NAME=${exeFileName}" + options="${baseOptions} -DTOMAS=y -DTOMAS_BINS=15 -DEXE_FILE_NAME=${exeFileName}" else options="${baseOptions}" fi From a695836e8297df55666318ebbfb24714366a3b4b Mon Sep 17 00:00:00 2001 From: ubuntu Date: Mon, 26 Feb 2024 21:13:38 +0000 Subject: [PATCH 104/331] Update changelog for PR #2166 (remove bpch diags) CHANGELOG.md - Added note about removal of legacy binary punch diagnostic code Signed-off-by: Bob Yantosca --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41d8ebc51..75dda5a69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Fixed - Use rate-law function `GCARR_ac` for rxns that have Arrhenius `B` parameters that are zero +### Removed +- Legacy binary punch diagnostic code contained within `#ifdef BPCH_DIAG` blocks + ## [14.3.0] - 2024-02-07 ### Added - Added capability for TOMAS simulations in GCHP From 4afc038377e19cad9a72013152693ccf507db1b9 Mon Sep 17 00:00:00 2001 From: ubuntu Date: Mon, 26 Feb 2024 21:46:27 +0000 Subject: [PATCH 105/331] Remove and/or modify comments pertaining to bpch diagnostics GeosCore/diagnostics_mod.F90 GeosCore/fullchem_mod.F90 GeosCore/global_ch4_mod.F90 GeosCore/hco_interface_gc_mod.F90 GeosCore/mercury_mod.F90 GeosCore/mixing_mod.F90 GeosCore/photolysis_mod.F90 GeosCore/rrtmg_rad_transfer_mod.F90 - Update and/or remove comments pertaining to the legacy binary punch diagnostics. This should avoid confusion. Signed-off-by: ubuntu --- GeosCore/diagnostics_mod.F90 | 9 ++------- GeosCore/fullchem_mod.F90 | 2 +- GeosCore/global_ch4_mod.F90 | 7 +++---- GeosCore/hco_interface_gc_mod.F90 | 14 -------------- GeosCore/mercury_mod.F90 | 2 +- GeosCore/mixing_mod.F90 | 16 +--------------- GeosCore/photolysis_mod.F90 | 3 +-- GeosCore/rrtmg_rad_transfer_mod.F90 | 5 ----- 8 files changed, 9 insertions(+), 49 deletions(-) diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index ba47d7472..6a6b166b3 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -1672,8 +1672,7 @@ END SUBROUTINE Do_Archive_SatDiagn ! ! !IROUTINE: set_aermass_diagnostic ! -! !DESCRIPTION: Computes the aerosol mass diagnostic (formerly ND42 bpch -! diagnostic). +! !DESCRIPTION: Computes the aerosol mass diagnostic. !\\ !\\ ! !INTERFACE: @@ -1710,9 +1709,6 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & ! INTEGER, INTENT(OUT) :: RC ! Success or failure? ! -! !REMARKS: -! NOTE: This diagnostic mimics the bpch diagnostic routine "DIAG42". -! ! !REVISION HISTORY: ! 05 Feb 2018 - R. Yantosca - Initial version ! See https://github.com/geoschem/geos-chem for complete history @@ -1926,8 +1922,7 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & !======================================================================= ! Compute Aerosol mass and PM2.5 diagnostics using concentrations - ! from the end of the chemistry timestep, which should be more - ! consistent with the legacy ND42 bpch diagnostics + ! from the end of the chemistry timestep. !======================================================================= ! Point to fields of State_Chm and State_Met diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index eb9a4c122..f5d31f613 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -2821,7 +2821,7 @@ SUBROUTINE Init_FullChem( Input_Opt, State_Chm, State_Diag, RC ) IF ( nFam > 0 ) THEN - ! Allocate mapping array for KPP Ids for ND65 bpch diagnostic + ! Allocate mapping array for KPP Ids for prod/loss diagnostic ALLOCATE( PL_Kpp_Id( nFam ), STAT=RC ) CALL GC_CheckVar( 'fullchem_mod.F90:PL_Kpp_Id', 0, RC ) IF ( RC /= GC_SUCCESS ) RETURN diff --git a/GeosCore/global_ch4_mod.F90 b/GeosCore/global_ch4_mod.F90 index 5a42288fb..d5569fb4f 100644 --- a/GeosCore/global_ch4_mod.F90 +++ b/GeosCore/global_ch4_mod.F90 @@ -94,10 +94,9 @@ SUBROUTINE EMISSCH4( Input_Opt, State_Chm, State_Grid, State_Met, RC ) ! ! !REMARKS: ! WARNING: Soil absorption has to be the 15th field in CH4_EMIS -! Also: the ND58 diagnostics have now been removed. We still need to -! read the HEMCO manual diagnostics into CH4_EMIS for the analytical -! inversion. Therefore, we will keep EmissCh4 for the time-being -! but only remove the bpch diagnostic. +! Also: We still need to read the HEMCO manual diagnostics into CH4_EMIS +! for the analyticalinversion. Therefore, we will keep EmissCh4 for +! the time-being but only remove the bpch diagnostic. ! ! !REVISION HISTORY: ! (1 ) Created by Bryan Duncan (1/99). Adapted for CH4 chemistry by diff --git a/GeosCore/hco_interface_gc_mod.F90 b/GeosCore/hco_interface_gc_mod.F90 index 66e076e6b..3c20e1c0d 100644 --- a/GeosCore/hco_interface_gc_mod.F90 +++ b/GeosCore/hco_interface_gc_mod.F90 @@ -5065,20 +5065,6 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & ! NOTE: we don't need to multiply by the ratio of TS_CONV / ! TS_CHEM, as the updating frequency for HISTORY is determined ! by the "frequency" setting in the "HISTORY.rc"input file. - ! The old bpch diagnostics archived the drydep due to chemistry - ! every chemistry timestep = 2X the dynamic timestep. So in - ! order to avoid double-counting the drydep flux from mixing, - ! you had to multiply by TS_CONV / TS_CHEM. - ! - ! ALSO NOTE: When comparing History output to bpch output, - ! you must use an updating frequency equal to the dynamic - ! timestep so that the drydep fluxes due to mixing will - ! be equivalent w/ the bpch output. It is also recommended to - ! turn off chemistry so as to be able to compare the drydep - ! fluxes due to mixing in bpch vs. History as an "apples-to- - ! apples" comparison. - ! - ! -- Bob Yantosca (yantosca@seas.harvard.edu) !----------------------------------------------------------------- IF ( State_Diag%Archive_DryDepMix .or. & State_Diag%Archive_DryDep ) THEN diff --git a/GeosCore/mercury_mod.F90 b/GeosCore/mercury_mod.F90 index fabad74b5..4c2b7c6ba 100644 --- a/GeosCore/mercury_mod.F90 +++ b/GeosCore/mercury_mod.F90 @@ -3584,7 +3584,7 @@ SUBROUTINE Init_Mercury( Input_Opt, State_Grid, State_Chm, State_Diag, RC ) !======================================================================== IF ( nFam > 0 ) THEN - ! Allocate mapping array for KPP Ids for ND65 bpch diagnostic + ! Allocate mapping array for KPP Ids for prod/loss diagnostic ALLOCATE( PL_Kpp_Id( nFam ), STAT=RC ) CALL GC_CheckVar( 'mercury_mod.F90:PL_Kpp_Id', 0, RC ) IF ( RC /= GC_SUCCESS ) RETURN diff --git a/GeosCore/mixing_mod.F90 b/GeosCore/mixing_mod.F90 index 0605eea1c..3ae46e942 100644 --- a/GeosCore/mixing_mod.F90 +++ b/GeosCore/mixing_mod.F90 @@ -720,21 +720,7 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & ! NOTE: we don't need to multiply by the ratio of ! TS_CONV / TS_CHEM, as the updating frequency for ! HISTORY is determined by the "frequency" setting in - ! the "HISTORY.rc"input file. The old bpch diagnostics - ! archived the drydep due to chemistry every chemistry - ! timestep = 2X the dynamic timestep. So in order to - ! avoid double-counting the drydep flux from mixing, - ! you had to multiply by TS_CONV / TS_CHEM. - ! - ! ALSO NOTE: When comparing History output to bpch - ! output, you must use an updating frequency equal to - ! the dynamic timestep so that the drydep fluxes due to - ! mixing will be equivalent w/ the bpch output. It is - ! also recommended to turn off chemistry so as to be - ! able to compare the drydep fluxes due to mixing in - ! bpch vs. History as an "apples-to-apples" comparison. - ! - ! -- Bob Yantosca (yantosca@seas.harvard.edu) + ! the "HISTORY.rc" input file. !-------------------------------------------------------- IF ( ( State_Diag%Archive_DryDepMix .or. & State_Diag%Archive_DryDep ) .and. & diff --git a/GeosCore/photolysis_mod.F90 b/GeosCore/photolysis_mod.F90 index 484089891..a8b069f78 100644 --- a/GeosCore/photolysis_mod.F90 +++ b/GeosCore/photolysis_mod.F90 @@ -657,8 +657,7 @@ SUBROUTINE PHOTRATE_ADJ( Input_Opt, State_Chm, State_Diag, State_Met, & ! ! !REMARKS: ! NOTE: The netCDF diagnostics are attached in DO_FLEXCHEM so that we have -! access to the adjusted rates. Only the bpch diagnostics are updated -! here. +! access to the adjusted rates. ! -- Bob Yantosca, 19 Dec 2017 ! ! %%%% NOTE: WE SHOULD UPDATE THE COMMENTS TO MAKE SURE THAT WE DO %%%% diff --git a/GeosCore/rrtmg_rad_transfer_mod.F90 b/GeosCore/rrtmg_rad_transfer_mod.F90 index 5be6866c0..4cd9163d4 100644 --- a/GeosCore/rrtmg_rad_transfer_mod.F90 +++ b/GeosCore/rrtmg_rad_transfer_mod.F90 @@ -2371,11 +2371,6 @@ SUBROUTINE Init_RRTMG_Rad_Transfer( Input_Opt, State_Diag, State_Grid, RC ) ! 15=PM 16=ST ! ! NB: "O3" is all ozone; "O3T" is tropospheric ozone only. - ! - ! NOTE: We can get rid of Input_Opt%LSPECRADMENU once all of - ! the bpch code is removed from GEOS-Chem. This array is still - ! used in diag3.F90, so we need to keep it for the time being. - ! (bmy, 11/9/18) !================================================================= ! Loop over all of the flux outputs requested in HISTORY.rc From 000726aca13cdc87dd4bc54ab8bee071527f0594 Mon Sep 17 00:00:00 2001 From: ubuntu Date: Mon, 26 Feb 2024 21:47:48 +0000 Subject: [PATCH 106/331] Remove IU_BPCH file unit from GeosUtil/file_mod.F90 GeosUtil/file_mod.F90 - Removed reference to IU_BPCH, which used to be the logical unit number for the bpch file. CHANGELOG.md - Updated accordingly Signed-off-by: ubuntu --- CHANGELOG.md | 1 + GeosUtil/file_mod.F90 | 7 ++----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75dda5a69..16ed82d1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Removed - Legacy binary punch diagnostic code contained within `#ifdef BPCH_DIAG` blocks +- `IU_BPCH` logical file unit (in `GeosUtil/file_mod.F90`) ## [14.3.0] - 2024-02-07 ### Added diff --git a/GeosUtil/file_mod.F90 b/GeosUtil/file_mod.F90 index 107780a55..783e5680c 100644 --- a/GeosUtil/file_mod.F90 +++ b/GeosUtil/file_mod.F90 @@ -22,15 +22,13 @@ MODULE FILE_MOD ! !DEFINED PARAMETERS: ! !---------------------------------------------------------------- - ! In the GEOS-5 GCM, the unit numbers cannot be PARAMETERs. + ! In the GEOS ESM, the unit numbers cannot be PARAMETERs. ! Instead, use INQUIREs to find open LUNs at the point of ! request. References to most IU_* variables have now been - ! made local. IU_BPCH is the only LUN that needs to be seen - ! across several variables. + ! made local. !---------------------------------------------------------------- ! Logical file unit numbers for ... - INTEGER, PUBLIC :: IU_BPCH ! "ctm.bpch" INTEGER, PUBLIC :: IU_FILE ! ! !PUBLIC MEMBER FUNCTIONS: @@ -237,7 +235,6 @@ SUBROUTINE CLOSE_FILES !EOP !------------------------------------------------------------------------------ !BOC - CLOSE( IU_BPCH ) CLOSE( IU_FILE ) END SUBROUTINE CLOSE_FILES From 1fb6dd10e54505e44aae70267b149fed427e5f28 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 27 Feb 2024 09:47:45 -0500 Subject: [PATCH 107/331] Restore unit checks; Remove leftover instances of State_Chm%Spc_Units Now use Check_Units instead of State_Chm%Spc_Units to check if species are in the proper units in these modules - GeosCore/aero_drydep.F90 - GeosCore/aerosol_mod.F90 - GeosCore/chemistry_mod.F90 - GeosCore/dust_mod.F90 - GeosCore/tomas_mod.F90 - Additional modifications: GeosCore/aerosol_mod.F90 GeosCore/sulfate_mod.F90 - Now set IBINS to State_Chm%nTomasBins GeosCore/carbon_mod.F90 - Add USE statement for timers_mod GeosCore/fullchem_mod.F90 - Change outUnit to new_units and origUnit to previous_units in calls to Convert_Spc_Units GeosCore/sulfate_mod.F90 - Fixed typo "new_unit" -> "new_units" GeosCore/tomas_mod.F90 - Now loop over species to call ConvertBox_* unit conversion routines GeosCore/wetscav_mod.F90 - Updated calls to ConvertBox_* routines for TOMAS GeosCore/unitconv_mod.F90 - Add debug routine Print_Species_Units - Updated cConvertBox_* routines (TOMAS only) to accept the species modelID as an argument. We convert units for one species now at each (I,J,L) grid box. Signed-off-by: Bob Yantosca --- GeosCore/aero_drydep.F90 | 17 +- GeosCore/aerosol_mod.F90 | 9 +- GeosCore/carbon_mod.F90 | 3 +- GeosCore/chemistry_mod.F90 | 13 +- GeosCore/dust_mod.F90 | 8 +- GeosCore/fullchem_mod.F90 | 18 +- GeosCore/sulfate_mod.F90 | 3 +- GeosCore/tomas_mod.F90 | 141 ++++++++++------ GeosCore/wetscav_mod.F90 | 191 +++++++++++---------- GeosUtil/unitconv_mod.F90 | 328 +++++++++++++++---------------------- 10 files changed, 368 insertions(+), 363 deletions(-) diff --git a/GeosCore/aero_drydep.F90 b/GeosCore/aero_drydep.F90 index 452dc5ff2..d656330ad 100644 --- a/GeosCore/aero_drydep.F90 +++ b/GeosCore/aero_drydep.F90 @@ -123,9 +123,11 @@ SUBROUTINE AERO_DRYDEP( Input_Opt, State_Chm, State_Diag, & IBINS = State_Chm%nTomasBins ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - MSG = 'Incorrect species units: ' // TRIM(UNIT_STR(State_Chm%Spc_Units)) - LOC = 'Routine AERO_DRYDEP in aero_drydep.F' + IF ( .not. Check_Units( State_Chm, & + KG_SPECIES, & + mapping=State_Chm%Map_Advect ) ) THEN + MSG = 'Not all advected species have units of "kg"!' + LOC = 'Routine AERO_DRYDEP in GeosCore/aero_drydep.F90' CALL GC_Error( MSG, RC, LOC ) ENDIF @@ -537,10 +539,11 @@ SUBROUTINE AERO_DRYDEP( Input_Opt, State_Chm, State_Diag, & DepFreq => NULL() ! Check that species units are still in [kg] (ewl, 8/13/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - MSG = 'Incorrect species units at end of routine: ' & - // TRIM(UNIT_STR(State_Chm%Spc_Units)) - LOC = 'Routine AERO_DRYDEP in aero_drydep.F' + IF ( .not. Check_Units( State_Chm, & + KG_SPECIES, & + mapping=State_Chm%Map_Advect ) ) THEN + MSG = 'Not all advected species have units "kg"!' + LOC = 'Routine AERO_DRYDEP in GeosCore/aero_drydep.F90' CALL GC_Error( MSG, RC, LOC ) ENDIF diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 15f088202..520a8d4f4 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -134,9 +134,6 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & USE UnitConv_Mod USE TIME_MOD, ONLY : GET_MONTH USE Timers_Mod, ONLY : Timer_End, Timer_Start -#ifdef TOMAS - USE TOMAS_MOD, ONLY : IBINS -#endif ! ! !INPUT PARAMETERS: ! @@ -166,7 +163,7 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & LOGICAL, SAVE :: FIRST = .TRUE. ! Non-SAVEd variables - INTEGER :: I, J, L, N, NA, ND, K + INTEGER :: I, J, L, N, NA, ND, K, IBINS INTEGER :: k_SO4 INTEGER :: k_ORG INTEGER :: k_SSA @@ -217,6 +214,10 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & LSSALT = Input_Opt%LSSALT LSULF = Input_Opt%LSULF +#ifdef TOMAS + ! Number of size bins for TOMAS microphysics + IBINS = State_Chm%nTomasBins +#endif ! Set pointers REAA => State_Chm%Phot%REAA diff --git a/GeosCore/carbon_mod.F90 b/GeosCore/carbon_mod.F90 index cf409392e..f87f41ae9 100644 --- a/GeosCore/carbon_mod.F90 +++ b/GeosCore/carbon_mod.F90 @@ -4930,6 +4930,7 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, & USE State_Met_Mod, ONLY : MetState USE UnitConv_Mod USE PRESSURE_MOD, ONLY : GET_PCENTER + USE Timers_Mod, ONLY : Timer_End, Timer_Start USE TOMAS_MOD, ONLY : AVGMASS, SOACOND USE TOMAS_MOD, ONLY : ICOMP, IDIAG USE TOMAS_MOD, ONLY : CHECKMN @@ -5042,8 +5043,8 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_Advect, & new_units = KG_SPECIES, & + mapping = State_Chm%Map_Advect, & previous_units = previous_units, & RC = RC ) diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index f6e198ef0..02a75ce87 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -637,19 +637,18 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & State_Met = State_Met, & RC = RC ) - - ! Check units (ewl, 10/5/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - ErrMsg = 'Incorrect species units after DO_TOMAS!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - ENDIF - ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Error encountered in "Do_TOMAS"!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF + + ! Check units (ewl, 10/5/15) + IF ( .not. Check_Units( State_Chm, KG_SPECIES ) ) THEN + ErrMsg = 'Not all species have units "kg"!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + ENDIF ENDIF #endif diff --git a/GeosCore/dust_mod.F90 b/GeosCore/dust_mod.F90 index 029f3ccca..dc2eb2f6c 100644 --- a/GeosCore/dust_mod.F90 +++ b/GeosCore/dust_mod.F90 @@ -349,7 +349,7 @@ SUBROUTINE SETTLEDUST( Input_Opt, State_Chm, State_Diag, & USE PhysConstants, ONLY : AVO USE Species_Mod, ONLY : Species, SpcConc USE State_Chm_Mod, ONLY : ChmState - USE State_Diag_Mod, ONLY : DgnState + USE State_Diag_Mod, ONLY : DgnState USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE TIME_MOD, ONLY : GET_TS_CHEM @@ -408,9 +408,9 @@ SUBROUTINE SETTLEDUST( Input_Opt, State_Chm, State_Diag, & RC = GC_SUCCESS ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - MSG = 'Incorrect species units: ' // TRIM(UNIT_STR(State_Chm%Spc_Units)) - LOC = 'Routine SETTLEDUST in dust_mod.F' + IF ( .not. Check_Units( State_Chm, KG_SPECIES ) ) THEN + MSG = 'Not all species have units "kg"!' + LOC = 'Routine SETTLEDUST in GeosCore/dust_mod.F90' CALL GC_Error( MSG, RC, LOC ) ENDIF diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index 0386b4b48..de1b7dc3f 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -1697,7 +1697,7 @@ SUBROUTINE TOMAS_SO4_AQ( Input_Opt, State_Chm, State_Grid, & INTEGER :: I, J, L INTEGER :: k, binact1, binact2 INTEGER :: KMIN - INTEGER :: OrigUnit + INTEGER :: previous_units REAL(fp) :: SO4OXID !================================================================= @@ -1709,13 +1709,13 @@ SUBROUTINE TOMAS_SO4_AQ( Input_Opt, State_Chm, State_Grid, & ! Convert species from to [kg] CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + new_units = KG_SPECIES, & + previous_units = previous_units, & + RC = RC ) IF ( RC /= GC_SUCCESS ) THEN CALL GC_Error('Unit conversion error', RC, & @@ -1779,7 +1779,7 @@ SUBROUTINE TOMAS_SO4_AQ( Input_Opt, State_Chm, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/sulfate_mod.F90 b/GeosCore/sulfate_mod.F90 index b7238a7a6..713f8899e 100644 --- a/GeosCore/sulfate_mod.F90 +++ b/GeosCore/sulfate_mod.F90 @@ -795,7 +795,6 @@ SUBROUTINE EMISSSULFATETOMAS( Input_Opt, State_Chm, State_Grid, & USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState USE Timers_Mod, ONLY : Timer_End, Timer_Start - USE TOMAS_MOD, ONLY : IBINS, ICOMP, IDIAG USE TOMAS_MOD, ONLY : ICOMP, IDIAG USE TOMAS_MOD, ONLY : NH4BULKTOBIN USE TOMAS_MOD, ONLY : SRTNH4 @@ -7957,7 +7956,7 @@ SUBROUTINE CHEM_SO4_AQ( Input_Opt, State_Chm, State_Grid, State_Met, & State_Grid = State_Grid, & State_Met = State_Met, & mapping = State_Chm%Map_Advect, & - new_unit = KG_SPECIES, & + new_units = KG_SPECIES, & previous_units = previous_units, & RC = RC ) diff --git a/GeosCore/tomas_mod.F90 b/GeosCore/tomas_mod.F90 index f5bb4b334..59bc3e1d1 100644 --- a/GeosCore/tomas_mod.F90 +++ b/GeosCore/tomas_mod.F90 @@ -249,12 +249,14 @@ SUBROUTINE DO_TOMAS( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Assume success RC = GC_SUCCESS - !! Check that species units are in [kg] (ewl, 8/13/15) - !IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - ! MSG = 'Incorrect species units: ' // TRIM(UNIT_STR(State_Chm%Spc_Units)) - ! LOC = 'Routine DO_TOMAS in tomas_mod.F90' - ! CALL GC_Error( MSG, RC, LOC ) - !ENDIF + ! Check that species units are in [kg] (ewl, 8/13/15) + IF ( .not. Check_Units( State_Chm, & + KG_SPECIES, & + mapping=State_Chm%Map_Advect ) ) THEN + MSG = 'Not all advected species have units "kg"!' + LOC = 'Routine DO_TOMAS in tomas_mod.F90' + CALL GC_Error( MSG, RC, LOC ) + ENDIF ! Do TOMAS aerosol microphysics CALL AEROPHYS( Input_Opt, State_Chm, State_Grid, State_Met, & @@ -3543,7 +3545,9 @@ SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & REAL*4 :: BOXMASS REAL*4 :: thresh CHARACTER(LEN=255) :: MSG, LOC ! (ewl) - LOGICAL :: UNITCHANGE_KGM2 + INTEGER :: previous_units(State_Chm%nAdvect) + + LOGICAL, SAVE :: doPrintErr = .TRUE. ! Pointers TYPE(SpcConc), POINTER :: Spc(:) @@ -3555,7 +3559,6 @@ SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & ! Assume success RC = GC_SUCCESS - ! TODO: Update since Spc_Units are no longer included ! Check that species units are in [kg] (ewl, 8/13/15) ! Convert species concentration units to [kg] if not necessary. ! Units are [kg/m2] if AQOXID is called from wet deposition @@ -3563,14 +3566,36 @@ SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & ! still in [kg]. Since AQOXID is called within an (I,J,L) loop, ! only convert units for a single grid box. Otherwise, run will ! take too long (ewl, 9/30/15) - UNITCHANGE_KGM2 = .FALSE. - IF ( State_Chm%Spc_Units == KG_SPECIES_PER_M2 ) THEN - UNITCHANGE_KGM2 = .TRUE. - CALL ConvertBox_Kgm2_to_Kg( I, J, L, State_Chm, State_Grid, .FALSE., RC ) - ELSE IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - MSG = 'Incorrect initial species units: ' // & - TRIM( UNIT_STR(State_Chm%Spc_Units) ) + + ! Loop over advected species + DO K = 1, State_Chm%nAdvect + + ! Save incoming units for reverse conversion + previous_units(K) = State_Chm%Species(K)%Units + + ! Convert any units in kg/m2 to kg + IF ( State_Chm%Species(K)%Units == KG_SPECIES_PER_M2 ) THEN + CALL ConvertBox_Kgm2_to_Kg( & + I = I, & + J = J, & + L = L, & + N = K, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + isAdjoint = .FALSE. ) + ENDIF + ENDDO + + ! All advected species should now be in kg, throw an error if not + IF ( .not. Check_Units( State_Chm, & + KG_SPECIES, & + mapping=State_Chm%Map_Advect ) ) THEN + MSG = 'Not all advected species species have units of "kg"!' LOC = 'Routine AQOXID in tomas_mod.F90' + IF ( doPrintErr ) THEN + CALL Print_Species_Units( State_Chm, State_Chm%Map_WetDep ) + doPrintErr = .FALSE. + ENDIF CALL ERROR_STOP( MSG, LOC ) ENDIF @@ -3799,17 +3824,18 @@ SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & ! Convert State_Chm%Species units back to original units ! if conversion occurred at start of AQOXID (ewl, 9/30/15) - IF ( UNITCHANGE_KGM2 ) THEN - CALL ConvertBox_Kg_to_Kgm2( I, J, L, State_Chm, State_Grid, .FALSE., RC ) - ENDIF - - ! Check that species units are as expected (ewl, 9/29/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES .AND. & - State_Chm%Spc_Units /= KG_SPECIES_PER_M2 ) THEN - MSG = 'Incorrect final species units:' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) - CALL ERROR_STOP( MSG, 'Routine AQOXID in tomas_mod.F90' ) - ENDIF + DO K = 1, State_Chm%nAdvect + IF ( previous_units(K) == KG_SPECIES_PER_M2 ) THEN + CALL ConvertBox_Kg_to_Kgm2( & + I = I, & + J = J, & + L = L, & + N = K, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + isAdjoint = .FALSE. ) + ENDIF + ENDDO END SUBROUTINE AQOXID !EOC @@ -3911,8 +3937,10 @@ SUBROUTINE SOACOND( MSOA, I, J, L, BOXVOL, TEMPTMS, PRES, BOXMASS,& SOACOND_WARNING_CT = 0 ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - MSG = 'Incorrect species units: ' // TRIM(UNIT_STR(State_Chm%Spc_Units)) + IF ( .not. Check_Units( State_Chm, & + KG_SPECIES, & + mapping=State_Chm%Map_Advect ) ) THEN + MSG = 'Not all advected species have units of "kg"!' LOC = 'Routine SOACOND in tomas_mod.F90' CALL ERROR_STOP( MSG, LOC ) ENDIF @@ -6978,15 +7006,18 @@ SUBROUTINE GETFRACTION( I, J, L, N, LS, State_Chm, State_Grid, & ! Determine factor used to convert Spc to units of [kg] locally ! (ewl, 9/29/15) - IF ( State_Chm%Spc_Units == KG_SPECIES_PER_M2 ) THEN + IF ( Check_Units( State_Chm, & + KG_SPECIES_PER_M2, & + mapping=State_Chm%Map_Advect ) ) THEN UNITFACTOR = State_Grid%AREA_M2(I,J) - ELSE IF ( State_Chm%Spc_Units == KG_SPECIES_PER_KG_DRY_AIR ) THEN + ELSE IF ( Check_Units( State_Chm, & + KG_SPECIES_PER_KG_DRY_AIR, & + mapping=State_Chm%Map_Advect ) ) THEN UNITFACTOR = State_Met%AD(I,J,L) ELSE - MSG = 'Unexpected species units: ' // & - TRIM(UNIT_STR(State_Chm%Spc_Units)) + MSG = 'Unexpected species units (not "kg/m2" or "kg/kg dry")!' LOC = 'Routine GETFRACTION in tomas_mod.F90' CALL ERROR_STOP( MSG, LOC ) ENDIF @@ -7138,8 +7169,10 @@ SUBROUTINE GETACTBIN ( I, J, L, N, LS, BINACT, State_Chm, RC ) RC = GC_SUCCESS ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - MSG = 'Incorrect species units: ' // TRIM(UNIT_STR(State_Chm%Spc_Units)) + IF ( .not. Check_Units( State_Chm, & + KG_SPECIES, & + mapping=State_Chm%Map_Advect ) ) THEN + MSG = 'Not all advected species have units of "kg"!' LOC = 'Routine GETACTBIN in tomas_mod.F90' CALL ERROR_STOP( MSG, LOC ) ENDIF @@ -7544,7 +7577,7 @@ SUBROUTINE AERO_DIADEN( LEV, Input_Opt, State_Chm, State_Grid, State_Met, & ! ! Scalars INTEGER :: I,J, BIN, JC, TRACID, WID - INTEGER :: N, NA, nAdvect, origUnit + INTEGER :: N, NA, nAdvect, previous_units REAL(fp) :: MSO4, MNACL, MH2O REAL(fp) :: MECIL, MECOB, MOCIL, MOCOB, MDUST CHARACTER(LEN=255) :: MSG, LOC @@ -7566,13 +7599,13 @@ SUBROUTINE AERO_DIADEN( LEV, Input_Opt, State_Chm, State_Grid, State_Met, & ! NOTE: For complete area-independence, species units will need to be ! mixing ratio or mass per unit area in TOMAS CALL Convert_Spc_Units( & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - outUnit = KG_SPECIES, & - origUnit = origUnit, & - RC = RC ) + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + new_units = KG_SPECIES, & + previous_units = previous_units, & + RC = RC ) IF ( RC /= GC_SUCCESS ) THEN CALL GC_Error('Unit conversion error', RC, & @@ -7581,9 +7614,10 @@ SUBROUTINE AERO_DIADEN( LEV, Input_Opt, State_Chm, State_Grid, State_Met, & ENDIF ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - MSG = 'Incorrect species units: ' // & - TRIM(UNIT_STR(State_Chm%Spc_Units)) + IF ( .not. Check_Units( State_Chm, & + KG_SPECIES, & + mapping=State_Chm%Map_Advect ) ) THEN + MSG = 'Not all species have units "kg"!' LOC = 'Routine AERO_DIADEN in tomas_mod.F90' CALL GC_Error( MSG, RC, LOC ) ENDIF @@ -7646,9 +7680,10 @@ SUBROUTINE AERO_DIADEN( LEV, Input_Opt, State_Chm, State_Grid, State_Met, & !$OMP END PARALLEL DO ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - MSG = 'Incorrect species units at end of AERO_DIADEN: ' & - // TRIM(UNIT_STR(State_Chm%Spc_Units)) + IF ( .not. Check_Units( State_Chm, & + KG_SPECIES, & + mapping=State_Chm%Map_Advect ) ) THEN + MSG = 'Not all advected species have units of "kg"!' LOC = 'Routine AERO_DIADEN in tomas_mod.F90' CALL GC_Error( MSG, RC, LOC ) ENDIF @@ -7659,7 +7694,7 @@ SUBROUTINE AERO_DIADEN( LEV, Input_Opt, State_Chm, State_Grid, State_Met, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - outUnit = origUnit, & + new_units = previous_units, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN @@ -7767,9 +7802,11 @@ SUBROUTINE CHECKMN( II, JJ, LL, Input_Opt, State_Chm, & ERRORSWITCH = .FALSE. ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - MSG = 'Incorrect species units: ' // TRIM(UNIT_STR(State_Chm%Spc_Units)) - LOC = 'Routine CHECKMN in tomas_mod.F90' + IF ( .not. Check_Units( State_Chm, & + KG_SPECIES, & + mapping=State_Chm%Map_Advect ) ) THEN + MSG = 'Not all advected species have units "kg"!' + LOC = 'Routine CHECKMN in tomas_mod.F90: ' // TRIM( LOCATION ) CALL ERROR_STOP( MSG, LOC ) ENDIF diff --git a/GeosCore/wetscav_mod.F90 b/GeosCore/wetscav_mod.F90 index 526157749..012d27acd 100644 --- a/GeosCore/wetscav_mod.F90 +++ b/GeosCore/wetscav_mod.F90 @@ -1604,7 +1604,7 @@ SUBROUTINE WASHOUT( I, J, L, & INTEGER, INTENT(IN) :: I ! Longitude index INTEGER, INTENT(IN) :: J ! Latitude index INTEGER, INTENT(IN) :: L ! Level index - INTEGER, INTENT(IN) :: N ! Species number + INTEGER, INTENT(IN) :: N ! Species number (modelId) REAL(fp), INTENT(IN) :: BXHEIGHT ! Grid box height [m] REAL(fp), INTENT(IN) :: TK ! Temperature [K] REAL(fp), INTENT(IN) :: PP ! Precip rate thru bottom @@ -1650,15 +1650,14 @@ SUBROUTINE WASHOUT( I, J, L, & ! !LOCAL VARIABLES: ! ! Scalars + REAL(fp) :: L2G, DZ, SO2LOSS + REAL(f8) :: K0, CR, pKa #ifdef APM REAL(fp) :: RIN #endif #ifdef TOMAS - LOGICAL :: UNITCHANGE_KGKG ! flag for STT units kg/kg - LOGICAL :: UNITCHANGE_KGM2 ! flag for STT units kg/m2 + INTEGER :: previous_units #endif - REAL(fp) :: L2G, DZ, SO2LOSS - REAL(f8) :: K0, CR, pKa #ifdef LUO_WETDEP REAL(f8) :: Hplus, HCSO2, HCNH3, Ks1, Ks2, T_Term #endif @@ -1682,6 +1681,12 @@ SUBROUTINE WASHOUT( I, J, L, & ErrMsg = '' ThisLoc = ' -> at Washout (in module GeosCore/wetscav_mod.F90)' + ! DZ is the height of the grid box in cm + DZ = BXHEIGHT * 1e+2_fp + + ! Get info about Nth species from the species database + SpcInfo => State_Chm%SpcData(N)%Info + #ifdef TOMAS !----------------------------------------------------------------- ! TOMAS MICROPHYSICS ONLY @@ -1691,58 +1696,64 @@ SUBROUTINE WASHOUT( I, J, L, & ! kg/kg total air if WASHOUT is called from convection and are ! kg/m2 is called from DO_WASHOUT_ONLY. Since WASHOUT is called ! within an (I,J,L) loop, only convert units for a single grid - ! box. Otherwise, run will take too long (ewl, 9/22/15) + ! box. Otherwise, run will take too long. + ! -- Lizzie Lundgren (22 Sep 2015) + ! + ! Now only convert units for the current species N. + ! -- Bob Yantosca (23 Feb 2024) !----------------------------------------------------------------- - UNITCHANGE_KGKG = .FALSE. - UNITCHANGE_KGM2 = .FALSE. - - ! TODO: Fix this since Spc_Units are no longer supported - IF ( State_Chm%Spc_Units == KG_SPECIES_PER_KG_DRY_AIR ) THEN - UNITCHANGE_KGKG = .TRUE. - CALL ConvertBox_KgKgDry_to_Kg( I, J, L, & - State_Met, State_Chm, .FALSE., RC ) - - ! Trap potential errors - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered in "ConvertBox_KgKgDry_to_Kg"!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - - ELSE IF ( State_Chm%Spc_Units == KG_SPECIES_PER_M2 ) THEN - UNITCHANGE_KGM2 = .TRUE. - CALL ConvertBox_Kgm2_to_Kg( I, J, L, State_Chm, State_Grid, .FALSE., RC ) - - ! Trap potential errors - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered in "ConvertBox_KgM2_to_Kg"!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF + + ! Save original units for reverse unit conversion + previous_units = State_Chm%Species(N)%Units + + IF ( State_Chm%Species(N)%Units == KG_SPECIES_PER_KG_DRY_AIR ) THEN + print*, '###! here ', i,j,l,n + !------------------------------------------ + ! WASHOUT is being called from convection, + ! so convert from "kg/kg dry" to "kg" + !------------------------------------------ + CALL ConvertBox_KgKgDry_to_Kg( & + I = I, & + J = J, & + L = L, & + N = N, & + State_Chm = State_Chm, & + State_Met = State_Met, & + isAdjoint = .FALSE. ) + + ELSE IF ( State_Chm%Species(N)%Units == KG_SPECIES_PER_M2 ) THEN + !----------------------------------------- + ! WASHOUT is being called from wetdep + ! so convert from "kg/m2" to "kg". + !----------------------------------------- + CALL ConvertBox_Kgm2_to_Kg( & + I = I, & + J = J, & + L = L, & + N = N, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + isAdjoint = .FALSE. ) - ELSE + ENDIF - ! Exit if units are not as expected - ErrMsg = 'Incorrect initial species units:' // & - TRIM( UNIT_STR( State_Chm%Spc_Units ) ) + ! The species should be in kg at this point for TOMAS + IF ( State_Chm%Species(N)%Units /= KG_SPECIES ) THEN + ErrMsg = TRIM( SpcInfo%Name ) // ' is in ' // & + TRIM( UNIT_STR( State_Chm%Species(N)%Units ) ) // & + ', but needs to be in kg for TOMAS!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN - ENDIF #endif - ! DZ is the height of the grid box in cm - DZ = BXHEIGHT * 1e+2_fp - - ! Get info about Nth species from the species database - SpcInfo => State_Chm%SpcData(N)%Info - +#ifdef LUO_WETDEP !================================================================= - ! %%% SPECIAL CASE %%% + ! %%% LUO WETDEP ONLY %%% + ! %%% SPECIAL CASE %%% ! HNO3 scavenges like an aerosol although it is considered ! to be a gas-phase species elsewhere (e.g. dry deposition) !================================================================= -#ifdef LUO_WETDEP ! Initialize Hplus = 0.0_f8 @@ -1759,8 +1770,10 @@ SUBROUTINE WASHOUT( I, J, L, & ! Get washout fraction WASHFRAC = WASHFRAC_HNO3LUO( DT, F, PP, TK ) + !================================================================= - ! %%% SPECIAL CASE %%% + ! %%% LUO WETDEP ONLY %%% + ! %%% SPECIAL CASE %%% ! SO2 scavenges like an aerosol although it is considered ! to be a gas-phase species elsewhere (e.g. dry deposition) !================================================================= @@ -1789,6 +1802,13 @@ SUBROUTINE WASHOUT( I, J, L, & CALL WASHFRAC_LIQ_GAS( K0, CR, pKa, PP, pHRain, DT, & F, DZ, TK, WASHFRAC, KIN ) #else + !================================================================= + ! %%% DEFAULT WETDEP SCHEME %%% + ! %%% SPECIAL CASE %%% + ! HNO3 scavenges like an aerosol although it is considered + ! to be a gas-phase species elsewhere (e.g. dry deposition) + !================================================================= + IF ( SpcInfo%WD_Is_HNO3 ) THEN ! Washout is a kinetic process @@ -1798,7 +1818,8 @@ SUBROUTINE WASHOUT( I, J, L, & WASHFRAC = WASHFRAC_HNO3( DT, F, PP, TK ) !================================================================= - ! %%% SPECIAL CASE %%% + ! %%% DEFAULT WETDEP SCHEME %%% + ! %%% SPECIAL CASE %%% ! SO2 scavenges like an aerosol although it is considered ! to be a gas-phase species elsewhere (e.g. dry deposition) !================================================================= @@ -1967,40 +1988,42 @@ SUBROUTINE WASHOUT( I, J, L, & #endif #ifdef TOMAS - !----------------------------------------------------------------- + !------------------------------------------------------------------------ ! TOMAS MICROPHYSICS ONLY - ! Convert State_Chm%Species%Conc units back to original units + ! Convert State_Chm%Species%Conc units from kg back to original units ! if conversion occurred at start of WASHOUT (ewl, 5/12/15) - !----------------------------------------------------------------- - IF ( UNITCHANGE_KGKG ) THEN - CALL ConvertBox_Kg_to_KgKgDry( I, J, L, State_Met, State_Chm, .FALSE., RC ) - - ! Trap potential errors - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered in "ConvertBox_Kg_to_KgKgDry"!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - - ELSE IF ( UNITCHANGE_KGM2 ) THEN - CALL ConvertBox_Kg_to_Kgm2( I, J, L, State_Chm, State_Grid, .FALSE., RC ) - - ! Trap potential errors - IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered in "ConvertBox_Kg_to_KgM2"!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN + !------------------------------------------------------------------------ + IF ( State_Chm%Species(N)%Units == KG_SPECIES ) THEN + + !------------------------------------------ + ! WASHOUT is being called from convection, + ! so convert "kg" back to "kg/kg dry". + !------------------------------------------ + IF ( previous_units == KG_SPECIES_PER_KG_DRY_AIR ) THEN + CALL ConvertBox_Kg_to_KgKgDry( & + I = I, & + J = J, & + L = L, & + N = N, & + State_Chm = State_Chm, & + State_Met = State_Met, & + isAdjoint = .FALSE. ) + + ELSE IF ( previous_units == KG_SPECIES_PER_M2 ) THEN + + !------------------------------------------ + ! WASHOUT is being called from wetdep, + ! so convert "kg" back to "kg/m2". + !----------------------------------------- + CALL ConvertBox_Kg_to_Kgm2( & + I = I, & + J = J, & + L = L, & + N = N, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + isAdjoint = .FALSE. ) ENDIF - - ENDIF - - ! Check that species units are as expected (ewl, 9/29/15) - IF ( State_Chm%Spc_Units /= KG_SPECIES_PER_KG_DRY_AIR .AND. & - State_Chm%Spc_Units /= KG_SPECIES_PER_M2 ) THEN - ErrMsg = 'Incorrect final species units:' // & - TRIM( UNIT_STR(State_Chm%Spc_Units) ) - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN ENDIF #endif @@ -4623,13 +4646,13 @@ SUBROUTINE DO_WASHOUT_ONLY( LS, I, J, L, & ! therefore converted to [kg] locally within AQOXID. ! GAINED is now [kg/m2] ans so is multiplied ! by area prior to passing REEVAPSO2 to AQOXID (ewl, 9/30/15) - IF ( State_Chm%Spc_Units == KG_SPECIES_PER_M2 ) THEN + IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN REEVAPSO2 = GAINED * 96e+0_fp / 64e+0_fp & * State_Grid%Area_M2(I,J) ELSE IF ( errPrint ) THEN - ErrorMsg= 'Unexpected species units: ' // & - TRIM( UNIT_STR(State_Chm%Spc_Units) ) + ErrorMsg = 'Unexpected species units: ' // & + TRIM( UNIT_STR( Spc(id_SO2)%Units ) ) CALL GC_Error( ErrorMsg, RC, ThisLoc ) ENDIF RETURN @@ -4971,20 +4994,20 @@ SUBROUTINE DO_COMPLETE_REEVAP( LS, I, J, & ! therefore converted to [kg] locally within AQOXID. ! WETLOSS is now [kg/m2] and so is multiplied ! by area prior to passing REEVAPSO2 to AQOXID (ewl, 9/30/15) - IF ( State_Chm%Spc_Units == KG_SPECIES_PER_M2 ) THEN + IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN REEVAPSO2 = - ( WETLOSS * 96e+0_fp / 64e+0_fp ) & * State_Grid%Area_M2(I,J) ELSE IF ( errPrint ) THEN ErrorMsg = 'Unexpected species units: ' & - // TRIM( UNIT_STR(State_Chm%Spc_Units) ) + // TRIM( UNIT_STR( Spc(id_SO2)%Units ) ) CALL GC_Error( ErrorMsg, RC, ThisLoc ) ENDIF Spc => NULL() RETURN ENDIF CALL AQOXID( REEVAPSO2, KMIN, I, J, L, & - Input_Opt, State_Chm, State_Grid, State_Met, & + Input_Opt, State_Chm, State_Grid, State_Met, & State_Diag, RC ) ENDIF !end- added for TOMAS (win, 7/16/09) diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index b7066f97b..f1345d110 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -57,6 +57,7 @@ MODULE UnitConv_Mod PUBLIC :: Check_Units PUBLIC :: Convert_Spc_Units PUBLIC :: Print_Global_Species_Kg + PUBLIC :: Print_Species_Units ! kg/kg dry air <-> kg/grid box (single box only) ! Used for TOMAS compatibility in WASHOUT @@ -2224,24 +2225,20 @@ END SUBROUTINE ConvertSpc_Kg_to_MND !\\ ! !INTERFACE: ! - SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, & - State_Met, State_Chm, mapping, & - isAdjoint, RC ) + SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, & + N, State_Met, State_Chm, & + isAdjoint ) ! ! !INPUT PARAMETERS: ! - INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes - TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId - LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? + INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes + INTEGER, INTENT(IN) :: N ! Species index (modelId) + TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object + LOGICAL, INTENT(IN) :: isAdjoint ! Reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object ! ! !REMARKS: ! This routine is temporary and is only used for local conversion of species @@ -2258,50 +2255,25 @@ SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, & !EOP !------------------------------------------------------------------------------ !BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - INTEGER :: N, S - - ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc - !======================================================================== ! ConvertBox_KgKgDry_to_Kg begins here! !======================================================================== - ! Initialize - RC = GC_SUCCESS - errMsg = '' - thisLoc = & - ' -> at ConvertBox_KgKgDry_to_Kg (in GeosUtil/unitconv_mod.F90)' - - ! Loop over species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( S, N ) - DO S = 1, SIZE( mapping ) - - ! Get the modelId from the mapping array - N = mapping(S) - - ! Convert species concentration units - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * State_Met%AD(I,J,L) + ! Convert species concentration units + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * State_Met%AD(I,J,L) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * State_Met%AD(I,J,L) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * State_Met%AD(I,J,L) + ENDIF #endif - ! Update units metadata - State_Chm%Species(N)%Units = KG_SPECIES - - ENDDO - !$OMP END PARALLEL DO + ! Update units metadata + print*, '###! here2 ', i,j,l,n, State_Chm%Species(N)%Units + State_Chm%Species(N)%Units = KG_SPECIES + print*, '###! here3 ', i,j,l,n, State_Chm%Species(N)%Units END SUBROUTINE ConvertBox_KgKgDry_to_Kg !EOC @@ -2321,28 +2293,24 @@ END SUBROUTINE ConvertBox_KgKgDry_to_Kg !\\ ! !INTERFACE: ! - SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & - State_Met, State_Chm, mapping, & - isAdjoint, RC ) + SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & + N, State_Met, State_Chm, & + isAdjoint ) ! ! !INPUT PARAMETERS: ! - INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes - TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object - INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId - LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? + INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes + INTEGER, INTENT(IN) :: N ! Species index (modelId) + TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object + LOGICAL, INTENT(IN) :: isAdjoint ! Reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object ! ! !REMARKS: ! This routine is temporary and is only used for local conversion of species - ! concentrations for use in TOMAS within wetscav_mod routine WASHOUT. +! concentrations for use in TOMAS within wetscav_mod routine WASHOUT. ! That routine is called within a parallel do loop and therefore units can ! only be converted per grid box to avoid excessive computation time. Also, ! State_Chm%Spc_Units cannot be changed within the parallel do loop without @@ -2355,49 +2323,23 @@ SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & !EOP !------------------------------------------------------------------------------ !BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - INTEGER :: N, S - - ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc - !======================================================================== ! ConvertBox_Kg_to_KgKgDry begins here! !======================================================================== - ! Initialize - RC = GC_SUCCESS - errMsg = '' - thisLoc = & - ' -> at ConvertBox_Kg_to_KgKgDry (in GeosUtil/unitconv_mod.F90)' - - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( S, N ) - DO S = 1, SIZE( mapping ) - - ! Get the modelId from the mapping array - N = mapping(S) - - ! Convert species concentration units - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / State_Met%AD(I,J,L) + ! Convert species concentration units + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) / State_Met%AD(I,J,L) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) / State_Met%AD(I,J,L) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) / State_Met%AD(I,J,L) + ENDIF #endif - ! Update units metadata - State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR - - ENDDO - !$OMP END PARALLEL DO + ! Update units metadata + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR END SUBROUTINE ConvertBox_Kg_to_KgKgDry !EOC @@ -2415,24 +2357,20 @@ END SUBROUTINE ConvertBox_Kg_to_KgKgDry !\\ ! !INTERFACE: ! - SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, & - State_Chm, State_Grid, mapping, & - isAdjoint, RC ) + SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, & + N, State_Chm, State_Grid, & + isAdjoint ) ! ! !INPUT PARAMETERS: ! - INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId - LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? + INTEGER, INTENT(IN) :: I, J, L ! Grid box indices + INTEGER, INTENT(IN) :: N ! Species index (modelId) + TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object + LOGICAL, INTENT(IN) :: isAdjoint ! Reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object ! ! !REMARKS: ! This routine is temporary and is only used for local conversion of species @@ -2448,50 +2386,23 @@ SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, & !EOP !------------------------------------------------------------------------------ !BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - INTEGER :: N, S - - ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc - !======================================================================== ! ConvertBox_Kgm2_to_Kg begins here! !======================================================================== - ! Initialize - RC = GC_SUCCESS - errMsg = '' - thisLoc = & - ' -> at ConvertBox_Kgm2_to_Kg (in GeosUtil/unitconv_mod.F90)' - - ! Loop over species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( S, N ) - DO S = 1, SIZE( mapping ) - - ! Get the modelId from the mapping array - N = mapping(S) - - ! Convert species concentration units - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * State_Grid%Area_M2(I,J) + ! Convert species concentration units + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * State_Grid%Area_M2(I,J) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * State_Grid%Area_M2(I,J) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * State_Grid%Area_M2(I,J) + ENDIF #endif - ! Update units metadata - State_Chm%Species(N)%Units = KG_SPECIES - - ENDDO - !$OMP END PARALLEL DO + ! Update units metadata + State_Chm%Species(N)%Units = KG_SPECIES END SUBROUTINE ConvertBox_Kgm2_to_Kg !EOC @@ -2509,24 +2420,20 @@ END SUBROUTINE ConvertBox_Kgm2_to_Kg !\\ ! !INTERFACE: ! - SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, & - State_Chm, State_Grid, mapping, & - isAdjoint, RC ) + SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, & + N, State_Chm, State_Grid, & + isAdjoint ) ! ! !INPUT PARAMETERS: ! - INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes - TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object - INTEGER, INTENT(IN) :: mapping(:) ! Species map to modelId - LOGICAL, INTENT(IN) :: isAdjoint ! Is this reverse integration? + INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes + INTEGER, INTENT(IN) :: N ! Species index (modelId) + TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object + LOGICAL, INTENT(IN) :: isAdjoint ! Reverse integration? ! ! !INPUT/OUTPUT PARAMETERS: ! - TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object -! -! !OUTPUT PARAMETERS: -! - INTEGER, INTENT(OUT) :: RC ! Success or failure? + TYPE(ChmState), INTENT(INOUT) :: State_Chm ! Chemistry state object ! ! !REMARKS: ! This routine is temporary and is only used for local conversion of species @@ -2542,50 +2449,23 @@ SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, & !EOP !------------------------------------------------------------------------------ !BOC -! -! !LOCAL VARIABLES: -! - ! Scalars - INTEGER :: N, S - - ! Strings - CHARACTER(LEN=255) :: errMsg, thisLoc - !======================================================================== ! ConvertBox_Kg_to_Kgm2 begins here! !======================================================================== - ! Initialize - RC = GC_SUCCESS - errMsg = '' - thisLoc = & - ' -> at ConvertBox_Kg_to_Kgm2 (in GeosUtil/unitconv_mod.F90)' - - ! Loop over species - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( S, N ) - DO S = 1, SIZE( mapping ) - - ! Get the modelId from the mapping array - N = mapping(S) - - ! Convert species concentration units - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / State_Grid%Area_M2(I,J) + ! Convert species concentration units + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) / State_Grid%Area_M2(I,J) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) / State_Grid%Area_M2(I,J) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) / State_Grid%Area_M2(I,J) + ENDIF #endif - ! Update units metadata - State_Chm%Species(N)%Units = KG_SPECIES_PER_M2 - - ENDDO - !$OMP END PARALLEL DO + ! Update units metadata + State_Chm%Species(N)%Units = KG_SPECIES_PER_M2 END SUBROUTINE ConvertBox_Kg_to_Kgm2 !EOC @@ -2606,7 +2486,7 @@ FUNCTION Check_Units( State_Chm, units, mapping ) RESULT( same ) ! !INPUT PARAMETERS: ! INTEGER, INTENT(IN) :: units ! Input units flag - INTEGER, OPTIONAL, POINTER :: mapping(:) ! species ID -> model ID + INTEGER, OPTIONAL, POINTER :: mapping(:) ! Species ID -> modelId ! ! !INPUT/OUTPUT PARAMETERS: @@ -2644,4 +2524,66 @@ FUNCTION Check_Units( State_Chm, units, mapping ) RESULT( same ) END FUNCTION Check_Units !EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Transport Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: Print_Species_Units +! +! !DESCRIPTION: Prints each species name and its units. +!\\ +!\\ +! !INTERFACE: +! + SUBROUTINE Print_Species_Units( State_Chm, mapping ) +! +! !USES: +! + USE State_Chm_Mod, ONLY : ChmState +! +! !INPUT PARAMETERS: +! + TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry state object + INTEGER, OPTIONAL, POINTER :: mapping(:) ! Species Id -> modelId +! +! !REVISION HISTORY: +! 23 Feb 2024 - R. Yantosca - Initial version +! See the subsequent Git history with the gitk browser! +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! !LOCAL VARIABLES: +! + ! Scalars + INTEGER :: N, S + + ! Pointers + INTEGER, POINTER :: theMapping(:) + + !======================================================================== + ! Print_Species_Units begins here! + !======================================================================== + + ! Assume all species will be printed if mapping is not passed + theMapping => State_Chm%Map_All + IF ( PRESENT( mapping ) ) theMapping => mapping + + ! Loop over species + DO S = 1, SIZE( theMapping ) + + ! Get the modelId for each species + N = theMapping(S) + + WRITE( 6, 100 ) N, ADJUSTL( State_Chm%SpcData(N)%Info%Name ), & + UNIT_STR( State_Chm%Species(N)%Units ) + 100 FORMAT( i5, 1x, a20, 1x, a ) + ENDDO + + ! Free pointer + theMapping => NULL() + + END SUBROUTINE Print_Species_Units +!EOC END MODULE UnitConv_Mod From 96b4c7d65fa61adee50d392c53c3604636f99126 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 27 Feb 2024 14:06:21 -0500 Subject: [PATCH 108/331] Minor fixes for PR #2166 (remove binary punch diagnostics) GeosCore/cleanup.F90 - Restore RRTMG #ifdef block that was inadvertently deleted GeosCore/hcoi_gc_diagn_mod.F90 - Removed "<" in comments Signed-off-by: Bob Yantosca --- GeosCore/cleanup.F90 | 9 +++++++++ GeosCore/hcoi_gc_diagn_mod.F90 | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/GeosCore/cleanup.F90 b/GeosCore/cleanup.F90 index 1fea26740..9b59a8caf 100644 --- a/GeosCore/cleanup.F90 +++ b/GeosCore/cleanup.F90 @@ -197,6 +197,15 @@ SUBROUTINE CLEANUP( Input_Opt, State_Grid, ERROR, RC ) RETURN ENDIF +#ifdef RRTMG + CALL Cleanup_RRTMG_Rad_Transfer( RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error encountered in "Cleanup_RRTMG_Rad_Transfer"!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF +#endif + #ifdef TOMAS CALL CLEANUP_TOMAS() #endif diff --git a/GeosCore/hcoi_gc_diagn_mod.F90 b/GeosCore/hcoi_gc_diagn_mod.F90 index b0cfa425e..b2418688a 100644 --- a/GeosCore/hcoi_gc_diagn_mod.F90 +++ b/GeosCore/hcoi_gc_diagn_mod.F90 @@ -665,7 +665,7 @@ SUBROUTINE Diagn_CH4( Input_Opt, HcoState, ExtState, RC ) IF ( HcoID > 0 ) THEN - ! Create diagnostic container< + ! Create diagnostic container DiagnName = 'CH4_RESERVOIRS' CALL Diagn_Create( HcoState = HcoState, & cName = TRIM( DiagnName ), & From 77df4d02478193a0be4d31971b00809f495a7329 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 28 Feb 2024 14:10:55 -0500 Subject: [PATCH 109/331] Bug fix: For GCHP, set diagnostic timestep to TS_CHEM Interfaces/GCHP/gchp_chunk_mod.F90 - In the call to "Set_Timesteps", the "Diagnos" argument is used to set the diagnostic timestep. This was formerly set to the field "Input_Opt%TS_DIAG", which has since been removed. To avoid a compilation error, now set "Diagnos = Input_Opt%TS_CHEM". NOTE: The diagnostic timestep is only needed in GEOS-Chem Classic, as it controls when the planeflight diagnostic is invoked. Signed-off-by: Bob Yantosca --- Interfaces/GCHP/gchp_chunk_mod.F90 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Interfaces/GCHP/gchp_chunk_mod.F90 b/Interfaces/GCHP/gchp_chunk_mod.F90 index 56a261ef6..c5faab12c 100644 --- a/Interfaces/GCHP/gchp_chunk_mod.F90 +++ b/Interfaces/GCHP/gchp_chunk_mod.F90 @@ -236,6 +236,8 @@ SUBROUTINE GCHP_Chunk_Init( nymdB, nhmsB, nymdE, & _ASSERT(RC==GC_SUCCESS, 'Error calling "SetGridFromCtr"') ! Set GEOS-Chem timesteps on all CPUs + ! NOTE: Diagnos is only used for GCClassic, so set to TS_CHEM here + ! for the sake of completeness (Bob Yantosca, 28 Feb 2024) CALL Set_Timesteps( Input_Opt = Input_Opt, & Chemistry = Input_Opt%TS_CHEM, & Convection = Input_Opt%TS_CONV, & @@ -244,7 +246,7 @@ SUBROUTINE GCHP_Chunk_Init( nymdB, nhmsB, nymdE, & Radiation = Input_Opt%TS_RAD, & Unit_Conv = MAX( Input_Opt%TS_DYN, & Input_Opt%TS_CONV ), & - Diagnos = Input_Opt%TS_DIAG ) + Diagnos = Input_Opt%TS_CHEM ) ! Initialize derived-type objects for met, chem, and diag CALL GC_Init_StateObj( HistoryConfig%DiagList, & From b0bc778d70439c7677230e61148249ecf946b6ab Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 28 Feb 2024 16:29:41 -0500 Subject: [PATCH 110/331] PR #2166 post-merge fix: Remove #ifdef block in read_input_file GeosCore/input_mod.F90 - Remove the #ifdef block that wraps the subroutines Config_CH4, Config_Hg, and Config_POPs. This was causing a link error in GCHP. Signed-off-by: Bob Yantosca --- GeosCore/input_mod.F90 | 3 --- 1 file changed, 3 deletions(-) diff --git a/GeosCore/input_mod.F90 b/GeosCore/input_mod.F90 index 60586adee..ca320d257 100644 --- a/GeosCore/input_mod.F90 +++ b/GeosCore/input_mod.F90 @@ -257,7 +257,6 @@ SUBROUTINE Read_Input_File( Input_Opt, State_Grid, RC ) ENDIF ENDIF - ! CO2/carbon simulation settings IF ( Input_Opt%Its_A_CO2_Sim .or. Input_Opt%Its_A_Carbon_Sim ) THEN CALL Config_CO2( Config, Input_Opt, RC ) @@ -3768,7 +3767,6 @@ SUBROUTINE Config_ObsPack( Config, Input_Opt, RC ) END SUBROUTINE Config_ObsPack !EOC -#if !(defined( EXTERNAL_GRID ) || defined( EXTERNAL_FORCING )) !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ @@ -4394,7 +4392,6 @@ SUBROUTINE Config_POPs( Config, Input_Opt, RC ) RC = GC_SUCCESS END SUBROUTINE Config_POPs -#endif !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! From 47938c1eb7490d97417af246799cfa9b0ac1f907 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 28 Feb 2024 17:03:37 -0500 Subject: [PATCH 111/331] Disable parallel loop in DO_CONVECTION when using TOMAS GeosCore/convection_mod.F90 - Now bracket the !$OMP statements in routine DO_CONVECTION with an #ifndef TOMAS. For some reason this causes unit conversion issues in the WASHOUT routine when using TOMAS. I suspect a parallelization error, perhaps something is not held PRIVATE or THREADPRIVATE. Revisit this later. GeosCore/wetscav_mod.F90 GeosCore/unitconv_mod.F90 - Remove leftover debugging statements CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + GeosCore/convection_mod.F90 | 19 ++++++++++++++----- GeosCore/wetscav_mod.F90 | 1 - GeosUtil/unitconv_mod.F90 | 2 -- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 504dcbc75..9380e07e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated routines in `GeosUtil/unitconv_mod.F90` for species-specific unit conversion - Halt timers during calls to `Convert_Spc_Units` so as to time unit conversions separately - Streamline `IF` statements for CH4 observational operators in `Interfaces/GCClassic/main.F90` +- Disable parallel loop in `Do_Convection` when using TOMAS; it causes unit conversion issues. Revisit later. ### Fixed - Use rate-law function `GCARR_ac` for rxns that have Arrhenius `B` parameters that are zero diff --git a/GeosCore/convection_mod.F90 b/GeosCore/convection_mod.F90 index fefe7868f..d5ac92c8b 100644 --- a/GeosCore/convection_mod.F90 +++ b/GeosCore/convection_mod.F90 @@ -230,11 +230,18 @@ SUBROUTINE DO_CONVECTION( Input_Opt, State_Chm, State_Diag, & ! to DO_CLOUD_CONVECTION, to gain computational efficiency !======================================================================= - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( J, I, AREA_M2, L, F, EC ) & - !$OMP PRIVATE( DIAG14, DIAG38, RC, N, NA, NW, S ) & - !$OMP SCHEDULE( DYNAMIC ) +#ifndef TOMAS + ! NOTE: For some reason, activating this parallel loop causes a + ! the ConvertBox_* routines in TOMAS washout to not convert units + ! properly. It seems to go away when we disable this parallel loop. + ! Return to look at this issue in the future, but disable it for now. + ! -- Bob Yantosca (28 Feb 2024) + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( J, I, EC, AREA_M2, F, DIAG14, DIAG38, S, N, L, NW )& + !$OMP SCHEDULE( DYNAMIC, 8 )& + !$OMP COLLAPSE( 2 ) +#endif DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX @@ -327,7 +334,9 @@ SUBROUTINE DO_CONVECTION( Input_Opt, State_Chm, State_Diag, & ENDDO ENDDO +#ifndef TOMAS !$OMP END PARALLEL DO +#endif ! Return if COMPUTE_F returned an error IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/wetscav_mod.F90 b/GeosCore/wetscav_mod.F90 index 012d27acd..a828fe9b7 100644 --- a/GeosCore/wetscav_mod.F90 +++ b/GeosCore/wetscav_mod.F90 @@ -1707,7 +1707,6 @@ SUBROUTINE WASHOUT( I, J, L, & previous_units = State_Chm%Species(N)%Units IF ( State_Chm%Species(N)%Units == KG_SPECIES_PER_KG_DRY_AIR ) THEN - print*, '###! here ', i,j,l,n !------------------------------------------ ! WASHOUT is being called from convection, ! so convert from "kg/kg dry" to "kg" diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index f1345d110..340762c22 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -2271,9 +2271,7 @@ SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, & #endif ! Update units metadata - print*, '###! here2 ', i,j,l,n, State_Chm%Species(N)%Units State_Chm%Species(N)%Units = KG_SPECIES - print*, '###! here3 ', i,j,l,n, State_Chm%Species(N)%Units END SUBROUTINE ConvertBox_KgKgDry_to_Kg !EOC From f3171bb2179b1719c99a8d542bcca8cf26b38868 Mon Sep 17 00:00:00 2001 From: Yidan Tang Date: Thu, 29 Feb 2024 13:36:32 -0600 Subject: [PATCH 112/331] Update run script for Compute1 Signed-off-by: Yidan Tang --- .../wustl_compute1/gchp.batch_job.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/run/GCHP/runScriptSamples/operational_examples/wustl_compute1/gchp.batch_job.sh b/run/GCHP/runScriptSamples/operational_examples/wustl_compute1/gchp.batch_job.sh index 592f3f063..d9405e854 100644 --- a/run/GCHP/runScriptSamples/operational_examples/wustl_compute1/gchp.batch_job.sh +++ b/run/GCHP/runScriptSamples/operational_examples/wustl_compute1/gchp.batch_job.sh @@ -1,14 +1,17 @@ #!/bin/bash +#BSUB -G compute-rvmartin #BSUB -q rvmartin #BSUB -n 24 #BSUB -W 168:00 #BSUB -R "rusage[mem=300GB] span[ptile=36] select[mem < 2TB]" -#BSUB -a 'docker(registry.gsc.wustl.edu/sleong/esm:intel-2021.1.2)' +#BSUB -a 'docker(geoschem/gchp:14.3.0)' #BSUB -o lsf-%J.txt # # # source bashrc +/bin/bash + . /etc/bashrc # @@ -51,7 +54,10 @@ source checkRunSettings.sh # LAUNCH GCHP # # - mpiexec -n 24 ./gchp > ${log} + mpiexec -n 24 ./gchp > ${log} + + # For OpenMPI, enable oversubscription to allow more ranks to be assigned to a host than the number of slots that are available + # mpiexec --oversubscribe -n 24 ./gchp > ${log} # ################################################################# From 5d2fed074ab367fa13b5e514146e88c25342ea1c Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 4 Mar 2024 12:14:29 -0500 Subject: [PATCH 113/331] Now use BCPI density from species DB; Use 2+NDUST w/ WERADIUS GeosCore/ucx_mod.F90 - Now set RHO(IBC) with the actual value of BC density from the species database instead of using a fixed value of 1000 - Use 4th dimension index 2+NDUST instead of 2 in WERADIUS These updates were suggested by @cbarker211 in geoschem/geos-chem #2169. Signed-off-by: Bob Yantosca --- GeosCore/ucx_mod.F90 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/GeosCore/ucx_mod.F90 b/GeosCore/ucx_mod.F90 index da173d3d3..28350bb72 100644 --- a/GeosCore/ucx_mod.F90 +++ b/GeosCore/ucx_mod.F90 @@ -809,9 +809,6 @@ SUBROUTINE SETTLE_STRAT_AER( Input_Opt, State_Chm, State_Grid, State_Met, RC ) ! Used for old Seinfeld & Pandis slip factor calc REAL(fp) :: sp_Lambda, sp_Num - ! Parameters - REAL(fp), PARAMETER :: BCDEN = 1000.e+0_fp ! density (kg/m3) - ! Indexing INTEGER, PARAMETER :: IBC = 1 INTEGER, PARAMETER :: ILIQ = 2 @@ -924,7 +921,9 @@ SUBROUTINE SETTLE_STRAT_AER( Input_Opt, State_Chm, State_Grid, State_Met, RC ) IF (RUNCALC) THEN ! Need to translate for BC radii IF ( State_Met%InChemGrid(I,J,L) ) THEN - RWET(IBC) = WERADIUS(I,J,L,2)*1.e-2_fp + ! NOTE: Replace 2 with 2+NDUST + ! See: https://github.com/geoschem/geos-chem/issues/2169 + RWET(IBC) = WERADIUS(I,J,L,2+NDUST)*1.e-2_fp ELSE ! Use defaults, assume dry (!) #ifdef FASTJX @@ -934,8 +933,9 @@ SUBROUTINE SETTLE_STRAT_AER( Input_Opt, State_Chm, State_Grid, State_Met, RC ) #endif ENDIF - ! Taken from aerosol_mod (MSDENS(2)) - RHO(IBC) = BCDEN + ! Now use the density of BCPI from the species database. + ! See: https://github.com/geoschem/geos-chem/issues/2169 + RHO(IBC) = State_Chm%SpcData(id_BCPI)%Info%Density ! Get aerosol properties RWET(ILIQ) = State_Chm%RAD_AER(I,J,L,I_SLA)*1.e-2_fp From fda4d7bbfe7c16da33ad6422b9b117ee160f1a5a Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 4 Mar 2024 14:56:00 -0500 Subject: [PATCH 114/331] Remove recently-added comment lines in ucx_mod.F90 GeosCore/ucx_mod.F90 - Removed comments pointing to issue #2169. People can use Git Blame to see the author of the changes. Signed-off-by: Bob Yantosca --- GeosCore/ucx_mod.F90 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/GeosCore/ucx_mod.F90 b/GeosCore/ucx_mod.F90 index 28350bb72..183ba6bc4 100644 --- a/GeosCore/ucx_mod.F90 +++ b/GeosCore/ucx_mod.F90 @@ -921,8 +921,6 @@ SUBROUTINE SETTLE_STRAT_AER( Input_Opt, State_Chm, State_Grid, State_Met, RC ) IF (RUNCALC) THEN ! Need to translate for BC radii IF ( State_Met%InChemGrid(I,J,L) ) THEN - ! NOTE: Replace 2 with 2+NDUST - ! See: https://github.com/geoschem/geos-chem/issues/2169 RWET(IBC) = WERADIUS(I,J,L,2+NDUST)*1.e-2_fp ELSE ! Use defaults, assume dry (!) @@ -933,8 +931,6 @@ SUBROUTINE SETTLE_STRAT_AER( Input_Opt, State_Chm, State_Grid, State_Met, RC ) #endif ENDIF - ! Now use the density of BCPI from the species database. - ! See: https://github.com/geoschem/geos-chem/issues/2169 RHO(IBC) = State_Chm%SpcData(id_BCPI)%Info%Density ! Get aerosol properties From 4c8e2afc6211dd498a2bb1103dc060eaebdeab8d Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 4 Mar 2024 15:16:34 -0500 Subject: [PATCH 115/331] Now reference NDUST from CMN_SIZE_Mod in settle_strat_aer GeosCore/ucx_mod.F90 - Now reference the NDUST parameter via a USE statement within routine Settle_Strat_Aer. This fixes a compile-time error. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 ++ GeosCore/ucx_mod.F90 | 1 + 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38f99feea..74c17ba6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Fixed - Use rate-law function `GCARR_ac` for rxns that have Arrhenius `B` parameters that are zero +- Now use correct index `WEAEROSOL(I,J,L,2+NDUST)` in routine `Settle_Strat_Aer` of `GeosCore/ucx_mod.F90` +- Now get density of BCPI species from the species database in `ucx_mod.F90` ### Removed - Legacy binary punch diagnostic code contained within `#ifdef BPCH_DIAG` blocks diff --git a/GeosCore/ucx_mod.F90 b/GeosCore/ucx_mod.F90 index 183ba6bc4..df6939f32 100644 --- a/GeosCore/ucx_mod.F90 +++ b/GeosCore/ucx_mod.F90 @@ -761,6 +761,7 @@ SUBROUTINE SETTLE_STRAT_AER( Input_Opt, State_Chm, State_Grid, State_Met, RC ) #else USE Cldj_Cmn_Mod, ONLY : RAA #endif + USE CMN_SIZE_Mod, ONLY : NDUST USE ErrCode_Mod USE ERROR_MOD, ONLY : IT_IS_NAN,ERROR_STOP USE Input_Opt_Mod, ONLY : OptInput From 9fd705cde88bfc3f499519271dfa20a9cc6b421e Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Tue, 5 Mar 2024 08:55:32 -0500 Subject: [PATCH 116/331] Disable GEOS_CH4 import to avoid conflict with HEMCO import of same name --- Interfaces/GEOS/geos_CarbonInterface.F90 | 24 +++++++++++++----------- run/GEOS/GEOSCHEMchem_GridComp.rc | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Interfaces/GEOS/geos_CarbonInterface.F90 b/Interfaces/GEOS/geos_CarbonInterface.F90 index 3dd27316e..bb01f52c3 100644 --- a/Interfaces/GEOS/geos_CarbonInterface.F90 +++ b/Interfaces/GEOS/geos_CarbonInterface.F90 @@ -94,17 +94,19 @@ SUBROUTINE GEOS_CarbonSetServices( GC, CF, RC ) INTEGER :: STATUS ! Methane field from GEOS. - CALL ESMF_ConfigGetAttribute( CF, DoIt, Label="CH4_from_GEOS:", Default=0, __RC__ ) - IF ( DoIt == 1 ) THEN - call MAPL_AddImportSpec(GC, & - SHORT_NAME = 'GEOS_CH4', & - LONG_NAME = 'GEOS_CH4_dry_mixing_ratio', & - UNITS = 'v/v', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - RC=STATUS ) - _VERIFY(STATUS) - ENDIF + ! This is not yet implemented. Placeholder for getting CH4 directly from carbon + ! gridcomp. Need corresponding connectivity in Chem_GridComp for this. +! CALL ESMF_ConfigGetAttribute( CF, DoIt, Label="CH4_from_GEOS:", Default=0, __RC__ ) +! IF ( DoIt == 1 ) THEN +! call MAPL_AddImportSpec(GC, & +! SHORT_NAME = 'GEOS_CH4', & +! LONG_NAME = 'GEOS_CH4_dry_mixing_ratio', & +! UNITS = 'v/v', & +! DIMS = MAPL_DimsHorzVert, & +! VLOCATION = MAPL_VLocationCenter, & +! RC=STATUS ) +! _VERIFY(STATUS) +! ENDIF ! If enabled, create import field CALL ESMF_ConfigGetAttribute( CF, DoIt, Label="Import_CO2_from_GOCART:", Default=0, __RC__ ) diff --git a/run/GEOS/GEOSCHEMchem_GridComp.rc b/run/GEOS/GEOSCHEMchem_GridComp.rc index ade36a29b..e4c23c41a 100644 --- a/run/GEOS/GEOSCHEMchem_GridComp.rc +++ b/run/GEOS/GEOSCHEMchem_GridComp.rc @@ -233,5 +233,5 @@ CO_Mesosphere_FieldName: CO_CMAM # # To set CH4 boundary condition from GEOS -# Note: if set to 1, need to make sure that an import named 'GEOS_CH4' is set in ExtData. +# This is not yet implemented. Set to zero for now. If you want GEOS CH4, need to activate GEOS_CH4 in HEMCO_Config.rc CH4_from_GEOS: 0 From ee07b9baf0126d64f85ab7a9c9d986ce7887fdbc Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Fri, 29 Sep 2023 15:31:51 -0400 Subject: [PATCH 117/331] This commit (re)adds the ability to turn off 5 heterogeneous reactions via the Input_Opt%TurnOffHetRates toggle. This is the preferred solution for GEOS runs. The 5 heterogenous reactions are: ClNO3 + HBr --> BrCl + HNO3 ClNO3 + BrSALA --> BrCl + HNO3 ClNO3 + BrSALC --> BrCl + HNO3 BrNO3 + HCl --> BrCl + HNO3 HOCl + HBr --> BrCl + H2O This toggle was added to a previous version of GEOS-Chem (v12) but its functionality did not get transferred to the updated heterogeneous chemistry reaction rate code. This is a zero-diff change unless one enables the Input_Opt%TurnOffHetRates toggle. --- KPP/fullchem/commonIncludeVars.H | 5 +++++ KPP/fullchem/fullchem_HetStateFuncs.F90 | 3 +++ KPP/fullchem/fullchem_RateLawFuncs.F90 | 21 +++++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/KPP/fullchem/commonIncludeVars.H b/KPP/fullchem/commonIncludeVars.H index c104c59dc..b5151e69f 100644 --- a/KPP/fullchem/commonIncludeVars.H +++ b/KPP/fullchem/commonIncludeVars.H @@ -202,6 +202,11 @@ LOGICAL :: cloudBox ! Are we in a box with cloud? REAL(dp) :: fracOrgAer ! Fraction of organic aerosol [1] REAL(dp) :: fracInorgAer ! Fraction of organic aerosol [1] + ! + ! Additional fields for GEOS runs + ! + LOGICAL :: TurnOffHetRates ! Turn off heterogeneous reactions in stratosphere? + END TYPE HetState TYPE(HetState), TARGET, PUBLIC :: State_Het !$OMP THREADPRIVATE( State_Het ) diff --git a/KPP/fullchem/fullchem_HetStateFuncs.F90 b/KPP/fullchem/fullchem_HetStateFuncs.F90 index c20047260..c0106788d 100644 --- a/KPP/fullchem/fullchem_HetStateFuncs.F90 +++ b/KPP/fullchem/fullchem_HetStateFuncs.F90 @@ -238,6 +238,9 @@ SUBROUTINE fullChem_SetStateHet( I, J, L, & ! ... check if there is surface NAT at this grid box H%natSurface = ( H%pscBox .and. ( C(ind_NIT) > 0.0_dp ) ) + ! Flag to turn off heterogeneous reactions in stratosphere + H%TurnOffHetRates = Input_Opt%TurnOffHetRates + END SUBROUTINE FullChem_SetStateHet !EOC !------------------------------------------------------------------------------ diff --git a/KPP/fullchem/fullchem_RateLawFuncs.F90 b/KPP/fullchem/fullchem_RateLawFuncs.F90 index db03e288f..47f2597d3 100644 --- a/KPP/fullchem/fullchem_RateLawFuncs.F90 +++ b/KPP/fullchem/fullchem_RateLawFuncs.F90 @@ -898,6 +898,10 @@ FUNCTION BrNO3uptkByHCl( H ) RESULT( k ) ! Assume BrNO3 is limiting, so update the removal rate accordingly k = kIIR1Ltd( C(ind_BrNO3), C(ind_HCl), k ) + + ! Force to zero if HetRate flag is turned on + IF ( H%TurnOffHetRates ) k = 0.0_dp + END FUNCTION BrNO3uptkByHCl !========================================================================= @@ -1328,6 +1332,10 @@ FUNCTION ClNO3uptkByHBr( H ) RESULT( k ) ! ! Assume ClNO3 is limiting, so recompute reaction rate accordingly k = kIIR1Ltd( C(ind_ClNO3), C(ind_HBr), k ) + + ! Force to zero if HetRate flag is turned on + IF ( H%TurnOffHetRates ) k = 0.0_dp + END FUNCTION ClNO3uptkByHBr FUNCTION ClNO3uptkByBrSALA( H ) RESULT( k ) @@ -1360,6 +1368,10 @@ FUNCTION ClNO3uptkByBrSALA( H ) RESULT( k ) ! ! Assume ClNO3 is limiting, so recompute reaction rate accordingly k = kIIR1Ltd( C(ind_ClNO3), C(ind_BrSALA), k ) + + ! Force to zero if HetRate flag is turned on + IF ( H%TurnOffHetRates ) k = 0.0_dp + END FUNCTION ClNO3uptkByBrSALA FUNCTION ClNO3uptkByBrSALC( H ) RESULT( k ) @@ -1392,6 +1404,10 @@ FUNCTION ClNO3uptkByBrSALC( H ) RESULT( k ) ! ! Assume ClNO3 is limiting, so recompute reaction rate accordingly k = kIIR1Ltd( C(ind_ClNO3), C(ind_BrSALC), k ) + + ! Force to zero if HetRate flag is turned on + IF ( H%TurnOffHetRates ) k = 0.0_dp + END FUNCTION ClNO3uptkByBrSALC FUNCTION ClNO3uptkBySALACL( H ) RESULT( k ) @@ -1416,6 +1432,7 @@ FUNCTION ClNO3uptkBySALACL( H ) RESULT( k ) ! ! Assume ClNO3 is limiting, so recompute reaction rate accordingly k = kIIR1Ltd( C(ind_ClNO3), C(ind_SALACL), k ) + END FUNCTION ClNO3uptkBySALACL FUNCTION ClNO3uptkBySALCCL( H ) RESULT( k ) @@ -2255,6 +2272,10 @@ FUNCTION HOClUptkByHBr( H ) RESULT( k ) ! ! Assume HOCl is limiting, so recompute reaction rate accordingly k = kIIR1Ltd( C(ind_HOCl), C(ind_HBr), k ) + + ! Force to zero if HetRate flag is turned on + IF ( H%TurnOffHetRates ) k = 0.0_dp + END FUNCTION HOClUptkByHBr FUNCTION HOClUptkBySALACL( H ) RESULT( k ) From 92d5f7fc44824a3af7d2f55f87fd006ca65ab224 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Tue, 5 Mar 2024 09:07:24 -0500 Subject: [PATCH 118/331] Turn off het. reactions in GEOS runs by default --- Headers/input_opt_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index ac8c9e1c9..d5e0c2370 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -411,7 +411,7 @@ MODULE Input_Opt_Mod LOGICAL :: FJX_EXTRAL_ERR = .TRUE. ! Toggle for het rates. If true, turns off three Cl producing het reactions ! in the stratosphere. In MODEL_GEOS, this flag is set in GEOSCHEMchem_GridComp.rc - LOGICAL :: TurnOffHetRates = .FALSE. + LOGICAL :: TurnOffHetRates = .TRUE. #else LOGICAL :: AlwaysSetH2O LOGICAL :: TurnOffHetRates From 39f27ac9edb183dd5dda3e64793eff3a77489276 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Tue, 5 Mar 2024 09:14:18 -0500 Subject: [PATCH 119/331] Updates to allow GEOS-Chem to be the RATS/OX provider. Most importantly, this update now sets H2O at the beginning of the GEOS-Chem run, at the same time when all other species are updated from the internal state. This is important to make sure that the H2O tendency gets properly calculated. # Conflicts: # Interfaces/GCHP/Chem_GridCompMod.F90 --- Interfaces/GCHP/Chem_GridCompMod.F90 | 44 +++---- Interfaces/GCHP/gchp_chunk_mod.F90 | 27 ++--- Interfaces/GEOS/geos_interface.F90 | 171 ++++++++++++++++++++++++--- 3 files changed, 176 insertions(+), 66 deletions(-) diff --git a/Interfaces/GCHP/Chem_GridCompMod.F90 b/Interfaces/GCHP/Chem_GridCompMod.F90 index b39293156..494c0f4fe 100644 --- a/Interfaces/GCHP/Chem_GridCompMod.F90 +++ b/Interfaces/GCHP/Chem_GridCompMod.F90 @@ -145,6 +145,10 @@ MODULE Chem_GridCompMod ! When to do the analysis INTEGER :: ANAPHASE INTEGER, PARAMETER :: CHEMPHASE = 2 + INTEGER, PARAMETER :: RATSPHASE = 2 +#else + LOGICAL :: isProvider ! provider to AERO, RATS, ANOX? + LOGICAL :: calcOzone ! if PTR_GCCTO3 is associated #endif ! Number of run phases, 1 or 2. Set in the rc file; else default is 2. @@ -923,7 +927,6 @@ SUBROUTINE SetServices( GC, RC ) #if defined( MODEL_GEOS ) !-- Add two exra advected species for use in family transport (Manyin) - CALL MAPL_AddInternalSpec(GC, & SHORT_NAME = 'SPC_Bry', & LONG_NAME = 'Bromine group for use in transport', & @@ -947,31 +950,6 @@ SUBROUTINE SetServices( GC, RC ) VLOCATION = MAPL_VLocationCenter, & __RC__ ) if(MAPL_am_I_Root()) write(*,*) 'GCC added to internal: SPC_Cly; Friendly to: DYNAMICS' -! - ! Add additional RATs/ANOX exports -! call MAPL_AddExportSpec(GC, & -! SHORT_NAME = 'OX_TEND', & -! LONG_NAME = 'tendency_of_odd_oxygen_mixing_ratio_due_to_chemistry', & -! UNITS = 'mol mol-1 s-1', & -! DIMS = MAPL_DimsHorzVert, & -! VLOCATION = MAPL_VLocationCenter, & -! __RC__ ) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'GCC_O3', & - LONG_NAME = 'ozone_mass_mixing_ratio_total_air', & - UNITS = 'kg kg-1', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - __RC__ ) - - call MAPL_AddExportSpec(GC, & - SHORT_NAME = 'GCC_O3PPMV', & - LONG_NAME = 'ozone_volume_mixing_ratio_total_air', & - UNITS = 'ppmv', & - DIMS = MAPL_DimsHorzVert, & - VLOCATION = MAPL_VLocationCenter, & - __RC__ ) #endif ! @@ -2001,7 +1979,8 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) GEOS_CalcTotOzone, & GEOS_InitFromFile, & GEOS_RATSandOxDiags, & - GEOS_PreRunChecks + GEOS_PreRunChecks, & + GEOS_SetH2O USE GEOS_AeroCoupler, ONLY : GEOS_FillAeroBundle USE GEOS_CarbonInterface, ONLY : GEOS_CarbonSetConc, & GEOS_CarbonRunPhoto @@ -2641,6 +2620,11 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) #endif #if defined( MODEL_GEOS ) + ! Set H2O from Q (=SPHU) + CALL GEOS_SetH2O( GC, Input_Opt, State_Met, State_Chm, State_Grid, Q, __RC__ ) + + + ! Set appropriate met fields for lightning CALL MetVars_For_Lightning_Run( GC, Import=IMPORT, Export=EXPORT, & State_Met=State_Met, State_Grid=State_Grid, __RC__ ) @@ -2660,7 +2644,7 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) ENDIF ! Initialize RATS and OX tendency diagnostics - IF ( PHASE == ANAPHASE ) THEN + IF ( PHASE == RATSPHASE ) THEN CALL GEOS_RATSandOxDiags( GC, INTSTATE, Export, Input_Opt, State_Met, & State_Chm, State_Grid, Q, 1, tsChem, __RC__ ) ENDIF @@ -2906,8 +2890,10 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) ! GEOS Diagnostics. This includes the 'default' GEOS-Chem diagnostics. CALL GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, Input_Opt, & State_Met, State_Chm, State_Diag, State_Grid, __RC__ ) + ENDIF - ! Fill RATS and OX diagnostics + ! Fill RATS and OX diagnostics + IF ( PHASE == RATSPHASE ) THEN CALL GEOS_RATSandOxDiags( GC, INTSTATE, Export, Input_Opt, State_Met, & State_Chm, State_Grid, Q, 2, tsChem, __RC__ ) ENDIF diff --git a/Interfaces/GCHP/gchp_chunk_mod.F90 b/Interfaces/GCHP/gchp_chunk_mod.F90 index eb138e199..2d2bf3e15 100644 --- a/Interfaces/GCHP/gchp_chunk_mod.F90 +++ b/Interfaces/GCHP/gchp_chunk_mod.F90 @@ -972,28 +972,18 @@ SUBROUTINE GCHP_Chunk_Run( GC, & 'kg/kg dry', RC, OrigUnit=OrigUnit ) _ASSERT(RC==GC_SUCCESS, 'Error calling CONVERT_SPC_UNITS') + !======================================================================= + ! Always prescribe H2O in both the stratosphere and troposhere in GEOS. + ! This is now done right after passing the species from the internal + ! state to State_Chm (in Chem_GridCompMod.F90). It is important to do it + ! there to make sure that any H2O tendencies are properly calculated + ! cakelle2, 2023/10/14 + !======================================================================= +#if !defined( MODEL_GEOS ) ! SDE 05/28/13: Set H2O to STT if relevant IF ( IND_('H2O','A') > 0 ) THEN SetStratH2O = .FALSE. -#if defined( MODEL_GEOS ) - !======================================================================= - ! Tropospheric H2O is always prescribed (using GEOS Q). For strat H2O - ! there are three options, controlled by toggles 'set initial global MR' - ! in geoschem_config.yml and 'Prescribe_strat_H2O' in GEOSCHEMchem_GridComp.rc: - ! (A) never prescribe strat H2O -> both toggles off - ! (B) prescribe strat H2O on init time step -> toggle in input.goes on - ! (C) always prescribe strat H2O -> toggle in GEOSCHEMchem_GridComp.rc on - !======================================================================= - IF ( FIRST ) THEN - LSETH2O_orig = Input_Opt%LSETH2O - ENDIF - IF ( FIRST .OR. FrstRewind ) THEN - Input_Opt%LSETH2O = LSETH2O_orig - ENDIF - IF ( Input_Opt%LSETH2O .OR. Input_Opt%AlwaysSetH2O ) THEN -#else IF ( Input_Opt%LSETH2O ) THEN -#endif SetStratH2O = .TRUE. ENDIF CALL SET_H2O_TRAC( SetStratH2O, Input_Opt, State_Chm, & @@ -1003,6 +993,7 @@ SUBROUTINE GCHP_Chunk_Run( GC, & ! Only force strat once IF ( Input_Opt%LSETH2O ) Input_Opt%LSETH2O = .FALSE. ENDIF +#endif ! Compute the cosine of the solar zenith angle array: ! State_Met%SUNCOS => COS(SZA) at the current time diff --git a/Interfaces/GEOS/geos_interface.F90 b/Interfaces/GEOS/geos_interface.F90 index b197863fa..b27edc276 100644 --- a/Interfaces/GEOS/geos_interface.F90 +++ b/Interfaces/GEOS/geos_interface.F90 @@ -38,6 +38,7 @@ MODULE GEOS_Interface PUBLIC :: MetVars_For_Lightning_Run PUBLIC :: GEOS_CheckRATSandOx PUBLIC :: GEOS_RATSandOxDiags + PUBLIC :: GEOS_SetH2O PUBLIC :: GEOS_Diagnostics PUBLIC :: GEOS_CalcTotOzone PUBLIC :: GEOS_InitFromFile @@ -193,7 +194,7 @@ SUBROUTINE GEOS_CheckRATSandOx( am_I_Root, GC, RC ) RESTART = MAPL_RestartSkip, & VLOCATION = MAPL_VLocationCenter, & __RC__ ) - if(am_I_Root) write(*,*) 'OX added to internal: Friendly to: ANALYSIS, DYNAMICS, TURBULENCE' + if(am_I_Root) write(*,*) 'OX added to internal: Friendly to: ANALYSIS, DYNAMICS, TURBULENCE, MOIST' call MAPL_AddExportSpec(GC, & SHORT_NAME = 'O3', & @@ -220,6 +221,41 @@ SUBROUTINE GEOS_CheckRATSandOx( am_I_Root, GC, RC ) __RC__ ) ENDIF !DoANOX + !============================================ + ! General diagnostics that can always be used + !============================================ + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'GCC_H2O_TEND', & + LONG_NAME = 'GEOSCHEMCHEM_tendency_of_water_vapor_mixing_ratio',& + UNITS = 'kg kg-1 s-1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & + __RC__ ) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'GCC_O3', & + LONG_NAME = 'GEOSCHEMCHEM_ozone_mass_mixing_ratio_total_air', & + UNITS = 'kg kg-1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & + __RC__ ) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'GCC_O3PPMV', & + LONG_NAME = 'GEOSCHEMCHEM_ozone_volume_mixing_ratio_total_air', & + UNITS = 'ppmv', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & + __RC__ ) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'GCC_OX_TEND', & + LONG_NAME = 'GEOSCHEMCHEM_tendency_of_odd_oxygen_mixing_ratio',& + UNITS = 'mol mol-1 s-1', & + DIMS = MAPL_DimsHorzVert, & + VLOCATION = MAPL_VLocationCenter, & + __RC__ ) + ! All done RETURN_(ESMF_SUCCESS) @@ -242,6 +278,7 @@ SUBROUTINE GEOS_RATSandOxDiags( GC, Internal, Export, Input_Opt, State_Met, & ! ! !USES: ! + USE UnitConv_Mod, ONLY : Convert_Spc_Units ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -276,24 +313,31 @@ SUBROUTINE GEOS_RATSandOxDiags( GC, Internal, Export, Input_Opt, State_Met, & REAL, PARAMETER :: OMW = 16.0 ! INTEGER :: I, LM, IndSpc, IndO3 - REAL, POINTER :: Ptr3D(:,:,:) => NULL() - REAL(fp), POINTER :: PTR_O3(:,:,:) => NULL() - REAL, POINTER :: OX_TEND(:,:,:) => NULL() - REAL, POINTER :: OX(:,:,:) => NULL() - REAL, POINTER :: O3(:,:,:) => NULL() - REAL, POINTER :: O3PPMV(:,:,:) => NULL() - REAL, POINTER :: GCO3(:,:,:) => NULL() - REAL, POINTER :: GCO3PPMV(:,:,:) => NULL() - REAL, POINTER :: PTR_O3P(:,:,:) => NULL() - REAL, POINTER :: PTR_O1D(:,:,:) => NULL() + REAL, POINTER :: Ptr3D(:,:,:) => NULL() + REAL(fp), POINTER :: PTR_O3(:,:,:) => NULL() + REAL, POINTER :: OX_TEND(:,:,:) => NULL() + REAL, POINTER :: GCC_OX_TEND(:,:,:) => NULL() + REAL, POINTER :: OX(:,:,:) => NULL() + REAL, POINTER :: O3(:,:,:) => NULL() + REAL, POINTER :: O3PPMV(:,:,:) => NULL() + REAL, POINTER :: GCO3(:,:,:) => NULL() + REAL, POINTER :: GCO3PPMV(:,:,:) => NULL() + REAL, POINTER :: PTR_O3P(:,:,:) => NULL() + REAL, POINTER :: PTR_O1D(:,:,:) => NULL() REAL, ALLOCATABLE :: OXLOCAL(:,:,:) LOGICAL :: NeedO3 + CHARACTER(LEN=ESMF_MAXSTR) :: OrigUnit __Iam__('GEOS_RATSandOxDiags') ! Start here LM = State_Grid%NZ + ! Make sure that species are in kg/kg total. This should be the case already, + ! but better be safe! + CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & + 'kg/kg total', RC, OrigUnit=OrigUnit ) + !======================================================================= ! Fill RATS export states if GC is the RATS provider ! The tracer concentrations of the RATS export states are in mol mol-1. @@ -322,6 +366,15 @@ SUBROUTINE GEOS_RATSandOxDiags( GC, Internal, Export, Input_Opt, State_Met, & IF ( Stage == 2 ) Ptr3D = ( State_Chm%Species(IndSpc)%Conc(:,:,LM:1:-1)-Ptr3D ) / tsChem ENDIF + ! Check for H2O tendency + CALL MAPL_GetPointer ( EXPORT, Ptr3D, 'GCC_H2O_TEND', NotFoundOK=.TRUE., __RC__ ) + IF ( ASSOCIATED(Ptr3D) ) THEN + IndSpc = Ind_('H2O') + ASSERT_(IndSpc>0) + IF ( Stage == 1 ) Ptr3D = State_Chm%Species(IndSpc)%Conc(:,:,LM:1:-1) + IF ( Stage == 2 ) Ptr3D = ( State_Chm%Species(IndSpc)%Conc(:,:,LM:1:-1)-Ptr3D ) / tsChem + ENDIF + !======================================================================= ! Ozone diagnostics for GEOS coupling with other components. Do these ! via the export state directly, rather than using the State_Diag obj. @@ -335,7 +388,8 @@ SUBROUTINE GEOS_RATSandOxDiags( GC, Internal, Export, Input_Opt, State_Met, & ! O3: mass mixing ratio ! O3PPMV: volume mixing ratio in ppm ! Get pointers to analysis OX exports - CALL MAPL_GetPointer ( EXPORT, OX_TEND, 'OX_TEND' , NotFoundOK=.TRUE., __RC__ ) + CALL MAPL_GetPointer ( EXPORT, OX_TEND, 'OX_TEND' , NotFoundOK=.TRUE., __RC__ ) + CALL MAPL_GetPointer ( EXPORT, GCC_OX_TEND, 'GCC_OX_TEND' , NotFoundOK=.TRUE., __RC__ ) IF ( Stage == 2 ) THEN CALL MAPL_GetPointer ( INTERNAL, OX, 'OX' , NotFoundOK=.TRUE., __RC__ ) CALL MAPL_GetPointer ( EXPORT, O3, 'O3' , NotFoundOK=.TRUE., __RC__ ) @@ -344,12 +398,13 @@ SUBROUTINE GEOS_RATSandOxDiags( GC, Internal, Export, Input_Opt, State_Met, & CALL MAPL_GetPointer ( EXPORT, GCO3PPMV, 'GCC_O3PPMV' , NotFoundOK=.TRUE., __RC__ ) ENDIF NeedO3 = .FALSE. - IF ( ASSOCIATED(OX )) NeedO3 = .TRUE. - IF ( ASSOCIATED(OX_TEND )) NeedO3 = .TRUE. - IF ( ASSOCIATED(O3 )) NeedO3 = .TRUE. - IF ( ASSOCIATED(O3PPMV )) NeedO3 = .TRUE. - IF ( ASSOCIATED(GCO3 )) NeedO3 = .TRUE. - IF ( ASSOCIATED(GCO3PPMV)) NeedO3 = .TRUE. + IF ( ASSOCIATED(OX )) NeedO3 = .TRUE. + IF ( ASSOCIATED(OX_TEND )) NeedO3 = .TRUE. + IF ( ASSOCIATED(GCC_OX_TEND )) NeedO3 = .TRUE. + IF ( ASSOCIATED(O3 )) NeedO3 = .TRUE. + IF ( ASSOCIATED(O3PPMV )) NeedO3 = .TRUE. + IF ( ASSOCIATED(GCO3 )) NeedO3 = .TRUE. + IF ( ASSOCIATED(GCO3PPMV )) NeedO3 = .TRUE. IF ( NeedO3 ) THEN IndO3 = Ind_('O3') ASSERT_(IndO3>0) @@ -359,7 +414,7 @@ SUBROUTINE GEOS_RATSandOxDiags( GC, Internal, Export, Input_Opt, State_Met, & IF ( ASSOCIATED(GCO3) ) GCO3 = PTR_O3 IF ( ASSOCIATED(O3PPMV ) ) O3PPMV = PTR_O3 * MAPL_AIRMW / MAPL_O3MW * 1.00E+06 IF ( ASSOCIATED(GCO3PPMV) ) GCO3PPMV = PTR_O3 * MAPL_AIRMW / MAPL_O3MW * 1.00E+06 - IF ( ASSOCIATED(OX) .OR. ASSOCIATED(OX_TEND) ) THEN + IF ( ASSOCIATED(OX) .OR. ASSOCIATED(OX_TEND) .OR. ASSOCIATED(GCC_OX_TEND) ) THEN ALLOCATE(OXLOCAL(State_Grid%NX,State_Grid%NY,State_Grid%NZ)) OXLOCAL = PTR_O3 * MAPL_AIRMW / MAPL_O3MW IndSpc = Ind_('O') @@ -373,9 +428,17 @@ SUBROUTINE GEOS_RATSandOxDiags( GC, Internal, Export, Input_Opt, State_Met, & IF ( Stage==1 ) OX_TEND = OXLOCAL IF ( Stage==2 ) OX_TEND = ( OXLOCAL - OX_TEND ) / tsChem ENDIF + IF ( ASSOCIATED(GCC_OX_TEND) ) THEN + IF ( Stage==1 ) GCC_OX_TEND = OXLOCAL + IF ( Stage==2 ) GCC_OX_TEND = ( OXLOCAL - GCC_OX_TEND ) / tsChem + ENDIF DEALLOCATE(OXLOCAL) ENDIF + ! Convert back to original unit + CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & + OrigUnit, RC ) + ! All done RETURN_(ESMF_SUCCESS) @@ -386,6 +449,76 @@ END SUBROUTINE GEOS_RATSandOxDiags !------------------------------------------------------------------------------ !BOP ! +! !IROUTINE: GEOS_SetH2O +! +! !DESCRIPTION: GEOS_SetH2O sets the GEOS-Chem H2O species to Q. +!\\ +!\\ +! !INTERFACE: +! + SUBROUTINE GEOS_SetH2O( GC, Input_Opt, State_Met, & + State_Chm, State_Grid, Q, RC ) +! +! !USES: +! + USE UnitConv_Mod, ONLY : Convert_Spc_Units +! +! !INPUT/OUTPUT PARAMETERS: +! + TYPE(ESMF_GridComp), INTENT(INOUT) :: GC ! Ref. to this GridComp + TYPE(OptInput) :: Input_Opt + TYPE(MetState) :: State_Met + TYPE(ChmState) :: State_Chm + TYPE(GrdState) :: State_Grid + REAL, INTENT(IN) :: Q(:,:,:) +! +! !OUTPUT PARAMETERS: +! + INTEGER, INTENT(OUT) :: RC ! Success or failure? +! +! !REMARKS: +! +! !REVISION HISTORY: +! 13 Jul 2022 - C. Keller - Initial version (from Chem_GridCompMod) +! See https://github.com/geoschem/geos-chem for history +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! LOCAL VARIABLES: +! + INTEGER :: IndH2O, LM + CHARACTER(LEN=ESMF_MAXSTR) :: OrigUnit + + __Iam__('GEOS_SetH2O') + + ! Only do if H2O is a species + IndH2O = Ind_('H2O') + IF ( IndH2O > 0 ) THEN + ! Make sure that species are in kg/kg total. This should be the case already, + ! but better be safe! + CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & + 'kg/kg total', RC, OrigUnit=OrigUnit ) + + ! Pass Q to H2O concentration array. Q is in kg/kg total, so is H2O. + LM = State_Grid%NZ + State_Chm%Species(IndH2O)%Conc(:,:,LM:1:-1) = Q(:,:,1:LM) + + ! Convert back to original unit + CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & + OrigUnit, RC ) + ENDIF + + ! All done + RETURN_(ESMF_SUCCESS) + + END SUBROUTINE GEOS_SetH2O +!EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Model ! +!------------------------------------------------------------------------------ +!BOP +! ! !IROUTINE: GEOS_AddSpecInfoForMoist ! ! !DESCRIPTION: Add species info to internal state for moist From 7d1cc8e8331c9491897d8831c3889c2a4833590c Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Thu, 26 Oct 2023 16:05:30 -0400 Subject: [PATCH 120/331] Update Q directly within GEOS-Chem. This is possible since Q is friendly to chemistry --- Headers/input_opt_mod.F90 | 1 + Interfaces/GCHP/Chem_GridCompMod.F90 | 20 ++++++++++++++++++-- Interfaces/GEOS/geos_interface.F90 | 20 ++++++++++++++------ 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index ac8c9e1c9..7cf4476b7 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -412,6 +412,7 @@ MODULE Input_Opt_Mod ! Toggle for het rates. If true, turns off three Cl producing het reactions ! in the stratosphere. In MODEL_GEOS, this flag is set in GEOSCHEMchem_GridComp.rc LOGICAL :: TurnOffHetRates = .FALSE. + LOGICAL :: applyQtend = .FALSE. ! Apply water vapor tendency #else LOGICAL :: AlwaysSetH2O LOGICAL :: TurnOffHetRates diff --git a/Interfaces/GCHP/Chem_GridCompMod.F90 b/Interfaces/GCHP/Chem_GridCompMod.F90 index 494c0f4fe..d4e09397f 100644 --- a/Interfaces/GCHP/Chem_GridCompMod.F90 +++ b/Interfaces/GCHP/Chem_GridCompMod.F90 @@ -1776,6 +1776,18 @@ SUBROUTINE Initialize_( GC, Import, Export, Clock, RC ) IF ( am_I_Root ) WRITE(*,*) 'GCC: Bry and Cly family transport disabled' END SELECT + ! Apply H2O tendency to Q? + ! Options: -1=never do it; 0=only if GCC is RATS provider; 1=always do it + Input_Opt%applyQtend = .FALSE. + CALL ESMF_ConfigGetAttribute( GeosCF, DoIt, Label="ApplyQtend:", Default=0, __RC__ ) + IF ( DoIt == 1 ) THEN + Input_Opt%applyQtend = .TRUE. + ELSEIF ( DoIt == 0 ) THEN + CALL ESMF_ConfigGetAttribute( MaplCF, FieldName, Label="RATS_PROVIDER:", Default="PCHEM", __RC__ ) + IF ( TRIM(FieldName) == "GEOSCHEMCHEM" ) Input_Opt%applyQtend = .TRUE. + ENDIF + IF ( am_I_Root ) WRITE(*,*) '- Apply H2O tendency to Q (SPHU): ', Input_Opt%applyQtend + ! Add Henry law constants and scavenging coefficients to internal state. ! These are needed by MOIST for wet scavenging (if this is enabled). CALL GEOS_AddSpecInfoForMoist ( am_I_Root, GC, GeosCF, Input_Opt, State_Chm, __RC__ ) @@ -2621,8 +2633,7 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) #if defined( MODEL_GEOS ) ! Set H2O from Q (=SPHU) - CALL GEOS_SetH2O( GC, Input_Opt, State_Met, State_Chm, State_Grid, Q, __RC__ ) - + CALL GEOS_SetH2O( GC, Input_Opt, State_Met, State_Chm, State_Grid, Q, 1, __RC__ ) ! Set appropriate met fields for lightning CALL MetVars_For_Lightning_Run( GC, Import=IMPORT, Export=EXPORT, & @@ -2898,6 +2909,11 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) State_Chm, State_Grid, Q, 2, tsChem, __RC__ ) ENDIF + ! Set H2O from Q (=SPHU) + IF ( Input_Opt%applyQtend ) THEN + CALL GEOS_SetH2O( GC, Input_Opt, State_Met, State_Chm, State_Grid, Q, -1, __RC__ ) + ENDIF + ! Update internal state fields CALL MAPL_TimerOn(STATE, "CP_AFTR") # include "Includes_After_Run.H" diff --git a/Interfaces/GEOS/geos_interface.F90 b/Interfaces/GEOS/geos_interface.F90 index b27edc276..7fdb48364 100644 --- a/Interfaces/GEOS/geos_interface.F90 +++ b/Interfaces/GEOS/geos_interface.F90 @@ -451,13 +451,13 @@ END SUBROUTINE GEOS_RATSandOxDiags ! ! !IROUTINE: GEOS_SetH2O ! -! !DESCRIPTION: GEOS_SetH2O sets the GEOS-Chem H2O species to Q. +! !DESCRIPTION: GEOS_SetH2O sets the GEOS-Chem H2O species to Q or vice versa. !\\ !\\ ! !INTERFACE: ! SUBROUTINE GEOS_SetH2O( GC, Input_Opt, State_Met, & - State_Chm, State_Grid, Q, RC ) + State_Chm, State_Grid, Q, Direction, RC ) ! ! !USES: ! @@ -470,7 +470,8 @@ SUBROUTINE GEOS_SetH2O( GC, Input_Opt, State_Met, & TYPE(MetState) :: State_Met TYPE(ChmState) :: State_Chm TYPE(GrdState) :: State_Grid - REAL, INTENT(IN) :: Q(:,:,:) + REAL, INTENT(INOUT) :: Q(:,:,:) + INTEGER, INTENT(IN) :: Direction ! 1:Q-->H2O; -1:H2O-->Q ! ! !OUTPUT PARAMETERS: ! @@ -500,10 +501,17 @@ SUBROUTINE GEOS_SetH2O( GC, Input_Opt, State_Met, & CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & 'kg/kg total', RC, OrigUnit=OrigUnit ) - ! Pass Q to H2O concentration array. Q is in kg/kg total, so is H2O. + ! Sync Q and H2O concentration array. Q is in kg/kg total, so is H2O. LM = State_Grid%NZ - State_Chm%Species(IndH2O)%Conc(:,:,LM:1:-1) = Q(:,:,1:LM) - + ! Set GEOS-Chem H2O from Q + IF ( Direction == 1 ) THEN + State_Chm%Species(IndH2O)%Conc(:,:,LM:1:-1) = Q(:,:,1:LM) + ! Set Q to GEOS-Chem H2O. This is possible because Q is friendly to + ! CHEMISTRY + ELSEIF ( Direction == -1 ) THEN + Q(:,:,1:LM) = State_Chm%Species(IndH2O)%Conc(:,:,LM:1:-1) + ENDIF + ! Convert back to original unit CALL Convert_Spc_Units ( Input_Opt, State_Chm, State_Grid, State_Met, & OrigUnit, RC ) From 29ba4d7b518f529a0072473d8add516e86fbd316 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Tue, 5 Mar 2024 09:15:54 -0500 Subject: [PATCH 121/331] Modify code comment --- Interfaces/GCHP/Chem_GridCompMod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Interfaces/GCHP/Chem_GridCompMod.F90 b/Interfaces/GCHP/Chem_GridCompMod.F90 index d4e09397f..a917d6d00 100644 --- a/Interfaces/GCHP/Chem_GridCompMod.F90 +++ b/Interfaces/GCHP/Chem_GridCompMod.F90 @@ -2909,7 +2909,7 @@ SUBROUTINE Run_( GC, Import, Export, Clock, Phase, RC ) State_Chm, State_Grid, Q, 2, tsChem, __RC__ ) ENDIF - ! Set H2O from Q (=SPHU) + ! Set Q from H2O IF ( Input_Opt%applyQtend ) THEN CALL GEOS_SetH2O( GC, Input_Opt, State_Met, State_Chm, State_Grid, Q, -1, __RC__ ) ENDIF From 736c979896042f1e6a700c9179986499d40cd89f Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Tue, 5 Mar 2024 09:38:26 -0500 Subject: [PATCH 122/331] Added checks for negative concentrations after KPP integration. These can cause mass balance violations. This update adds the option to repeat the integration with HSTART reset to zero and increased error tolerances. Both of these factors reduce the risk of negative concentrations. This update only applies to GEOS # Conflicts: # GeosCore/fullchem_mod.F90 # Headers/input_opt_mod.F90 # Headers/state_diag_mod.F90 # Interfaces/GCHP/Chem_GridCompMod.F90 --- GeosCore/fullchem_mod.F90 | 48 +++++++++++++++- Headers/input_opt_mod.F90 | 2 + Headers/state_diag_mod.F90 | 85 +++++++++++++++++++++++++++- Interfaces/GCHP/Chem_GridCompMod.F90 | 20 ++++++- run/GEOS/GEOSCHEMchem_GridComp.rc | 12 +++- 5 files changed, 160 insertions(+), 7 deletions(-) diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index 664bff17c..a63cf1df2 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -220,7 +220,7 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & ! ! Defines the slot in which the H-value from the KPP integrator is stored ! This should be the same as the value of Nhnew in gckpp_Integrator.F90 - ! (assuming Rosenbrock solver). Define this locally in order to break + ! a compile-time dependency. -- Bob Yantosca (05 May 2022) INTEGER, PARAMETER :: Nhnew = 3 @@ -274,6 +274,8 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & IF (State_Diag%Archive_KppAutoReducerNVAR) & State_Diag%KppAutoReducerNVAR = 0.0_f4 IF (State_Diag%Archive_KppcNONZERO) State_Diag%KppcNONZERO = 0.0_f4 + IF (State_Diag%Archive_KppNegatives) State_Diag%KppNegatives = 0.0_f4 + IF (State_Diag%Archive_KppNegatives0) State_Diag%KppNegatives0 = 0.0_f4 ENDIF ! Also zero satellite diagnostic archival arrays @@ -1067,6 +1069,30 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & #endif ENDIF +#if defined( MODEL_GEOS ) + ! Check for negative concentrations after first integration and + ! eventually mark integration as errorenous so that it will be + ! repeated below. cakelle2, 2023/10/26. + IF ( Input_Opt%KppCheckNegatives >= 0 ) THEN + IF ( ( Input_Opt%KppCheckNegatives==0 .AND. State_Met%InStratMeso(I,J,L) ) .OR. & + ( L > (State_Grid%NZ-Input_Opt%KppCheckNegatives) ) ) THEN + IF ( ANY(C < 0.0_dp) ) THEN + IERR = -999 + IF ( State_Diag%Archive_KppError ) THEN + State_Diag%KppError(I,J,L) = State_Diag%KppError(I,J,L) + 1.0 + ENDIF + ENDIF + ENDIF + ENDIF + IF ( State_Diag%Archive_KppNegatives0 ) THEN + S = 0 + DO N=1,NSPEC + IF ( C(N) < 0.0_dp ) S=S+1 + ENDDO + State_Diag%KppNegatives0(I,J,L) = REAL(S,KIND=f4) + ENDIF +#endif + !===================================================================== ! HISTORY: Archive KPP solver diagnostics ! @@ -1126,11 +1152,20 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & !===================================================================== IF ( IERR < 0 ) THEN - ! Zero the first time step (Hstart, used by Rosenbrock). Also reset - ! C with concentrations prior to the 1st call to "Integrate". + ! Reset first time step and start concentrations + ! Retry the integration with non-optimized settings RCNTRL(3) = 0.0_dp C = C_before_integrate + ! In GEOS, restore C to initial concentrations. Just setting it to zeros + ! will lead to all zeros, I don't see how this is useful. + ! Also inflate the error tolerances. + ! cakelle2, 2023/10/26. +#if defined( MODEL_GEOS ) + ATOL = 1.0e-2_dp * Input_Opt%KppTolScale + RTOL = 1.0e-2_dp * Input_Opt%KppTolScale +#endif + ! Disable auto-reduce solver for the second iteration for safety IF ( Input_Opt%Use_AutoReduce ) THEN RCNTRL(12) = -1.0_dp ! without using ICNTRL @@ -1312,6 +1347,13 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & ! Skip if this is not a GEOS-Chem species IF ( SpcID <= 0 ) CYCLE + ! Scan for negatives + IF ( State_Diag%Archive_KppNegatives ) THEN + IF ( C(N) < 0.0_dp ) THEN + State_Diag%KppNegatives(I,J,L) = State_Diag%KppNegatives(I,J,L) + 1.0_dp + ENDIF + ENDIF + ! Set negative concentrations to zero C(N) = MAX( C(N), 0.0_dp ) diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index 6391e223e..d99b994d4 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -413,6 +413,8 @@ MODULE Input_Opt_Mod ! in the stratosphere. In MODEL_GEOS, this flag is set in GEOSCHEMchem_GridComp.rc LOGICAL :: TurnOffHetRates = .TRUE. LOGICAL :: applyQtend = .FALSE. ! Apply water vapor tendency + INTEGER :: KppCheckNegatives = -1 ! Check for negatives after KPP integration + REAL(fp) :: KppTolScale = 1.0_fp ! Tolerance scale factor for 2nd KPP integration #else LOGICAL :: AlwaysSetH2O LOGICAL :: TurnOffHetRates diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index 397fddb2c..8fc235ec3 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -669,6 +669,12 @@ MODULE State_Diag_Mod REAL(f4), POINTER :: KppSmDecomps(:,:,:) LOGICAL :: Archive_KppSmDecomps + REAL(f4), POINTER :: KppNegatives(:,:,:) + LOGICAL :: Archive_KppNegatives + + REAL(f4), POINTER :: KppNegatives0(:,:,:) + LOGICAL :: Archive_KppNegatives0 + !%%%%% KPP auto-reduce solver diagnostics %%%%% REAL(f4), POINTER :: KppAutoReducerNVAR(:,:,:) LOGICAL :: Archive_KppAutoReducerNVAR @@ -1935,6 +1941,12 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%KppSmDecomps => NULL() State_Diag%Archive_KppSmDecomps = .FALSE. + State_Diag%KppNegatives => NULL() + State_Diag%Archive_KppNegatives = .FALSE. + + State_Diag%KppNegatives0 => NULL() + State_Diag%Archive_KppNegatives0 = .FALSE. + State_Diag%KppAutoReducerNVAR => NULL() State_Diag%Archive_KppAutoReducerNVAR = .FALSE. @@ -6070,6 +6082,50 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + !------------------------------------------------------------------- + ! Number of negative concentrations after KPP integration + !------------------------------------------------------------------- + diagID = 'KppNegatives' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%KppNegatives, & + archiveData = State_Diag%Archive_KppNegatives, & + diagId = diagId, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + !------------------------------------------------------------------- + ! Number of negative concentrations after first KPP integration try + !------------------------------------------------------------------- + diagID = 'KppNegatives0' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%KppNegatives0, & + archiveData = State_Diag%Archive_KppNegatives0, & + diagId = diagId, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + !------------------------------------------------------------------- ! AR only -- Number of species in reduced mechanism (NVAR - NRMV) !------------------------------------------------------------------- @@ -6193,7 +6249,7 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & ! being requested as diagnostic output when the corresponding ! array has not been allocated. !------------------------------------------------------------------- - DO N = 1, 35 + DO N = 1, 41 ! Select the diagnostic ID SELECT CASE( N ) CASE( 1 ) @@ -6274,6 +6330,10 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & diagID = 'KppAutoReduceThres' CASE( 39 ) diagID = 'RxnConst' + CASE( 40 ) + diagID = 'KppNegatives' + CASE( 41 ) + diagID = 'KppNegatives0' END SELECT ! Exit if any of the above are in the diagnostic list @@ -10721,6 +10781,9 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & State_Diag%Archive_KppLuDecomps .or. & State_Diag%Archive_KppSubsts .or. & State_Diag%Archive_KppSmDecomps .or. & + State_Diag%Archive_KppNegatives .or. & + State_Diag%Archive_KppNegatives0 .or. & + State_Diag%Archive_KppAutoReducerNVAR .or. & State_Diag%Archive_KppAutoReducerNVAR .or. & State_Diag%Archive_KppAutoReduceThres .or. & State_Diag%Archive_KppcNONZERO .or. & @@ -12154,6 +12217,16 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'KppNegatives', & + Ptr2Data = State_Diag%KppNegatives, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + + CALL Finalize( diagId = 'KppNegatives0', & + Ptr2Data = State_Diag%KppNegatives0, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) RETURN CALL Finalize( diagId = 'AirMassColumnFull', & Ptr2Data = State_Diag%AirMassColumnFull, & RC = RC ) @@ -13930,6 +14003,16 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isUnits ) Units = 'count' IF ( isRank ) Rank = 3 + ELSE IF ( TRIM( Name_AllCaps ) == 'KPPNEGATIVES' ) THEN + IF ( isDesc ) Desc = 'Number of negative concentrations after KPP integration' + IF ( isUnits ) Units = 'count' + IF ( isRank ) Rank = 3 + + ELSE IF ( TRIM( Name_AllCaps ) == 'KPPNEGATIVES0' ) THEN + IF ( isDesc ) Desc = 'Number of negative concentrations after first KPP integration attempt' + IF ( isUnits ) Units = 'count' + IF ( isRank ) Rank = 3 + ELSE IF ( TRIM( Name_AllCaps ) == 'KPPAUTOREDUCERNVAR' ) THEN IF ( isDesc ) Desc = 'Number of species in auto-reduced mechanism' IF ( isUnits ) Units = 'count' diff --git a/Interfaces/GCHP/Chem_GridCompMod.F90 b/Interfaces/GCHP/Chem_GridCompMod.F90 index a917d6d00..7342bd397 100644 --- a/Interfaces/GCHP/Chem_GridCompMod.F90 +++ b/Interfaces/GCHP/Chem_GridCompMod.F90 @@ -1347,13 +1347,31 @@ SUBROUTINE Initialize_( GC, Import, Export, Clock, RC ) ENDIF ! Turn off three heterogenous reactions in stratosphere - CALL ESMF_ConfigGetAttribute( GeosCF, DoIt, Default = 0, & + CALL ESMF_ConfigGetAttribute( GeosCF, DoIt, Default = 1, & Label = "TurnOffHetRates:", __RC__ ) Input_Opt%TurnOffHetRates = ( DoIt == 1 ) IF ( Input_Opt%AmIRoot ) THEN WRITE(*,*) 'Disable selected het. reactions in stratosphere: ', & Input_Opt%TurnOffHetRates ENDIF + + ! Check for negatives after KPP integration + CALL ESMF_ConfigGetAttribute( GeosCF, DoIt, Default = -1, & + Label = "KppCheckNegatives:", __RC__ ) + Input_Opt%KppCheckNegatives = DoIt + IF ( Input_Opt%AmIRoot ) THEN + WRITE(*,*) 'Check for negative concentrations after KPP integration: ', & + Input_Opt%KppCheckNegatives + ENDIF + + ! KPP tolerance inflation factor for second attempt + CALL ESMF_ConfigGetAttribute( GeosCF, Val, Default = 1.0, & + Label = "KppTolScale:", __RC__ ) + Input_Opt%KppTolScale = Val + IF ( Input_Opt%AmIRoot ) THEN + WRITE(*,*) 'Scale KPP tolerances in second integration attempt: ', & + Input_Opt%KppTolScale + ENDIF #endif !======================================================================= diff --git a/run/GEOS/GEOSCHEMchem_GridComp.rc b/run/GEOS/GEOSCHEMchem_GridComp.rc index e4c23c41a..236a75866 100644 --- a/run/GEOS/GEOSCHEMchem_GridComp.rc +++ b/run/GEOS/GEOSCHEMchem_GridComp.rc @@ -76,8 +76,16 @@ RUN_PHASES: 2 # # %%% Stop if KPP integration fails (default: 1) %%% # -KPP_STOP_IF_FAIL: 0 - +KPP_STOP_IF_FAIL: 0 + +# Checks to prevent negative concentrations after KPP integration. These can create +# problems with mass balance. KppCheckNegatives checks for negatives in the N top +# layers. I.e., if set to 5 it will check for negatives in the top 5 model levels. +# If set to 0, it will perform the check in the entire stratosphere and mesosphere. +# If negatives are found, a second integration attempt will be made using HSTART=0 +# and by relaxing the KPP tolerances using the scale factor provided in KppTolScale. +KppCheckNegatives: -1 +KppTolScale: 1.0 # # %%% HEMCO configuration file %%% From b38bef9973f1ea60f952f45b8a51981c10dc910f Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Tue, 5 Mar 2024 13:37:55 -0500 Subject: [PATCH 123/331] Incorporate stratospheric chemistry updates from Eric Fleming --- KPP/build_mechanism.sh | 2 + KPP/fullchem/fullchem.eqn | 57 +++---- KPP/fullchem/gckpp_Function.F90 | 286 ++++++++++++++++---------------- KPP/fullchem/gckpp_Jacobian.F90 | 136 +++++++-------- KPP/fullchem/gckpp_Monitor.F90 | 24 +-- KPP/fullchem/gckpp_Rates.F90 | 12 +- 6 files changed, 260 insertions(+), 257 deletions(-) diff --git a/KPP/build_mechanism.sh b/KPP/build_mechanism.sh index 04fd09f9e..4845d9ef0 100755 --- a/KPP/build_mechanism.sh +++ b/KPP/build_mechanism.sh @@ -97,6 +97,8 @@ rm -f *.o *.mod *.a #============================================================================ if [[ -f gckpp.kpp ]]; then kpp gckpp.kpp + # on discover, use: + #/discover/nobackup/mslong1/KPP/KPP/bin/kpp gckpp.kpp else echo "Could not find the 'gckpp.kpp' file... Aborting!" exit 1 diff --git a/KPP/fullchem/fullchem.eqn b/KPP/fullchem/fullchem.eqn index fcd71965f..b655b35cb 100644 --- a/KPP/fullchem/fullchem.eqn +++ b/KPP/fullchem/fullchem.eqn @@ -28,6 +28,7 @@ DEVELOPERS (initials and email/GitHub) * DBM : Dylan Millet : @dylanbm * EAM : Eloise Marais : @eamarais * ECB : Ellie Browne : eleanor.browne@colorado.edu +* ELF : Eric Fleming; eric.l.fleming@nasa.gov * EVF : Emily Fischer : evf@rams.colostate.edu * EWL : Lizzie Lundgren : @lizziel * FP : Fabien Paulot : fabien.paulot@noaa.gov @@ -688,8 +689,8 @@ O1D + H2O = 2.000OH : GCARR_ac(1.63d-10, 60.0d0); O1D + N2 = O + N2 : GCARR_ac(2.15d-11, 110.0d0); {2014/02/03; Eastham2014; SDE} O1D + O2 = O + O2 : GCARR_ac(3.30d-11, 55.0d0); {2014/02/03; Eastham2014; SDE} O1D + H2 = H + OH : 1.20d-10; {2014/02/03; Eastham2014; SDE} -O1D + N2O = N2 + O2 : GCARR_ac(4.63d-11, 20.0d0); {2014/02/03; Eastham2014; SDE} -O1D + N2O = 2.000NO : GCARR_ac(7.25d-11, 20.0d0); {2014/02/03; Eastham2014; SDE} +O1D + N2O = N2 + O2 : GCARR_ac(4.64d-11, 20.0d0); {2018/06/21; JPL 15-10; ELF} +O1D + N2O = 2.000NO : GCARR_ac(7.26d-11, 20.0d0); {2018/06/21; JPL 15-10; ELF} O1D + CH4 = MO2 + OH : 1.31d-10; {2014/02/03; Eastham2014; SDE} O1D + CH4 = CH2O + H2 : 0.09d-10; {2014/02/03; Eastham2014; SDE} O1D + CH4 = CH2O + H + HO2 : 0.35d-10; {2014/02/03; Eastham2014; SDE} @@ -717,45 +718,45 @@ N + NO = N2 + O : GCARR_ac(2.10d-11, 100.0d0); N + NO2 = N2O + O : GCARR_ac(5.80d-12, 220.0d0); {2014/02/03; Eastham2014; SDE} BrO + O = Br + O2 : GCARR_ac(1.90d-11, 230.0d0); {2014/02/03; Eastham2014; SDE} CH2O + O = CO + HO2 + OH : GCARR_ac(3.40d-11, -1600.0d0); {2014/02/03; Eastham2014; SDE} -O1D + HCl = 0.090O + 0.090HCl + 0.240H + - 0.670Cl + 0.240ClO + 0.670OH : 1.50d-10; {2014/02/03; Eastham2014; SDE} -O1D + HBr = 0.200O + 0.200HBr + 0.150BrO + - 0.650OH + 0.150H + 0.650Br : 1.50d-10; {2014/02/03; Eastham2014; SDE} +O1D + HCl = 0.120O + 0.120HCl + 0.220H + + 0.660Cl + 0.240ClO + 0.670OH : 1.50d-10; {2018/06/21; JPL 15-10; ELF} +O1D + HBr = 0.200O + 0.200HBr + 0.200BrO + + 0.600OH + 0.200H + 0.600Br : 1.50d-10; {2018/06/21; JPL 15-10; ELF} O1D + Cl2 = 0.250O + 0.250Cl2 + 0.750Cl + 0.750ClO : 2.70d-10; {2014/02/03; Eastham2014; SDE} -O1D + CCl4 = 0.140O + 0.140CCl4 + - 0.860ClO + 2.580Cl : 3.30d-10; {2014/02/03; Eastham2014; SDE} +O1D + CCl4 = 0.210O + 0.210CCl4 + + 0.790ClO + 2.370Cl : 3.30d-10; {2018/06/21; JPL 15-10; ELF} O1D + CH3Br = 0.440BrO + MO2 + 0.560Br : 1.80d-10; {2014/02/03; Eastham2014; SDE} O1D + CH2Br2 = 0.050O + 0.050CH2Br2 + 0.950BrO + 0.950Br : 2.70d-10; {2014/02/03; Eastham2014; SDE} -O1D + CHBr3 = 0.320O + 0.320CHBr3 + - 0.680BrO + 1.360Br : 6.60d-10; {2014/02/03; Eastham2014; SDE} -O1D + HCFC22 = 0.280O + 0.280HCFC22 + - 0.550ClO + 0.170Cl : 1.02d-10; {2017/02/22; JPL 15-10; BHH,MJE} -O1D + CFC11 = 0.120O + 0.120CFC11 + - 0.880ClO + 1.760Cl : 2.30d-10; {2014/02/03; Eastham2014; SDE} +O1D + CHBr3 = 0.300O + 0.300CHBr3 + + 0.700BrO + 1.400Br : 6.60d-10; {2018/06/21; JPL 15-10; ELF} +O1D + HCFC22 = 0.250O + 0.250HCFC22 + + 0.560ClO + 0.190Cl : 1.02d-10; {2017/02/22; JPL 15-10; BHH,MJE,ELF} +O1D + CFC11 = 0.100O + 0.100CFC11 + + 0.900ClO + 1.800Cl : 2.30d-10; {2018/06/21; JPL 15-10; ELF} O1D + CFC12 = 0.140O + 0.140CFC12 + 0.860ClO + 0.860Cl : 1.40d-10; {2014/02/03; Eastham2014; SDE} -O1D + H1211 = 0.360O + 0.360H1211 + - 0.310BrO + 0.310Cl + 0.330Br + 0.330ClO : 1.50d-10; {2014/02/03; Eastham2014; SDE} +O1D + H1211 = 0.350O + 0.350H1211 + + 0.310BrO + 0.310Cl + 0.340Br + 0.340ClO : 1.50d-10; {2018/06/21; JPL 15-10; ELF} O1D + H1301 = 0.590O + 0.590H1301 + 0.410BrO : 1.00d-10; {2014/02/03; Eastham2014; SDE} O1D + HCFC141b = 0.310O + 0.310HCFC141b + 0.690ClO + 0.690Cl : 2.60d-10; {2014/02/03; Eastham2014; SDE} -O1D + HCFC142b = 0.260O + 0.260HCFC142b + - 0.740ClO : 2.00d-10; {2017/02/22; JPL 15-10; BHH,MJE} +O1D + HCFC142b = 0.350O + 0.350HCFC142b + + 0.650ClO : 2.00d-10; {2017/02/22; JPL 15-10; BHH,MJE,ELF} O1D + HCFC123 = 0.210O + 0.210HCFC123 + 0.790Cl + 0.790ClO : 2.00d-10; {2014/02/03; Eastham2014; SDE} -O1D + CFC113 = 0.250O + 0.250CFC113 + - 1.500Cl + 0.750ClO : 2.32d-10; {2017/02/22; JPL 15-10; BHH,MJE} -O1D + CFC114 = 0.250O + 0.250CFC114 + - 0.750Cl + 0.750ClO : GCARR_ac(1.30d-10, -25.0d0); {2017/02/22; JPL 15-10; BHH,MJE} -O1D + CFC115 = 0.700O + 0.700CFC115 + - 0.300ClO : GCARR_ac(5.40d-11, -30.0d0); {2017/02/22; JPL 15-10; BHH,MJE} +O1D + CFC113 = 0.100O + 0.100CFC113 + + 1.800Cl + 0.900ClO : 2.32d-10; {2017/02/22; JPL 15-10; BHH,MJE,ELF} +O1D + CFC114 = 0.100O + 0.100CFC114 + + 0.900Cl + 0.900ClO : GCARR_ac(1.30d-10, 25.0d0); {2017/02/22; JPL 15-10; BHH,MJE,ELF} +O1D + CFC115 = 0.140O + 0.140CFC115 + + 0.860ClO : GCARR_ac(5.40d-11, 30.0d0); {2017/02/22; JPL 15-10; BHH,MJE,ELF} O1D + H2402 = 0.250O + 0.250H2402 + 0.750Br + 0.750BrO : GCARR_ac(1.60d-10, 0.0d0); {2014/02/03; Eastham2014; SDE} OH + Cl2 = HOCl + Cl : GCARR_ac(2.60d-12, -1100.0d0); {2014/02/03; Eastham2014; SDE} -MO2 + ClO = ClOO + HO2 + CH2O : GCARR_ac(1.80d-11, -600.0d0); {2017/03/20; JPL 15-10; TS,BHH,MJE} +MO2 + ClO = ClOO + HO2 + CH2O : GCARR_ac(1.80d-12, -600.0d0); {2017/03/20; JPL 15-10; TS,BHH,MJE,ELF} OH + ClO = HO2 + Cl : GCARR_ac(7.40d-12, 270.0d0); {2014/02/03; Eastham2014; SDE} OH + ClO = HCl + O2 : GCARR_ac(6.00d-13, 230.0d0); {2014/02/03; Eastham2014; SDE} OH + OClO = HOCl + O2 : GCARR_ac(1.40d-12, 600.0d0); {2017/02/22; JPL 15-10; BHH,MJE} @@ -797,7 +798,7 @@ ClO + BrO = Br + ClOO : GCARR_ac(2.30d-12, 260.0d0); ClO + BrO = BrCl + O2 : GCARR_ac(4.10d-13, 290.0d0); {2014/02/03; Eastham2014; SDE} ClNO3 + O = ClO + NO3 : GCARR_ac(3.60d-12, -840.0d0); {2014/02/03; Eastham2014; SDE} ClNO3 + Cl = Cl2 + NO3 : GCARR_ac(6.50d-12, 135.0d0); {2014/02/03; Eastham2014; SDE} -CH3Cl + Cl = CO + 2.000HCl + HO2 : GCARR_ac(2.17d-11, -1130.0d0); {2014/02/03; Eastham2014; SDE} +CH3Cl + Cl = CO + 2.000HCl + HO2 : GCARR_ac(2.03d-11, -1110.0d0); {2018/06/21; JPL 15-10; ELF} CH2Cl2 + Cl = CO + HCl + 2.000Cl + HO2 : GCARR_ac(1.24d-12, -1070.0d0); {2017/09/22; Sherwen2016b;TS,JAS,SDE} CHCl3 + Cl = CO + HCl + 3.000Cl + HO2 : GCARR_ac(3.77d-12, -1011.0d0); {2017/09/22; Sherwen2016b;TS,JAS,SDE} Cl + HCOOH = HCl + CO2 + H2O : 2.00d-13; {2017/09/22; Sherwen2016b;TS,JAS,SDE} @@ -1602,8 +1603,8 @@ CFC113 + hv = 3.000Cl : PHOTOL(39); {2014/02/03; Eastha CFC114 + hv = 2.000Cl : PHOTOL(40); {2014/02/03; Eastham2014; SDE} CFC115 + hv = Cl : PHOTOL(41); {2014/02/03; Eastham2014; SDE} HCFC123 + hv = 2.000Cl : PHOTOL(47); {2014/02/03; Eastham2014; SDE} -HCFC141b + hv = 2.000Cl : PHOTOL(48); {2014/02/03; Eastham2014; SDE} -HCFC142b + hv = Cl : PHOTOL(49); {2014/02/03; Eastham2014; SDE} +HCFC141b + hv = 1.000Cl : PHOTOL(48); {2018/06/21; JPL 15-10; ELF} +HCFC142b + hv = 1.000Cl : PHOTOL(49); {2018/06/21; JPL 15-10; ELF} HCFC22 + hv = Cl : PHOTOL(46); {2014/02/03; Eastham2014; SDE} H1301 + hv = Br : PHOTOL(53); {2014/02/03; Eastham2014; SDE} H1211 + hv = Cl + Br : PHOTOL(51); {2014/02/03; Eastham2014; SDE} diff --git a/KPP/fullchem/gckpp_Function.F90 b/KPP/fullchem/gckpp_Function.F90 index d5f81ff88..8a0902251 100644 --- a/KPP/fullchem/gckpp_Function.F90 +++ b/KPP/fullchem/gckpp_Function.F90 @@ -1069,7 +1069,7 @@ SUBROUTINE Fun ( V, F, RCT, Vdot, Aout ) Vdot(33) = A(1)+A(3)+A(4)+A(6)+A(8)+A(14)+A(15)+A(17)+A(44)+A(46)+2*A(51)+A(52)+A(54)+A(76)+A(83)+A(96)+A(115)+A(118)& &+A(121)+A(122)+A(140)+2*A(161)+A(166)+2*A(172)+2*A(173)+A(177)+A(178)+A(179)+A(191)+A(194)+A(195)+A(196)& &+A(197)+A(198)+A(199)+2*A(201)+A(203)+A(204)+2*A(205)+A(207)+2*A(209)+2*A(210)+A(213)+A(215)+2*A(222)+A(223)& - &+0.67*A(224)+0.65*A(225)+0.56*A(228)+0.17*A(231)+A(244)+A(245)+A(246)+A(247)+A(248)+2*A(268)+2*A(272)+2& + &+0.64*A(224)+0.6*A(225)+0.56*A(228)+0.19*A(231)+A(244)+A(245)+A(246)+A(247)+A(248)+2*A(268)+2*A(272)+2& &*A(273)+2*A(282)+2*A(283)+2*A(315)+2*A(322)+2*A(323)+A(343)+A(357)+A(358)+A(359)+A(360)+A(361)+A(363)+A(364)& &+A(369)+A(379)+A(380)+A(386)+2*A(387)+2*A(388)+A(396)+A(506)+0.001*A(511)+A(516)+A(517)+A(548)+A(551)+A(552)& &+A(584)+A(595)+A(604)+A(609)+A(621)+1.258*A(625)+1.5*A(627)+A(629)+1.5*A(630)+A(632)+A(635)+A(641)+A(644)& @@ -1114,7 +1114,7 @@ SUBROUTINE Fun ( V, F, RCT, Vdot, Aout ) IF (DO_FUN(44)) & Vdot(44) = -A(335)-A(849) IF (DO_FUN(45)) & - Vdot(45) = -0.75*A(240)-A(831) + Vdot(45) = -0.9*A(240)-A(831) IF (DO_FUN(46)) & Vdot(46) = -0.41*A(235)-A(837) IF (DO_FUN(47)) & @@ -1122,23 +1122,23 @@ SUBROUTINE Fun ( V, F, RCT, Vdot, Aout ) IF (DO_FUN(48)) & Vdot(48) = A(317)-A(716)-A(717)-A(718)-A(854) IF (DO_FUN(49)) & - Vdot(49) = -0.3*A(241)-A(832) + Vdot(49) = -0.86*A(241)-A(832) IF (DO_FUN(50)) & Vdot(50) = A(80)-A(81) IF (DO_FUN(51)) & Vdot(51) = A(186)-A(811) IF (DO_FUN(52)) & - Vdot(52) = -0.86*A(227)-A(827) + Vdot(52) = -0.79*A(227)-A(827) IF (DO_FUN(53)) & - Vdot(53) = -0.88*A(232)-A(828) + Vdot(53) = -0.9*A(232)-A(828) IF (DO_FUN(54)) & Vdot(54) = -0.86*A(233)-A(829) IF (DO_FUN(55)) & - Vdot(55) = -0.75*A(239)-A(830) + Vdot(55) = -0.9*A(239)-A(830) IF (DO_FUN(56)) & Vdot(56) = -A(606) IF (DO_FUN(57)) & - Vdot(57) = -0.64*A(234)-A(838) + Vdot(57) = -0.65*A(234)-A(838) IF (DO_FUN(58)) & Vdot(58) = A(305)-2*A(306)-A(845) IF (DO_FUN(59)) & @@ -1176,7 +1176,7 @@ SUBROUTINE Fun ( V, F, RCT, Vdot, Aout ) IF (DO_FUN(75)) & Vdot(75) = -A(604)-A(605) IF (DO_FUN(76)) & - Vdot(76) = -A(188)-0.68*A(230)-A(812) + Vdot(76) = -A(188)-0.7*A(230)-A(812) IF (DO_FUN(77)) & Vdot(77) = -A(255)-A(288) IF (DO_FUN(78)) & @@ -1188,9 +1188,9 @@ SUBROUTINE Fun ( V, F, RCT, Vdot, Aout ) IF (DO_FUN(81)) & Vdot(81) = -0.69*A(236)-A(258)-A(834) IF (DO_FUN(82)) & - Vdot(82) = -0.74*A(237)-A(259)-A(835) + Vdot(82) = -0.65*A(237)-A(259)-A(835) IF (DO_FUN(83)) & - Vdot(83) = -0.72*A(231)-A(257)-A(836) + Vdot(83) = -0.75*A(231)-A(257)-A(836) IF (DO_FUN(84)) & Vdot(84) = 0.73*A(341)+0.4*A(342)-A(597)-A(877) IF (DO_FUN(85)) & @@ -1378,7 +1378,7 @@ SUBROUTINE Fun ( V, F, RCT, Vdot, Aout ) Vdot(173) = 0.6*A(485)+0.031*A(497)+0.065*A(498)+0.094*A(503)+0.355*A(504)+0.06*A(534)+0.073*A(535)+0.17*A(536)+0.291& &*A(538)+0.378*A(541)-A(557)+0.13*A(581)+0.3*A(585)-A(762)-A(890) IF (DO_FUN(174)) & - Vdot(174) = A(194)+A(199)+A(202)+A(203)-A(214)-A(215)-A(216)-A(217)-A(218)+0.24*A(224)+0.15*A(225)+A(264)+A(771) + Vdot(174) = A(194)+A(199)+A(202)+A(203)-A(214)-A(215)-A(216)-A(217)-A(218)+0.22*A(224)+0.2*A(225)+A(264)+A(771) IF (DO_FUN(175)) & Vdot(175) = -A(175)+A(187)-A(676)-A(677)-A(809)-A(810) IF (DO_FUN(176)) & @@ -1684,12 +1684,12 @@ SUBROUTINE Fun ( V, F, RCT, Vdot, Aout ) Vdot(272) = A(5)-A(673)-A(675)-A(684)-A(686)-A(694)-A(699)-A(730)-A(734)-A(738) IF (DO_FUN(273)) & Vdot(273) = -A(168)-A(170)+A(171)+2*A(172)+A(174)-A(175)+A(176)+A(178)+A(179)-A(180)-A(181)-A(182)-A(183)-A(184)& - &-A(185)-A(186)+3*A(188)+2*A(189)+A(190)+A(222)+0.65*A(225)+0.56*A(228)+0.95*A(229)+1.36*A(230)+0.33*A(234)& + &-A(185)-A(186)+3*A(188)+2*A(189)+A(190)+A(222)+0.6*A(225)+0.56*A(228)+0.95*A(229)+1.4*A(230)+0.34*A(234)& &+0.75*A(242)+A(281)+A(282)-A(304)+A(314)+A(315)+A(316)+2*A(806)+A(807)+A(808)+A(809)+A(811)+3*A(812)+2& &*A(813)+A(814)+A(817)+A(837)+A(838)+2*A(839)+A(852)+A(855) IF (DO_FUN(274)) & - Vdot(274) = A(168)-A(169)-2*A(172)-2*A(173)-A(174)+A(177)-A(179)+A(180)-A(187)-A(222)+0.15*A(225)+0.44*A(228)+0.95& - &*A(229)+0.68*A(230)+0.31*A(234)+0.41*A(235)+0.75*A(242)-A(281)-A(282)-A(283)-A(314)-A(315)-A(316)-A(807)& + Vdot(274) = A(168)-A(169)-2*A(172)-2*A(173)-A(174)+A(177)-A(179)+A(180)-A(187)-A(222)+0.2*A(225)+0.44*A(228)+0.95& + &*A(229)+0.7*A(230)+0.31*A(234)+0.41*A(235)+0.75*A(242)-A(281)-A(282)-A(283)-A(314)-A(315)-A(316)-A(807)& &+A(810) IF (DO_FUN(275)) & Vdot(275) = A(16)+A(38)-A(44)-A(45)-A(46)-A(47)+A(48)-A(51)-A(52)-A(54)-A(76)-A(83)-A(96)-A(118)-A(121)-A(122)-A(140)& @@ -1722,22 +1722,22 @@ SUBROUTINE Fun ( V, F, RCT, Vdot, Aout ) &+0.7*A(888)+A(889)+A(899)+A(900)+A(901)+A(902)+A(903)+A(905)+A(906)+1.555*A(907)+0.3*A(913)+A(914)+A(915)& &+A(916) IF (DO_FUN(280)) & - Vdot(280) = 0.67*A(224)+0.75*A(226)+2.58*A(227)+0.17*A(231)+1.76*A(232)+0.86*A(233)+0.31*A(234)+0.69*A(236)+0.79& - &*A(238)+1.5*A(239)+0.75*A(240)+A(243)+A(245)+A(249)+A(253)+2*A(254)+3*A(255)+3*A(256)+A(257)+2*A(258)& - &+A(259)+2*A(260)-A(261)-A(262)-A(263)-A(264)-A(265)-A(266)-A(267)+A(268)+A(270)+A(273)+A(274)-A(275)+A(276)& - &-A(279)-A(280)-A(285)-A(286)+A(287)+2*A(288)-A(289)-A(290)-A(291)-A(292)-A(293)-A(294)-A(295)-A(296)-A(297)& - &-A(298)-A(299)-A(300)-A(301)-A(302)-A(303)+A(322)+A(815)+2*A(816)+A(817)+2*A(818)+A(819)+A(821)+A(822)& - &+A(823)+A(825)+3*A(826)+4*A(827)+3*A(828)+2*A(829)+3*A(830)+2*A(831)+A(832)+2*A(833)+2*A(834)+A(835)+A(836)& - &+A(838)+A(840)+A(851)+A(856) + Vdot(280) = 0.66*A(224)+0.75*A(226)+2.37*A(227)+0.19*A(231)+1.8*A(232)+0.86*A(233)+0.31*A(234)+0.69*A(236)+0.79*A(238)& + &+1.8*A(239)+0.9*A(240)+A(243)+A(245)+A(249)+A(253)+2*A(254)+3*A(255)+3*A(256)+A(257)+2*A(258)+A(259)+2& + &*A(260)-A(261)-A(262)-A(263)-A(264)-A(265)-A(266)-A(267)+A(268)+A(270)+A(273)+A(274)-A(275)+A(276)-A(279)& + &-A(280)-A(285)-A(286)+A(287)+2*A(288)-A(289)-A(290)-A(291)-A(292)-A(293)-A(294)-A(295)-A(296)-A(297)-A(298)& + &-A(299)-A(300)-A(301)-A(302)-A(303)+A(322)+A(815)+2*A(816)+A(817)+2*A(818)+A(819)+A(821)+A(822)+A(823)& + &+A(825)+3*A(826)+4*A(827)+3*A(828)+2*A(829)+3*A(830)+2*A(831)+A(832)+2*A(833)+A(834)+A(835)+A(836)+A(838)& + &+A(840)+A(851)+A(856) IF (DO_FUN(281)) & Vdot(281) = -A(1)-A(4)-A(8)-A(13)-A(14)-A(15)-A(16)-A(17)+0.15*A(113)-A(115)-A(168)+A(200)-A(201)-A(205)-A(206)-A(215)& &-A(263)-A(324)-A(343)-A(358)-A(359)-A(363)-A(386)-A(396)-A(548)-A(551)+0.13*A(574)+0.13*A(581)+0.13*A(598)& &-A(604)-A(629)+0.15*A(633)-A(644)-A(651)-A(654)-A(703)-A(704)-A(705)-A(765)-A(766) IF (DO_FUN(282)) & - Vdot(282) = 0.24*A(224)+0.75*A(226)+0.86*A(227)+0.55*A(231)+0.88*A(232)+0.86*A(233)+0.33*A(234)+0.69*A(236)+0.74& - &*A(237)+0.79*A(238)+0.75*A(239)+0.75*A(240)+0.3*A(241)-A(244)-A(245)-A(246)+A(250)+A(263)+A(267)-A(268)& - &-A(269)-A(270)-A(271)-2*A(272)-2*A(273)-2*A(274)-2*A(277)+2*A(278)+2*A(280)-A(281)-A(282)-A(283)+A(284)& - &+A(290)+A(293)+A(294)-A(321)-A(322)-A(323)-A(819)+A(820)+A(824) + Vdot(282) = 0.24*A(224)+0.75*A(226)+0.79*A(227)+0.56*A(231)+0.9*A(232)+0.86*A(233)+0.34*A(234)+0.69*A(236)+0.65*A(237)& + &+0.79*A(238)+0.9*A(239)+0.9*A(240)+0.86*A(241)-A(244)-A(245)-A(246)+A(250)+A(263)+A(267)-A(268)-A(269)& + &-A(270)-A(271)-2*A(272)-2*A(273)-2*A(274)-2*A(277)+2*A(278)+2*A(280)-A(281)-A(282)-A(283)+A(284)+A(290)& + &+A(293)+A(294)-A(321)-A(322)-A(323)-A(819)+A(820)+A(824) IF (DO_FUN(283)) & Vdot(283) = -A(13)-A(22)-A(26)-A(27)-A(39)-A(45)+A(51)-A(57)-A(59)-A(60)-A(61)-A(64)-A(65)-A(66)-A(68)-A(69)-A(70)& &-A(71)-A(72)-A(73)-A(74)-A(75)-A(82)-A(174)+2*A(196)+A(209)-A(211)+A(219)-A(220)-A(270)-A(305)+2*A(306)& @@ -1751,15 +1751,15 @@ SUBROUTINE Fun ( V, F, RCT, Vdot, Aout ) IF (DO_FUN(285)) & Vdot(285) = -A(681)-A(688)-A(700)-A(704)+A(706)-A(727)-A(731)-A(735) IF (DO_FUN(286)) & - Vdot(286) = -A(2)-A(5)-0.91*A(224)+A(246)-A(249)+A(261)+A(262)+A(264)+A(265)+A(266)+2*A(286)+A(287)+A(288)+A(289)& + Vdot(286) = -A(2)-A(5)-0.88*A(224)+A(246)-A(249)+A(261)+A(262)+A(264)+A(265)+A(266)+2*A(286)+A(287)+A(288)+A(289)& &+A(291)+A(292)+A(295)+A(296)+A(297)+A(298)+A(299)+A(300)+A(301)+A(302)+A(303)-A(670)-A(677)-A(679)-A(687)& &-A(691)+A(695)-A(697) IF (DO_FUN(287)) & Vdot(287) = A(18)-A(177)-A(178)+A(192)+A(193)-A(200)-A(201)-A(203)-A(204)+2*A(206)-A(207)-A(209)-A(210)-A(211)-A(212)& - &-A(213)+A(217)+A(219)+A(220)+A(221)-A(222)-A(223)+0.09*A(224)+0.2*A(225)+0.25*A(226)+0.14*A(227)+0.05& - &*A(229)+0.32*A(230)+0.28*A(231)+0.12*A(232)+0.14*A(233)+0.36*A(234)+0.59*A(235)+0.31*A(236)+0.26*A(237)& - &+0.21*A(238)+0.25*A(239)+0.25*A(240)+0.7*A(241)+0.25*A(242)-A(268)-A(284)+A(765)+2*A(767)+A(768)+A(777)& - &+A(807)+A(819)+A(820)+A(843)+A(863) + &-A(213)+A(217)+A(219)+A(220)+A(221)-A(222)-A(223)+0.12*A(224)+0.2*A(225)+0.25*A(226)+0.21*A(227)+0.05& + &*A(229)+0.3*A(230)+0.25*A(231)+0.1*A(232)+0.14*A(233)+0.35*A(234)+0.59*A(235)+0.31*A(236)+0.35*A(237)+0.21& + &*A(238)+0.1*A(239)+0.1*A(240)+0.14*A(241)+0.25*A(242)-A(268)-A(284)+A(765)+2*A(767)+A(768)+A(777)+A(807)& + &+A(819)+A(820)+A(843)+A(863) IF (DO_FUN(288)) & Vdot(288) = A(14)-A(15)+A(17)-A(20)+A(21)-A(22)-2*A(23)+A(24)+A(26)-A(28)+2*A(30)+1.74*A(31)+A(36)-A(41)+A(42)-A(44)& &+A(46)+A(49)+A(50)+A(52)+0.05*A(53)+A(59)+A(61)+A(64)+A(66)+0.27*A(68)+A(73)+A(85)+A(86)-A(87)-A(88)-A(89)& @@ -1794,7 +1794,7 @@ SUBROUTINE Fun ( V, F, RCT, Vdot, Aout ) &*A(90)-A(93)-A(103)-A(104)+0.44*A(113)-A(114)+0.36*A(115)-0.773*A(116)-A(119)-A(120)-A(123)-0.209*A(131)& &-0.36*A(132)-0.36*A(133)-0.209*A(134)-0.209*A(135)-A(136)-0.209*A(137)-A(139)-A(164)-A(165)-A(167)-A(171)& &-A(176)+A(177)+A(178)-A(179)-A(188)-A(189)-A(190)+2*A(191)+A(194)+A(197)-A(202)-A(203)+A(204)-A(208)+A(213)& - &+A(215)+2*A(216)+A(223)+0.67*A(224)+0.65*A(225)-A(243)-A(245)-A(246)-A(247)-A(248)-A(249)-A(250)-A(251)& + &+A(215)+2*A(216)+A(223)+0.67*A(224)+0.6*A(225)-A(243)-A(245)-A(246)-A(247)-A(248)-A(249)-A(250)-A(251)& &-A(252)-A(253)-A(254)-A(255)-A(256)-A(257)-A(258)-A(259)-A(260)+A(267)-A(326)-A(327)-A(328)-A(335)-A(336)& &-A(337)-A(351)-A(352)+0.85*A(358)+0.85*A(359)-A(362)+0.85*A(363)-0.51*A(370)-A(384)-A(385)-A(391)-A(392)& &-A(393)-A(394)-A(395)+0.28*A(396)-A(397)-A(398)+0.5*A(399)+0.5*A(400)+0.063*A(401)+0.063*A(403)+A(405)+1.5& @@ -2858,14 +2858,14 @@ SUBROUTINE Fun_SPLIT ( V, F, RCT, Vdot, P_VAR, D_VAR, Aout ) P_VAR(33) = A(1)+A(3)+A(4)+A(6)+A(8)+A(14)+A(15)+A(17)+A(44)+A(46)+2*A(51)+A(52)+A(54)+A(76)+A(83)+A(96)+A(115)+A(118)& &+A(121)+A(122)+A(140)+2*A(161)+A(166)+2*A(172)+2*A(173)+A(177)+A(178)+A(179)+A(191)+A(194)+A(195)+A(196)& &+A(197)+A(198)+A(199)+2*A(201)+A(203)+A(204)+2*A(205)+A(207)+2*A(209)+2*A(210)+A(213)+A(215)+2*A(222)& - &+A(223)+0.67*A(224)+0.65*A(225)+0.56*A(228)+0.17*A(231)+A(244)+A(245)+A(246)+A(247)+A(248)+2*A(268)+2& - &*A(272)+2*A(273)+2*A(282)+2*A(283)+2*A(315)+2*A(322)+2*A(323)+A(343)+A(357)+A(358)+A(359)+A(360)+A(361)& - &+A(363)+A(364)+A(369)+A(379)+A(380)+A(386)+2*A(387)+2*A(388)+A(396)+A(506)+0.001*A(511)+A(516)+A(517)& - &+A(548)+A(551)+A(552)+A(584)+A(595)+A(604)+A(609)+A(621)+1.258*A(625)+1.5*A(627)+A(629)+1.5*A(630)+A(632)& - &+A(635)+A(641)+A(644)+A(645)+A(651)+A(654)+A(662)+0.5*A(665)+A(666)+2*A(667)+2*A(668)+A(669)+A(670)+A(671)& - &+A(672)+A(673)+A(677)+A(679)+A(680)+A(681)+A(682)+A(683)+A(684)+A(685)+A(686)+A(687)+A(688)+A(689)+A(690)& - &+A(691)+A(692)+A(693)+A(694)+A(695)+A(696)+A(697)+A(698)+A(699)+A(700)+A(701)+A(702)+A(711)+A(712)+2*A(713)& - &+2*A(714)+2*A(715)+3*A(716)+3*A(717)+3*A(718)+4*A(719)+4*A(720)+4*A(721)+A(722)+A(723)+A(724)+A(725)+A(727)& + &+A(223)+0.64*A(224)+0.6*A(225)+0.56*A(228)+0.19*A(231)+A(244)+A(245)+A(246)+A(247)+A(248)+2*A(268)+2*A(272)& + &+2*A(273)+2*A(282)+2*A(283)+2*A(315)+2*A(322)+2*A(323)+A(343)+A(357)+A(358)+A(359)+A(360)+A(361)+A(363)& + &+A(364)+A(369)+A(379)+A(380)+A(386)+2*A(387)+2*A(388)+A(396)+A(506)+0.001*A(511)+A(516)+A(517)+A(548)& + &+A(551)+A(552)+A(584)+A(595)+A(604)+A(609)+A(621)+1.258*A(625)+1.5*A(627)+A(629)+1.5*A(630)+A(632)+A(635)& + &+A(641)+A(644)+A(645)+A(651)+A(654)+A(662)+0.5*A(665)+A(666)+2*A(667)+2*A(668)+A(669)+A(670)+A(671)+A(672)& + &+A(673)+A(677)+A(679)+A(680)+A(681)+A(682)+A(683)+A(684)+A(685)+A(686)+A(687)+A(688)+A(689)+A(690)+A(691)& + &+A(692)+A(693)+A(694)+A(695)+A(696)+A(697)+A(698)+A(699)+A(700)+A(701)+A(702)+A(711)+A(712)+2*A(713)+2& + &*A(714)+2*A(715)+3*A(716)+3*A(717)+3*A(718)+4*A(719)+4*A(720)+4*A(721)+A(722)+A(723)+A(724)+A(725)+A(727)& &+A(728)+A(729)+A(730)+A(731)+A(732)+A(733)+A(734)+A(735)+A(736)+A(737)+A(738)+A(745)+A(746)+A(747)+A(748)& &+A(749)+A(752)+A(753)+A(754)+A(755)+A(757)+A(758)+2*A(759)+A(760)+A(761)+A(762)+A(763)+2*A(778)+A(808)+2& &*A(821)+A(825)+A(842)+2*A(844) @@ -2903,7 +2903,7 @@ SUBROUTINE Fun_SPLIT ( V, F, RCT, Vdot, P_VAR, D_VAR, Aout ) IF (DO_FUN(44)) & P_VAR(44) = 0 IF (DO_FUN(45)) & - P_VAR(45) = 0.25*A(240) + P_VAR(45) = 0.1*A(240) IF (DO_FUN(46)) & P_VAR(46) = 0.59*A(235) IF (DO_FUN(47)) & @@ -2911,23 +2911,23 @@ SUBROUTINE Fun_SPLIT ( V, F, RCT, Vdot, P_VAR, D_VAR, Aout ) IF (DO_FUN(48)) & P_VAR(48) = A(317) IF (DO_FUN(49)) & - P_VAR(49) = 0.7*A(241) + P_VAR(49) = 0.14*A(241) IF (DO_FUN(50)) & P_VAR(50) = A(80) IF (DO_FUN(51)) & P_VAR(51) = A(186) IF (DO_FUN(52)) & - P_VAR(52) = 0.14*A(227) + P_VAR(52) = 0.21*A(227) IF (DO_FUN(53)) & - P_VAR(53) = 0.12*A(232) + P_VAR(53) = 0.1*A(232) IF (DO_FUN(54)) & P_VAR(54) = 0.14*A(233) IF (DO_FUN(55)) & - P_VAR(55) = 0.25*A(239) + P_VAR(55) = 0.1*A(239) IF (DO_FUN(56)) & P_VAR(56) = 0 IF (DO_FUN(57)) & - P_VAR(57) = 0.36*A(234) + P_VAR(57) = 0.35*A(234) IF (DO_FUN(58)) & P_VAR(58) = A(305) IF (DO_FUN(59)) & @@ -2965,7 +2965,7 @@ SUBROUTINE Fun_SPLIT ( V, F, RCT, Vdot, P_VAR, D_VAR, Aout ) IF (DO_FUN(75)) & P_VAR(75) = 0 IF (DO_FUN(76)) & - P_VAR(76) = 0.32*A(230) + P_VAR(76) = 0.3*A(230) IF (DO_FUN(77)) & P_VAR(77) = 0 IF (DO_FUN(78)) & @@ -2977,9 +2977,9 @@ SUBROUTINE Fun_SPLIT ( V, F, RCT, Vdot, P_VAR, D_VAR, Aout ) IF (DO_FUN(81)) & P_VAR(81) = 0.31*A(236) IF (DO_FUN(82)) & - P_VAR(82) = 0.26*A(237) + P_VAR(82) = 0.35*A(237) IF (DO_FUN(83)) & - P_VAR(83) = 0.28*A(231) + P_VAR(83) = 0.25*A(231) IF (DO_FUN(84)) & P_VAR(84) = 0.73*A(341)+0.4*A(342) IF (DO_FUN(85)) & @@ -3164,7 +3164,7 @@ SUBROUTINE Fun_SPLIT ( V, F, RCT, Vdot, P_VAR, D_VAR, Aout ) P_VAR(173) = 0.6*A(485)+0.031*A(497)+0.065*A(498)+0.094*A(503)+0.355*A(504)+0.06*A(534)+0.073*A(535)+0.17*A(536)+0.291& &*A(538)+0.378*A(541)+0.13*A(581)+0.3*A(585) IF (DO_FUN(174)) & - P_VAR(174) = A(194)+A(199)+A(202)+A(203)+0.24*A(224)+0.15*A(225)+A(264)+A(771) + P_VAR(174) = A(194)+A(199)+A(202)+A(203)+0.22*A(224)+0.2*A(225)+A(264)+A(771) IF (DO_FUN(175)) & P_VAR(175) = A(187) IF (DO_FUN(176)) & @@ -3449,11 +3449,11 @@ SUBROUTINE Fun_SPLIT ( V, F, RCT, Vdot, P_VAR, D_VAR, Aout ) IF (DO_FUN(272)) & P_VAR(272) = A(5) IF (DO_FUN(273)) & - P_VAR(273) = A(171)+2*A(172)+A(174)+A(176)+A(178)+A(179)+3*A(188)+2*A(189)+A(190)+A(222)+0.65*A(225)+0.56*A(228)+0.95& - &*A(229)+1.36*A(230)+0.33*A(234)+0.75*A(242)+A(281)+A(282)+A(314)+A(315)+A(316)+2*A(806)+A(807)+A(808)& + P_VAR(273) = A(171)+2*A(172)+A(174)+A(176)+A(178)+A(179)+3*A(188)+2*A(189)+A(190)+A(222)+0.6*A(225)+0.56*A(228)+0.95& + &*A(229)+1.4*A(230)+0.34*A(234)+0.75*A(242)+A(281)+A(282)+A(314)+A(315)+A(316)+2*A(806)+A(807)+A(808)& &+A(809)+A(811)+3*A(812)+2*A(813)+A(814)+A(817)+A(837)+A(838)+2*A(839)+A(852)+A(855) IF (DO_FUN(274)) & - P_VAR(274) = A(168)+A(177)+A(180)+0.15*A(225)+0.44*A(228)+0.95*A(229)+0.68*A(230)+0.31*A(234)+0.41*A(235)+0.75*A(242)& + P_VAR(274) = A(168)+A(177)+A(180)+0.2*A(225)+0.44*A(228)+0.95*A(229)+0.7*A(230)+0.31*A(234)+0.41*A(235)+0.75*A(242)& &+A(810) IF (DO_FUN(275)) & P_VAR(275) = A(16)+A(38)+A(48)+A(175)+A(212)+A(252)+A(284)+A(285)+A(313)+A(340)+A(347)+A(391)+0.69*A(553)+A(587)& @@ -3479,17 +3479,17 @@ SUBROUTINE Fun_SPLIT ( V, F, RCT, Vdot, P_VAR, D_VAR, Aout ) &+A(858)+A(865)+A(866)+A(867)+A(868)+A(870)+A(872)+A(873)+A(874)+A(875)+A(876)+A(880)+0.7*A(888)+A(889)& &+A(899)+A(900)+A(901)+A(902)+A(903)+A(905)+A(906)+1.555*A(907)+0.3*A(913)+A(914)+A(915)+A(916) IF (DO_FUN(280)) & - P_VAR(280) = 0.67*A(224)+0.75*A(226)+2.58*A(227)+0.17*A(231)+1.76*A(232)+0.86*A(233)+0.31*A(234)+0.69*A(236)+0.79& - &*A(238)+1.5*A(239)+0.75*A(240)+A(243)+A(245)+A(249)+A(253)+2*A(254)+3*A(255)+3*A(256)+A(257)+2*A(258)& + P_VAR(280) = 0.66*A(224)+0.75*A(226)+2.37*A(227)+0.19*A(231)+1.8*A(232)+0.86*A(233)+0.31*A(234)+0.69*A(236)+0.79& + &*A(238)+1.8*A(239)+0.9*A(240)+A(243)+A(245)+A(249)+A(253)+2*A(254)+3*A(255)+3*A(256)+A(257)+2*A(258)& &+A(259)+2*A(260)+A(268)+A(270)+A(273)+A(274)+A(276)+2*A(287)+3*A(288)+A(322)+A(815)+2*A(816)+A(817)+2& &*A(818)+A(819)+A(821)+A(822)+A(823)+A(825)+3*A(826)+4*A(827)+3*A(828)+2*A(829)+3*A(830)+2*A(831)+A(832)+2& - &*A(833)+2*A(834)+A(835)+A(836)+A(838)+A(840)+A(851)+A(856) + &*A(833)+A(834)+A(835)+A(836)+A(838)+A(840)+A(851)+A(856) IF (DO_FUN(281)) & P_VAR(281) = 0.15*A(113)+A(200)+0.13*A(574)+0.13*A(581)+0.13*A(598)+0.15*A(633) IF (DO_FUN(282)) & - P_VAR(282) = 0.24*A(224)+0.75*A(226)+0.86*A(227)+0.55*A(231)+0.88*A(232)+0.86*A(233)+0.33*A(234)+0.69*A(236)+0.74& - &*A(237)+0.79*A(238)+0.75*A(239)+0.75*A(240)+0.3*A(241)+A(250)+A(263)+A(267)+2*A(278)+2*A(280)+A(284)& - &+A(290)+A(293)+A(294)+A(820)+A(824) + P_VAR(282) = 0.24*A(224)+0.75*A(226)+0.79*A(227)+0.56*A(231)+0.9*A(232)+0.86*A(233)+0.34*A(234)+0.69*A(236)+0.65& + &*A(237)+0.79*A(238)+0.9*A(239)+0.9*A(240)+0.86*A(241)+A(250)+A(263)+A(267)+2*A(278)+2*A(280)+A(284)+A(290)& + &+A(293)+A(294)+A(820)+A(824) IF (DO_FUN(283)) & P_VAR(283) = A(51)+2*A(196)+A(209)+A(219)+2*A(306)+A(603)+A(657)+A(659)+A(661)+A(768)+A(774)+A(778)+A(845) IF (DO_FUN(284)) & @@ -3497,13 +3497,13 @@ SUBROUTINE Fun_SPLIT ( V, F, RCT, Vdot, P_VAR, D_VAR, Aout ) IF (DO_FUN(285)) & P_VAR(285) = A(706) IF (DO_FUN(286)) & - P_VAR(286) = 0.09*A(224)+A(246)+A(261)+A(262)+A(264)+A(265)+A(266)+2*A(286)+A(287)+A(288)+A(289)+A(291)+A(292)+A(295)& + P_VAR(286) = 0.12*A(224)+A(246)+A(261)+A(262)+A(264)+A(265)+A(266)+2*A(286)+A(287)+A(288)+A(289)+A(291)+A(292)+A(295)& &+A(296)+A(297)+A(298)+A(299)+A(300)+A(301)+A(302)+A(303)+A(695) IF (DO_FUN(287)) & - P_VAR(287) = A(18)+A(192)+A(193)+2*A(206)+A(217)+A(219)+A(220)+A(221)+0.09*A(224)+0.2*A(225)+0.25*A(226)+0.14*A(227)& - &+0.05*A(229)+0.32*A(230)+0.28*A(231)+0.12*A(232)+0.14*A(233)+0.36*A(234)+0.59*A(235)+0.31*A(236)+0.26& - &*A(237)+0.21*A(238)+0.25*A(239)+0.25*A(240)+0.7*A(241)+0.25*A(242)+A(765)+2*A(767)+A(768)+A(777)+A(807)& - &+A(819)+A(820)+A(843)+A(863) + P_VAR(287) = A(18)+A(192)+A(193)+2*A(206)+A(217)+A(219)+A(220)+A(221)+0.12*A(224)+0.2*A(225)+0.25*A(226)+0.21*A(227)& + &+0.05*A(229)+0.3*A(230)+0.25*A(231)+0.1*A(232)+0.14*A(233)+0.35*A(234)+0.59*A(235)+0.31*A(236)+0.35*A(237)& + &+0.21*A(238)+0.1*A(239)+0.1*A(240)+0.14*A(241)+0.25*A(242)+A(765)+2*A(767)+A(768)+A(777)+A(807)+A(819)& + &+A(820)+A(843)+A(863) IF (DO_FUN(288)) & P_VAR(288) = A(14)+A(17)+A(21)+A(24)+A(26)+2*A(30)+1.74*A(31)+A(36)+A(42)+A(46)+A(49)+A(50)+A(52)+0.05*A(53)+A(59)& &+A(61)+A(64)+A(66)+0.27*A(68)+A(73)+A(85)+A(86)+A(94)+A(95)+0.64*A(97)+0.5*A(98)+0.3*A(99)+0.5*A(100)& @@ -3532,7 +3532,7 @@ SUBROUTINE Fun_SPLIT ( V, F, RCT, Vdot, P_VAR, D_VAR, Aout ) IF (DO_FUN(289)) & P_VAR(289) = A(15)+A(22)+A(33)+A(35)+A(44)+0.15*A(89)+0.15*A(90)+0.44*A(113)+0.36*A(115)+0.227*A(116)+A(117)+A(124)& &+0.791*A(131)+0.64*A(132)+0.64*A(133)+0.791*A(134)+0.791*A(135)+0.791*A(137)+A(138)+A(177)+A(178)+2*A(191)& - &+A(194)+A(197)+A(204)+A(213)+A(215)+2*A(216)+A(223)+0.67*A(224)+0.65*A(225)+A(267)+0.85*A(358)+0.85*A(359)& + &+A(194)+A(197)+A(204)+A(213)+A(215)+2*A(216)+A(223)+0.67*A(224)+0.6*A(225)+A(267)+0.85*A(358)+0.85*A(359)& &+0.85*A(363)+0.49*A(370)+0.28*A(396)+1.5*A(399)+1.5*A(400)+0.063*A(401)+0.063*A(403)+A(405)+1.5*A(406)& &+A(407)+1.5*A(408)+A(412)+A(413)+A(414)+0.5*A(416)+0.5*A(418)+0.55*A(422)+0.55*A(426)+1.085*A(427)+1.165& &*A(428)+A(429)+A(430)+1.065*A(431)+A(432)+A(435)+A(437)+0.405*A(440)+0.745*A(441)+A(442)+0.275*A(445)& @@ -5263,14 +5263,14 @@ SUBROUTINE Fun_SPLITF ( V, F, RCT, P_VAR, D_VAR, Aout ) P_VAR(33) = A(1)+A(3)+A(4)+A(6)+A(8)+A(14)+A(15)+A(17)+A(44)+A(46)+2*A(51)+A(52)+A(54)+A(76)+A(83)+A(96)+A(115)+A(118)& &+A(121)+A(122)+A(140)+2*A(161)+A(166)+2*A(172)+2*A(173)+A(177)+A(178)+A(179)+A(191)+A(194)+A(195)+A(196)& &+A(197)+A(198)+A(199)+2*A(201)+A(203)+A(204)+2*A(205)+A(207)+2*A(209)+2*A(210)+A(213)+A(215)+2*A(222)& - &+A(223)+0.67*A(224)+0.65*A(225)+0.56*A(228)+0.17*A(231)+A(244)+A(245)+A(246)+A(247)+A(248)+2*A(268)+2& - &*A(272)+2*A(273)+2*A(282)+2*A(283)+2*A(315)+2*A(322)+2*A(323)+A(343)+A(357)+A(358)+A(359)+A(360)+A(361)& - &+A(363)+A(364)+A(369)+A(379)+A(380)+A(386)+2*A(387)+2*A(388)+A(396)+A(506)+0.001*A(511)+A(516)+A(517)& - &+A(548)+A(551)+A(552)+A(584)+A(595)+A(604)+A(609)+A(621)+1.258*A(625)+1.5*A(627)+A(629)+1.5*A(630)+A(632)& - &+A(635)+A(641)+A(644)+A(645)+A(651)+A(654)+A(662)+0.5*A(665)+A(666)+2*A(667)+2*A(668)+A(669)+A(670)+A(671)& - &+A(672)+A(673)+A(677)+A(679)+A(680)+A(681)+A(682)+A(683)+A(684)+A(685)+A(686)+A(687)+A(688)+A(689)+A(690)& - &+A(691)+A(692)+A(693)+A(694)+A(695)+A(696)+A(697)+A(698)+A(699)+A(700)+A(701)+A(702)+A(711)+A(712)+2*A(713)& - &+2*A(714)+2*A(715)+3*A(716)+3*A(717)+3*A(718)+4*A(719)+4*A(720)+4*A(721)+A(722)+A(723)+A(724)+A(725)+A(727)& + &+A(223)+0.64*A(224)+0.6*A(225)+0.56*A(228)+0.19*A(231)+A(244)+A(245)+A(246)+A(247)+A(248)+2*A(268)+2*A(272)& + &+2*A(273)+2*A(282)+2*A(283)+2*A(315)+2*A(322)+2*A(323)+A(343)+A(357)+A(358)+A(359)+A(360)+A(361)+A(363)& + &+A(364)+A(369)+A(379)+A(380)+A(386)+2*A(387)+2*A(388)+A(396)+A(506)+0.001*A(511)+A(516)+A(517)+A(548)& + &+A(551)+A(552)+A(584)+A(595)+A(604)+A(609)+A(621)+1.258*A(625)+1.5*A(627)+A(629)+1.5*A(630)+A(632)+A(635)& + &+A(641)+A(644)+A(645)+A(651)+A(654)+A(662)+0.5*A(665)+A(666)+2*A(667)+2*A(668)+A(669)+A(670)+A(671)+A(672)& + &+A(673)+A(677)+A(679)+A(680)+A(681)+A(682)+A(683)+A(684)+A(685)+A(686)+A(687)+A(688)+A(689)+A(690)+A(691)& + &+A(692)+A(693)+A(694)+A(695)+A(696)+A(697)+A(698)+A(699)+A(700)+A(701)+A(702)+A(711)+A(712)+2*A(713)+2& + &*A(714)+2*A(715)+3*A(716)+3*A(717)+3*A(718)+4*A(719)+4*A(720)+4*A(721)+A(722)+A(723)+A(724)+A(725)+A(727)& &+A(728)+A(729)+A(730)+A(731)+A(732)+A(733)+A(734)+A(735)+A(736)+A(737)+A(738)+A(745)+A(746)+A(747)+A(748)& &+A(749)+A(752)+A(753)+A(754)+A(755)+A(757)+A(758)+2*A(759)+A(760)+A(761)+A(762)+A(763)+2*A(778)+A(808)+2& &*A(821)+A(825)+A(842)+2*A(844) @@ -5296,19 +5296,19 @@ SUBROUTINE Fun_SPLITF ( V, F, RCT, P_VAR, D_VAR, Aout ) P_VAR(42) = A(332) P_VAR(43) = A(747)+A(748)+A(749) P_VAR(44) = 0 - P_VAR(45) = 0.25*A(240) + P_VAR(45) = 0.1*A(240) P_VAR(46) = 0.59*A(235) P_VAR(47) = 0.25*A(242) P_VAR(48) = A(317) - P_VAR(49) = 0.7*A(241) + P_VAR(49) = 0.14*A(241) P_VAR(50) = A(80) P_VAR(51) = A(186) - P_VAR(52) = 0.14*A(227) - P_VAR(53) = 0.12*A(232) + P_VAR(52) = 0.21*A(227) + P_VAR(53) = 0.1*A(232) P_VAR(54) = 0.14*A(233) - P_VAR(55) = 0.25*A(239) + P_VAR(55) = 0.1*A(239) P_VAR(56) = 0 - P_VAR(57) = 0.36*A(234) + P_VAR(57) = 0.35*A(234) P_VAR(58) = A(305) P_VAR(59) = A(221) P_VAR(60) = A(3)+A(667) @@ -5327,14 +5327,14 @@ SUBROUTINE Fun_SPLITF ( V, F, RCT, P_VAR, D_VAR, Aout ) P_VAR(73) = A(277) P_VAR(74) = A(162) P_VAR(75) = 0 - P_VAR(76) = 0.32*A(230) + P_VAR(76) = 0.3*A(230) P_VAR(77) = 0 P_VAR(78) = 0 P_VAR(79) = 0 P_VAR(80) = 0.21*A(238) P_VAR(81) = 0.31*A(236) - P_VAR(82) = 0.26*A(237) - P_VAR(83) = 0.28*A(231) + P_VAR(82) = 0.35*A(237) + P_VAR(83) = 0.25*A(231) P_VAR(84) = 0.73*A(341)+0.4*A(342) P_VAR(85) = 0.098*A(575)+0.75*A(587) P_VAR(86) = A(10) @@ -5428,7 +5428,7 @@ SUBROUTINE Fun_SPLITF ( V, F, RCT, P_VAR, D_VAR, Aout ) P_VAR(172) = 0.085*A(427)+0.165*A(428)+0.58*A(429)+0.77*A(430)+0.75*A(454)+A(455)+A(457)+A(528)+A(540) P_VAR(173) = 0.6*A(485)+0.031*A(497)+0.065*A(498)+0.094*A(503)+0.355*A(504)+0.06*A(534)+0.073*A(535)+0.17*A(536)+0.291& &*A(538)+0.378*A(541)+0.13*A(581)+0.3*A(585) - P_VAR(174) = A(194)+A(199)+A(202)+A(203)+0.24*A(224)+0.15*A(225)+A(264)+A(771) + P_VAR(174) = A(194)+A(199)+A(202)+A(203)+0.22*A(224)+0.2*A(225)+A(264)+A(771) P_VAR(175) = A(187) P_VAR(176) = 0.12*A(353)+A(371)+0.7*A(373)+0.7*A(374)+0.7*A(375)+0.35*A(376)+0.7*A(377)+0.7*A(379)+1.4*A(381)+1.05& &*A(382)+0.7*A(383) @@ -5614,10 +5614,10 @@ SUBROUTINE Fun_SPLITF ( V, F, RCT, P_VAR, D_VAR, Aout ) &+A(79)+A(84)+A(93)+A(171)+A(190)+A(202)+A(217)+A(249)+A(250)+A(253)+A(256)+A(257)+A(258)+A(259)+A(260)& &+A(289)+A(327)+A(328)+A(335)+A(664)+A(691)+A(692)+A(693)+A(694)+A(696)+A(697)+A(698)+A(699) P_VAR(272) = A(5) - P_VAR(273) = A(171)+2*A(172)+A(174)+A(176)+A(178)+A(179)+3*A(188)+2*A(189)+A(190)+A(222)+0.65*A(225)+0.56*A(228)+0.95& - &*A(229)+1.36*A(230)+0.33*A(234)+0.75*A(242)+A(281)+A(282)+A(314)+A(315)+A(316)+2*A(806)+A(807)+A(808)& + P_VAR(273) = A(171)+2*A(172)+A(174)+A(176)+A(178)+A(179)+3*A(188)+2*A(189)+A(190)+A(222)+0.6*A(225)+0.56*A(228)+0.95& + &*A(229)+1.4*A(230)+0.34*A(234)+0.75*A(242)+A(281)+A(282)+A(314)+A(315)+A(316)+2*A(806)+A(807)+A(808)& &+A(809)+A(811)+3*A(812)+2*A(813)+A(814)+A(817)+A(837)+A(838)+2*A(839)+A(852)+A(855) - P_VAR(274) = A(168)+A(177)+A(180)+0.15*A(225)+0.44*A(228)+0.95*A(229)+0.68*A(230)+0.31*A(234)+0.41*A(235)+0.75*A(242)& + P_VAR(274) = A(168)+A(177)+A(180)+0.2*A(225)+0.44*A(228)+0.95*A(229)+0.7*A(230)+0.31*A(234)+0.41*A(235)+0.75*A(242)& &+A(810) P_VAR(275) = A(16)+A(38)+A(48)+A(175)+A(212)+A(252)+A(284)+A(285)+A(313)+A(340)+A(347)+A(391)+0.69*A(553)+A(587)& &+A(639)+A(775)+A(779)+0.3*A(782)+A(809)+A(823)+A(847)+A(857) @@ -5637,24 +5637,24 @@ SUBROUTINE Fun_SPLITF ( V, F, RCT, P_VAR, D_VAR, Aout ) &+A(647)+A(662)+A(773)+A(776)+A(777)+A(779)+0.7*A(782)+A(797)+A(804)+A(810)+A(811)+A(822)+A(824)+A(846)& &+A(858)+A(865)+A(866)+A(867)+A(868)+A(870)+A(872)+A(873)+A(874)+A(875)+A(876)+A(880)+0.7*A(888)+A(889)& &+A(899)+A(900)+A(901)+A(902)+A(903)+A(905)+A(906)+1.555*A(907)+0.3*A(913)+A(914)+A(915)+A(916) - P_VAR(280) = 0.67*A(224)+0.75*A(226)+2.58*A(227)+0.17*A(231)+1.76*A(232)+0.86*A(233)+0.31*A(234)+0.69*A(236)+0.79& - &*A(238)+1.5*A(239)+0.75*A(240)+A(243)+A(245)+A(249)+A(253)+2*A(254)+3*A(255)+3*A(256)+A(257)+2*A(258)& + P_VAR(280) = 0.66*A(224)+0.75*A(226)+2.37*A(227)+0.19*A(231)+1.8*A(232)+0.86*A(233)+0.31*A(234)+0.69*A(236)+0.79& + &*A(238)+1.8*A(239)+0.9*A(240)+A(243)+A(245)+A(249)+A(253)+2*A(254)+3*A(255)+3*A(256)+A(257)+2*A(258)& &+A(259)+2*A(260)+A(268)+A(270)+A(273)+A(274)+A(276)+2*A(287)+3*A(288)+A(322)+A(815)+2*A(816)+A(817)+2& &*A(818)+A(819)+A(821)+A(822)+A(823)+A(825)+3*A(826)+4*A(827)+3*A(828)+2*A(829)+3*A(830)+2*A(831)+A(832)+2& - &*A(833)+2*A(834)+A(835)+A(836)+A(838)+A(840)+A(851)+A(856) + &*A(833)+A(834)+A(835)+A(836)+A(838)+A(840)+A(851)+A(856) P_VAR(281) = 0.15*A(113)+A(200)+0.13*A(574)+0.13*A(581)+0.13*A(598)+0.15*A(633) - P_VAR(282) = 0.24*A(224)+0.75*A(226)+0.86*A(227)+0.55*A(231)+0.88*A(232)+0.86*A(233)+0.33*A(234)+0.69*A(236)+0.74& - &*A(237)+0.79*A(238)+0.75*A(239)+0.75*A(240)+0.3*A(241)+A(250)+A(263)+A(267)+2*A(278)+2*A(280)+A(284)& - &+A(290)+A(293)+A(294)+A(820)+A(824) + P_VAR(282) = 0.24*A(224)+0.75*A(226)+0.79*A(227)+0.56*A(231)+0.9*A(232)+0.86*A(233)+0.34*A(234)+0.69*A(236)+0.65& + &*A(237)+0.79*A(238)+0.9*A(239)+0.9*A(240)+0.86*A(241)+A(250)+A(263)+A(267)+2*A(278)+2*A(280)+A(284)+A(290)& + &+A(293)+A(294)+A(820)+A(824) P_VAR(283) = A(51)+2*A(196)+A(209)+A(219)+2*A(306)+A(603)+A(657)+A(659)+A(661)+A(768)+A(774)+A(778)+A(845) P_VAR(284) = A(2) P_VAR(285) = A(706) - P_VAR(286) = 0.09*A(224)+A(246)+A(261)+A(262)+A(264)+A(265)+A(266)+2*A(286)+A(287)+A(288)+A(289)+A(291)+A(292)+A(295)& + P_VAR(286) = 0.12*A(224)+A(246)+A(261)+A(262)+A(264)+A(265)+A(266)+2*A(286)+A(287)+A(288)+A(289)+A(291)+A(292)+A(295)& &+A(296)+A(297)+A(298)+A(299)+A(300)+A(301)+A(302)+A(303)+A(695) - P_VAR(287) = A(18)+A(192)+A(193)+2*A(206)+A(217)+A(219)+A(220)+A(221)+0.09*A(224)+0.2*A(225)+0.25*A(226)+0.14*A(227)& - &+0.05*A(229)+0.32*A(230)+0.28*A(231)+0.12*A(232)+0.14*A(233)+0.36*A(234)+0.59*A(235)+0.31*A(236)+0.26& - &*A(237)+0.21*A(238)+0.25*A(239)+0.25*A(240)+0.7*A(241)+0.25*A(242)+A(765)+2*A(767)+A(768)+A(777)+A(807)& - &+A(819)+A(820)+A(843)+A(863) + P_VAR(287) = A(18)+A(192)+A(193)+2*A(206)+A(217)+A(219)+A(220)+A(221)+0.12*A(224)+0.2*A(225)+0.25*A(226)+0.21*A(227)& + &+0.05*A(229)+0.3*A(230)+0.25*A(231)+0.1*A(232)+0.14*A(233)+0.35*A(234)+0.59*A(235)+0.31*A(236)+0.35*A(237)& + &+0.21*A(238)+0.1*A(239)+0.1*A(240)+0.14*A(241)+0.25*A(242)+A(765)+2*A(767)+A(768)+A(777)+A(807)+A(819)& + &+A(820)+A(843)+A(863) P_VAR(288) = A(14)+A(17)+A(21)+A(24)+A(26)+2*A(30)+1.74*A(31)+A(36)+A(42)+A(46)+A(49)+A(50)+A(52)+0.05*A(53)+A(59)& &+A(61)+A(64)+A(66)+0.27*A(68)+A(73)+A(85)+A(86)+A(94)+A(95)+0.64*A(97)+0.5*A(98)+0.3*A(99)+0.5*A(100)& &+A(101)+0.5*A(102)+A(103)+A(104)+2*A(105)+2*A(106)+0.28*A(115)+0.773*A(116)+A(119)+A(121)+A(123)+A(125)& @@ -5681,7 +5681,7 @@ SUBROUTINE Fun_SPLITF ( V, F, RCT, P_VAR, D_VAR, Aout ) &+1.5*A(908)+A(909)+0.75*A(910)+A(911)+1.454*A(912)+0.7*A(913)+0.7*A(914)+A(916)+A(918)+A(921) P_VAR(289) = A(15)+A(22)+A(33)+A(35)+A(44)+0.15*A(89)+0.15*A(90)+0.44*A(113)+0.36*A(115)+0.227*A(116)+A(117)+A(124)& &+0.791*A(131)+0.64*A(132)+0.64*A(133)+0.791*A(134)+0.791*A(135)+0.791*A(137)+A(138)+A(177)+A(178)+2*A(191)& - &+A(194)+A(197)+A(204)+A(213)+A(215)+2*A(216)+A(223)+0.67*A(224)+0.65*A(225)+A(267)+0.85*A(358)+0.85*A(359)& + &+A(194)+A(197)+A(204)+A(213)+A(215)+2*A(216)+A(223)+0.67*A(224)+0.6*A(225)+A(267)+0.85*A(358)+0.85*A(359)& &+0.85*A(363)+0.49*A(370)+0.28*A(396)+1.5*A(399)+1.5*A(400)+0.063*A(401)+0.063*A(403)+A(405)+1.5*A(406)& &+A(407)+1.5*A(408)+A(412)+A(413)+A(414)+0.5*A(416)+0.5*A(418)+0.55*A(422)+0.55*A(426)+1.085*A(427)+1.165& &*A(428)+A(429)+A(430)+1.065*A(431)+A(432)+A(435)+A(437)+0.405*A(440)+0.745*A(441)+A(442)+0.275*A(445)& @@ -6407,10 +6407,10 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(33,215) = 1 StoichNum(33,222) = 2 StoichNum(33,223) = 1 - StoichNum(33,224) = 0.67 - StoichNum(33,225) = 0.65 + StoichNum(33,224) = 0.64 + StoichNum(33,225) = 0.6 StoichNum(33,228) = 0.56 - StoichNum(33,231) = 0.17 + StoichNum(33,231) = 0.19 StoichNum(33,244) = 1 StoichNum(33,245) = 1 StoichNum(33,246) = 1 @@ -6720,7 +6720,7 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(43,749) = 1 StoichNum(44,335) = -1 StoichNum(44,849) = -1 - StoichNum(45,240) = -0.75 + StoichNum(45,240) = -0.9 StoichNum(45,831) = -1 StoichNum(46,235) = -0.41 StoichNum(46,837) = -1 @@ -6731,22 +6731,22 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(48,717) = -1 StoichNum(48,718) = -1 StoichNum(48,854) = -1 - StoichNum(49,241) = -0.3 + StoichNum(49,241) = -0.86 StoichNum(49,832) = -1 StoichNum(50,80) = 1 StoichNum(50,81) = -1 StoichNum(51,186) = 1 StoichNum(51,811) = -1 - StoichNum(52,227) = -0.86 + StoichNum(52,227) = -0.79 StoichNum(52,827) = -1 - StoichNum(53,232) = -0.88 + StoichNum(53,232) = -0.9 StoichNum(53,828) = -1 StoichNum(54,233) = -0.86 StoichNum(54,829) = -1 - StoichNum(55,239) = -0.75 + StoichNum(55,239) = -0.9 StoichNum(55,830) = -1 StoichNum(56,606) = -1 - StoichNum(57,234) = -0.64 + StoichNum(57,234) = -0.65 StoichNum(57,838) = -1 StoichNum(58,305) = 1 StoichNum(58,306) = -2 @@ -6811,7 +6811,7 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(75,604) = -1 StoichNum(75,605) = -1 StoichNum(76,188) = -1 - StoichNum(76,230) = -0.68 + StoichNum(76,230) = -0.7 StoichNum(76,812) = -1 StoichNum(77,255) = -1 StoichNum(77,288) = -1 @@ -6823,10 +6823,10 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(81,236) = -0.69 StoichNum(81,258) = -1 StoichNum(81,834) = -1 - StoichNum(82,237) = -0.74 + StoichNum(82,237) = -0.65 StoichNum(82,259) = -1 StoichNum(82,835) = -1 - StoichNum(83,231) = -0.72 + StoichNum(83,231) = -0.75 StoichNum(83,257) = -1 StoichNum(83,836) = -1 StoichNum(84,341) = 0.73 @@ -7348,8 +7348,8 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(174,216) = -1 StoichNum(174,217) = -1 StoichNum(174,218) = -1 - StoichNum(174,224) = 0.24 - StoichNum(174,225) = 0.15 + StoichNum(174,224) = 0.22 + StoichNum(174,225) = 0.2 StoichNum(174,264) = 1 StoichNum(174,771) = 1 StoichNum(175,175) = -1 @@ -9286,11 +9286,11 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(273,189) = 2 StoichNum(273,190) = 1 StoichNum(273,222) = 1 - StoichNum(273,225) = 0.65 + StoichNum(273,225) = 0.6 StoichNum(273,228) = 0.56 StoichNum(273,229) = 0.95 - StoichNum(273,230) = 1.36 - StoichNum(273,234) = 0.33 + StoichNum(273,230) = 1.4 + StoichNum(273,234) = 0.34 StoichNum(273,242) = 0.75 StoichNum(273,281) = 1 StoichNum(273,282) = 1 @@ -9322,10 +9322,10 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(274,180) = 1 StoichNum(274,187) = -1 StoichNum(274,222) = -1 - StoichNum(274,225) = 0.15 + StoichNum(274,225) = 0.2 StoichNum(274,228) = 0.44 StoichNum(274,229) = 0.95 - StoichNum(274,230) = 0.68 + StoichNum(274,230) = 0.7 StoichNum(274,234) = 0.31 StoichNum(274,235) = 0.41 StoichNum(274,242) = 0.75 @@ -9646,17 +9646,17 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(279,914) = 1 StoichNum(279,915) = 1 StoichNum(279,916) = 1 - StoichNum(280,224) = 0.67 + StoichNum(280,224) = 0.66 StoichNum(280,226) = 0.75 - StoichNum(280,227) = 2.58 - StoichNum(280,231) = 0.17 - StoichNum(280,232) = 1.76 + StoichNum(280,227) = 2.37 + StoichNum(280,231) = 0.19 + StoichNum(280,232) = 1.8 StoichNum(280,233) = 0.86 StoichNum(280,234) = 0.31 StoichNum(280,236) = 0.69 StoichNum(280,238) = 0.79 - StoichNum(280,239) = 1.5 - StoichNum(280,240) = 0.75 + StoichNum(280,239) = 1.8 + StoichNum(280,240) = 0.9 StoichNum(280,243) = 1 StoichNum(280,245) = 1 StoichNum(280,249) = 1 @@ -9720,7 +9720,7 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(280,831) = 2 StoichNum(280,832) = 1 StoichNum(280,833) = 2 - StoichNum(280,834) = 2 + StoichNum(280,834) = 1 StoichNum(280,835) = 1 StoichNum(280,836) = 1 StoichNum(280,838) = 1 @@ -9769,17 +9769,17 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(281,766) = -1 StoichNum(282,224) = 0.24 StoichNum(282,226) = 0.75 - StoichNum(282,227) = 0.86 - StoichNum(282,231) = 0.55 - StoichNum(282,232) = 0.88 + StoichNum(282,227) = 0.79 + StoichNum(282,231) = 0.56 + StoichNum(282,232) = 0.9 StoichNum(282,233) = 0.86 - StoichNum(282,234) = 0.33 + StoichNum(282,234) = 0.34 StoichNum(282,236) = 0.69 - StoichNum(282,237) = 0.74 + StoichNum(282,237) = 0.65 StoichNum(282,238) = 0.79 - StoichNum(282,239) = 0.75 - StoichNum(282,240) = 0.75 - StoichNum(282,241) = 0.3 + StoichNum(282,239) = 0.9 + StoichNum(282,240) = 0.9 + StoichNum(282,241) = 0.86 StoichNum(282,244) = -1 StoichNum(282,245) = -1 StoichNum(282,246) = -1 @@ -9928,7 +9928,7 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(285,735) = -1 StoichNum(286,2) = -1 StoichNum(286,5) = -1 - StoichNum(286,224) = -0.91 + StoichNum(286,224) = -0.88 StoichNum(286,246) = 1 StoichNum(286,249) = -1 StoichNum(286,261) = 1 @@ -9980,23 +9980,23 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(287,221) = 1 StoichNum(287,222) = -1 StoichNum(287,223) = -1 - StoichNum(287,224) = 0.09 + StoichNum(287,224) = 0.12 StoichNum(287,225) = 0.2 StoichNum(287,226) = 0.25 - StoichNum(287,227) = 0.14 + StoichNum(287,227) = 0.21 StoichNum(287,229) = 0.05 - StoichNum(287,230) = 0.32 - StoichNum(287,231) = 0.28 - StoichNum(287,232) = 0.12 + StoichNum(287,230) = 0.3 + StoichNum(287,231) = 0.25 + StoichNum(287,232) = 0.1 StoichNum(287,233) = 0.14 - StoichNum(287,234) = 0.36 + StoichNum(287,234) = 0.35 StoichNum(287,235) = 0.59 StoichNum(287,236) = 0.31 - StoichNum(287,237) = 0.26 + StoichNum(287,237) = 0.35 StoichNum(287,238) = 0.21 - StoichNum(287,239) = 0.25 - StoichNum(287,240) = 0.25 - StoichNum(287,241) = 0.7 + StoichNum(287,239) = 0.1 + StoichNum(287,240) = 0.1 + StoichNum(287,241) = 0.14 StoichNum(287,242) = 0.25 StoichNum(287,268) = -1 StoichNum(287,284) = -1 @@ -10399,7 +10399,7 @@ SUBROUTINE CalcStoichNum ( StoichNum ) StoichNum(289,216) = 2 StoichNum(289,223) = 1 StoichNum(289,224) = 0.67 - StoichNum(289,225) = 0.65 + StoichNum(289,225) = 0.6 StoichNum(289,243) = -1 StoichNum(289,245) = -1 StoichNum(289,246) = -1 diff --git a/KPP/fullchem/gckpp_Jacobian.F90 b/KPP/fullchem/gckpp_Jacobian.F90 index ace510914..5df7c977c 100644 --- a/KPP/fullchem/gckpp_Jacobian.F90 +++ b/KPP/fullchem/gckpp_Jacobian.F90 @@ -3885,7 +3885,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(236) = B(1142) IF (DO_JVS(237)) & ! JVS(237) = Jac_FULL(33,83) - JVS(237) = 0.17*B(443) + JVS(237) = 0.19*B(443) IF (DO_JVS(238)) & ! JVS(238) = Jac_FULL(33,91) JVS(238) = 2*B(1487) @@ -4104,7 +4104,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(309) = B(1306)+B(1308)+B(1310)+B(1312)+B(1314)+B(1468) IF (DO_JVS(310)) & ! JVS(310) = Jac_FULL(33,270) - JVS(310) = B(363)+B(369)+B(372)+B(374)+B(376)+B(378)+B(380)+2*B(391)+0.67*B(429)+0.65*B(431)+0.56*B(438)+0.17*B(444) + JVS(310) = B(363)+B(369)+B(372)+B(374)+B(376)+B(378)+B(380)+2*B(391)+0.64*B(429)+0.6*B(431)+0.56*B(438)+0.19*B(444) IF (DO_JVS(311)) & ! JVS(311) = Jac_FULL(33,271) JVS(311) = B(364)+B(1264) @@ -4128,7 +4128,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(316) = B(1289)+B(1303)+B(1327)+B(1361)+B(1369)+B(1377) IF (DO_JVS(317)) & ! JVS(317) = Jac_FULL(33,278) - JVS(317) = B(337)+0.65*B(432)+B(1285)+B(1305)+B(1309)+B(1317) + JVS(317) = B(337)+0.6*B(432)+B(1285)+B(1305)+B(1309)+B(1317) IF (DO_JVS(318)) & ! JVS(318) = Jac_FULL(33,279) JVS(318) = 2*B(95)+2*B(399)+B(1204)+B(1223)+0.5*B(1259) @@ -4147,7 +4147,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(322) = B(1287)+B(1301)+B(1325)+B(1359)+B(1367)+B(1375) IF (DO_JVS(323)) & ! JVS(323) = Jac_FULL(33,286) - JVS(323) = 0.67*B(430)+B(1266)+B(1279)+B(1283)+B(1299)+B(1307)+B(1319) + JVS(323) = 0.64*B(430)+B(1266)+B(1279)+B(1283)+B(1299)+B(1307)+B(1319) IF (DO_JVS(324)) & ! JVS(324) = Jac_FULL(33,287) JVS(324) = B(336)+B(338)+2*B(384)+B(387)+B(389)+B(396)+2*B(400)+2*B(402)+B(408)+2*B(426)+B(428)+2*B(518) @@ -4527,10 +4527,10 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(447) = -B(636) IF (DO_JVS(448)) & ! JVS(448) = Jac_FULL(45,45) - JVS(448) = -0.75*B(461)-B(1474) + JVS(448) = -0.9*B(461)-B(1474) IF (DO_JVS(449)) & ! JVS(449) = Jac_FULL(45,270) - JVS(449) = -0.75*B(462) + JVS(449) = -0.9*B(462) IF (DO_JVS(450)) & ! JVS(450) = Jac_FULL(46,46) JVS(450) = -0.41*B(451)-B(1480) @@ -4554,10 +4554,10 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(456) = B(606) IF (DO_JVS(457)) & ! JVS(457) = Jac_FULL(49,49) - JVS(457) = -0.3*B(463)-B(1475) + JVS(457) = -0.86*B(463)-B(1475) IF (DO_JVS(458)) & ! JVS(458) = Jac_FULL(49,270) - JVS(458) = -0.3*B(464) + JVS(458) = -0.86*B(464) IF (DO_JVS(459)) & ! JVS(459) = Jac_FULL(50,50) JVS(459) = -B(153) @@ -4578,16 +4578,16 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(464) = B(354) IF (DO_JVS(465)) & ! JVS(465) = Jac_FULL(52,52) - JVS(465) = -0.86*B(435)-B(1470) + JVS(465) = -0.79*B(435)-B(1470) IF (DO_JVS(466)) & ! JVS(466) = Jac_FULL(52,270) - JVS(466) = -0.86*B(436) + JVS(466) = -0.79*B(436) IF (DO_JVS(467)) & ! JVS(467) = Jac_FULL(53,53) - JVS(467) = -0.88*B(445)-B(1471) + JVS(467) = -0.9*B(445)-B(1471) IF (DO_JVS(468)) & ! JVS(468) = Jac_FULL(53,270) - JVS(468) = -0.88*B(446) + JVS(468) = -0.9*B(446) IF (DO_JVS(469)) & ! JVS(469) = Jac_FULL(54,54) JVS(469) = -0.86*B(447)-B(1472) @@ -4596,10 +4596,10 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(470) = -0.86*B(448) IF (DO_JVS(471)) & ! JVS(471) = Jac_FULL(55,55) - JVS(471) = -0.75*B(459)-B(1473) + JVS(471) = -0.9*B(459)-B(1473) IF (DO_JVS(472)) & ! JVS(472) = Jac_FULL(55,270) - JVS(472) = -0.75*B(460) + JVS(472) = -0.9*B(460) IF (DO_JVS(473)) & ! JVS(473) = Jac_FULL(56,56) JVS(473) = -B(1146) @@ -4608,10 +4608,10 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(474) = -B(1147) IF (DO_JVS(475)) & ! JVS(475) = Jac_FULL(57,57) - JVS(475) = -0.64*B(449)-B(1481) + JVS(475) = -0.65*B(449)-B(1481) IF (DO_JVS(476)) & ! JVS(476) = Jac_FULL(57,270) - JVS(476) = -0.64*B(450) + JVS(476) = -0.65*B(450) IF (DO_JVS(477)) & ! JVS(477) = Jac_FULL(58,58) JVS(477) = -2*B(587)-B(1488) @@ -4803,10 +4803,10 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(539) = -B(1145) IF (DO_JVS(540)) & ! JVS(540) = Jac_FULL(76,76) - JVS(540) = -B(357)-0.68*B(441)-B(1455) + JVS(540) = -B(357)-0.7*B(441)-B(1455) IF (DO_JVS(541)) & ! JVS(541) = Jac_FULL(76,270) - JVS(541) = -0.68*B(442) + JVS(541) = -0.7*B(442) IF (DO_JVS(542)) & ! JVS(542) = Jac_FULL(76,289) JVS(542) = -B(358) @@ -4851,19 +4851,19 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(555) = -B(498) IF (DO_JVS(556)) & ! JVS(556) = Jac_FULL(82,82) - JVS(556) = -0.74*B(455)-B(499)-B(1478) + JVS(556) = -0.65*B(455)-B(499)-B(1478) IF (DO_JVS(557)) & ! JVS(557) = Jac_FULL(82,270) - JVS(557) = -0.74*B(456) + JVS(557) = -0.65*B(456) IF (DO_JVS(558)) & ! JVS(558) = Jac_FULL(82,289) JVS(558) = -B(500) IF (DO_JVS(559)) & ! JVS(559) = Jac_FULL(83,83) - JVS(559) = -0.72*B(443)-B(495)-B(1479) + JVS(559) = -0.75*B(443)-B(495)-B(1479) IF (DO_JVS(560)) & ! JVS(560) = Jac_FULL(83,270) - JVS(560) = -0.72*B(444) + JVS(560) = -0.75*B(444) IF (DO_JVS(561)) & ! JVS(561) = Jac_FULL(83,289) JVS(561) = -B(496) @@ -6523,10 +6523,10 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(1112) = B(1414) IF (DO_JVS(1113)) & ! JVS(1113) = Jac_FULL(174,270) - JVS(1113) = B(369)+B(380)+0.24*B(429)+0.15*B(431) + JVS(1113) = B(369)+B(380)+0.22*B(429)+0.2*B(431) IF (DO_JVS(1114)) & ! JVS(1114) = Jac_FULL(174,278) - JVS(1114) = 0.15*B(432) + JVS(1114) = 0.2*B(432) IF (DO_JVS(1115)) & ! JVS(1115) = Jac_FULL(174,280) JVS(1115) = B(509) @@ -6535,7 +6535,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(1116) = -B(412) IF (DO_JVS(1117)) & ! JVS(1117) = Jac_FULL(174,286) - JVS(1117) = 0.24*B(430) + JVS(1117) = 0.22*B(430) IF (DO_JVS(1118)) & ! JVS(1118) = Jac_FULL(174,287) JVS(1118) = B(387) @@ -13092,7 +13092,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3291) = B(1454) IF (DO_JVS(3292)) & ! JVS(3292) = Jac_FULL(273,57) - JVS(3292) = 0.33*B(449)+B(1481) + JVS(3292) = 0.34*B(449)+B(1481) IF (DO_JVS(3293)) & ! JVS(3293) = Jac_FULL(273,71) JVS(3293) = 2*B(359)+0.95*B(439)+2*B(1456) @@ -13101,7 +13101,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3294) = B(1498) IF (DO_JVS(3295)) & ! JVS(3295) = Jac_FULL(273,76) - JVS(3295) = 3*B(357)+1.36*B(441)+3*B(1455) + JVS(3295) = 3*B(357)+1.4*B(441)+3*B(1455) IF (DO_JVS(3296)) & ! JVS(3296) = Jac_FULL(273,99) JVS(3296) = B(361)+0.56*B(437)+B(1457) @@ -13185,7 +13185,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3322) = 0 IF (DO_JVS(3323)) & ! JVS(3323) = Jac_FULL(273,270) - JVS(3323) = 0.65*B(431)+0.56*B(438)+0.95*B(440)+1.36*B(442)+0.33*B(450)+0.75*B(466) + JVS(3323) = 0.6*B(431)+0.56*B(438)+0.95*B(440)+1.4*B(442)+0.34*B(450)+0.75*B(466) IF (DO_JVS(3324)) & ! JVS(3324) = Jac_FULL(273,271) JVS(3324) = 0 @@ -13209,7 +13209,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3330) = 0 IF (DO_JVS(3331)) & ! JVS(3331) = Jac_FULL(273,278) - JVS(3331) = B(325)+B(337)+0.65*B(432) + JVS(3331) = B(325)+B(337)+0.6*B(432) IF (DO_JVS(3332)) & ! JVS(3332) = Jac_FULL(273,279) JVS(3332) = -B(354) @@ -13257,7 +13257,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3346) = 0.95*B(439) IF (DO_JVS(3347)) & ! JVS(3347) = Jac_FULL(274,76) - JVS(3347) = 0.68*B(441) + JVS(3347) = 0.7*B(441) IF (DO_JVS(3348)) & ! JVS(3348) = Jac_FULL(274,99) JVS(3348) = 0.44*B(437) @@ -13281,7 +13281,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3354) = 0 IF (DO_JVS(3355)) & ! JVS(3355) = Jac_FULL(274,270) - JVS(3355) = 0.15*B(431)+0.44*B(438)+0.95*B(440)+0.68*B(442)+0.31*B(450)+0.41*B(452)+0.75*B(466) + JVS(3355) = 0.2*B(431)+0.44*B(438)+0.95*B(440)+0.7*B(442)+0.31*B(450)+0.41*B(452)+0.75*B(466) IF (DO_JVS(3356)) & ! JVS(3356) = Jac_FULL(274,271) JVS(3356) = 0 @@ -13305,7 +13305,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3362) = 0 IF (DO_JVS(3363)) & ! JVS(3363) = Jac_FULL(274,278) - JVS(3363) = 0.15*B(432) + JVS(3363) = 0.2*B(432) IF (DO_JVS(3364)) & ! JVS(3364) = Jac_FULL(274,279) JVS(3364) = -B(356) @@ -14341,22 +14341,22 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3704) = 3*B(493)+3*B(1469) IF (DO_JVS(3705)) & ! JVS(3705) = Jac_FULL(280,45) - JVS(3705) = 0.75*B(461)+2*B(1474) + JVS(3705) = 0.9*B(461)+2*B(1474) IF (DO_JVS(3706)) & ! JVS(3706) = Jac_FULL(280,49) JVS(3706) = B(1475) IF (DO_JVS(3707)) & ! JVS(3707) = Jac_FULL(280,52) - JVS(3707) = 2.58*B(435)+4*B(1470) + JVS(3707) = 2.37*B(435)+4*B(1470) IF (DO_JVS(3708)) & ! JVS(3708) = Jac_FULL(280,53) - JVS(3708) = 1.76*B(445)+3*B(1471) + JVS(3708) = 1.8*B(445)+3*B(1471) IF (DO_JVS(3709)) & ! JVS(3709) = Jac_FULL(280,54) JVS(3709) = 0.86*B(447)+2*B(1472) IF (DO_JVS(3710)) & ! JVS(3710) = Jac_FULL(280,55) - JVS(3710) = 1.5*B(459)+3*B(1473) + JVS(3710) = 1.8*B(459)+3*B(1473) IF (DO_JVS(3711)) & ! JVS(3711) = Jac_FULL(280,57) JVS(3711) = 0.31*B(449)+B(1481) @@ -14374,13 +14374,13 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3715) = 0.79*B(457)+2*B(501)+2*B(1476) IF (DO_JVS(3716)) & ! JVS(3716) = Jac_FULL(280,81) - JVS(3716) = 0.69*B(453)+2*B(497)+2*B(1477) + JVS(3716) = 0.69*B(453)+2*B(497)+B(1477) IF (DO_JVS(3717)) & ! JVS(3717) = Jac_FULL(280,82) JVS(3717) = B(499)+B(1478) IF (DO_JVS(3718)) & ! JVS(3718) = Jac_FULL(280,83) - JVS(3718) = 0.17*B(443)+B(495)+B(1479) + JVS(3718) = 0.19*B(443)+B(495)+B(1479) IF (DO_JVS(3719)) & ! JVS(3719) = Jac_FULL(280,100) JVS(3719) = B(1499) @@ -14560,8 +14560,8 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3777) = B(1468) IF (DO_JVS(3778)) & ! JVS(3778) = Jac_FULL(280,270) - JVS(3778) = 0.67*B(429)+0.75*B(434)+2.58*B(436)+0.17*B(444)+1.76*B(446)+0.86*B(448)+0.31*B(450)+0.69*B(454)+0.79& - &*B(458)+1.5*B(460)+0.75*B(462) + JVS(3778) = 0.66*B(429)+0.75*B(434)+2.37*B(436)+0.19*B(444)+1.8*B(446)+0.86*B(448)+0.31*B(450)+0.69*B(454)+0.79*B(458)& + &+1.8*B(460)+0.9*B(462) IF (DO_JVS(3779)) & ! JVS(3779) = Jac_FULL(280,271) JVS(3779) = 0 @@ -14610,7 +14610,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3793) = 0 IF (DO_JVS(3794)) & ! JVS(3794) = Jac_FULL(280,286) - JVS(3794) = 0.67*B(430)+B(479) + JVS(3794) = 0.66*B(430)+B(479) IF (DO_JVS(3795)) & ! JVS(3795) = Jac_FULL(280,287) JVS(3795) = B(518) @@ -14801,25 +14801,25 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3856) = -B(28) IF (DO_JVS(3857)) & ! JVS(3857) = Jac_FULL(282,45) - JVS(3857) = 0.75*B(461) + JVS(3857) = 0.9*B(461) IF (DO_JVS(3858)) & ! JVS(3858) = Jac_FULL(282,49) - JVS(3858) = 0.3*B(463) + JVS(3858) = 0.86*B(463) IF (DO_JVS(3859)) & ! JVS(3859) = Jac_FULL(282,52) - JVS(3859) = 0.86*B(435) + JVS(3859) = 0.79*B(435) IF (DO_JVS(3860)) & ! JVS(3860) = Jac_FULL(282,53) - JVS(3860) = 0.88*B(445) + JVS(3860) = 0.9*B(445) IF (DO_JVS(3861)) & ! JVS(3861) = Jac_FULL(282,54) JVS(3861) = 0.86*B(447) IF (DO_JVS(3862)) & ! JVS(3862) = Jac_FULL(282,55) - JVS(3862) = 0.75*B(459) + JVS(3862) = 0.9*B(459) IF (DO_JVS(3863)) & ! JVS(3863) = Jac_FULL(282,57) - JVS(3863) = 0.33*B(449) + JVS(3863) = 0.34*B(449) IF (DO_JVS(3864)) & ! JVS(3864) = Jac_FULL(282,73) JVS(3864) = 2*B(532) @@ -14831,10 +14831,10 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3866) = 0.69*B(453) IF (DO_JVS(3867)) & ! JVS(3867) = Jac_FULL(282,82) - JVS(3867) = 0.74*B(455) + JVS(3867) = 0.65*B(455) IF (DO_JVS(3868)) & ! JVS(3868) = Jac_FULL(282,83) - JVS(3868) = 0.55*B(443) + JVS(3868) = 0.56*B(443) IF (DO_JVS(3869)) & ! JVS(3869) = Jac_FULL(282,107) JVS(3869) = 2*B(535) @@ -14900,8 +14900,8 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(3889) = B(481) IF (DO_JVS(3890)) & ! JVS(3890) = Jac_FULL(282,270) - JVS(3890) = 0.24*B(429)+0.75*B(434)+0.86*B(436)+0.55*B(444)+0.88*B(446)+0.86*B(448)+0.33*B(450)+0.69*B(454)+0.74& - &*B(456)+0.79*B(458)+0.75*B(460)+0.75*B(462)+0.3*B(464) + JVS(3890) = 0.24*B(429)+0.75*B(434)+0.79*B(436)+0.56*B(444)+0.9*B(446)+0.86*B(448)+0.34*B(450)+0.69*B(454)+0.65*B(456)& + &+0.79*B(458)+0.9*B(460)+0.9*B(462)+0.86*B(464) IF (DO_JVS(3891)) & ! JVS(3891) = Jac_FULL(282,271) JVS(3891) = 0 @@ -15613,7 +15613,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(4124) = -B(1306)+B(1314) IF (DO_JVS(4125)) & ! JVS(4125) = Jac_FULL(286,270) - JVS(4125) = -0.91*B(429) + JVS(4125) = -0.88*B(429) IF (DO_JVS(4126)) & ! JVS(4126) = Jac_FULL(286,271) JVS(4126) = 0 @@ -15662,7 +15662,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(4140) = 0 IF (DO_JVS(4141)) & ! JVS(4141) = Jac_FULL(286,286) - JVS(4141) = -B(5)-B(12)-0.91*B(430)-B(479)-B(1266)-B(1279)-B(1283)-B(1299)-B(1307)-B(1319) + JVS(4141) = -B(5)-B(12)-0.88*B(430)-B(479)-B(1266)-B(1279)-B(1283)-B(1299)-B(1307)-B(1319) IF (DO_JVS(4142)) & ! JVS(4142) = Jac_FULL(286,287) JVS(4142) = 0 @@ -15674,7 +15674,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(4144) = B(474)-B(480) IF (DO_JVS(4145)) & ! JVS(4145) = Jac_FULL(287,45) - JVS(4145) = 0.25*B(461) + JVS(4145) = 0.1*B(461) IF (DO_JVS(4146)) & ! JVS(4146) = Jac_FULL(287,46) JVS(4146) = 0.59*B(451) @@ -15683,22 +15683,22 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(4147) = 0.25*B(465) IF (DO_JVS(4148)) & ! JVS(4148) = Jac_FULL(287,49) - JVS(4148) = 0.7*B(463) + JVS(4148) = 0.14*B(463) IF (DO_JVS(4149)) & ! JVS(4149) = Jac_FULL(287,52) - JVS(4149) = 0.14*B(435) + JVS(4149) = 0.21*B(435) IF (DO_JVS(4150)) & ! JVS(4150) = Jac_FULL(287,53) - JVS(4150) = 0.12*B(445) + JVS(4150) = 0.1*B(445) IF (DO_JVS(4151)) & ! JVS(4151) = Jac_FULL(287,54) JVS(4151) = 0.14*B(447) IF (DO_JVS(4152)) & ! JVS(4152) = Jac_FULL(287,55) - JVS(4152) = 0.25*B(459) + JVS(4152) = 0.1*B(459) IF (DO_JVS(4153)) & ! JVS(4153) = Jac_FULL(287,57) - JVS(4153) = 0.36*B(449) + JVS(4153) = 0.35*B(449) IF (DO_JVS(4154)) & ! JVS(4154) = Jac_FULL(287,63) JVS(4154) = B(419)+B(421)+B(423) @@ -15710,7 +15710,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(4156) = 0.05*B(439) IF (DO_JVS(4157)) & ! JVS(4157) = Jac_FULL(287,76) - JVS(4157) = 0.32*B(441) + JVS(4157) = 0.3*B(441) IF (DO_JVS(4158)) & ! JVS(4158) = Jac_FULL(287,80) JVS(4158) = 0.21*B(457) @@ -15719,10 +15719,10 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(4159) = 0.31*B(453) IF (DO_JVS(4160)) & ! JVS(4160) = Jac_FULL(287,82) - JVS(4160) = 0.26*B(455) + JVS(4160) = 0.35*B(455) IF (DO_JVS(4161)) & ! JVS(4161) = Jac_FULL(287,83) - JVS(4161) = 0.28*B(443) + JVS(4161) = 0.25*B(443) IF (DO_JVS(4162)) & ! JVS(4162) = Jac_FULL(287,110) JVS(4162) = B(1463) @@ -15794,9 +15794,9 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(4184) = 0 IF (DO_JVS(4185)) & ! JVS(4185) = Jac_FULL(287,270) - JVS(4185) = B(365)+B(367)+2*B(393)+0.09*B(429)+0.2*B(431)+0.25*B(434)+0.14*B(436)+0.05*B(440)+0.32*B(442)+0.28*B(444)& - &+0.12*B(446)+0.14*B(448)+0.36*B(450)+0.59*B(452)+0.31*B(454)+0.26*B(456)+0.21*B(458)+0.25*B(460)+0.25& - &*B(462)+0.7*B(464)+0.25*B(466) + JVS(4185) = B(365)+B(367)+2*B(393)+0.12*B(429)+0.2*B(431)+0.25*B(434)+0.21*B(436)+0.05*B(440)+0.3*B(442)+0.25*B(444)& + &+0.1*B(446)+0.14*B(448)+0.35*B(450)+0.59*B(452)+0.31*B(454)+0.35*B(456)+0.21*B(458)+0.1*B(460)+0.1*B(462)& + &+0.14*B(464)+0.25*B(466) IF (DO_JVS(4186)) & ! JVS(4186) = Jac_FULL(287,271) JVS(4186) = 0 @@ -15844,7 +15844,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(4200) = 0 IF (DO_JVS(4201)) & ! JVS(4201) = Jac_FULL(287,286) - JVS(4201) = 0.09*B(430) + JVS(4201) = 0.12*B(430) IF (DO_JVS(4202)) & ! JVS(4202) = Jac_FULL(287,287) JVS(4202) = -B(336)-B(338)-B(381)-B(384)-B(387)-B(389)-B(396)-B(400)-B(402)-B(404)-B(406)-B(408)-B(426)-B(428)-B(518)& @@ -16974,7 +16974,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(4571) = -B(481)+B(1468) IF (DO_JVS(4572)) & ! JVS(4572) = Jac_FULL(289,270) - JVS(4572) = 2*B(363)+B(369)+B(376)+0.67*B(429)+0.65*B(431) + JVS(4572) = 2*B(363)+B(369)+B(376)+0.67*B(429)+0.6*B(431) IF (DO_JVS(4573)) & ! JVS(4573) = Jac_FULL(289,271) JVS(4573) = 2*B(364) @@ -16998,7 +16998,7 @@ SUBROUTINE Jac_SP ( V, F, RCT, JVS ) JVS(4579) = 0 IF (DO_JVS(4580)) & ! JVS(4580) = Jac_FULL(289,278) - JVS(4580) = -B(325)+B(337)+0.65*B(432) + JVS(4580) = -B(325)+B(337)+0.6*B(432) IF (DO_JVS(4581)) & ! JVS(4581) = Jac_FULL(289,279) JVS(4581) = -B(68) diff --git a/KPP/fullchem/gckpp_Monitor.F90 b/KPP/fullchem/gckpp_Monitor.F90 index 4680effc9..2a4c03896 100644 --- a/KPP/fullchem/gckpp_Monitor.F90 +++ b/KPP/fullchem/gckpp_Monitor.F90 @@ -365,25 +365,25 @@ MODULE gckpp_Monitor ' N + NO2 --> N2O + O ', & ! index 221 ' BrO + O --> 2 LOx + Br + O2 ', & ! index 222 ' CH2O + O --> LOx + PCO + CO + HO2 + OH ', & ! index 223 - ' O1D + HCl --> 0.67 LOx + 0.24 H + 0.67 Cl + 0.24 ClO + 0.09 HCl + 0.09 O + 0.67 OH ', & ! index 224 - ' O1D + HBr --> 0.65 LOx + 0.15 H + 0.65 Br + 0.15 BrO + 0.2 HBr + 0.2 O + 0.65 OH ', & ! index 225 + ' O1D + HCl --> 0.64 LOx + 0.22 H + 0.66 Cl + 0.24 ClO + 0.12 HCl + 0.12 O + 0.67 OH ', & ! index 224 + ' O1D + HBr --> 0.6 LOx + 0.2 H + 0.6 Br + 0.2 BrO + 0.2 HBr + 0.2 O + 0.6 OH ', & ! index 225 ' Cl2 + O1D --> 0.25 Cl2 + 0.75 Cl + 0.75 ClO + 0.25 O ', & ! index 226 - ' CCl4 + O1D --> 0.14 CCl4 + 2.58 Cl + 0.86 ClO + 0.14 O ', & ! index 227 + ' CCl4 + O1D --> 0.21 CCl4 + 2.37 Cl + 0.79 ClO + 0.21 O ', & ! index 227 ' CH3Br + O1D --> 0.56 LOx + MO2 + 0.56 Br + 0.44 BrO ', & ! index 228 ' CH2Br2 + O1D --> 0.05 CH2Br2 + 0.95 Br + 0.95 BrO + 0.05 O ', & ! index 229 - ' CHBr3 + O1D --> 0.32 CHBr3 + 1.36 Br + 0.68 BrO + 0.32 O ', & ! index 230 - ' HCFC22 + O1D --> 0.17 LOx + 0.28 HCFC22 + 0.17 Cl + 0.55 ClO + 0.28 O ', & ! index 231 - ' CFC11 + O1D --> 0.12 CFC11 + 1.76 Cl + 0.88 ClO + 0.12 O ', & ! index 232 + ' CHBr3 + O1D --> 0.3 CHBr3 + 1.4 Br + 0.7 BrO + 0.3 O ', & ! index 230 + ' HCFC22 + O1D --> 0.19 LOx + 0.25 HCFC22 + 0.19 Cl + 0.56 ClO + 0.25 O ', & ! index 231 + ' CFC11 + O1D --> 0.1 CFC11 + 1.8 Cl + 0.9 ClO + 0.1 O ', & ! index 232 ' CFC12 + O1D --> 0.14 CFC12 + 0.86 Cl + 0.86 ClO + 0.14 O ', & ! index 233 - ' H1211 + O1D --> 0.36 H1211 + 0.33 Br + 0.31 BrO + 0.31 Cl + 0.33 ClO + 0.36 O ', & ! index 234 + ' H1211 + O1D --> 0.35 H1211 + 0.34 Br + 0.31 BrO + 0.31 Cl + 0.34 ClO + 0.35 O ', & ! index 234 ' H1301 + O1D --> 0.59 H1301 + 0.41 BrO + 0.59 O ', & ! index 235 ' HCFC141b + O1D --> 0.31 HCFC141b + 0.69 Cl + 0.69 ClO + 0.31 O ', & ! index 236 - ' HCFC142b + O1D --> 0.26 HCFC142b + 0.74 ClO + 0.26 O ', & ! index 237 + ' HCFC142b + O1D --> 0.35 HCFC142b + 0.65 ClO + 0.35 O ', & ! index 237 ' HCFC123 + O1D --> 0.21 HCFC123 + 0.79 Cl + 0.79 ClO + 0.21 O ', & ! index 238 - ' CFC113 + O1D --> 0.25 CFC113 + 1.5 Cl + 0.75 ClO + 0.25 O ', & ! index 239 - ' CFC114 + O1D --> 0.25 CFC114 + 0.75 Cl + 0.75 ClO + 0.25 O ' /) ! index up to 240 + ' CFC113 + O1D --> 0.1 CFC113 + 1.8 Cl + 0.9 ClO + 0.1 O ', & ! index 239 + ' CFC114 + O1D --> 0.1 CFC114 + 0.9 Cl + 0.9 ClO + 0.1 O ' /) ! index up to 240 CHARACTER(LEN=100), PARAMETER, DIMENSION(30) :: EQN_NAMES_8 = (/ & - ' CFC115 + O1D --> 0.7 CFC115 + 0.3 ClO + 0.7 O ', & ! index 241 + ' CFC115 + O1D --> 0.14 CFC115 + 0.86 ClO + 0.14 O ', & ! index 241 ' H2402 + O1D --> 0.25 H2402 + 0.75 Br + 0.75 BrO + 0.25 O ', & ! index 242 ' Cl2 + OH --> POx + HOCl + Cl ', & ! index 243 ' MO2 + ClO --> LOx + ClOO + CH2O + HO2 ', & ! index 244 @@ -995,7 +995,7 @@ MODULE gckpp_Monitor ' CFC114 --> 2 Cl ', & ! index 831 ' CFC115 --> Cl ', & ! index 832 ' HCFC123 --> 2 Cl ', & ! index 833 - ' HCFC141b --> 2 Cl ', & ! index 834 + ' HCFC141b --> Cl ', & ! index 834 ' HCFC142b --> Cl ', & ! index 835 ' HCFC22 --> Cl ', & ! index 836 ' H1301 --> Br ', & ! index 837 diff --git a/KPP/fullchem/gckpp_Rates.F90 b/KPP/fullchem/gckpp_Rates.F90 index 146d77f7a..b142dbf3c 100644 --- a/KPP/fullchem/gckpp_Rates.F90 +++ b/KPP/fullchem/gckpp_Rates.F90 @@ -623,8 +623,8 @@ SUBROUTINE Update_RCONST ( ) RCONST(192) = (GCARR_ac(2.15d-11,110.0d0)) RCONST(193) = (GCARR_ac(3.30d-11,55.0d0)) RCONST(194) = (1.20d-10) - RCONST(195) = (GCARR_ac(4.63d-11,20.0d0)) - RCONST(196) = (GCARR_ac(7.25d-11,20.0d0)) + RCONST(195) = (GCARR_ac(4.64d-11,20.0d0)) + RCONST(196) = (GCARR_ac(7.26d-11,20.0d0)) RCONST(197) = (1.31d-10) RCONST(198) = (0.09d-10) RCONST(199) = (0.35d-10) @@ -668,11 +668,11 @@ SUBROUTINE Update_RCONST ( ) RCONST(237) = (2.00d-10) RCONST(238) = (2.00d-10) RCONST(239) = (2.32d-10) - RCONST(240) = (GCARR_ac(1.30d-10,-25.0d0)) - RCONST(241) = (GCARR_ac(5.40d-11,-30.0d0)) + RCONST(240) = (GCARR_ac(1.30d-10,25.0d0)) + RCONST(241) = (GCARR_ac(5.40d-11,30.0d0)) RCONST(242) = (GCARR_ac(1.60d-10,0.0d0)) RCONST(243) = (GCARR_ac(2.60d-12,-1100.0d0)) - RCONST(244) = (GCARR_ac(1.80d-11,-600.0d0)) + RCONST(244) = (GCARR_ac(1.80d-12,-600.0d0)) RCONST(245) = (GCARR_ac(7.40d-12,270.0d0)) RCONST(246) = (GCARR_ac(6.00d-13,230.0d0)) RCONST(247) = (GCARR_ac(1.40d-12,600.0d0)) @@ -714,7 +714,7 @@ SUBROUTINE Update_RCONST ( ) RCONST(283) = (GCARR_ac(4.10d-13,290.0d0)) RCONST(284) = (GCARR_ac(3.60d-12,-840.0d0)) RCONST(285) = (GCARR_ac(6.50d-12,135.0d0)) - RCONST(286) = (GCARR_ac(2.17d-11,-1130.0d0)) + RCONST(286) = (GCARR_ac(2.03d-11,-1110.0d0)) RCONST(287) = (GCARR_ac(1.24d-12,-1070.0d0)) RCONST(288) = (GCARR_ac(3.77d-12,-1011.0d0)) RCONST(289) = (2.00d-13) From 1bee28eba6cb13f87bc7e2b98a7eb6408dbd5186 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 5 Mar 2024 12:32:35 -0500 Subject: [PATCH 124/331] Use netCDF-F90 code in ObsPack; Read ID string as a character array Headers/charpak_mod.F90 - Added utility functions charArr2Str and str2CharArr, for converting between character arrays and strings. This is necessary for netCDF, as you need to store strings as character arrays. Headers/state_diag_mod.F90 - Added ObsPack_CharArray field as a 2-dimensional character array (for number of characters x number of observations) ObsPack/obspack_mod.F90 - Remove reference to "netcdf.inc" and other netCDF-F77 constructs - Now use NF90_* routines instead of NF_* routines - Read the "obspack_id" variable as a character array into State_Diag%ObsPack_CharArray. Then convert to a string array State_Diag%ObsPack_Id. - Add code to allocate and deallocate State_Diag%ObsPack_CharArray - Move the code that reads "time" in front of "obspack_id". This now groups the 1-D variable reads together. Signed-off-by: Bob Yantosca --- CHANGELOG.md | 3 + Headers/charpak_mod.F90 | 112 ++++++++++++++++++++++++- Headers/state_diag_mod.F90 | 1 + ObsPack/obspack_mod.F90 | 164 ++++++++++++++++++++----------------- 4 files changed, 202 insertions(+), 78 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a5e1fa38..f886387d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,12 +9,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Added operational run scripts for the Imperial College London (ICL) cluster - Added new vertical region option to budget diagnostic for fixed bottom and top levels - Added GEOS-IT processed lat-lon fields as a valid option when creating GCHP run directories +- Functions `charArr2str` and `str2CharArr` in `Headers/charpak_mod.F90` +- Field `State_Diag%Obspack_CharArray` as a 2-D character array ### Changed - Updated Harvard Cannon operational run scripts to use `huce_cascade` instead of `huce_intel`; also added `sapphire` - Changed exponent 'e' to 'd' for one entry in KPP to prevent precision error in external models - Changed GCHP sample run scripts to not print script execution commands to log - Changed offline emissions grid resolution templates in config files to be more descriptive +- Read `obspack_id` from netCDF files into a character array, then convert to string ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/Headers/charpak_mod.F90 b/Headers/charpak_mod.F90 index d6763a8f7..66bd07163 100644 --- a/Headers/charpak_mod.F90 +++ b/Headers/charpak_mod.F90 @@ -35,9 +35,8 @@ MODULE Charpak_Mod PUBLIC :: Txtext PUBLIC :: WordWrapPrint PUBLIC :: Unique -! -! !PRIVATE MEMBER FUNCTIONS -! + PUBLIC :: charArr2Str + PUBLIC :: str2CharArr ! ! !REMARKS: ! CHARPAK routines by Robert D. Stewart, 1992. Subsequent modifications @@ -1022,6 +1021,10 @@ SUBROUTINE Unique( vec, vec_unique ) mask = .false. + !======================================================================= + ! Unique begins here! + !======================================================================= + ! Loop over all elements do i = 1, SIZE( vec ) @@ -1053,5 +1056,108 @@ SUBROUTINE Unique( vec, vec_unique ) !call ISORT (vec_unique, [0], size(vec_unique), 1) END SUBROUTINE Unique +! +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Transport Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: charArr2Str +! +! !DESCRIPTION: Converts a character array of dimension N to a string of +! length N. Useful for writing character strings to netCDF files. +!\\ +!\\ +! !INTERFACE: +! + FUNCTION charArr2Str( charArray, N ) RESULT( string ) +! +! !INPUT PARAMETERS: +! + INTEGER, INTENT(IN) :: N ! Dimension of charArray + CHARACTER(LEN=1), INTENT(IN) :: charArray(N) ! Character array +! +! !RETURN VALUE: +! + CHARACTER(LEN=N) :: string ! Output string +! +! !REVISION HISTORY: +! 05 Mar 2024 - R. Yantosca - Initial version +! See the subsequent Git history with the gitk browser! +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! !LOCAL VARIABLES: +! + INTEGER :: C + + !======================================================================= + ! charArray2str begins here! + !======================================================================= + + ! Initialize the string + string = "" + + + ! Copy as much of the charArray to the string, until we hit the + ! null byte (ASCII character 0), which denotes the end of characters + DO C = 1, N + IF ( chararray(C) == ACHAR(0) ) EXIT + string(C:C) = chararray(C) + ENDDO + + END FUNCTION charArr2Str +!EOC +! +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Transport Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: str2CharArr +! +! !DESCRIPTION: Converts a string of length N to a character array of +! dimension N. Useful for writing character strings to netCDF files. + +! !DESCRIPTION: +!\\ +!\\ +! !INTERFACE: +! + FUNCTION str2CharArr( string, N ) RESULT( charArray ) +! +! !INPUT PARAMETERS: +! + INTEGER, INTENT(IN) :: N ! Length of string + CHARACTER(LEN=N), INTENT(IN) :: string ! Input string +! +! !RETURN VALUE: +! + CHARACTER(LEN=1) :: charArray(N) ! Output character array +! +! !REVISION HISTORY: +! 05 Mar 2024 - R. Yantosca - Initial version +! See the subsequent Git history with the gitk browser! +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! !LOCAL VARIABLES: +! + INTEGER :: C, L + + ! Length of the string without trailing whitespace + L = LEN_TRIM( string ) + + ! Copy the non-whitespace characters to chararray + DO C = 1, L + chararray(C) = string(C:C) + ENDDO + + ! Pad the remaining elements with the null byte + charArray(L+1:) = ACHAR(0) + + END FUNCTION str2CharArr !EOC END MODULE CharPak_Mod diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index cf85ddf7e..c72110809 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -1309,6 +1309,7 @@ MODULE State_Diag_Mod ! ObsPack Inputs INTEGER :: ObsPack_nObs + CHARACTER(LEN=1), POINTER :: ObsPack_CharArray (:,:) CHARACTER(LEN=200), POINTER :: ObsPack_Id (: ) INTEGER, POINTER :: ObsPack_nSamples (: ) INTEGER, POINTER :: ObsPack_Strategy (: ) diff --git a/ObsPack/obspack_mod.F90 b/ObsPack/obspack_mod.F90 index 4c8f6014c..44a52b3ca 100644 --- a/ObsPack/obspack_mod.F90 +++ b/ObsPack/obspack_mod.F90 @@ -20,8 +20,6 @@ MODULE ObsPack_Mod IMPLICIT NONE PRIVATE - -#include "netcdf.inc" ! ! !PUBLIC MEMBER FUNCTIONS: ! @@ -232,10 +230,11 @@ SUBROUTINE ObsPack_Read_Input( Input_Opt, State_Diag, RC ) ! ! !USES: ! - USE CharPak_Mod, ONLY : CStrip + USE CharPak_Mod, ONLY : charArr2Str, cStrip USE ErrCode_Mod USE File_Mod, ONLY : File_Exists USE Input_Opt_Mod, ONLY : OptInput + USE netCDF USE State_Diag_Mod, ONLY : DgnState USE m_netcdf_io_open, ONLY : Ncop_Rd USE m_netcdf_io_get_dimlen, ONLY : Ncget_Dimlen @@ -342,6 +341,12 @@ SUBROUTINE ObsPack_Read_Input( Input_Opt, State_Diag, RC ) !======================================================================= ! Allocate the relevant fields of State_Diag !======================================================================= + + ALLOCATE( State_Diag%ObsPack_CharArray( CHAR_LEN_OBS, nObs ), STAT=RC ) + CALL GC_CheckVar( 'State_Diag%ObsPack_CharArray', 0, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Diag%ObsPack_CharArray = ACHAR(0) ! NULL byte + ALLOCATE( State_Diag%ObsPack_ID( nObs ), STAT=RC ) CALL GC_CheckVar( 'State_Diag%ObsPack_Id', 0, RC ) IF ( RC /= GC_SUCCESS ) RETURN @@ -435,7 +440,7 @@ SUBROUTINE ObsPack_Read_Input( Input_Opt, State_Diag, RC ) ! Read coordinate arrays !---------------------------- st1d = (/ 1 /) - ct1d = (/ nobs /) + ct1d = (/ nObs /) varName = 'latitude' CALL NcRd( State_Diag%ObsPack_Latitude, fId, TRIM(varName), st1d, ct1d ) @@ -460,35 +465,19 @@ SUBROUTINE ObsPack_Read_Input( Input_Opt, State_Diag, RC ) State_Diag%ObsPack_Strategy = 2 ENDIF - !---------------------------- - ! Read ID string - !---------------------------- - st2d = (/ 1, 1 /) - ct2d = (/ CHAR_LEN_OBS, nObs /) - varName = 'obspack_id' - CALL NcRd( State_Diag%ObsPack_Id, fId, TRIM(varName), st2d, ct2d ) - - ! Strip white space (e.g. TABS) from the ObsPack ID strings - DO N = 1, nObs - CALL CStrip( State_Diag%ObsPack_Id(N), KeepSpaces=.TRUE. ) - ENDDO - !---------------------------- ! Read time ! (seconds since 1970) !---------------------------- - st1d = (/ 1 /) - ct1d = (/ nObs /) - varName = 'time' CALL NcRd( tmp_int, fId, TRIM(varName), st1d, ct1d ) ! Look for time:comment string, as this will determine if "time" is ! the start time or midpoint time of the averaging window. ! If the comment is not found, we time = start fo the averaging window. - RC = Nf_Inq_Varid ( fId, varName, vId ) - RC = Nf_Get_Att_Text( fId, vId, "comment", comment ) - IF ( RC == NF_NOERR ) THEN + RC = NF90_Inq_Varid( fId, varName, vId ) + RC = NF90_Get_Att( fId, vId, "comment", comment ) + IF ( RC == NF90_NOERR ) THEN N = INDEX( comment, 'midpoint of the averaging interval' ) IF ( N > 0 ) Window_Start_Time = .FALSE. ENDIF @@ -504,6 +493,23 @@ SUBROUTINE ObsPack_Read_Input( Input_Opt, State_Diag, RC ) ENDIF 50 FORMAT( ' - OBSPACK: "time" indicates ', a, ' of sample window' ) + !---------------------------- + ! Read ID string + !---------------------------- + st2d = (/ 1, 1 /) + ct2d = (/ CHAR_LEN_OBS, nObs /) + + varName = 'obspack_id' + CALL NcRd( State_Diag%ObsPack_CharArray, fId, TRIM(varName), st2d, ct2d ) + + ! Convert character array (needed to read strings from netCDF) + ! to a string. Also strip white space (e.g. tab characters). + DO N = 1, nObs + State_Diag%ObsPack_Id(N) = charArr2Str( & + State_Diag%ObsPack_CharArray(:,N), CHAR_LEN_OBS ) + CALL CStrip( State_Diag%ObsPack_Id(N), KeepSpaces=.TRUE. ) + ENDDO + ! Close input netCDF file CALL NcCl( fId ) State_Diag%ObsPack_fId = fId @@ -701,6 +707,13 @@ SUBROUTINE ObsPack_Cleanup( Input_Opt, State_Diag, RC ) !======================================================================= ! Deallocate ObsPack variables !======================================================================= + IF ( ASSOCIATED( State_Diag%ObsPack_CharArray ) ) THEN + DEALLOCATE( State_Diag%ObsPack_CharArray, STAT=RC ) + CALL GC_CheckVar( 'State_Diag%ObsPack_CharArray', 2, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Diag%ObsPack_CharArray => NULL() + ENDIF + IF ( ASSOCIATED( State_Diag%ObsPack_Id ) ) THEN DEALLOCATE( State_Diag%ObsPack_Id, STAT=RC ) CALL GC_CheckVar( 'State_Diag%ObsPack_Id', 2, RC ) @@ -834,6 +847,7 @@ SUBROUTINE ObsPack_Write_Output( Input_Opt, State_Diag, RC ) ! USE ErrCode_Mod USE Input_Opt_Mod, ONLY : OptInput + USE netCDF USE State_Diag_Mod, ONLY : DgnState USE Time_Mod, ONLY : Get_NHMSb USE Time_Mod, ONLY : Get_NHMSe @@ -992,7 +1006,7 @@ SUBROUTINE ObsPack_Write_Output( Input_Opt, State_Diag, RC ) ENDIF ! Turn filling off - CALL NcSetFill( fId, NF_NOFILL, omode ) + CALL NcSetFill( fId, NF90_NOFILL, omode ) !======================================================================= ! Define dimensions of netCDF variables @@ -1000,7 +1014,7 @@ SUBROUTINE ObsPack_Write_Output( Input_Opt, State_Diag, RC ) ! Number of observations varName = 'obs' - CALL NcDef_Dimension( fId, TRIM(varName), NF_UNLIMITED, dId_obs ) + CALL NcDef_Dimension( fId, TRIM(varName), NF90_UNLIMITED, dId_obs ) ! Number of species varName = 'species' @@ -1054,102 +1068,102 @@ SUBROUTINE ObsPack_Write_Output( Input_Opt, State_Diag, RC ) ! ID varName = 'obspack_id' - CALL NcDef_Variable ( fId, TRIM(varName), NF_CHAR, 2, dims_2d, vId ) - CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'obspack_id' ) - CALL NcDef_Var_Attributes( fId, vId, 'units', '1' ) + CALL NcDef_Variable ( fId, TRIM(varName), NF90_CHAR, 2, dims_2d, vId) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'obspack_id' ) + CALL NcDef_Var_Attributes( fId, vId, 'units', '1' ) ! # of samples varName = 'nsamples' - CALL NcDef_Variable( fId, TRIM(varName), NF_INT, 1, dims_1d, vId ) + CALL NcDef_Variable( fId, TRIM(varName), NF90_INT, 1, dims_1d, vId ) attVal = 'no. of model samples' - CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) - CALL NcDef_Var_Attributes( fId, vId, 'units', '1' ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'units', '1' ) attVal = 'Number of discrete model samples in average' - CALL NcDef_Var_Attributes( fId, vId, 'comment', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'comment', TRIM(attVal) ) ! Averaging interval varName = 'averaging_interval' - CALL NcDef_Variable( fId, TRIM(varName), NF_INT, 1, dims_1d, vId ) + CALL NcDef_Variable( fId, TRIM(varName), NF90_INT, 1, dims_1d, vId ) attVal = 'Amount of model time over which this observation is averaged' - CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) - CALL NcDef_Var_Attributes( fId, vId, 'units', 'seconds' ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'units', 'seconds' ) ! Averaging interval start time varName = 'averaging_interval_start' - CALL NcDef_Variable( fId, TRIM(varName), NF_INT, 1, dims_1d, vId ) + CALL NcDef_Variable( fId, TRIM(varName), NF90_INT, 1, dims_1d, vId ) attVal = 'Start of averaging interval' - CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) attVal = 'seconds since 1970-01-01 00:00:00 UTC' - CALL NcDef_Var_Attributes( fId, vId, 'units', TRIM(attVal) ) - CALL NcDef_Var_Attributes( fId, vId, 'calendar', 'standard' ) + CALL NcDef_Var_Attributes( fId, vId, 'units', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'calendar', 'standard' ) ! Averaging interval end time varName = 'averaging_interval_end' - CALL NcDef_Variable( fId, TRIM(varName), NF_INT, 1, dims_1d, vId ) + CALL NcDef_Variable( fId, TRIM(varName), NF90_INT, 1, dims_1d, vId ) attVal = 'End of averaging interval' - CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) attVal = 'seconds since 1970-01-01 00:00:00 UTC' - CALL NcDef_Var_Attributes( fId, vId, 'units', TRIM(attVal) ) - CALL NcDef_Var_Attributes( fId, vId, 'calendar', 'standard' ) + CALL NcDef_Var_Attributes( fId, vId, 'units', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'calendar', 'standard' ) ! Longitude - CALL NcDef_Variable( fId, 'lon', NF_FLOAT, 1, dims_1d, vId ) - CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'longitude' ) - CALL NcDef_Var_Attributes( fId, vId, 'units', 'degrees_east' ) + CALL NcDef_Variable( fId, 'lon', NF90_FLOAT, 1, dims_1d, vId ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'longitude' ) + CALL NcDef_Var_Attributes( fId, vId, 'units', 'degrees_east' ) ! Latitude - CALL NcDef_Variable( fId, 'lat', NF_FLOAT, 1, dims_1d, vId ) - CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'latitude' ) - CALL NcDef_Var_Attributes( fId, vId, 'units', 'degrees_north' ) + CALL NcDef_Variable( fId, 'lat', NF90_FLOAT, 1, dims_1d, vId ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'latitude' ) + CALL NcDef_Var_Attributes( fId, vId, 'units', 'degrees_north' ) ! ! Altitude -! CALL NcDef_Variable( fId, 'height', NF_FLOAT, 1, dims_1d, vId ) -! CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'longitude' ) -! CALL NcDef_Var_Attributes( fId, vId, 'units', 'degrees_east' ) +! CALL NcDef_Variable( fId, 'height', NF90_FLOAT, 1, dims_1d, vId ) +! CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'longitude' ) +! CALL NcDef_Var_Attributes( fId, vId, 'units', 'degrees_east' ) ! U-wind - CALL NcDef_Variable( fId, 'u', NF_FLOAT, 1, dims_1d, vId ) + CALL NcDef_Variable( fId, 'u', NF90_FLOAT, 1, dims_1d, vId ) attVal = 'Zonal component of wind' - CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) - CALL NcDef_Var_Attributes( fId, vId, 'units', 'm s^-1' ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'units', 'm s^-1' ) ! V-wind - CALL NcDef_Variable( fId, 'v', NF_FLOAT, 1, dims_1d, vId ) + CALL NcDef_Variable( fId, 'v', NF90_FLOAT, 1, dims_1d, vId ) attVal = 'Meridional component of wind' - CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) - CALL NcDef_Var_Attributes( fId, vId, 'units', 'm s^-1' ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'units', 'm s^-1' ) ! Boundary layer height - CALL NcDef_Variable( fId, 'blh', NF_FLOAT, 1, dims_1d, vId ) + CALL NcDef_Variable( fId, 'blh', NF90_FLOAT, 1, dims_1d, vId ) attVal = 'Boundary layer height' - CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) - CALL NcDef_Var_Attributes( fId, vId, 'units', 'm' ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'units', 'm' ) ! Specific humidity - CALL NcDef_Variable( fId, 'q', NF_FLOAT, 1, dims_1d, vId ) + CALL NcDef_Variable( fId, 'q', NF90_FLOAT, 1, dims_1d, vId ) attVal = 'mass_fraction_of_water_inair' - CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) attVal = 'g water (kg air)^-1' - CALL NcDef_Var_Attributes( fId, vId, 'units', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'units', TRIM(attVal) ) ! Pressure - CALL NcDef_Variable( fId, 'pressure', NF_FLOAT, 1, dims_1d, vId ) - CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'pressure' ) - CALL NcDef_Var_Attributes( fId, vId, 'units', 'hPa' ) + CALL NcDef_Variable( fId, 'pressure', NF90_FLOAT, 1, dims_1d, vId ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'pressure' ) + CALL NcDef_Var_Attributes( fId, vId, 'units', 'hPa' ) ! Temperature - CALL NcDef_Variable( fId, 'temperature', NF_FLOAT, 1, dims_1d, vId ) - CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'temperature' ) - CALL NcDef_Var_Attributes( fId, vId, 'units', 'K' ) + CALL NcDef_Variable( fId, 'temperature', NF90_FLOAT, 1, dims_1d, vId ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', 'temperature' ) + CALL NcDef_Var_Attributes( fId, vId, 'units', 'K' ) ! Species concentration DO S = 1, State_Diag%ObsPack_nSpecies varName = State_Diag%ObsPack_Species_Name(S) attVal = State_Diag%ObsPack_Species_LName(S) - CALL NcDef_Variable( fId, TRIM(varName), NF_FLOAT, 1, dims_1d, vId ) - CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) - CALL NcDef_Var_Attributes( fId, vId, 'units', 'mol mol-1' ) - CALL NcDef_Var_Attributes( fId, vId, '_FillValue', -1e34 ) + CALL NcDef_Variable( fId, TRIM(varName), NF90_FLOAT, 1, dims_1d, vId ) + CALL NcDef_Var_Attributes( fId, vId, 'long_name', TRIM(attVal) ) + CALL NcDef_Var_Attributes( fId, vId, 'units', 'mol mol-1' ) + CALL NcDef_Var_Attributes( fId, vId, '_FillValue', -1e34 ) ENDDO @@ -1168,7 +1182,7 @@ SUBROUTINE ObsPack_Write_Output( Input_Opt, State_Diag, RC ) ct2d = (/ CHAR_LEN_OBS, nObs /) varName = 'obspack_id' - CALL NcWr( State_Diag%ObsPack_Id, fId, TRIM(varName), st2d, ct2d ) + CALL NcWr(State_Diag%ObsPack_CharArray, fId, TRIM(varName), st2d, ct2d ) !--------------------------------------- ! Write 1-D variables From bb282e7df43fd6da1ec666504039e80e76689e48 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 6 Mar 2024 15:42:18 -0500 Subject: [PATCH 125/331] Add "#SBATCH -c 1" to Harvard Cannon run scripts A recent SLURM update on the Harvard Cannon cluster now requires MPI jobs (such as GCHP) to specify the "#SBATCH -c 1" (which sets the SLURM_TRES_PER_TASK=cpu:1. Otherwise, an error will occur when submitting the batch job from an interactive session, as the value of SLURM_TRES_PER_TASK will be copied from the interactive session, which will prevent the batch job from starting. Signed-off-by: Bob Yantosca --- run/GCHP/runScriptSamples/gchp.batch_job.sh | 17 +++++++++++------ .../harvard_cannon/gchp.run | 2 ++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/run/GCHP/runScriptSamples/gchp.batch_job.sh b/run/GCHP/runScriptSamples/gchp.batch_job.sh index 6ae82a6e0..7f4168fe4 100755 --- a/run/GCHP/runScriptSamples/gchp.batch_job.sh +++ b/run/GCHP/runScriptSamples/gchp.batch_job.sh @@ -28,18 +28,19 @@ # ----------------- # Example 2: LSF # +#BSUB -G compute-rvmartin #BSUB -q rvmartin -#BSUB -n 72 -#BSUB -W 2:00 -#BSUB -R "rusage[mem=120GB] span[ptile=36] select[mem < 2TB]" -#BSUB -a 'docker(geoschem/gchp:13.0.0-beta.1-13-g924e47f) +#BSUB -n 24 +#BSUB -W 168:00 +#BSUB -R "rusage[mem=300GB] span[ptile=36] select[mem < 2TB]" +#BSUB -a 'docker(geoschem/gchp:14.3.0)' #BSUB -o lsf-%J.txt # # DESCRIPTION Sample GCHP batch job script for Compute1 (Docker-based environments) # SCHEDULER LSF # DATE 2021-02-19 # SIMULATION C90, 2019-01-01 to 2019-01-02 -# RESOURCES 2 nodes, 36 processes per node +# RESOURCES 1 nodes, 24 processes per node # SEE ALSO bsub man pages, http://gchp.rtfd.io/ # # ----------------- @@ -133,7 +134,11 @@ source checkRunSettings.sh # # Example 2: LSF # -# mpiexec -n 72 ./gchp > ${log} +#/bin/bash +# +# . /etc/bashrc +# +# mpiexec -n 24 ./gchp > ${log} # # Example 3: SLURM # diff --git a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run index f9479e9e5..56269c542 100755 --- a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run +++ b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.run @@ -2,6 +2,7 @@ #SBATCH -n 96 #SBATCH -N 2 +#SBATCH -c 1 #SBATCH --exclusive ##------------------------------------- ## Use this for 1-month runs (default) @@ -19,6 +20,7 @@ ### ### -n : Requests this many cores (across all nodes) ### -N : Requests this number of nodes +### -c 1 : Forces 1 task per CPU (needed after 2024/03/05 SLURM update) ### --mem : Requests this amount of memory in GB ### -p : Requests these partitions where the job can run ### -t : Requests time for the job (days-hours:minutes) From d95a1bd488073f37d861fdd90c5c234e6d196cb9 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 6 Mar 2024 15:52:08 -0500 Subject: [PATCH 126/331] Add "#SBATCH -c 1" to GCHP integration test scripts (for SLURM) test/integration/GCHP/integrationTestExecute.sh - Add "#SBATCH -c 1" tag for SLURM scheduler. This is needed after a recent SLURM update on the Harvard Cannon cluster. test/integration/GCClassic/integrationTest.sh test/integration/GCHP/integrationTest.sh - Add IF block to ask user if they would like to proceed with compile-only tests when scheduler = "none" - Update usage message to denote which schedulers are allowed ("SLURM|LSF|none") - Remove "#SBATCH -c 1" from integrationTestExecute.sh when scheduler is "LSF" CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 ++ test/integration/GCClassic/integrationTest.sh | 12 +++++++++++- test/integration/GCHP/integrationTest.sh | 19 +++++++++++++++---- .../GCHP/integrationTestExecute.sh | 1 + 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f886387d4..cde958825 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Changed GCHP sample run scripts to not print script execution commands to log - Changed offline emissions grid resolution templates in config files to be more descriptive - Read `obspack_id` from netCDF files into a character array, then convert to string +- Add `#SBATCH -c 1` to GCHP integration test scripts and sample run scripts for Harvard Cannon +- In GCC/GCHP integration test, passing `-s none` will run compile-only tests. Query user to proceed or to exit. ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/test/integration/GCClassic/integrationTest.sh b/test/integration/GCClassic/integrationTest.sh index 5d7306304..4a0f73148 100755 --- a/test/integration/GCClassic/integrationTest.sh +++ b/test/integration/GCClassic/integrationTest.sh @@ -41,7 +41,7 @@ # Initialize #============================================================================= this="$(basename ${0})" -usage="Usage: ${this} -d root-dir -e env-file [-h] [-p partition] [-q] [-s scheduler]" +usage="Usage: ${this} -d root-dir -e env-file [-h] [-p partition] [-q] [-s SLURM|LSF|none]" itRoot="none" envFile="none" scheduler="none" @@ -148,6 +148,16 @@ if [[ "x${scheduler}" == "xLSF" && "x${sedPartitionCmd}" == "xnone" ]]; then exit 1 fi +# If "none" is specified for the scheduler, then run compile-only tests. +if [[ "x${scheduler}" == "xNONE" ]]; then + echo "Scheduler is 'none', so compile-only tests will be performed." + read -p "Press y to accept or n to exit: " answer + if [[ "${answer}" =~ [Nn] ]]; then + echo "Exiting ... " + exit 0 + fi +fi + #============================================================================= # Load file with utility functions to setup configuration files #============================================================================= diff --git a/test/integration/GCHP/integrationTest.sh b/test/integration/GCHP/integrationTest.sh index 2c8e543e7..2bfbcd765 100755 --- a/test/integration/GCHP/integrationTest.sh +++ b/test/integration/GCHP/integrationTest.sh @@ -41,7 +41,7 @@ # Initialize #============================================================================= this="$(basename ${0})" -usage="Usage: ${this} -d root-dir -e env-file [-h] [-p partition] [-q] [-s scheduler]" +usage="Usage: ${this} -d root-dir -e env-file [-h] [-p partition] [-q] [-s SLURM|LSF|none]" itRoot="none" envFile="none" scheduler="none" @@ -148,6 +148,16 @@ if [[ "x${scheduler}" == "xLSF" && "x${sedPartitionCmd}" == "xnone" ]]; then exit 1 fi +# If "none" is specified for the scheduler, then run compile-only tests. +if [[ "x${scheduler}" == "xNONE" ]]; then + echo "Scheduler is 'none', so compile-only tests will be performed." + read -p "Press y to accept or n to exit: " answer + if [[ "${answer}" =~ [Nn] ]]; then + echo "Exiting ... " + exit 0 + fi +fi + #============================================================================= # Load file with utility functions to setup configuration files #============================================================================= @@ -240,7 +250,7 @@ if [[ "x${scheduler}" == "xSLURM" ]]; then output=$(sbatch ${scriptsDir}/integrationTestCompile.sh) output=($output) cmpId=${output[3]} - + # Submit execution tests script as a job dependency output=$(sbatch --dependency=afterok:${cmpId} ${scriptsDir}/integrationTestExecute.sh) output=($output) @@ -264,8 +274,9 @@ elif [[ "x${scheduler}" == "xLSF" ]]; then sed_ie '/#SBATCH --mem=8000/d' "${scriptsDir}/integrationTestCompile.sh" sed_ie '/#SBATCH -p REQUESTED_PARTITION/d' "${scriptsDir}/integrationTestCompile.sh" sed_ie '/#SBATCH --mail-type=END/d' "${scriptsDir}/integrationTestCompile.sh" - sed_ie '/#SBATCH -c 24/d' "${scriptsDir}/integrationTestExecute.sh" + sed_ie '/#SBATCH -n 24/d' "${scriptsDir}/integrationTestExecute.sh" sed_ie '/#SBATCH -N 1/d' "${scriptsDir}/integrationTestExecute.sh" + sed_ie '/#SBATCH -c 1/d' "${scriptsDir}/integrationTestExecute.sh" sed_ie '/#SBATCH -t 0-5:00/d' "${scriptsDir}/integrationTestExecute.sh" sed_ie '/#SBATCH -p REQUESTED_PARTITION/d' "${scriptsDir}/integrationTestExecute.sh" sed_ie '/#SBATCH --mem=90000/d' "${scriptsDir}/integrationTestExecute.sh" @@ -292,7 +303,7 @@ elif [[ "x${scheduler}" == "xLSF" ]]; then echo "" echo "Compilation tests submitted as LSF job ${cmpId}" echo "Execution tests submitted as LSF job ${exeId}" - + else #------------------------------------------------------------------------- diff --git a/test/integration/GCHP/integrationTestExecute.sh b/test/integration/GCHP/integrationTestExecute.sh index 17083b558..3f835308f 100755 --- a/test/integration/GCHP/integrationTestExecute.sh +++ b/test/integration/GCHP/integrationTestExecute.sh @@ -2,6 +2,7 @@ #SBATCH -n 24 #SBATCH -N 1 +#SBATCH -c 1 #SBATCH -t 0-5:00 #SBATCH -p REQUESTED_PARTITION #SBATCH --mem=90000 From b93fe8ccab36cbcf1e66f13f8f9def0fd576e7e7 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 7 Mar 2024 12:17:39 -0500 Subject: [PATCH 127/331] Exit GCC/GCHP integration tests if scheduler is omitted test/integration/GCClassic/integrationTest.sh test/integration/GCHP/integrationTest.sh - Remove the default 'scheduler="none"' setting. We now rely on the value passed via the arg list - Add note that scheduler is converted to uppercase (this was always the default behavior but not documented) - Add if block to exit with usage message if scheduler is omitted. - Add comment to state that compile-only tests will run when scheduler is "none". CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 3 ++- test/integration/GCClassic/integrationTest.sh | 13 ++++++++++--- test/integration/GCHP/integrationTest.sh | 11 +++++++++-- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cde958825..8957f94be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Changed offline emissions grid resolution templates in config files to be more descriptive - Read `obspack_id` from netCDF files into a character array, then convert to string - Add `#SBATCH -c 1` to GCHP integration test scripts and sample run scripts for Harvard Cannon -- In GCC/GCHP integration test, passing `-s none` will run compile-only tests. Query user to proceed or to exit. +- In GCC/GCHP integration tests, passing `-s none` will run compile-only tests. Query user to proceed or to exit. +- GCC/GCHP integration tests will exit immediately if `scheduler` is omitted. ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/test/integration/GCClassic/integrationTest.sh b/test/integration/GCClassic/integrationTest.sh index 4a0f73148..bae5e937c 100755 --- a/test/integration/GCClassic/integrationTest.sh +++ b/test/integration/GCClassic/integrationTest.sh @@ -44,7 +44,6 @@ this="$(basename ${0})" usage="Usage: ${this} -d root-dir -e env-file [-h] [-p partition] [-q] [-s SLURM|LSF|none]" itRoot="none" envFile="none" -scheduler="none" sedPartitionCmd="none" quick="no" bootStrap="yes" @@ -106,6 +105,7 @@ while [ : ]; do ;; # -s or --scheduler selects the scheduler (case-insensitive) + # NOTE: Will be converted to uppercase! -s | --scheduler) scheduler="${2^^}" shift 2 @@ -124,6 +124,13 @@ if [[ "x${itRoot}" == "xnone" ]]; then exit 1 fi +# Exit if no scheduler has been specified +if [[ "X${scheduler}" == "X" ]]; then + echo "You must specify a scheduler! (SLURM, LSF, none)!" + echo "${usage}" + exit 1 +fi + # Error check environment file # TODO: Add a test on site name rather than scheduler if [[ "x${scheduler}" != "xLSF" ]]; then @@ -308,14 +315,14 @@ elif [[ "x${scheduler}" == "xLSF" ]]; then else #------------------------------------------------------------------------- - # Integration tests will run interactively + # Compile tests only will run if scheduler = none #------------------------------------------------------------------------- # Run compilation tests echo "" echo "Compiliation tests are running..." ${scriptsDir}/integrationTestCompile.sh & - + fi # Change back to this directory diff --git a/test/integration/GCHP/integrationTest.sh b/test/integration/GCHP/integrationTest.sh index 2bfbcd765..1d2b8b5c3 100755 --- a/test/integration/GCHP/integrationTest.sh +++ b/test/integration/GCHP/integrationTest.sh @@ -44,7 +44,6 @@ this="$(basename ${0})" usage="Usage: ${this} -d root-dir -e env-file [-h] [-p partition] [-q] [-s SLURM|LSF|none]" itRoot="none" envFile="none" -scheduler="none" sedPartitionCmd="none" quick="no" bootStrap="yes" @@ -106,6 +105,7 @@ while [ : ]; do ;; # -s or --scheduler selects the scheduler (case-insensitive) + # NOTE: Will be converted to uppercase! -s | --scheduler) scheduler="${2^^}" shift 2 @@ -124,6 +124,13 @@ if [[ "x${itRoot}" == "xnone" ]]; then exit 1 fi +# Exit if no scheduler has been specified +if [[ "X${scheduler}" == "X" ]]; then + echo "You must specify a scheduler! (SLURM, LSF, none)!" + echo "${usage}" + exit 1 +fi + # Error check environment file # TODO: Add a test on site name rather than scheduler if [[ "x${scheduler}" != "xLSF" ]]; then @@ -307,7 +314,7 @@ elif [[ "x${scheduler}" == "xLSF" ]]; then else #------------------------------------------------------------------------- - # Integration tests will run interactively + # Compile tests only will run if scheduler = none #------------------------------------------------------------------------- # Run compilation tests From 69583f80e5f74a5f7ea2b41e896c79c1b59330a7 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 5 Mar 2024 16:59:08 -0500 Subject: [PATCH 128/331] Rebase PR #2178 (Rename "native" to "raw") atop PR #2182 This was done in order to bring the "#SBATCH -c 1" updates into the PR #2178 branch. Otherwise we would not be able to run GCHP integration tests. Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + run/GCHP/createRunDir.sh | 84 +++++++++---------- ...cs.txt => geosfp.raw_1hr_mass_flux_cs.txt} | 0 ...wind_ll.txt => geosfp.raw_3hr_wind_ll.txt} | 0 ...geosfp.native_ll.txt => geosfp.raw_ll.txt} | 0 ...iscover.txt => geosit.raw_cs.discover.txt} | 0 ...iscover.txt => geosit.raw_ll.discover.txt} | 0 ....txt => geosit.raw_mass_flux.discover.txt} | 0 ...er.txt => geosit.raw_wind_cs.discover.txt} | 0 ...er.txt => geosit.raw_wind_ll.discover.txt} | 0 ...geosit.native_cs.txt => geosit.raw_cs.txt} | 0 ...geosit.native_ll.txt => geosit.raw_ll.txt} | 0 ...mass_flux.txt => geosit.raw_mass_flux.txt} | 0 ...ive_wind_cs.txt => geosit.raw_wind_cs.txt} | 0 ...ive_wind_ll.txt => geosit.raw_wind_ll.txt} | 0 15 files changed, 43 insertions(+), 42 deletions(-) rename run/shared/settings/geosfp/{geosfp.native_1hr_mass_flux_cs.txt => geosfp.raw_1hr_mass_flux_cs.txt} (100%) rename run/shared/settings/geosfp/{geosfp.native_3hr_wind_ll.txt => geosfp.raw_3hr_wind_ll.txt} (100%) rename run/shared/settings/geosfp/{geosfp.native_ll.txt => geosfp.raw_ll.txt} (100%) rename run/shared/settings/geosit/discover/{geosit.native_cs.discover.txt => geosit.raw_cs.discover.txt} (100%) rename run/shared/settings/geosit/discover/{geosit.native_ll.discover.txt => geosit.raw_ll.discover.txt} (100%) rename run/shared/settings/geosit/discover/{geosit.native_mass_flux.discover.txt => geosit.raw_mass_flux.discover.txt} (100%) rename run/shared/settings/geosit/discover/{geosit.native_wind_cs.discover.txt => geosit.raw_wind_cs.discover.txt} (100%) rename run/shared/settings/geosit/discover/{geosit.native_wind_ll.discover.txt => geosit.raw_wind_ll.discover.txt} (100%) rename run/shared/settings/geosit/{geosit.native_cs.txt => geosit.raw_cs.txt} (100%) rename run/shared/settings/geosit/{geosit.native_ll.txt => geosit.raw_ll.txt} (100%) rename run/shared/settings/geosit/{geosit.native_mass_flux.txt => geosit.raw_mass_flux.txt} (100%) rename run/shared/settings/geosit/{geosit.native_wind_cs.txt => geosit.raw_wind_cs.txt} (100%) rename run/shared/settings/geosit/{geosit.native_wind_ll.txt => geosit.raw_wind_ll.txt} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8957f94be..f740a2753 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Add `#SBATCH -c 1` to GCHP integration test scripts and sample run scripts for Harvard Cannon - In GCC/GCHP integration tests, passing `-s none` will run compile-only tests. Query user to proceed or to exit. - GCC/GCHP integration tests will exit immediately if `scheduler` is omitted. +- Now use `raw` instead of `native` in GCHP run directory scripts & templates ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/run/GCHP/createRunDir.sh b/run/GCHP/createRunDir.sh index 515b2a285..a87ccb592 100755 --- a/run/GCHP/createRunDir.sh +++ b/run/GCHP/createRunDir.sh @@ -317,10 +317,10 @@ while [ "${valid_met}" -eq 0 ]; do met="geosfp" - # Ask user to specify processed or native files - printf "${thinline}Choose meteorology file type:${thinline}" + # Ask user to specify processed or raw files + printf "${thinline}Choose meteorology file type:${thinline}" printf " 1. 0.25x0.3125 daily files pre-processed for GEOS-Chem\n" - printf " 2. 0.25x0.3125 hourly and 3-hourly native files produced by GEOS\n" + printf " 2. 0.25x0.3125 hourly and 3-hourly raw files produced by GEOS\n" valid_response=0 while [ "${valid_response}" -eq 0 ]; do valid_response=1 @@ -328,16 +328,16 @@ while [ "${valid_met}" -eq 0 ]; do if [[ ${response} = "1" ]]; then met_file_type="processed_ll" elif [[ ${response} = "2" ]]; then - met_file_type="native_ll" - met_desc="native" + met_file_type="raw_ll" + met_desc="raw" else valid_response=0 printf "Invalid option. Try again.\n" fi done - # If using native files ask user to specify meteoerology for advection. - if [[ ${met_file_type} = "native_ll" ]]; then + # If using raw files ask user to specify meteoerology for advection. + if [[ ${met_file_type} = "raw_ll" ]]; then printf "${thinline}Choose meteorology for advection:${thinline}" printf " 1. 0.25x0.3125 3-hourly winds\n" printf " 2. C720 1-hourly winds derived from mass fluxes (recommended for stretched grid)\n" @@ -360,21 +360,21 @@ while [ "${valid_met}" -eq 0 ]; do fi # Set ExtData.rc settings for met data. Different settings based options chosen above. - if [[ ${met_file_type} = "native_ll" ]]; then + if [[ ${met_file_type} = "raw_ll" ]]; then # config file with advection meteorology if [[ ${adv_flux_src} = "wind" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosfp/geosfp.native_3hr_wind_ll.txt)\n" + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosfp/geosfp.raw_3hr_wind_ll.txt)\n" elif [[ ${adv_flux_src} = "derived_wind" ]]; then RUNDIR_VARS+="$(cat ${metSettingsDir}/geosfp/geosfp.derived_1hr_wind_cs.txt)\n" elif [[ ${adv_flux_src} = "mass_flux" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosfp/geosfp.native_1hr_mass_flux_cs.txt)\n" + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosfp/geosfp.raw_1hr_mass_flux_cs.txt)\n" fi # config file with everything else - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosfp/geosfp.native_ll.txt)\n" + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosfp/geosfp.raw_ll.txt)\n" elif [[ ${met_file_type} = "processed_ll" ]]; then RUNDIR_VARS+="$(cat ${metSettingsDir}/geosfp/geosfp.preprocessed_ll.txt)\n" @@ -384,10 +384,10 @@ while [ "${valid_met}" -eq 0 ]; do met="geosit" - # Ask user to specify processed or native files + # Ask user to specify processed or raw files printf "${thinline}Choose meteorology files:${thinline}" - printf " 1. Native C180 (recommended)\n" - printf " 2. Native 0.5x0.625 \n" + printf " 1. Raw C180 (recommended)\n" + printf " 2. Raw 0.5x0.625 \n" printf " 3. Pre-processed C180 (not yet available)\n" printf " 4. Pre-processed 0.5x0.625 \n" valid_response=0 @@ -395,11 +395,11 @@ while [ "${valid_met}" -eq 0 ]; do valid_response=1 read -p "${USER_PROMPT}" response if [[ ${response} = "1" ]]; then - met_file_type="native_cs" - met_desc="native_cs" + met_file_type="raw_cs" + met_desc="raw_cs" elif [[ ${response} = "2" ]]; then - met_file_type="native_ll" - met_desc="native_ll" + met_file_type="raw_ll" + met_desc="raw_ll" elif [[ ${response} = "3" ]]; then met_file_type="processed_cs" valid_response=0 @@ -413,11 +413,11 @@ while [ "${valid_met}" -eq 0 ]; do fi done - # If using cubed-sphere native files ask user to specify meteoerology for - # advection. If using native lat-lon then always use winds. - if [[ ${met_file_type} = "native_ll" ]]; then + # If using cubed-sphere raw files ask user to specify meteoerology for + # advection. If using raw lat-lon then always use winds. + if [[ ${met_file_type} = "raw_ll" ]]; then adv_flux_src="wind" - elif [[ ${met_file_type} = "native_cs" ]]; then + elif [[ ${met_file_type} = "raw_cs" ]]; then printf "${thinline}Choose meteorology for advection:${thinline}" printf " 1. C180 1-hourly mass fluxes (recommended)\n" printf " 2. C180 3-hourly winds\n" @@ -436,8 +436,8 @@ while [ "${valid_met}" -eq 0 ]; do done fi - # If using native files, ask user if they are using discover - if [[ ${met_file_type} = "native_cs" || ${met_file_type} = "native_ll" ]]; then + # If using raw files, ask user if they are using discover + if [[ ${met_file_type} = "raw_cs" || ${met_file_type} = "raw_ll" ]]; then printf "${thinline}Are you running on the NASA discover cluster? (y/n)${thinline}" valid_response=0 while [ "$valid_response" -eq 0 ]; do @@ -463,36 +463,36 @@ while [ "${valid_met}" -eq 0 ]; do # Settings for advection vars in ExtData.rc, running on discover if [[ ${adv_flux_src} = "mass_flux" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/discover/geosit.native_mass_flux.discover.txt)\n" - elif [[ ${adv_flux_src} == "wind" && ${met_file_type} == "native_cs" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/discover/geosit.native_wind_cs.discover.txt)\n" - elif [[ ${adv_flux_src} == "wind" && ${met_file_type} == "native_ll" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/discover/geosit.native_wind_ll.discover.txt)\n" + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/discover/geosit.raw_mass_flux.discover.txt)\n" + elif [[ ${adv_flux_src} == "wind" && ${met_file_type} == "raw_cs" ]]; then + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/discover/geosit.raw_wind_cs.discover.txt)\n" + elif [[ ${adv_flux_src} == "wind" && ${met_file_type} == "raw_ll" ]]; then + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/discover/geosit.raw_wind_ll.discover.txt)\n" fi # Settings for all other met vars in ExtData.rc, running on discover - if [[ ${met_file_type} = "native_cs" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/discover/geosit.native_cs.discover.txt)\n" - elif [[ ${met_file_type} = "native_ll" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/discover/geosit.native_ll.discover.txt)\n" + if [[ ${met_file_type} = "raw_cs" ]]; then + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/discover/geosit.raw_cs.discover.txt)\n" + elif [[ ${met_file_type} = "raw_ll" ]]; then + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/discover/geosit.raw_ll.discover.txt)\n" fi elif [[ ${use_discover} = "n" ]]; then # Settings for advection vars in ExtData.rc, NOT running on discover if [[ ${adv_flux_src} = "mass_flux" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/geosit.native_mass_flux.txt)\n" - elif [[ ${adv_flux_src} == "wind" && ${met_file_type} == "native_cs" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/geosit.native_wind_cs.txt)\n" - elif [[ ${adv_flux_src} == "wind" && ${met_file_type} == "native_ll" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/geosit.native_wind_ll.txt)\n" + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/geosit.raw_mass_flux.txt)\n" + elif [[ ${adv_flux_src} == "wind" && ${met_file_type} == "raw_cs" ]]; then + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/geosit.raw_wind_cs.txt)\n" + elif [[ ${adv_flux_src} == "wind" && ${met_file_type} == "raw_ll" ]]; then + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/geosit.raw_wind_ll.txt)\n" fi # Settings for all other met vars in ExtData.rc, NOT running on discover - if [[ ${met_file_type} = "native_cs" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/geosit.native_cs.txt)\n" - elif [[ ${met_file_type} = "native_ll" ]]; then - RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/geosit.native_ll.txt)\n" + if [[ ${met_file_type} = "raw_cs" ]]; then + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/geosit.raw_cs.txt)\n" + elif [[ ${met_file_type} = "raw_ll" ]]; then + RUNDIR_VARS+="$(cat ${metSettingsDir}/geosit/geosit.raw_ll.txt)\n" fi fi diff --git a/run/shared/settings/geosfp/geosfp.native_1hr_mass_flux_cs.txt b/run/shared/settings/geosfp/geosfp.raw_1hr_mass_flux_cs.txt similarity index 100% rename from run/shared/settings/geosfp/geosfp.native_1hr_mass_flux_cs.txt rename to run/shared/settings/geosfp/geosfp.raw_1hr_mass_flux_cs.txt diff --git a/run/shared/settings/geosfp/geosfp.native_3hr_wind_ll.txt b/run/shared/settings/geosfp/geosfp.raw_3hr_wind_ll.txt similarity index 100% rename from run/shared/settings/geosfp/geosfp.native_3hr_wind_ll.txt rename to run/shared/settings/geosfp/geosfp.raw_3hr_wind_ll.txt diff --git a/run/shared/settings/geosfp/geosfp.native_ll.txt b/run/shared/settings/geosfp/geosfp.raw_ll.txt similarity index 100% rename from run/shared/settings/geosfp/geosfp.native_ll.txt rename to run/shared/settings/geosfp/geosfp.raw_ll.txt diff --git a/run/shared/settings/geosit/discover/geosit.native_cs.discover.txt b/run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt similarity index 100% rename from run/shared/settings/geosit/discover/geosit.native_cs.discover.txt rename to run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt diff --git a/run/shared/settings/geosit/discover/geosit.native_ll.discover.txt b/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt similarity index 100% rename from run/shared/settings/geosit/discover/geosit.native_ll.discover.txt rename to run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt diff --git a/run/shared/settings/geosit/discover/geosit.native_mass_flux.discover.txt b/run/shared/settings/geosit/discover/geosit.raw_mass_flux.discover.txt similarity index 100% rename from run/shared/settings/geosit/discover/geosit.native_mass_flux.discover.txt rename to run/shared/settings/geosit/discover/geosit.raw_mass_flux.discover.txt diff --git a/run/shared/settings/geosit/discover/geosit.native_wind_cs.discover.txt b/run/shared/settings/geosit/discover/geosit.raw_wind_cs.discover.txt similarity index 100% rename from run/shared/settings/geosit/discover/geosit.native_wind_cs.discover.txt rename to run/shared/settings/geosit/discover/geosit.raw_wind_cs.discover.txt diff --git a/run/shared/settings/geosit/discover/geosit.native_wind_ll.discover.txt b/run/shared/settings/geosit/discover/geosit.raw_wind_ll.discover.txt similarity index 100% rename from run/shared/settings/geosit/discover/geosit.native_wind_ll.discover.txt rename to run/shared/settings/geosit/discover/geosit.raw_wind_ll.discover.txt diff --git a/run/shared/settings/geosit/geosit.native_cs.txt b/run/shared/settings/geosit/geosit.raw_cs.txt similarity index 100% rename from run/shared/settings/geosit/geosit.native_cs.txt rename to run/shared/settings/geosit/geosit.raw_cs.txt diff --git a/run/shared/settings/geosit/geosit.native_ll.txt b/run/shared/settings/geosit/geosit.raw_ll.txt similarity index 100% rename from run/shared/settings/geosit/geosit.native_ll.txt rename to run/shared/settings/geosit/geosit.raw_ll.txt diff --git a/run/shared/settings/geosit/geosit.native_mass_flux.txt b/run/shared/settings/geosit/geosit.raw_mass_flux.txt similarity index 100% rename from run/shared/settings/geosit/geosit.native_mass_flux.txt rename to run/shared/settings/geosit/geosit.raw_mass_flux.txt diff --git a/run/shared/settings/geosit/geosit.native_wind_cs.txt b/run/shared/settings/geosit/geosit.raw_wind_cs.txt similarity index 100% rename from run/shared/settings/geosit/geosit.native_wind_cs.txt rename to run/shared/settings/geosit/geosit.raw_wind_cs.txt diff --git a/run/shared/settings/geosit/geosit.native_wind_ll.txt b/run/shared/settings/geosit/geosit.raw_wind_ll.txt similarity index 100% rename from run/shared/settings/geosit/geosit.native_wind_ll.txt rename to run/shared/settings/geosit/geosit.raw_wind_ll.txt From 476488df9b33fe5e156cd14e7e437e5102aab839 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 7 Mar 2024 14:50:40 -0500 Subject: [PATCH 129/331] Rename RUNDIR_METLIGHTNING environment variables to remove "NATIVE" Renamed RUNDIR_METLIGHTNING_NATIVE_RES to RUNDIR_METLIGHTNING_RES in: run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem run/shared/settings/geosfp/geosfp.preprocessed_ll.txt run/shared/settings/geosfp/geosfp.raw_ll.txt run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt run/shared/settings/geosit/geosit.preprocessed_ll.txt run/shared/settings/geosit/geosit.raw_cs.txt run/shared/settings/geosit/geosit.raw_ll.txt run/shared/settings/merra2.txt Renamed RUNDIR_MET_DIR_NATIVE to RUNDIR_MET_DIR_RAW in: run/GCHP/init_rd.sh run/shared/settings/geosfp/geosfp.raw_ll.txt run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt run/shared/settings/geosit/geosit.raw_cs.txt run/shared/settings/geosit/geosit.raw_ll.txt Renamed GEOS_FP_Native to GEOS_FP_Raw in: run/shared/settings/geosfp/geosfp_derived_1hr_wind_cs.txt run/shared/settings/geosfp/geosfp.preprocessed_ll.txt run/shared/settings/geosfp/geosfp.raw_1hr_mass_flux_cs.txt run/shared/settings/geosfp/geosfp.raw_ll.txt CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 ++ .../HEMCO_Config.rc.gmao_metfields | 8 ++++---- run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem | 8 ++++---- run/GCHP/init_rd.sh | 2 +- .../settings/geosfp/geosfp.derived_1hr_wind_cs.txt | 8 ++++---- .../settings/geosfp/geosfp.preprocessed_ll.txt | 4 ++-- .../settings/geosfp/geosfp.raw_1hr_mass_flux_cs.txt | 12 ++++++------ run/shared/settings/geosfp/geosfp.raw_ll.txt | 6 +++--- .../geosit/discover/geosit.raw_cs.discover.txt | 6 +++--- .../geosit/discover/geosit.raw_ll.discover.txt | 4 ++-- .../settings/geosit/geosit.preprocessed_ll.txt | 4 ++-- run/shared/settings/geosit/geosit.raw_cs.txt | 6 +++--- run/shared/settings/geosit/geosit.raw_ll.txt | 6 +++--- run/shared/settings/merra2.txt | 4 ++-- 14 files changed, 41 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f740a2753..45f8878bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - In GCC/GCHP integration tests, passing `-s none` will run compile-only tests. Query user to proceed or to exit. - GCC/GCHP integration tests will exit immediately if `scheduler` is omitted. - Now use `raw` instead of `native` in GCHP run directory scripts & templates +- Rename env var `RUNDIR_METLIGHTNING_DIR_NATIVE` to `RUNDIR_METLIGHTNING_DIR` +- Rename env var `RUNDIR_METLIGHTNING_NATIVE_RES` to `RUNDIR_METLIGHTNING_RES` ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields index c0bfdb1ee..3b9b3cf53 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields @@ -134,13 +134,13 @@ METDIR: ${RUNDIR_MET_DIR} #============================================================================== (((LightNOx (((.not.LightningClimatology -* FLASH_DENS $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_NATIVE_RES}_$YYYY_$MM.nc4 LDENS 1980-2021/1-12/1-31/0-23/+90minute RFY3 xy 1 * - 1 1 -* CONV_DEPTH $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_NATIVE_RES}_$YYYY_$MM.nc4 CTH 1980-2021/1-12/1-31/0-23/+90minute RFY3 xy 1 * - 1 1 +* FLASH_DENS $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_$YYYY_$MM.nc4 LDENS 1980-2021/1-12/1-31/0-23/+90minute RFY3 xy 1 * - 1 1 +* CONV_DEPTH $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_$YYYY_$MM.nc4 CTH 1980-2021/1-12/1-31/0-23/+90minute RFY3 xy 1 * - 1 1 ))).not.LightningClimatology (((LightningClimatology -* FLASH_DENS $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_NATIVE_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 LDENS 2019/1-12/1/0 C xy 1 * - 1 1 -* CONV_DEPTH $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_NATIVE_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 CTH 2019/1-12/1/0 C xy 1 * - 1 1 +* FLASH_DENS $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 LDENS 2019/1-12/1/0 C xy 1 * - 1 1 +* CONV_DEPTH $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 CTH 2019/1-12/1/0 C xy 1 * - 1 1 )))LightningClimatology )))LightNOx diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem index 16846f4d1..b9822e9aa 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem @@ -33,13 +33,13 @@ ${RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS} # --- Fields for lightning emissions (Extension 103) --- # These fields are stored in State_Met, along with the other met fields #============================================================================== -#FLASH_DENS 1 N Y F0;013000 none none LDENS ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/%y4/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_NATIVE_RES}_%y4_%m2.nc4 -#CONV_DEPTH 1 N Y F0;013000 none none CTH ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/%y4/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_NATIVE_RES}_%y4_%m2.nc4 +#FLASH_DENS 1 N Y F0;013000 none none LDENS ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/%y4/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_%y4_%m2.nc4 +#CONV_DEPTH 1 N Y F0;013000 none none CTH ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/%y4/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_%y4_%m2.nc4 # Climatology option (if using make sure two lines below are uncommented and # two lines above are commented) -FLASH_DENS 1 N N F1980-%m2-01T00:00:00 none none LDENS ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_NATIVE_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 -CONV_DEPTH 1 N N F1980-%m2-01T00:00:00 none none CTH ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_NATIVE_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 +FLASH_DENS 1 N N F1980-%m2-01T00:00:00 none none LDENS ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 +CONV_DEPTH 1 N N F1980-%m2-01T00:00:00 none none CTH ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 # #============================================================================== # --- Fields for RRTMG --- diff --git a/run/GCHP/init_rd.sh b/run/GCHP/init_rd.sh index 86781c05e..1f83bd4d5 100755 --- a/run/GCHP/init_rd.sh +++ b/run/GCHP/init_rd.sh @@ -86,4 +86,4 @@ done [[ -L MetDir ]] && unlink MetDir ln -s ${RUNDIR_DATA_ROOT}/CHEM_INPUTS ChemDir ln -s ${RUNDIR_DATA_ROOT}/HEMCO HcoDir -ln -s ${RUNDIR_MET_DIR_NATIVE} MetDir +ln -s ${RUNDIR_MET_DIR_RAW} MetDir diff --git a/run/shared/settings/geosfp/geosfp.derived_1hr_wind_cs.txt b/run/shared/settings/geosfp/geosfp.derived_1hr_wind_cs.txt index 7b6796f33..5ab188862 100644 --- a/run/shared/settings/geosfp/geosfp.derived_1hr_wind_cs.txt +++ b/run/shared/settings/geosfp/geosfp.derived_1hr_wind_cs.txt @@ -3,8 +3,8 @@ RUNDIR_USE_TOTAL_AIR_PRESSURE_IN_ADVECTION=0 RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS_FOR_ADVECTION=""" UA;VA m_s-1 N Y F0;003000 none none UA;VA ./MetDir/../../GEOS_C720/GEOS_FP_DerivedWind/Y%y4/M%m2/D%d2/GEOS.fp.asm.tavg_1hr_ctmwind_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:30:00P01:00 -PS1 Pa N Y 0 none 0.01 PS ./MetDir/../../GEOS_C720/GEOS_FP_Native/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2014-02-20T00:00:00P01:00 -PS2 Pa N Y 0;001000 none 0.01 PS ./MetDir/../../GEOS_C720/GEOS_FP_Native/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2014-02-20T00:00:00P01:00 -SPHU1 kg_kg-1 N Y 0 none none QV ./MetDir/../../GEOS_C720/GEOS_FP_Native/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2014-02-20T00:00:00P01:00 -SPHU2 kg_kg-1 N Y 0;001000 none none QV ./MetDir/../../GEOS_C720/GEOS_FP_Native/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2014-02-20T00:00:00P01:00 +PS1 Pa N Y 0 none 0.01 PS ./MetDir/../../GEOS_C720/GEOS_FP_Raw/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2014-02-20T00:00:00P01:00 +PS2 Pa N Y 0;001000 none 0.01 PS ./MetDir/../../GEOS_C720/GEOS_FP_Raw/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2014-02-20T00:00:00P01:00 +SPHU1 kg_kg-1 N Y 0 none none QV ./MetDir/../../GEOS_C720/GEOS_FP_Raw/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2014-02-20T00:00:00P01:00 +SPHU2 kg_kg-1 N Y 0;001000 none none QV ./MetDir/../../GEOS_C720/GEOS_FP_Raw/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2014-02-20T00:00:00P01:00 """ diff --git a/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt b/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt index cc92acad1..b0d4f86e1 100644 --- a/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt +++ b/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt @@ -17,8 +17,8 @@ RUNDIR_OFFLINE_EMIS_RES='0.25x0.3125' RUNDIR_OFFLINE_EMIS_LAT_RES='025' RUNDIR_METLIGHTNING='GEOSFP' -RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.25x0.3125/GEOS_FP" -RUNDIR_METLIGHTNING_NATIVE_RES='0.25x0.3125' +RUNDIR_METLIGHTNING_DIR="${RUNDIR_DATA_ROOT}/GEOS_0.25x0.3125/GEOS_FP" +RUNDIR_METLIGHTNING_RES='0.25x0.3125' RUNDIR_LIGHTNOX_CLIM=false RUNDIR_MET_LCLIM='2014-2019' diff --git a/run/shared/settings/geosfp/geosfp.raw_1hr_mass_flux_cs.txt b/run/shared/settings/geosfp/geosfp.raw_1hr_mass_flux_cs.txt index 23e360c4d..c29e4eddd 100644 --- a/run/shared/settings/geosfp/geosfp.raw_1hr_mass_flux_cs.txt +++ b/run/shared/settings/geosfp/geosfp.raw_1hr_mass_flux_cs.txt @@ -2,11 +2,11 @@ RUNDIR_IMPORT_MASS_FLUX_FROM_EXTDATA=.true. RUNDIR_USE_TOTAL_AIR_PRESSURE_IN_ADVECTION=0 RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS_FOR_ADVECTION=""" -MFXC;MFYC Pa_m+2_s-1 N H F0;003000 none 0.6666666 MFXC;MFYC ./MetDir/../../GEOS_C720/GEOS_FP_Native/Y%y4/M%m2/D%d2/GEOS.fp.asm.tavg_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:30:00P01:00 -CXC;CYC 1 N H F0;003000 none none CX;CY ./MetDir/../../GEOS_C720/GEOS_FP_Native/Y%y4/M%m2/D%d2/GEOS.fp.asm.tavg_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:30:00P01:00 -PS1 Pa N Y 0 none 0.01 PS ./MetDir/../../GEOS_C720/GEOS_FP_Native/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:00:00P01:00 -PS2 Pa N Y 0;001000 none 0.01 PS ./MetDir/../../GEOS_C720/GEOS_FP_Native/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:00:00P01:00 -SPHU1 kg_kg-1 N Y 0 none none QV ./MetDir/../../GEOS_C720/GEOS_FP_Native/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:00:00P01:00 -SPHU2 kg_kg-1 N Y 0;001000 none none QV ./MetDir/../../GEOS_C720/GEOS_FP_Native/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:00:00P01:00 +MFXC;MFYC Pa_m+2_s-1 N H F0;003000 none 0.6666666 MFXC;MFYC ./MetDir/../../GEOS_C720/GEOS_FP_Raw/Y%y4/M%m2/D%d2/GEOS.fp.asm.tavg_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:30:00P01:00 +CXC;CYC 1 N H F0;003000 none none CX;CY ./MetDir/../../GEOS_C720/GEOS_FP_Raw/Y%y4/M%m2/D%d2/GEOS.fp.asm.tavg_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:30:00P01:00 +PS1 Pa N Y 0 none 0.01 PS ./MetDir/../../GEOS_C720/GEOS_FP_Raw/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:00:00P01:00 +PS2 Pa N Y 0;001000 none 0.01 PS ./MetDir/../../GEOS_C720/GEOS_FP_Raw/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:00:00P01:00 +SPHU1 kg_kg-1 N Y 0 none none QV ./MetDir/../../GEOS_C720/GEOS_FP_Raw/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:00:00P01:00 +SPHU2 kg_kg-1 N Y 0;001000 none none QV ./MetDir/../../GEOS_C720/GEOS_FP_Raw/Y%y4/M%m2/D%d2/GEOS.fp.asm.inst_1hr_ctm_c0720_v72.%y4%m2%d2_%h2%n2.V01.nc4 2021-03-11T00:00:00P01:00 UA;VA m_s-1 N Y F0;013000 none none U;V ./MetDir/Y%y4/M%m2/D%d2/GEOS.fp.asm.tavg3_3d_asm_Nv.%y4%m2%d2_%h2%n2.V01.nc4 2014-02-11T01:30:00P03:00 """ diff --git a/run/shared/settings/geosfp/geosfp.raw_ll.txt b/run/shared/settings/geosfp/geosfp.raw_ll.txt index 365c4d9cc..1c6c0bca9 100644 --- a/run/shared/settings/geosfp/geosfp.raw_ll.txt +++ b/run/shared/settings/geosfp/geosfp.raw_ll.txt @@ -1,7 +1,7 @@ RUNDIR_MET='GEOSFP' RUNDIR_MET_LOWERCASE='geosfp' RUNDIR_MET_DIR="${RUNDIR_DATA_ROOT}/GEOS_${RUNDIR_GRID_DIR}/GEOS_FP" -RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.25x0.3125/GEOS_FP_Native" +RUNDIR_MET_DIR_RAW="${RUNDIR_DATA_ROOT}/GEOS_0.25x0.3125/GEOS_FP_Raw" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.true. RUNDIR_MET_RES='025x03125' @@ -15,8 +15,8 @@ RUNDIR_OFFLINE_EMIS_RES='0.25x0.3125' RUNDIR_OFFLINE_EMIS_LAT_RES='025' RUNDIR_METLIGHTNING='GEOSFP' -RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.25x0.3125/GEOS_FP_Native" -RUNDIR_METLIGHTNING_NATIVE_RES='0.25x0.3125' +RUNDIR_METLIGHTNING_DIR="${RUNDIR_DATA_ROOT}/GEOS_0.25x0.3125/GEOS_FP_Raw" +RUNDIR_METLIGHTNING_RES='0.25x0.3125' RUNDIR_LIGHTNOX_CLIM=false RUNDIR_MET_LCLIM='2014-2019' diff --git a/run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt b/run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt index 9902acf60..9d509181f 100644 --- a/run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt +++ b/run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt @@ -1,7 +1,7 @@ RUNDIR_MET='GEOSIT' RUNDIR_MET_LOWERCASE='geosit' RUNDIR_MET_DIR="${RUNDIR_DATA_ROOT}/GEOS_${RUNDIR_GRID_DIR}/GEOS_IT" -RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_C180/GEOS_IT_Native" +RUNDIR_MET_DIR_RAW="${RUNDIR_DATA_ROOT}/GEOS_C180/GEOS_IT_Raw" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.true. RUNDIR_MET_RES='C180' @@ -16,8 +16,8 @@ RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' RUNDIR_OFFLINE_EMIS_LAT_RES='05' RUNDIR_METLIGHTNING='MERRA2' -RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" -RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' +RUNDIR_METLIGHTNING_DIR="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" +RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=true RUNDIR_MET_LCLIM='1980-2019' diff --git a/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt b/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt index 6aa2d5f09..f350c1d01 100644 --- a/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt +++ b/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt @@ -15,8 +15,8 @@ RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' RUNDIR_OFFLINE_EMIS_LAT_RES='05' RUNDIR_METLIGHTNING='MERRA2' -RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" -RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' +RUNDIR_METLIGHTNING_DIR="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" +RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=true RUNDIR_MET_LCLIM='1980-2019' diff --git a/run/shared/settings/geosit/geosit.preprocessed_ll.txt b/run/shared/settings/geosit/geosit.preprocessed_ll.txt index c964aebcc..3d4851b15 100644 --- a/run/shared/settings/geosit/geosit.preprocessed_ll.txt +++ b/run/shared/settings/geosit/geosit.preprocessed_ll.txt @@ -15,8 +15,8 @@ RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' RUNDIR_OFFLINE_EMIS_LAT_RES='05' RUNDIR_METLIGHTNING='MERRA2' -RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/MERRA2" -RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' +RUNDIR_METLIGHTNING_DIR="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/MERRA2" +RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=true RUNDIR_MET_LCLIM='1980-2019' diff --git a/run/shared/settings/geosit/geosit.raw_cs.txt b/run/shared/settings/geosit/geosit.raw_cs.txt index 3fc86d5c4..1c0b86bc1 100644 --- a/run/shared/settings/geosit/geosit.raw_cs.txt +++ b/run/shared/settings/geosit/geosit.raw_cs.txt @@ -1,7 +1,7 @@ RUNDIR_MET='GEOSIT' RUNDIR_MET_LOWERCASE='geosit' RUNDIR_MET_DIR="${RUNDIR_DATA_ROOT}/GEOS_${RUNDIR_GRID_DIR}/GEOS_IT" -RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_C180/GEOS_IT_Native" +RUNDIR_MET_DIR_RAW="${RUNDIR_DATA_ROOT}/GEOS_C180/GEOS_IT_Raw" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.true. RUNDIR_MET_RES='C180' @@ -16,8 +16,8 @@ RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' RUNDIR_OFFLINE_EMIS_LAT_RES='05' RUNDIR_METLIGHTNING='MERRA2' -RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" -RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' +RUNDIR_METLIGHTNING_DIR="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" +RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=true RUNDIR_MET_LCLIM='1980-2019' diff --git a/run/shared/settings/geosit/geosit.raw_ll.txt b/run/shared/settings/geosit/geosit.raw_ll.txt index 954cff122..1458f80e2 100644 --- a/run/shared/settings/geosit/geosit.raw_ll.txt +++ b/run/shared/settings/geosit/geosit.raw_ll.txt @@ -1,7 +1,7 @@ RUNDIR_MET='GEOSIT' RUNDIR_MET_LOWERCASE='geosit' RUNDIR_MET_DIR="${RUNDIR_DATA_ROOT}/GEOS_${RUNDIR_GRID_DIR}/GEOS_IT" -RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/GEOS_IT_Native" +RUNDIR_MET_DIR_RAW="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/GEOS_IT_Raw" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.true. RUNDIR_MET_RES='05x0625' @@ -16,8 +16,8 @@ RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' RUNDIR_OFFLINE_EMIS_LAT_RES='05' RUNDIR_METLIGHTNING='MERRA2' -RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" -RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' +RUNDIR_METLIGHTNING_DIR="${RUNDIR_DATA_ROOT}/0.5x0.625/MERRA2" +RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=true RUNDIR_MET_LCLIM='1980-2019' diff --git a/run/shared/settings/merra2.txt b/run/shared/settings/merra2.txt index 5cdb54ff8..206958a1d 100644 --- a/run/shared/settings/merra2.txt +++ b/run/shared/settings/merra2.txt @@ -17,8 +17,8 @@ RUNDIR_MET_PRES_UNIT='Pa ' RUNDIR_MET_PRES_SCALE='0.01' RUNDIR_METLIGHTNING='MERRA2' -RUNDIR_METLIGHTNING_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/MERRA2" -RUNDIR_METLIGHTNING_NATIVE_RES='0.5x0.625' +RUNDIR_METLIGHTNING_DIR="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/MERRA2" +RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=false RUNDIR_MET_LCLIM='1980-2019' From 8cd6859b4f1890d3d7fcbfa81685a1941482fe67 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 7 Mar 2024 16:57:17 -0500 Subject: [PATCH 130/331] Only create int test rundirs if not running in GitHub actions test/integration/GCClassic/integrationTestCreate.sh test/integration/GCHP/integrationTestCreate.sh - Wrap integration test rundir creation in an if block that tests if the GITHUB_RUN_DIR env var is blank. In that case we are not in GitHub Actions and then we can do comple + run tests. When running in GitHub actions we only do the compile-only tests. - Replaced TAB characters with 4 spaces CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + .../GCClassic/integrationTestCreate.sh | 161 +++++++++--------- .../integration/GCHP/integrationTestCreate.sh | 63 ++++--- 3 files changed, 120 insertions(+), 105 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8957f94be..de17b028f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Add `#SBATCH -c 1` to GCHP integration test scripts and sample run scripts for Harvard Cannon - In GCC/GCHP integration tests, passing `-s none` will run compile-only tests. Query user to proceed or to exit. - GCC/GCHP integration tests will exit immediately if `scheduler` is omitted. +- Don't create integration test run directories if running compile-only tests in GitHub Actions ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index 39f168d4f..a6dd0470e 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -62,11 +62,11 @@ hemcoDir="${superProjectDir}/src/HEMCO" # Get the Git commit of the superproject and submodules head_gcc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ - git -C "${superProjectDir}" log --oneline --no-decorate -1) + git -C "${superProjectDir}" log --oneline --no-decorate -1) head_gc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ - git -C "${geosChemDir}" log --oneline --no-decorate -1) + git -C "${geosChemDir}" log --oneline --no-decorate -1) head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ - git -C "${hemcoDir}" log --oneline --no-decorate -1) + git -C "${hemcoDir}" log --oneline --no-decorate -1) # Source the script containing utility functions and variables commonFuncs="${geosChemDir}/test/shared/commonFunctionsForTests.sh" @@ -151,116 +151,123 @@ chmod 755 -R ${scriptsDir} # Log file with echoback from rundir creation log="${logsDir}/createIntegrationTests.log" -# Switch to folder where rundir creation scripts live -cd "${geosChemDir}/run/GCClassic" - #============================================================================= -# Create individual run directories: 4x5 - MERRA2 - 72L +# Only create run directories if we are not in a GitHub action, +# because we'll do compiilation-only tests instead. #============================================================================= -printf "\nCreating new run directories:\n" +if [[ "x${GITHUB_RUN_ID}" != "x" ]]; then -# 4x5 merra2 CH4 -create_rundir "3\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # Switch to folder where rundir creation scripts live + cd "${geosChemDir}/run/GCClassic" -# 4x5 merra2 CO2 -create_rundir "4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + #========================================================================= + # Create individual run directories: 4x5 - MERRA2 - 72L + #========================================================================= + printf "\nCreating new run directories:\n" -# 4x5 merra2 aerosol -create_rundir "2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 CH4 + create_rundir "3\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 carbon -create_rundir "12\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 CO2 + create_rundir "4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 carbon CH4 only -dir="gc_4x5_merra2_carbon_CH4only" -create_rundir "12\n2\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" + # 4x5 merra2 aerosol + create_rundir "2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem -create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 carbon + create_rundir "12\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# DEBUG: Exit after creating a couple of rundirsDirs if $quick is "yes" -if [[ "x${quick}" == "xyes" ]]; then - cd ${thisDir} - exit 0 -fi + # 4x5 merra2 carbon CH4 only + dir="gc_4x5_merra2_carbon_CH4only" + create_rundir "12\n2\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" -# 4x5 merra2 fullchem_LuoWd -dir="gc_4x5_merra2_fullchem_LuoWd" -create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" + # 4x5 merra2 fullchem + create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_aciduptake -create_rundir "1\n5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # DEBUG: Exit after creating a couple of rundirsDirs if $quick is "yes" + if [[ "x${quick}" == "xyes" ]]; then + cd ${thisDir} + exit 0 + fi -# 4x5 merra2 fullchem_APM -create_rundir "1\n7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_LuoWd + dir="gc_4x5_merra2_fullchem_LuoWd" + create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" -# 4x5 merra2 fullchem_benchmark -create_rundir "1\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_aciduptake + create_rundir "1\n5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_complexSOA -create_rundir "1\n3\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_APM + create_rundir "1\n7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_complexSOA_SVPOA -create_rundir "1\n3\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_benchmark + create_rundir "1\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_marinePOA -create_rundir "1\n4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_complexSOA + create_rundir "1\n3\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_RRTMG -create_rundir "1\n8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_complexSOA_SVPOA + create_rundir "1\n3\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_TOMAS15_47L -create_rundir "1\n6\n1\n1\n1\n2\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_marinePOA + create_rundir "1\n4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 Hg -create_rundir "5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_RRTMG + create_rundir "1\n8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 POPs_BaP -create_rundir "6\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_TOMAS15_47L + create_rundir "1\n6\n1\n1\n1\n2\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 tagCH4 -create_rundir "7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 Hg + create_rundir "5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 tagCO -create_rundir "8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 POPs_BaP + create_rundir "6\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 tagO3 -create_rundir "9\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 tagCH4 + create_rundir "7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 TransportTracers -create_rundir "10\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 tagCO + create_rundir "8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 TransportTracers_LuoWd -dir="gc_4x5_merra2_TransportTracers_LuoWd" -create_rundir "10\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" + # 4x5 merra2 tagO3 + create_rundir "9\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 metals -create_rundir "11\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 TransportTracers + create_rundir "10\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -#============================================================================= -# Create individual run directories: 4x5 and 47L (MERRA2) -#============================================================================= + # 4x5 merra2 TransportTracers_LuoWd + dir="gc_4x5_merra2_TransportTracers_LuoWd" + create_rundir "10\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" -# 4x5 merra2 fullchem_47L -create_rundir "1\n1\n1\n1\n2\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 metals + create_rundir "11\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -#============================================================================= -# Nested-grid simulations -#============================================================================= + #========================================================================= + # Create individual run directories: 4x5 and 47L (MERRA2) + #========================================================================= -# 05x0625 merra2 CH4_47L_na -create_rundir "3\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_47L + create_rundir "1\n1\n1\n1\n2\n${rundirsDir}\n\nn\n" "${log}" -# 05x0625 merra2 fullchem_47L_na -create_rundir "1\n1\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" + #========================================================================= + # Nested-grid simulations + #========================================================================= + + # 05x0625 merra2 CH4_47L_na + create_rundir "3\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" + + # 05x0625 merra2 fullchem_47L_na + create_rundir "1\n1\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" + + # Switch back to the present directory + cd "${thisDir}" +fi #============================================================================= # Cleanup and quit #============================================================================= -# Switch back to the present directory -cd "${thisDir}" - # Free local variables unset binDir unset buildDir diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index 39fab9412..44ecc7b89 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -151,49 +151,56 @@ chmod 755 -R ${scriptsDir} # Log file with echoback from rundir creation log="${logsDir}/createIntegrationTests.log" -# Switch to folder where rundir creation scripts live -cd "${geosChemDir}/run/GCHP" - #============================================================================= -# Create the GCHP run directories +# Only create run directories if we are not in a GitHub action, +# because we'll do compiilation-only tests instead. #============================================================================= -printf "\nCreating new run directories:\n" +if [[ "x${GITHUB_RUN_ID}" != "x" ]]; then -# c24 geosfp TransportTracers -create_rundir "2\n1\n${rundirsDir}\n\nn\n" "${log}" + # Switch to folder where rundir creation scripts live + cd "${geosChemDir}/run/GCHP" -# c24 merra2 fullchem tagO3 -create_rundir "4\n1\n${rundirsDir}\n\nn\n" "${log}" + #========================================================================= + # Create the GCHP run directories + #========================================================================= + printf "\nCreating new run directories:\n" -# Placeholder for carbon simulation -# c24 merra2 carbon -#create_rundir "12\n1\n${rundirsDir}\n\nn\n" "${log}" + # c24 geosfp TransportTracers + create_rundir "2\n1\n${rundirsDir}\n\nn\n" "${log}" -# DEBUG: Exit after creating a couple of rundirs if $quick is "yes" -if [[ "x${quick}" == "xyes" ]]; then - cd ${thisDir} - exit 0 -fi + # c24 merra2 fullchem tagO3 + create_rundir "4\n1\n${rundirsDir}\n\nn\n" "${log}" + + # Placeholder for carbon simulation + # c24 merra2 carbon + #create_rundir "12\n1\n${rundirsDir}\n\nn\n" "${log}" -# c24 merra2 fullchem_standard -create_rundir "1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # DEBUG: Exit after creating a couple of rundirs if $quick is "yes" + if [[ "x${quick}" == "xyes" ]]; then + cd ${thisDir} + exit 0 + fi -# c24 merra2 fullchem_benchmark -create_rundir "1\n2\n1\n${rundirsDir}\n\nn\n" "${log}" + # c24 merra2 fullchem_standard + create_rundir "1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# c24 merra2 fullchem_RRTMG -create_rundir "1\n8\n1\n${rundirsDir}\n\nn\n" "${log}" + # c24 merra2 fullchem_benchmark + create_rundir "1\n2\n1\n${rundirsDir}\n\nn\n" "${log}" -# c24 merra2 fullchem_TOMAS15 -create_rundir "1\n6\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # c24 merra2 fullchem_RRTMG + create_rundir "1\n8\n1\n${rundirsDir}\n\nn\n" "${log}" + # c24 merra2 fullchem_TOMAS15 + create_rundir "1\n6\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + + # Switch back to the present directory + cd "${thisDir}" +fi + #============================================================================= # Cleanup and quit #============================================================================= -# Switch back to the present directory -cd "${thisDir}" - # Free local variables unset binDir unset buildDir From a5eaa3f3a9ac2bf86413d582054e864b5fcc0146 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 7 Mar 2024 17:36:13 -0500 Subject: [PATCH 131/331] Now create rundirs in int tests if local var $compileOnly is "no" test/integration/GCClassic/integrationTestCreate.sh test/integration/GCHP/integrationTestCreate.sh - Now use argument $compileOnly instead of GITHUB_RUN_ID to determine if we should create run directories for execution tests or not test/integration/GCClassic/integrationTest.sh test/integration/GCHP/integrationTest.sh - Set local variable $compileOnly to "yes" if scheduler is "none", otherwise set $compileOnly to "no". Pass to integratonTestCreate.sh as the 3rd argument. test/integration/GCClassic/README.md test/integration/GCHP/README.md - Updated accordingly Signed-off-by: Bob Yantosca --- test/integration/GCClassic/README.md | 4 +--- test/integration/GCClassic/integrationTest.sh | 10 +++++++--- .../GCClassic/integrationTestCreate.sh | 10 ++++++---- test/integration/GCHP/README.md | 4 +--- test/integration/GCHP/integrationTest.sh | 12 ++++++++--- .../integration/GCHP/integrationTestCreate.sh | 20 ++++++++++--------- 6 files changed, 35 insertions(+), 25 deletions(-) diff --git a/test/integration/GCClassic/README.md b/test/integration/GCClassic/README.md index 2be239b02..31ef1f7cb 100644 --- a/test/integration/GCClassic/README.md +++ b/test/integration/GCClassic/README.md @@ -71,11 +71,9 @@ The integration test scripts accept the following command-line arguments `-e /path/to/env-file` specifies the file that is used to initialize the software environment. This file will typically contain either `module load` or `spack load` commands. -`-s scheduler` specifies the choice of scheduler (case-insensitive). SLURM and LSF schedulers are currently supported. You may omit this for running interactively. - `-p partition` specifies the partition for the scheduler. You may omit this for running interactively. -`-s` specifies that the SLURM scheduler will be used to run the integration test scripts. +`-s scheduler` specifies that scheduler (`SLURM|LSF|none`) that will be used to run the integration test scripts. Choosing `-s none` will run compilation-only tests. `-n` specifies that missing species in restart files will not be bootstrapped to a missing value. This can be used to test if "out-of-the-box" simulations will fail before a version release. diff --git a/test/integration/GCClassic/integrationTest.sh b/test/integration/GCClassic/integrationTest.sh index bae5e937c..099f953ce 100755 --- a/test/integration/GCClassic/integrationTest.sh +++ b/test/integration/GCClassic/integrationTest.sh @@ -47,6 +47,7 @@ envFile="none" sedPartitionCmd="none" quick="no" bootStrap="yes" +compileOnly="no" #============================================================================= # Parse command-line arguments @@ -163,6 +164,7 @@ if [[ "x${scheduler}" == "xNONE" ]]; then echo "Exiting ... " exit 0 fi + compileOnly="yes" fi #============================================================================= @@ -193,7 +195,7 @@ if [[ "$(absolute_path ${thisDir})" =~ "${itRoot}" ]]; then fi # Create GEOS-Chem run directories in the integration test root folder -./integrationTestCreate.sh "${itRoot}" "${envFile}" "${quick}" +./integrationTestCreate.sh "${itRoot}" "${envFile}" "${compileOnly}" "${quick}" if [[ $? -ne 0 ]]; then echo "ERROR: Could not create integration test run directories!" exit 1 @@ -214,8 +216,10 @@ rundirsDir="${itRoot}/${RUNDIRS_DIR}" # Edit HEMCO_Config.rc files to enable or disable bootstrapping # (i.e. to allow missing species in restart files or not) -gcc_enable_or_disable_bootstrap "${bootStrap}" "${rundirsDir}" - +if [[ "x${compileOnly}" == "xno" ]]; then + gcc_enable_or_disable_bootstrap "${bootStrap}" "${rundirsDir}" +fi + # Navigate to the logs directory (so all output will be placed there) cd "${logsDir}" diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index a6dd0470e..01617fb83 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -40,8 +40,11 @@ if [[ ! -f ${envFile} ]]; then exit 1 fi +# Run a compile-only integration test? +compileOnly="${3}" + # Run a short integration test? -quick="${3}" +quick="${4}" #============================================================================= # Global variable and function definitions @@ -152,10 +155,9 @@ chmod 755 -R ${scriptsDir} log="${logsDir}/createIntegrationTests.log" #============================================================================= -# Only create run directories if we are not in a GitHub action, -# because we'll do compiilation-only tests instead. +# Don't create run directories for compile-only tests. #============================================================================= -if [[ "x${GITHUB_RUN_ID}" != "x" ]]; then +if [[ "x${compileOnly}" == "xno" ]]; then # Switch to folder where rundir creation scripts live cd "${geosChemDir}/run/GCClassic" diff --git a/test/integration/GCHP/README.md b/test/integration/GCHP/README.md index c3964bc66..78935362c 100644 --- a/test/integration/GCHP/README.md +++ b/test/integration/GCHP/README.md @@ -71,11 +71,9 @@ The integration test scripts accept the following command-line arguments `-e /path/to/env-file` specifies the file that is used to initialize the software environment. This file will typically contain either `module load` or `spack load` commands. -`-s scheduler` specifies the choice of scheduler (case-insensitive). SLURM and LSF schedulers are currently supported. You may omit this for running interactively. - `-p partition` specifies the partition for the scheduler. You may omit this for running interactively. -`-s` specifies that the SLURM scheduler will be used to run the integration test scripts. +`-s scheduler` specifies that scheduler (`SLURM|LSF|none`) that will be used to run the integration test scripts. Choosing `-s none` will run compilation-only tests. `-n` specifies that missing species in restart files will not be bootstrapped to a missing value. This can be used to test if "out-of-the-box" simulations will fail before a version release. diff --git a/test/integration/GCHP/integrationTest.sh b/test/integration/GCHP/integrationTest.sh index 1d2b8b5c3..ee41fdaa9 100755 --- a/test/integration/GCHP/integrationTest.sh +++ b/test/integration/GCHP/integrationTest.sh @@ -47,6 +47,7 @@ envFile="none" sedPartitionCmd="none" quick="no" bootStrap="yes" +compileOnly="no" #============================================================================= # Parse command-line arguments @@ -163,6 +164,7 @@ if [[ "x${scheduler}" == "xNONE" ]]; then echo "Exiting ... " exit 0 fi + compileOnly="yes" fi #============================================================================= @@ -192,7 +194,7 @@ if [[ "$(absolute_path ${thisDir})" =~ "${itRoot}" ]]; then exit 1 fi # Create GEOS-Chem run directories in the integration test root folder -./integrationTestCreate.sh "${itRoot}" "${envFile}" "${quick}" +./integrationTestCreate.sh "${itRoot}" "${envFile}" "${compileOnly}" "${quick}" if [[ $? -ne 0 ]]; then echo "ERROR: Could not create integration test run directories!" exit 1 @@ -211,9 +213,11 @@ logsDir="${itRoot}/${LOGS_DIR}" scriptsDir="${itRoot}/${SCRIPTS_DIR}" rundirsDir="${itRoot}/${RUNDIRS_DIR}" -# Edit setCommonRunSettingss.sh scripts to enable or disable bootstrapping +# Edit setCommonRunSettings.sh scripts to enable or disable bootstrapping # (i.e. to allow missing species in restart files or not) -gchp_enable_or_disable_bootstrap "${bootStrap}" "${rundirsDir}" +if [[ "x${compileOnly}" == "xno" ]]; then + gchp_enable_or_disable_bootstrap "${bootStrap}" "${rundirsDir}" +fi # Navigate to the logs directory (so all output will be placed there) cd "${logsDir}" @@ -223,6 +227,8 @@ cd "${logsDir}" #============================================================================= if [[ "x${scheduler}" == "xSLURM" ]]; then + + #------------------------------------------------------------------------- # Integration tests will run via SLURM #------------------------------------------------------------------------- diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index 44ecc7b89..585e2b8be 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -40,8 +40,11 @@ if [[ ! -f "${envFile}" ]]; then exit 1 fi +# Run a compile-only integration test? +compileOnly="${3}" + # Run a short integration test? -quick="${3}" +quick="${4}" #============================================================================= # Global variable and function definitions @@ -62,11 +65,11 @@ hemcoDir="${superProjectDir}/src/GCHP_GridComp/HEMCO_GridComp/HEMCO" # Get the Git commit of the superproject and submodules head_gchp=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ - git -C "${superProjectDir}" log --oneline --no-decorate -1) + git -C "${superProjectDir}" log --oneline --no-decorate -1) head_gc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ - git -C "${geosChemDir}" log --oneline --no-decorate -1) + git -C "${geosChemDir}" log --oneline --no-decorate -1) head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ - git -C "${hemcoDir}" log --oneline --no-decorate -1) + git -C "${hemcoDir}" log --oneline --no-decorate -1) # Source the script containing utility functions and variables commonFuncs="${geosChemDir}/test/shared/commonFunctionsForTests.sh" @@ -152,10 +155,9 @@ chmod 755 -R ${scriptsDir} log="${logsDir}/createIntegrationTests.log" #============================================================================= -# Only create run directories if we are not in a GitHub action, -# because we'll do compiilation-only tests instead. +# Don't create run directories for compile-only tests. #============================================================================= -if [[ "x${GITHUB_RUN_ID}" != "x" ]]; then +if [[ "x${compileOnly}" == "xno" ]]; then # Switch to folder where rundir creation scripts live cd "${geosChemDir}/run/GCHP" @@ -177,8 +179,8 @@ if [[ "x${GITHUB_RUN_ID}" != "x" ]]; then # DEBUG: Exit after creating a couple of rundirs if $quick is "yes" if [[ "x${quick}" == "xyes" ]]; then - cd ${thisDir} - exit 0 + cd ${thisDir} + exit 0 fi # c24 merra2 fullchem_standard From 810a189e1addb71fd6354925a3130fe4ff9bad65 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 8 Mar 2024 10:38:01 -0500 Subject: [PATCH 132/331] Rename RUNDIR_MET_DIR_NATIVE to RUNDIR_MET_DIR_RAW in merra2.txt run/shared/settings/merra2/merra2.txt - Bug fix: "RUNDIR_MET_DIR_NATIVE" -> "RUNDIR_MET_DIR_RAW" Signed-off-by: Bob Yantosca --- run/shared/settings/merra2.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run/shared/settings/merra2.txt b/run/shared/settings/merra2.txt index 206958a1d..5625aa0df 100644 --- a/run/shared/settings/merra2.txt +++ b/run/shared/settings/merra2.txt @@ -1,13 +1,13 @@ RUNDIR_MET='MERRA2' RUNDIR_MET_LOWERCASE='merra2' RUNDIR_MET_DIR="${RUNDIR_DATA_ROOT}/GEOS_${RUNDIR_GRID_DIR}/MERRA2" -RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/MERRA2" +RUNDIR_MET_DIR_RAW="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/MERRA2" RUNDIR_USE_TOTAL_AIR_PRESSURE_IN_ADVECTION=0 RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.false. RUNDIR_IMPORT_MASS_FLUX_FROM_EXTDATA=.false. RUNDIR_MET_RES='05x0625' -RUNDIR_MET_NATIVE_RES='0.5x0.625' +RUNDIR_MET_RAW_RES='0.5x0.625' RUNDIR_MET_LAT_RES='05' RUNDIR_MET_LON_RES='0625' RUNDIR_MET_EXT='nc4' From 9880090b5c9b572f33bd734088c2a796cce473f4 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 8 Mar 2024 10:46:41 -0500 Subject: [PATCH 133/331] Renamed further instances of "native" -> "raw" run/shared/settings/geosfp/geosfp.preprocessed_ll.txt run/shared/settings/geosit/geosit.preprocessed_ll.txt - Rename RUNDIR_MET_DIR_NATIVE -> RUNDIR_MET_DIR_RAW run/shared/settings/geosit/geosit.raw_ll.discover.txt - Added RUNDIR_MET_DIR_RAW run/shared/settings/geosit/discover/geosit.raw_mass_flux.discover.txt - Changed "native" -> "raw" in comment Signed-off-by: Bob Yantosca --- run/shared/settings/geosfp/geosfp.preprocessed_ll.txt | 2 +- run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt | 1 + .../settings/geosit/discover/geosit.raw_mass_flux.discover.txt | 2 +- run/shared/settings/geosit/geosit.preprocessed_ll.txt | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt b/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt index b0d4f86e1..7046beddd 100644 --- a/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt +++ b/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt @@ -1,7 +1,7 @@ RUNDIR_MET='GEOSFP' RUNDIR_MET_LOWERCASE='geosfp' RUNDIR_MET_DIR="${RUNDIR_DATA_ROOT}/GEOS_${RUNDIR_GRID_DIR}/GEOS_FP" -RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.25x0.3125/GEOS_FP" +RUNDIR_MET_DIR_RAW="${RUNDIR_DATA_ROOT}/GEOS_0.25x0.3125/GEOS_FP" RUNDIR_USE_TOTAL_AIR_PRESSURE_IN_ADVECTION=0 RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.false. diff --git a/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt b/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt index f350c1d01..c124080b4 100644 --- a/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt +++ b/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt @@ -1,6 +1,7 @@ RUNDIR_MET='GEOSIT' RUNDIR_MET_LOWERCASE='geosit' RUNDIR_MET_DIR="${RUNDIR_DATA_ROOT}/GEOS_${RUNDIR_GRID_DIR}/GEOS_IT" +RUNDIR_MET_DIR_RAW="${RUNDIR_DATA_ROOT}/GEOS_${RUNDIR_GRID_DIR}/GEOS_IT" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.true. RUNDIR_MET_RES='05x0625' diff --git a/run/shared/settings/geosit/discover/geosit.raw_mass_flux.discover.txt b/run/shared/settings/geosit/discover/geosit.raw_mass_flux.discover.txt index 8c6fe7135..609e67684 100644 --- a/run/shared/settings/geosit/discover/geosit.raw_mass_flux.discover.txt +++ b/run/shared/settings/geosit/discover/geosit.raw_mass_flux.discover.txt @@ -7,7 +7,7 @@ RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS_FOR_ADVECTION=""" # --- Meteorology used in advection --- #-------------------------------------- -# Native cubed-sphere 1-hourly mass fluxes +# Raw cubed-sphere 1-hourly mass fluxes UA;VA m_s-1 N Y F0;013000 none none U;V ./MetDir/Y%y4/M%m2/d5294_geosit_jan18.asm_tavg_3hr_glo_L576x361_v72.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T01:30:00P03:00 MFXC;MFYC Pa_m+2_s-1 N H F0;003000 none 0.6666666 MFXC;MFYC ./MetDir/Y%y4/M%m2/d5294_geosit_jan18.ctm_tavg_1hr_glo_C180x180x6_v72.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 CXC;CYC 1 N H F0;003000 none none CX;CY ./MetDir/Y%y4/M%m2/d5294_geosit_jan18.ctm_tavg_1hr_glo_C180x180x6_v72.%y4-%m2-%d2T%h2%n2Z.nc4 1995-01-01T00:30:00P01:00 diff --git a/run/shared/settings/geosit/geosit.preprocessed_ll.txt b/run/shared/settings/geosit/geosit.preprocessed_ll.txt index 3d4851b15..c284df954 100644 --- a/run/shared/settings/geosit/geosit.preprocessed_ll.txt +++ b/run/shared/settings/geosit/geosit.preprocessed_ll.txt @@ -1,7 +1,7 @@ RUNDIR_MET='GEOSIT' RUNDIR_MET_LOWERCASE='geosit' RUNDIR_MET_DIR="${RUNDIR_DATA_ROOT}/GEOS_${RUNDIR_GRID_DIR}/GEOS_IT" -RUNDIR_MET_DIR_NATIVE="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/GEOS_IT" +RUNDIR_MET_DIR_RAW="${RUNDIR_DATA_ROOT}/GEOS_0.5x0.625/GEOS_IT" RUNDIR_METEOROLOGY_VERTICAL_INDEX_IS_TOP_DOWN=.false. RUNDIR_MET_RES='05x0625' From a6724cd09576b61607afea32cf70d08533e3aaa0 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 8 Mar 2024 11:20:30 -0500 Subject: [PATCH 134/331] Update CHANGELOG.md entry for accuracy CHANGELOG.md - Remove "in GitHub Actions". Integration test run directories will not be created when "-s none" is passed, even if running on a cluster or local machine now. Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de17b028f..9e0c4047b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Add `#SBATCH -c 1` to GCHP integration test scripts and sample run scripts for Harvard Cannon - In GCC/GCHP integration tests, passing `-s none` will run compile-only tests. Query user to proceed or to exit. - GCC/GCHP integration tests will exit immediately if `scheduler` is omitted. -- Don't create integration test run directories if running compile-only tests in GitHub Actions +- Don't create integration test run directories if running compile-only tests ### Fixed - Fixed unit conversions in GEOS-only code From a8e542760819efc5b85788dc5a5004a690eabf61 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 11 Mar 2024 15:07:35 -0400 Subject: [PATCH 135/331] Refactor GCC int test scripts to reduce # of input arguments test/shared/commonFunctionsForTests.sh - Now use "X" instead of "x" in bash equality tests. This is needed to prevent empty strings in bash string equality and inclusion tests. - The bootStrap variable is now YES/NO instead of yes/no - Added function get_site_name to return the site name from the node name - Added function get_sed_partition_cmd_from_site to return the "sed" command to replace the REQUESTED_PARTITION with the partition name - Added function get_default_gcc_env_file - Added function get_default_gchp_env_file test/integration/GCClassic/integrationTestCompile.sh test/integration/GCClassic/integrationTestExecute.sh - Now use "X" instead of "x" in bash equality tests - Now call the bash function get_site_name to get the site (cannon or compute1) - Only source the environment file for the Harvard Cannon cluster. WashU Compute1 uses containers so no module loads are needed. - Remove local variable "scheduler", use $SLURM_JOBID or $LSB_JOBID directly in if tests. - Trimmed trailing whitespace test/integration/GCClassic/integrationTestCreate.sh - Now use "X" instead of "x" in bash equality tests - If the envFile argument is blank, call get_default_gcc_env_file to get the default environment file - Renamed "$compileOnly" to "$testsToRun" - The $quick variable has YES/NO values instead of lowercase yes/no test/integration/GCClassic/README.md CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 3 +- test/integration/GCClassic/README.md | 71 +++---- test/integration/GCClassic/integrationTest.sh | 186 +++++++++--------- .../GCClassic/integrationTestCompile.sh | 46 ++--- .../GCClassic/integrationTestCreate.sh | 13 +- .../GCClassic/integrationTestExecute.sh | 57 +++--- test/shared/commonFunctionsForTests.sh | 78 ++++++-- 7 files changed, 239 insertions(+), 215 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e0c4047b..d0366a772 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Add `#SBATCH -c 1` to GCHP integration test scripts and sample run scripts for Harvard Cannon - In GCC/GCHP integration tests, passing `-s none` will run compile-only tests. Query user to proceed or to exit. - GCC/GCHP integration tests will exit immediately if `scheduler` is omitted. -- Don't create integration test run directories if running compile-only tests +- Don't create integration test run directories for compile-only tests +- Refactor integration test scripts to reduce the number of input arguments ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/test/integration/GCClassic/README.md b/test/integration/GCClassic/README.md index 31ef1f7cb..532af655f 100644 --- a/test/integration/GCClassic/README.md +++ b/test/integration/GCClassic/README.md @@ -30,62 +30,63 @@ Integration tests are short GEOS-Chem Classic simulations. Executables are comp - `commonFunctionsForTests.sh` - Link to `../../shared/commonFunctionsForTests.sh`, which contains global variables and functions for the integration and parallelization tests. -## Running GEOS-Chem Classic Integration and/or Parallelization Tests +## Before you begin -Before you submit any GEOS-Chem Classic integration tests, please take a moment to: +Please take a moment to: 1. Verify that the `GCClassic` superproject is checked out to the correct branch and commit. 2. Run `git submodule update --init --recursive` in order to update all submodules. 3. Verify that the `HEAD` commit of the `GEOS-Chem` submodule contains the code that you wish to test. (If not, then check out the proper branch.) 4. Verify that the `HEAD` commit of the `HEMCO` submodule contains the code that you wish to test. (If not, then check out the proper branch.) -### With the SLURM scheduler - -```console -$ cd /path/to/GCClassic # Path to GCClassic superproject directory -$ cd test/integration/GCClassic -$ ./integrationTest.sh -d /path/to/test/dir -e /path/to/env-file -s slurm -p partition -``` - -### With the LSF scheduler - -```console -$ cd /path/to/GCClassic # Path to GCClassic superproject directory -$ cd test/integration/GCClassic -$ ./integrationTest.sh -d /path/to/test/dir -e /path/to/env-file -s lsf -p partition -``` - -### Interactively at the command line - -```console -$ cd /path/to/GCClassic # Path to GCClassic superproject directory -$ cd test/integration/GCClassic -$ ./integrationTest.sh -d /path/to/test/dir -e /path/to/env-file -``` - ## Command-line Arguments -The integration test scripts accept the following command-line arguments +The integration test scripts accept the following command-line arguments: -`-d /path/to/test/dir` specifies the root directory where integration test subdirectories and scripts will be placed. +### Required arguments -`-e /path/to/env-file` specifies the file that is used to initialize the software environment. This file will typically contain either `module load` or `spack load` commands. +`-d /path/to/test/dir` specifies the root directory where integration test subdirectories and scripts will be placed. -`-p partition` specifies the partition for the scheduler. You may omit this for running interactively. +`-t compile|all` specifies the type of test to be run: + - `compile` will run compilation-only tests. + - `all` will run compilation and execution tests. -`-s scheduler` specifies that scheduler (`SLURM|LSF|none`) that will be used to run the integration test scripts. Choosing `-s none` will run compilation-only tests. +### Optional arguments -`-n` specifies that missing species in restart files will not be bootstrapped to a missing value. This can be used to test if "out-of-the-box" simulations will fail before a version release. +`-e /path/to/env-file` Specifies the file that is used to initialize the software environment on the Harvard Cannon cluster. If omitted, a default file will be selected. `-h` displays a help screeen. +`-q` will run only a couple of integration tests instead of the full suite. This is intended for development and debugging. You will normally not need to use this option. You can also use long names for the option switches: - `--directory` instead of `-d` - `--env-file` instead of `-e` - `--help` instead of `h` - `--no-bootstrap` instead of `n` -- `--partition partition` instead of `-p` -- `--scheduler scheduler` instead of `-s` +- `--tests-to-run partition` instead of `-t` + +## Examples -There is an additional option (`-q` or `--quick`) that will run only a couple of integration tests instead of the full suite. This is intended for development and debugging. You will normally not need to use this option. +### Request compile-only tests on Cannon or Compute1 +```console +$ cd /path/to/GCClassic # Path to GCClassic superproject directory +$ cd test/integration/GCClassic +$ ./integrationTest.sh -d /path/to/test/dir -t compile +``` + +### Request compile and execution tests (Harvard Cannon) +```console +$ cd /path/to/GCClassic # Path to GCClassic superproject directory +$ cd test/integration/GCClassic +$ ./integrationTest.sh -d /path/to/test/dir -t all -e /path/to/env-file +``` +NOTE: If you omit the `-e /path/to/env/file` a default environment file will be used to load GNU Compiler Collection 10 and related libraries. + +### Request compile & execution tests (WashU compute1) +```console +$ cd /path/to/GCClassic # Path to GCClassic superproject directory +$ cd test/integration/GCClassic +$ ./integrationTest.sh -d /path/to/test/dir -t all +``` +NOTE: No environment file is needed. On Compute1 the tests will run inside a software container with all necessary libraries included. diff --git a/test/integration/GCClassic/integrationTest.sh b/test/integration/GCClassic/integrationTest.sh index 099f953ce..c574d2aa6 100755 --- a/test/integration/GCClassic/integrationTest.sh +++ b/test/integration/GCClassic/integrationTest.sh @@ -12,27 +12,28 @@ #\\ #\\ # !CALLING SEQUENCE: -# ./integrationTest.sh -d root-dir -e env-file [-h] [-p partition] [-q] [-s scheduler] +# ./integrationTest.sh -d root-dir -t compile|all -s cannon|compute1 \ +# [-e env-file] [-h] [-q] # -# Where the command-line arguments are as follows: +# Required arguments +# -d root-dir : Specify the root folder for integration tests +# -t compile|all : Specify the tests to run (compile-only or all) # -# -d root-dir : Specify the root folder for integration tests -# -e env-file : Specify the environment file (w/ module loads) -# -h : Display a help message -# -n : Do not bootstrap missing restart file variables -# -p partition : Select partition for SLURM or LSF schedulers -# -q : Run a quick set of integration tests (for testing) -# -s scheduler : Specify the scheduler (SLURM or LSF) +# Optional arguments: +# -e env-file : Software environment file for Harvard Cannon +# -h : Display a help message +# -n : Do not bootstrap missing restart file variables +# -q : Run a quick set of integration tests (for testing) # # NOTE: you can also use the following long name options: # -# --directory root-dir (instead of -d root-dir ) -# --env-file env-file (instead of -e env-file ) -# --help (instead of -h ) -# --no-bootstrap (instead of -n ) -# --partition partition (instead of -p partition) -# --quick (instead of -q ) -# --scheduler scheduler (instead of -s scheduler) +# --directory (instead of -d) +# --env-file (instead of -e) +# --help (instead of -h) +# --no-bootstrap (instead of -n) +# --quick (instead of -q) +# --site (instead of -s) +# --tests-to-run (instead of -t) #EOP #------------------------------------------------------------------------------ #BOC @@ -41,13 +42,28 @@ # Initialize #============================================================================= this="$(basename ${0})" -usage="Usage: ${this} -d root-dir -e env-file [-h] [-p partition] [-q] [-s SLURM|LSF|none]" -itRoot="none" -envFile="none" -sedPartitionCmd="none" -quick="no" -bootStrap="yes" -compileOnly="no" +usage="Usage: ${this} -d root-dir -t compile|all -s cannon|compute1 [-e env-file] [-h] [-q]" +quick="NO" +bootStrap="YES" + +# Current directory +thisDir=$(pwd -P) +cd "${thisDir}" + +# GCClassic superproject directory (absolute paths) +cd ../../../../../ +superProjectDir=$(pwd -P) +cd ${superProjectDir} + +# GEOS-Chem and HEMCO submodule directories +geosChemDir="${superProjectDir}/src/GEOS-Chem" + +# Source the script containing utility functions and variables +commonFuncs="${geosChemDir}/test/shared/commonFunctionsForTests.sh" +. "${commonFuncs}" + +# Change back to the integration test directory +cd "${thisDir}" #============================================================================= # Parse command-line arguments @@ -56,14 +72,14 @@ compileOnly="no" # Call Linux getopt function to specify short & long input options # (e.g. -d or --directory, etc). Exit if not succesful -validArgs=$(getopt --options d:e:hnp:qs: \ - --long directory:,env-file:,help,no-bootstrap,partition:,quick,scheduler: -- "$@") +validArgs=$(getopt --options d:e:hnqs:t: \ +--long directory:,env-file:,help,no-bootstrap,quick,site:,tests-to-run: -- "$@") if [[ $? -ne 0 ]]; then exit 1; fi # Parse arguments and set variables accordingly -# TODO: replace "scheduler" with "site" argument; set scheduler from site. +# NOTE: Convert some inputs to uppercase to facilitate comparisons eval set -- "${validArgs}" while [ : ]; do case "${1}" in @@ -89,96 +105,64 @@ while [ : ]; do # -n or --no-bootstrap prevents bootstrapping missing variables in # restart files (i.e. do not change EFYO -> CYS in HEMCO_Config.rc) -n | --no-bootstrap) - bootStrap="no" + bootStrap="NO" shift ;; - # -p or --partition replaces REQUESTED_PARTITION with the user's choice - -p | --partition) - sedPartitionCmd="s/REQUESTED_PARTITION/${2}/" - shift 2 - ;; - # -q or --quick runs a quick set of integration tests (for testing) -q | --quick) - quick="yes" + quick="YES" shift ;; - # -s or --scheduler selects the scheduler (case-insensitive) - # NOTE: Will be converted to uppercase! - -s | --scheduler) - scheduler="${2^^}" + # -s or --tests-to-run specifies the type of tests to run + -t | --tests-to-run) + testsToRun="${2^^}" shift 2 ;; - + --) shift; break ;; esac done +#============================================================================= +# Sanity-check user input +#============================================================================= + +# Get the site name from the node name +site=$(get_site_name) + # Error check integration tests root path -if [[ "x${itRoot}" == "xnone" ]]; then +if [[ "X${itRoot}" == "X" ]]; then echo "ERROR: The integration test root directory has not been specified!" echo "${usage}" exit 1 fi -# Exit if no scheduler has been specified -if [[ "X${scheduler}" == "X" ]]; then - echo "You must specify a scheduler! (SLURM, LSF, none)!" +# Error check the type of tests to run +if [[ "X${testsToRun}" == "X" ]]; then + echo "ERROR: You must specify the test type: compile|all" echo "${usage}" exit 1 fi - -# Error check environment file -# TODO: Add a test on site name rather than scheduler -if [[ "x${scheduler}" != "xLSF" ]]; then - if [[ "x${envFile}" == "xnone" ]]; then - echo "ERROR: The enviroment file (module loads) has not been specified!" - echo "${usage}" - exit 1 - fi -fi - -# Exit if no partition has been selected for SLURM -if [[ "x${scheduler}" == "xSLURM" && "x${sedPartitionCmd}" == "xnone" ]]; then - echo "ERROR: You must specify a partition for SLURM." +if [[ "X${testsToRun}" != "XCOMPILE" && "X${testsToRun}" != "XALL" ]]; then + echo "ERROR: Invalid selction for tests-to-run, must be: compile|all" echo "${usage}" exit 1 fi -# Exit if no partition has been selected for SLURM -if [[ "x${scheduler}" == "xLSF" && "x${sedPartitionCmd}" == "xnone" ]]; then - echo "ERROR: You must specify a partition for LSF." - echo "${usage}" - exit 1 -fi - -# If "none" is specified for the scheduler, then run compile-only tests. -if [[ "x${scheduler}" == "xNONE" ]]; then - echo "Scheduler is 'none', so compile-only tests will be performed." - read -p "Press y to accept or n to exit: " answer - if [[ "${answer}" =~ [Nn] ]]; then - echo "Exiting ... " - exit 0 +# Error checks for tests that include compile & run phases +if [[ "X${testsToRun}" == "XALL" ]]; then + + # Use the default environment file for Cannon if not specified + if [[ "X${site}" == "XCANNON" && "X${envFile}" == "X" ]]; then + envFile=$(get_default_gcc_env_file) fi - compileOnly="yes" -fi -#============================================================================= -# Load file with utility functions to setup configuration files -#============================================================================= - -# Current directory -thisDir=$(pwd -P) - -# Load common functions -if [[ -f "../../shared/commonFunctionsForTests.sh" ]]; then - . "${thisDir}/../../shared/commonFunctionsForTests.sh" -elif [[ -f "${thisDir}/commonFunctionsForTests.sh" ]]; then - . "${thisDir}/commonFunctionsForTests.sh" + # Get the sed command that will replace the partition name + sedPartitionCmd=$(get_sed_partition_cmd_from_site "${site}") fi #============================================================================= @@ -195,7 +179,7 @@ if [[ "$(absolute_path ${thisDir})" =~ "${itRoot}" ]]; then fi # Create GEOS-Chem run directories in the integration test root folder -./integrationTestCreate.sh "${itRoot}" "${envFile}" "${compileOnly}" "${quick}" +./integrationTestCreate.sh "${itRoot}" "${envFile}" "${testsToRun}" "${quick}" if [[ $? -ne 0 ]]; then echo "ERROR: Could not create integration test run directories!" exit 1 @@ -216,7 +200,7 @@ rundirsDir="${itRoot}/${RUNDIRS_DIR}" # Edit HEMCO_Config.rc files to enable or disable bootstrapping # (i.e. to allow missing species in restart files or not) -if [[ "x${compileOnly}" == "xno" ]]; then +if [[ "X${testsToRun}" == "XALL" ]]; then gcc_enable_or_disable_bootstrap "${bootStrap}" "${rundirsDir}" fi @@ -224,12 +208,21 @@ fi cd "${logsDir}" #============================================================================= -# Compile the code and run the integration tests +# Run the tests #============================================================================= -if [[ "x${scheduler}" == "xSLURM" ]]; then +if [[ "X${testsToRun}" == "XCOMPILE" ]]; then + + #------------------------------------------------------------------------- + # Compilation-only tests (scheduler is not used) + #------------------------------------------------------------------------- + echo "" + echo "Compiliation tests are running..." + ${scriptsDir}/integrationTestCompile.sh & + +elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCANNON" ]]; then #------------------------------------------------------------------------- - # Integration tests will run via SLURM + # Compile and run on Harvard Cannon (using SLURM scheduler) #------------------------------------------------------------------------- # Remove LSF #BSUB tags @@ -273,7 +266,7 @@ if [[ "x${scheduler}" == "xSLURM" ]]; then echo "Compilation tests submitted as SLURM job ${cmpId}" echo "Execution tests submitted as SLURM job ${exeId}" -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCOMPUTE1" ]]; then #------------------------------------------------------------------------- # Integration tests will run via LSF @@ -319,14 +312,13 @@ elif [[ "x${scheduler}" == "xLSF" ]]; then else #------------------------------------------------------------------------- - # Compile tests only will run if scheduler = none + # Exit with error #------------------------------------------------------------------------- - - # Run compilation tests echo "" - echo "Compiliation tests are running..." - ${scriptsDir}/integrationTestCompile.sh & - + echo "ERROR! Invalid choice of arguments!" + echo "${usage}" + exit 1 + fi # Change back to this directory diff --git a/test/integration/GCClassic/integrationTestCompile.sh b/test/integration/GCClassic/integrationTestCompile.sh index 12f09d878..bc0c7da7c 100755 --- a/test/integration/GCClassic/integrationTestCompile.sh +++ b/test/integration/GCClassic/integrationTestCompile.sh @@ -49,10 +49,11 @@ envDir="${itRoot}/${ENV_DIR}" codeDir="${itRoot}/CodeDir" logsDir="${itRoot}/${LOGS_DIR}" scriptsDir="${itRoot}/${SCRIPTS_DIR}" +site=$(get_site_name) # Load the user-environment and the software environment -. ~/.bashrc > /dev/null 2>&1 -. ${envDir}/gcclassic.env > /dev/null 2>&1 +. ~/.bashrc > /dev/null 2>&1 +[[ "X${site}" == "XCANNON" ]] && . ${envDir}/gcclassic.env > /dev/null 2>&1 # All integration tests will use debugging features baseOptions="-DCMAKE_BUILD_TYPE=Debug -DRUNDIR='' -DINSTALLCOPY=${binDir}" @@ -65,47 +66,42 @@ head_gc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ git -C "${codeDir}/src/HEMCO" log --oneline --no-decorate -1) -# Determine the scheduler from the job ID (or lack of one) -scheduler="none" -[[ "x${SLURM_JOBID}" != "x" ]] && scheduler="SLURM" -[[ "x${LSB_JOBID}" != "x" ]] && scheduler="LSF" +if [[ "X${SLURM_JOBID}" != "X" ]]; then -if [[ "x${scheduler}" == "xSLURM" ]]; then - - #----------------------- - # SLURM settings - #----------------------- + #---------------------------------- + # SLURM settings (Harvard Cannon) + #---------------------------------- # Set OMP_NUM_THREADS to the same # of cores requested with #SBATCH -c export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${LSB_JOBID}" != "X" ]]; then - #----------------------- - # LSF settings - #----------------------- + #---------------------------------- + # LSF settings (WashU Compute1) + #---------------------------------- # Set OMP_NUM_THREADS to the same # of cores requested with #BSUB -n export OMP_NUM_THREADS=${LSB_DJOB_NUMPROC} else - #----------------------- + #---------------------------------- # Interactive settings - #----------------------- + #---------------------------------- # For AWS, set $OMP_NUM_THREADS to the available cores kernel=$(uname -r) - [[ "x${kernel}" == "xaws" ]] && export OMP_NUM_THREADS=$(nproc) + [[ "X${kernel}" == "Xaws" ]] && export OMP_NUM_THREADS=$(nproc) fi # Sanity check: Set OMP_NUM_THREADS to 6 if it is not set # (this may happen when running interactively) -[[ "x${OMP_NUM_THREADS}" == "x" ]] && export OMP_NUM_THREADS=6 +[[ "X${OMP_NUM_THREADS}" == "X" ]] && export OMP_NUM_THREADS=6 # Sanity check: Max out the OMP_STACKSIZE if it is not set -[[ "x${OMP_STACKSIZE}" == "x" ]] && export OMP_STACKSIZE=500m +[[ "X${OMP_STACKSIZE}" == "X" ]] && export OMP_STACKSIZE=500m # Count the number of tests to be done numTests=${#EXE_GCC_BUILD_LIST[@]} @@ -129,9 +125,9 @@ print_to_log "" "${results}" print_to_log "Using ${OMP_NUM_THREADS} OpenMP threads" "${results}" print_to_log "Number of compilation tests: ${numTests}" "${results}" print_to_log "" "${results}" -if [[ "x${scheduler}" == "xSLURM" ]]; then +if [[ "X${SLURM_JOBID}" != "X" ]]; then print_to_log "Submitted as SLURM job: ${SLURM_JOBID}" "${results}" -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${LSB_JOBID}" != "X" ]]; then print_to_log "Submitted as LSF job: ${LSB_JOBID}" "${results}" else print_to_log "Submitted as interactive job" "${results}" @@ -188,7 +184,7 @@ print_to_log "Complilation tests failed: ${failed}" "${results}" print_to_log "Complilation tests not completed: ${remain}" "${results}" # Check for success -if [[ "x${passed}" == "x${numTests}" ]]; then +if [[ "X${passed}" == "X${numTests}" ]]; then #-------------------------- # Successful compilation @@ -199,7 +195,7 @@ if [[ "x${passed}" == "x${numTests}" ]]; then print_to_log "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" "${results}" # Start the interactive execution test script upon successful finish - if [[ "x${scheduler}" == "xnone" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "x${LSB_JOBID}" == "X" ]]; then echo "" echo "Compilation tests finished!" ${scriptsDir}/integrationTestExecute.sh & @@ -210,7 +206,7 @@ else #--------------------------- # Unsuccessful compilation #--------------------------- - if [[ "x${scheduler}" == "xnone" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "x${LSB_JOBID}" == "X" ]]; then echo "" echo "Compilation tests failed! Exiting..." fi diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index 01617fb83..ebcd455b1 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -24,16 +24,15 @@ # Integration test root folder itRoot="${1}" -if [[ "x${itRoot}" == "x" ]]; then +if [[ "X${itRoot}" == "X" ]]; then echo "ERROR: The root-level directory for tests has not been specified!" exit 1 fi # Environment file envFile="${2}" -if [[ "x${envFile}" == "x" ]]; then - echo "ERROR: The enviroment file (w/ module loads) has not been specified!" - exit 1 +if [[ "X${envFile}" == "X" ]]; then + envFile=$(get_default_gcc_env_file) fi if [[ ! -f ${envFile} ]]; then echo "ERROR: The enviroment file is not a valid file!" @@ -41,7 +40,7 @@ if [[ ! -f ${envFile} ]]; then fi # Run a compile-only integration test? -compileOnly="${3}" +testsToRun="${3}" # Run a short integration test? quick="${4}" @@ -157,7 +156,7 @@ log="${logsDir}/createIntegrationTests.log" #============================================================================= # Don't create run directories for compile-only tests. #============================================================================= -if [[ "x${compileOnly}" == "xno" ]]; then +if [[ "X${testsToRun}" == "XALL" ]]; then # Switch to folder where rundir creation scripts live cd "${geosChemDir}/run/GCClassic" @@ -187,7 +186,7 @@ if [[ "x${compileOnly}" == "xno" ]]; then create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # DEBUG: Exit after creating a couple of rundirsDirs if $quick is "yes" - if [[ "x${quick}" == "xyes" ]]; then + if [[ "X${quick}" == "XYES" ]]; then cd ${thisDir} exit 0 fi diff --git a/test/integration/GCClassic/integrationTestExecute.sh b/test/integration/GCClassic/integrationTestExecute.sh index 1c29ff247..a5c63fc5d 100755 --- a/test/integration/GCClassic/integrationTestExecute.sh +++ b/test/integration/GCClassic/integrationTestExecute.sh @@ -48,10 +48,11 @@ envDir="${itRoot}/${ENV_DIR}" codeDir="${itRoot}/CodeDir" logsDir="${itRoot}/${LOGS_DIR}" rundirsDir="${itRoot}/${RUNDIRS_DIR}" +site=$(get_site_name) # Load the environment and the software environment -. ~/.bashrc > /dev/null 2>&1 -. ${envDir}/gcclassic.env > /dev/null 2>&1 +. ~/.bashrc > /dev/null 2>&1 +[[ "X${site}" == "XCANNON" ]] && . ${envDir}/gcclassic.env > /dev/null 2>&1 # Get the Git commit of the superproject and submodules head_gcc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ @@ -61,49 +62,44 @@ head_gc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ git -C "${codeDir}/src/HEMCO" log --oneline --no-decorate -1) -# Determine the scheduler from the job ID (or lack of one) -scheduler="none" -[[ "x${SLURM_JOBID}" != "x" ]] && scheduler="SLURM" -[[ "x${LSB_JOBID}" != "x" ]] && scheduler="LSF" +if [[ "X${site}" == "XCANNON" && "X${SLURM_JOBID}" != "X" ]]; then -if [[ "x${scheduler}" == "xSLURM" ]]; then - - #----------------------- - # SLURM settings - #----------------------- + #---------------------------------- + # SLURM settings (Harvard Cannon) + #---------------------------------- # Set OMP_NUM_THREADS to the same # of cores requested with #SBATCH -c export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${site}" == "XCOMPUTE1" && "X${LSB_JOBID}" != "X" ]]; then - #----------------------- - # LSF settings - #----------------------- + #--------------------------------- + # LSF settings (WashU Compute1) + #--------------------------------- # Set OMP_NUM_THREADS to the same # of cores requested with #BSUB -n export OMP_NUM_THREADS=${LSB_DJOB_NUMPROC} else - #----------------------- + #--------------------------------- # Interactive settings - #----------------------- + #--------------------------------- echo "" echo "Execution tests running..." # For AWS, set $OMP_NUM_THREADS to the available cores kernel=$(uname -r) - [[ "x${kernel}" == "xaws" ]] && export OMP_NUM_THREADS=$(nproc) + [[ "X${kernel}" == "Xaws" ]] && export OMP_NUM_THREADS=$(nproc) fi # Sanity check: Set OMP_NUM_THREADS to 8 if it is not set # (this may happen when running interactively) -[[ "x${OMP_NUM_THREADS}" == "x" ]] && export OMP_NUM_THREADS=8 +[[ "X${OMP_NUM_THREADS}" == "X" ]] && export OMP_NUM_THREADS=8 # Sanity check: Max out the OMP_STACKSIZE if it is not set -[[ "x${OMP_STACKSIZE}" == "x" ]] && export OMP_STACKSIZE=500m +[[ "X${OMP_STACKSIZE}" == "X" ]] && export OMP_STACKSIZE=500m # Count the number of tests to be run (same as the # of run directories) numTests=$(count_rundirs "${rundirsDir}") @@ -127,9 +123,9 @@ print_to_log "" "${results}" print_to_log "Using ${OMP_NUM_THREADS} OpenMP threads" "${results}" print_to_log "Number of execution tests: ${numTests}" "${results}" print_to_log "" "${results}" -if [[ "x${scheduler}" == "xSLURM" ]]; then +if [[ "X${SLURM_JOBID}" != "X" ]]; then print_to_log "Submitted as SLURM job: ${SLURM_JOBID}" "${results}" -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${LSB_JOBID}" == "XCOMPUTE1" ]]; then print_to_log "Submitted as LSF job: ${LSB_JOBID}" "${results}" else print_to_log "Submitted as interactive job" "${results}" @@ -159,7 +155,7 @@ for runDir in *; do # Do the following if for only valid GEOS-Chem run dirs expr=$(is_valid_rundir "${runAbsPath}") - if [[ "x${expr}" == "xTRUE" ]]; then + if [[ "X${expr}" == "XTRUE" ]]; then # Define log file log="${logsDir}/execute.${runDir}.log" @@ -185,11 +181,8 @@ for runDir in *; do # Copy the executable file here cp -f "${binDir}/${exeFile}" . - # Update to make sure the run directory is executable - # on Compute1. We will later replace this test with - # a test on the site name instead of on the scheduler. - # TODO: Test on name rather than scheduler. - if [[ "x${scheduler}" == "xLSF" ]]; then + # Update to make sure the run directory is executable on Compute1 + if [[ "X${site}" == "XCOMPUTE1" ]]; then chmod 755 -R "${runAbsPath}" fi @@ -198,7 +191,7 @@ for runDir in *; do # Run the code if the executable is present. Then update the # pass/fail counters and write a message to the results log file. - if [[ "x${scheduler}" == "xSLURM" ]]; then + if [[ "X${site}" == "XCANNON" && "X${SLURM_JOBID}" != "X" ]]; then srun -c ${OMP_NUM_THREADS} ./${exeFile} >> "${log}" 2>&1 else ./${exeFile} >> "${log}" 2>&1 @@ -246,7 +239,7 @@ print_to_log "Execution tests failed: ${failed}" "${results}" print_to_log "Execution tests not yet completed: ${remain}" "${results}" # Check for success -if [[ "x${passed}" == "x${numTests}" ]]; then +if [[ "X${passed}" == "X${numTests}" ]]; then #-------------------------- # Successful execution @@ -257,7 +250,7 @@ if [[ "x${passed}" == "x${numTests}" ]]; then print_to_log "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" "${results}" # Print success (if interactive) - if [[ "x${SLURM_JOBID}" == "x" && "x${LSB_JOBID}" == "x" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "x${LSB_JOBID}" == "X" ]]; then echo "" echo "Execution tests finished!" fi @@ -267,7 +260,7 @@ else #-------------------------- # Unsuccessful execution #-------------------------- - if [[ "x${SLURM_JOBID}" == "x" && "x${LSB_JOBID}" == "x" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "X${LSB_JOBID}" == "X" ]]; then echo "" echo "Execution tests failed! Exiting ..." fi diff --git a/test/shared/commonFunctionsForTests.sh b/test/shared/commonFunctionsForTests.sh index f88184644..3faf3dc71 100755 --- a/test/shared/commonFunctionsForTests.sh +++ b/test/shared/commonFunctionsForTests.sh @@ -69,7 +69,7 @@ function sed_ie() { #======================================================================== regex="${1}" file="${2}" - if [[ "x$(uname -s)" == "xDarwin" ]]; then + if [[ "X$(uname -s)" == "XDarwin" ]]; then sed -i '' -e "${regex}" "${file}" # MacOS/Darwin else sed -i -e "${regex}" "${file}" # GNU/Linux @@ -133,7 +133,7 @@ function is_gchp_rundir() { # 1st argument: Directory to be tested #======================================================================== expr=$(is_valid_rundir "${1}") - if [[ "x${expr}" == "xTRUE" ]]; then + if [[ "X${expr}" == "XTRUE" ]]; then if [[ -f "${1}/CAP.rc" ]]; then echo "TRUE" return @@ -157,7 +157,7 @@ function count_rundirs() { declare -i x=0 for runDir in *; do expr=$(is_valid_rundir "${runDir}") - if [[ "x${expr}" == "xTRUE" ]]; then + if [[ "X${expr}" == "XTRUE" ]]; then let x++ fi done @@ -317,7 +317,7 @@ function create_rundir() { # If this is a GCHP run directory, then also replace text in # GCHP-specific rundir configuration files etc. expr=$(is_gchp_rundir "${runPath}") - if [[ "x${expr}" == "xTRUE" ]]; then + if [[ "X${expr}" == "XTRUE" ]]; then update_gchp_config_files "${runPath}" fi @@ -333,7 +333,7 @@ function cleanup_files() { # 1st argument = root folder for tests (w/ many rundirs etc) #======================================================================== itRoot="${1}" - if [[ "x${itRoot}" != "x" ]]; then + if [[ "X${itRoot}" != "X" ]]; then # Exit if directory is already empty if [[ ! $(ls -A "${itRoot}") ]]; then @@ -387,18 +387,18 @@ function exe_name() { # Default executable name exeFileName="none" - [[ "x${model}" == "xgcclassic" ]] && exeFileName="${model}" - [[ "x${model}" == "xgchp" ]] && exeFileName="${model}" + [[ "X${model}" == "Xgcclassic" ]] && exeFileName="${model}" + [[ "X${model}" == "Xgchp" ]] && exeFileName="${model}" # Append a suffix to the executable file name for specific directories - if [[ "x${model}" == "xgcclassic" ]]; then + if [[ "X${model}" == "Xgcclassic" ]]; then for suffix in ${EXE_GCC_BUILD_LIST[@]}; do if [[ "${buildDir}" =~ "${suffix}" ]]; then exeFileName+=".${suffix}" break fi done - elif [[ "x${model}" == "xgchp" ]]; then + elif [[ "X${model}" == "Xgchp" ]]; then for suffix in ${EXE_GCHP_BUILD_LIST[@]}; do if [[ "${buildDir}" =~ "${suffix}" ]]; then exeFileName+=".${suffix}" @@ -471,8 +471,8 @@ function compiletest_name() { buildDir=$(basename "${2}") # Only take last part of path # Display the proper model name - [[ "x${model}" == "xgcclassic" ]] && displayName="GCClassic" - [[ "x${model}" == "xgchp" ]] && displayName="GCHP" + [[ "X${model}" == "Xgcclassic" ]] && displayName="GCClassic" + [[ "X${model}" == "Xgchp" ]] && displayName="GCHP" # Turn on case-insensitivity shopt -s nocasematch @@ -524,7 +524,7 @@ function build_model() { results="${6}" # Stop with error if the model name is invalid - if [[ "x${model}" != "xgcclassic" && "x${model}" != "xgchp" ]]; then + if [[ "X${model}" != "Xgcclassic" && "X${model}" != "Xgchp" ]]; then echo "ERROR: '${model}' is an invalid model name!" echo "Exiting in 'build_model' (in 'commonFunctionsForTests.sh')" exit 1 @@ -624,7 +624,7 @@ function print_bootstrap_info_message() { # # 1st argument: Enable ("yes") or disable ("no") bootstrapping #======================================================================== - if [[ "x${1}" == "xyes" ]]; then + if [[ "X${1}" == "XYES" ]]; then echo "" echo "%%%%% Species not found in the restart file will %%%%%" echo "%%%%% be bootstrapped (i.e. set to default values) %%%%%" @@ -657,7 +657,7 @@ function change_time_cycle_flags() { unset -f # Replace the time cycle flag for the container - if [[ "x${text}" != "x" ]]; then + if [[ "X${text}" != "X" ]]; then sedCmd=$(sed_string "${text}" "${oldFlag}" "${newFlag}") sed_ie "${sedCmd}" "${hcoCfg}" fi @@ -682,12 +682,12 @@ function gcc_enable_or_disable_bootstrap() { # Do the following if for only valid GEOS-Chem run dirs expr=$(is_valid_rundir "${runDir}") - if [[ "x${expr}" == "xTRUE" ]]; then + if [[ "X${expr}" == "XTRUE" ]]; then # Specify path HEMCO_Config.rc hcoCfg="${runDir}/HEMCO_Config.rc" - if [[ "x${bootStrap}" == "xyes" ]]; then + if [[ "X${bootStrap}" == "XYES" ]]; then # Set missing species in restarts & BC files to defaults change_time_cycle_flags "${hcoCfg}" "SPC_ " "EFYO" "CYS" change_time_cycle_flags "${hcoCfg}" "SPC_ " "EY" "CYS" @@ -721,12 +721,12 @@ function gchp_enable_or_disable_bootstrap() { # Do the following if for only valid GEOS-Chem run dirs expr=$(is_gchp_rundir "${runDir}") - if [[ "x${expr}" == "xTRUE" ]]; then + if [[ "X${expr}" == "XTRUE" ]]; then # Specify path HEMCO_Config.rc script="${runDir}/setCommonRunSettings.sh" - if [[ "x${bootStrap}" == "xyes" ]]; then + if [[ "X${bootStrap}" == "XYES" ]]; then # Set missing restart file variables to defaults sed_ie "s/Require_Species_in_Restart=./Require_Species_in_Restart=0/" "${script}" else @@ -736,3 +736,45 @@ function gchp_enable_or_disable_bootstrap() { fi done } + + +function get_site_name() { + #======================================================================== + # Returns the site name based on the node name (i.e. uname -n) + #======================================================================== + nodeName=$(uname -n) + [[ "${nodeName}" =~ 'harvard.edu' ]] && echo "CANNON" + [[ "${nodeName}" =~ 'wustl.edu' ]] && echo "COMPUTE1" + return 0 +} + + +function get_sed_partition_cmd_from_site() { + #======================================================================== + # Returns the sed command to replace the partition name in scripts + # + # 1st argument: Site name (cannon|compute1) + #======================================================================== + [[ "X${1}" == "XCANNON" ]] && p="sapphire,huce_cascade,seas_compute,shared" + [[ "X${1}" == "XCOMPUTE1" ]] && p="rvmartin" + echo "s/REQUESTED_PARTITION/${p}/" + return 0 +} + + +function get_default_gcc_env_file() { + #======================================================================== + # Returns the default environment file for GEOS-Chem Classic + #======================================================================== + echo "/n/home09/ryantosca/repos/cannon-env/envs/gnu10/gcclassic.rocky+gnu10.minimal.env" + return 0 +} + + +function get_default_gchp_env_file() { + #======================================================================== + # Returns the default environment file for GCHP + #======================================================================== + echo "/n/home09/ryantosca/repos/cannon-env/envs/gnu10/gchp.rocky+gnu10.minimal.env" + return 0 +} From b8aca5d4555f75c182ae5e57f3cd0d0ae5d843ac Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 11 Mar 2024 16:09:42 -0400 Subject: [PATCH 136/331] Refactor GCHP integration test scripts to reduce # of input args test/integration/GCHP/integrationTest.sh test/integration/GCHP/integrationTestCompile.sh test/integration/GCHP/integrationTestCreate.sh test/integration/GCHP/integrationTestExecute.sh test/integration/GCHP/README.md - Updated comments and code to be consistent with the test/integration/GCClassic/integrationTest.sh script test/integration/GCClassic/integrationTest.sh - Updated code to source commonFunctionsForTests.sh to be consistent w/ the test/integration/GCHP/integrationTest.sh script. - Updated comment header test/integration/GCClassic/integrationTestCreate.sh - Wrap the command to create the top-level rundirs directory within an if block that only executes when all tests are being performed. test/integration/GCClassic/integrationTestExecute.sh - Updated comment Signed-off-by: Bob Yantosca --- test/integration/GCClassic/integrationTest.sh | 40 ++-- .../GCClassic/integrationTestCreate.sh | 21 ++- .../GCClassic/integrationTestExecute.sh | 1 + test/integration/GCHP/README.md | 80 ++++---- test/integration/GCHP/integrationTest.sh | 177 ++++++++---------- .../GCHP/integrationTestCompile.sh | 37 ++-- .../integration/GCHP/integrationTestCreate.sh | 36 ++-- .../GCHP/integrationTestExecute.sh | 54 +++--- 8 files changed, 209 insertions(+), 237 deletions(-) diff --git a/test/integration/GCClassic/integrationTest.sh b/test/integration/GCClassic/integrationTest.sh index c574d2aa6..1c56d59bd 100755 --- a/test/integration/GCClassic/integrationTest.sh +++ b/test/integration/GCClassic/integrationTest.sh @@ -12,18 +12,17 @@ #\\ #\\ # !CALLING SEQUENCE: -# ./integrationTest.sh -d root-dir -t compile|all -s cannon|compute1 \ -# [-e env-file] [-h] [-q] +# ./integrationTest.sh -d root-dir -t compile|all [-e env-file] [-h] [-q] # # Required arguments -# -d root-dir : Specify the root folder for integration tests -# -t compile|all : Specify the tests to run (compile-only or all) +# -d root-dir : Specify the root folder for integration tests +# -t compile|all : Specify the tests to run (compile-only or all) # -# Optional arguments: -# -e env-file : Software environment file for Harvard Cannon -# -h : Display a help message -# -n : Do not bootstrap missing restart file variables -# -q : Run a quick set of integration tests (for testing) +# Optional arguments +# -e env-file : Software environment file for Harvard Cannon +# -h : Display a help message +# -n : Do not bootstrap missing restart file variables +# -q : Run a quick set of integration tests (for testing) # # NOTE: you can also use the following long name options: # @@ -32,7 +31,6 @@ # --help (instead of -h) # --no-bootstrap (instead of -n) # --quick (instead of -q) -# --site (instead of -s) # --tests-to-run (instead of -t) #EOP #------------------------------------------------------------------------------ @@ -50,20 +48,8 @@ bootStrap="YES" thisDir=$(pwd -P) cd "${thisDir}" -# GCClassic superproject directory (absolute paths) -cd ../../../../../ -superProjectDir=$(pwd -P) -cd ${superProjectDir} - -# GEOS-Chem and HEMCO submodule directories -geosChemDir="${superProjectDir}/src/GEOS-Chem" - -# Source the script containing utility functions and variables -commonFuncs="${geosChemDir}/test/shared/commonFunctionsForTests.sh" -. "${commonFuncs}" - -# Change back to the integration test directory -cd "${thisDir}" +# Load common functions +. "${thisDir}/../../shared/commonFunctionsForTests.sh" #============================================================================= # Parse command-line arguments @@ -73,7 +59,7 @@ cd "${thisDir}" # Call Linux getopt function to specify short & long input options # (e.g. -d or --directory, etc). Exit if not succesful validArgs=$(getopt --options d:e:hnqs:t: \ ---long directory:,env-file:,help,no-bootstrap,quick,site:,tests-to-run: -- "$@") + --long directory:,env-file:,help,no-bootstrap,quick,tests-to-run: -- "$@") if [[ $? -ne 0 ]]; then exit 1; fi @@ -222,7 +208,7 @@ if [[ "X${testsToRun}" == "XCOMPILE" ]]; then elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCANNON" ]]; then #------------------------------------------------------------------------- - # Compile and run on Harvard Cannon (using SLURM scheduler) + # Compile execution tests on Harvard Cannon (using SLURM scheduler) #------------------------------------------------------------------------- # Remove LSF #BSUB tags @@ -269,7 +255,7 @@ elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCANNON" ]]; then elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCOMPUTE1" ]]; then #------------------------------------------------------------------------- - # Integration tests will run via LSF + # Compile and execution tests on WashU Compute1 (via LSF) #------------------------------------------------------------------------- # Remove SLURM #SBATCH tags diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index ebcd455b1..483f103aa 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -29,14 +29,15 @@ if [[ "X${itRoot}" == "X" ]]; then exit 1 fi -# Environment file +# Environment file (for Harvard Cannon only) +site=$(get_site_name) envFile="${2}" -if [[ "X${envFile}" == "X" ]]; then - envFile=$(get_default_gcc_env_file) -fi -if [[ ! -f ${envFile} ]]; then - echo "ERROR: The enviroment file is not a valid file!" - exit 1 +if [[ "X${site}" == "XCANNON" ]]; then + [[ "X${envFile}" == "X" ]] && envFile=$(get_default_gcc_env_file) + if [[ ! -f ${envFile} ]]; then + echo "ERROR: The enviroment file is not a valid file!" + exit 1 + fi fi # Run a compile-only integration test? @@ -129,8 +130,10 @@ printf "Creating scripts directory ${scriptsDir}\n" mkdir -p "${scriptsDir}" # Subdir for run directories -printf "Creating rundirs directory ${rundirsDir}\n" -mkdir -p "${rundirsDir}" +if [[ "x${testsToRun}" == "xALL" ]]; then + printf "Creating rundirs directory ${rundirsDir}\n" + mkdir -p "${rundirsDir}" +fi # Create a symbolic link to the code from the Integration Test root folder printf "Linking to superproject ${itRoot}/CodeDir\n" diff --git a/test/integration/GCClassic/integrationTestExecute.sh b/test/integration/GCClassic/integrationTestExecute.sh index a5c63fc5d..8ef6260d3 100755 --- a/test/integration/GCClassic/integrationTestExecute.sh +++ b/test/integration/GCClassic/integrationTestExecute.sh @@ -62,6 +62,7 @@ head_gc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ git -C "${codeDir}/src/HEMCO" log --oneline --no-decorate -1) +# Site-specific settings if [[ "X${site}" == "XCANNON" && "X${SLURM_JOBID}" != "X" ]]; then #---------------------------------- diff --git a/test/integration/GCHP/README.md b/test/integration/GCHP/README.md index 78935362c..d60f9cbbe 100644 --- a/test/integration/GCHP/README.md +++ b/test/integration/GCHP/README.md @@ -17,74 +17,76 @@ Integration tests are short GCHP simulations. Executables are compiled with all ### Integration Test Scripts - `integrationTest.sh` - - Driver script to run GCHP integration tests + - Driver script to run GEOS-Chem Classic integration tests - `integrationTestCreate.sh` - - Script to create GCHP run directories for integration tests + - Script to create GEOS-Chem Classic run directories for integration tests - `integrationTestCompile.sh` - - Script to compile GCHP executables + - Script to compile GEOS-Chem Classic executables - `integrationTestExecute.sh` - - Script to run GCHP integration test simulations + - Script to run GEOS-Chem Classic integration test simulations ### Shared Scripts - `commonFunctionsForTests.sh` - Link to `../../shared/commonFunctionsForTests.sh`, which contains global variables and functions for the integration and parallelization tests. -## Running GCHP Integration and/or Parallelization Tests +## Before you begin -Before you submit any GCHP integration tests, please take a moment to: +Please take a moment to: 1. Verify that the `GCHP` superproject is checked out to the correct branch and commit. 2. Run `git submodule update --init --recursive` in order to update all submodules. 3. Verify that the `HEAD` commit of the `GEOS-Chem` submodule contains the code that you wish to test. (If not, then check out the proper branch.) 4. Verify that the `HEAD` commit of the `HEMCO` submodule contains the code that you wish to test. (If not, then check out the proper branch.) -### With the SLURM scheduler - -```console -$ cd /path/to/GCHP # Path to GCHP superproject directory -$ cd test/integration/GCClassic -$ ./integrationTest.sh -d /path/to/test/dir -e /path/to/env-file -s slurm -p partition -``` - -### With the LSF scheduler - -```console -$ cd /path/to/GCHP # Path to GCHP superproject directory -$ cd test/integration/GCClassic -$ ./integrationTest.sh -d /path/to/test/dir -e /path/to/env-file -s lsf -p partition -``` - -### Interactively at the command line - -```console -$ cd /path/to/GCHP # Path to GCHP superproject directory -$ cd test/integration/GCClassic -$ ./integrationTest.sh -d /path/to/test/dir -e /path/to/env-file -``` - ## Command-line Arguments -The integration test scripts accept the following command-line arguments +The integration test scripts accept the following command-line arguments: -`-d /path/to/test/dir` specifies the root directory where integration test subdirectories and scripts will be placed. +### Required arguments -`-e /path/to/env-file` specifies the file that is used to initialize the software environment. This file will typically contain either `module load` or `spack load` commands. +`-d /path/to/test/dir` specifies the root directory where integration test subdirectories and scripts will be placed. -`-p partition` specifies the partition for the scheduler. You may omit this for running interactively. +`-t compile|all` specifies the type of test to be run: + - `compile` will run compilation-only tests. + - `all` will run compilation and execution tests. -`-s scheduler` specifies that scheduler (`SLURM|LSF|none`) that will be used to run the integration test scripts. Choosing `-s none` will run compilation-only tests. +### Optional arguments -`-n` specifies that missing species in restart files will not be bootstrapped to a missing value. This can be used to test if "out-of-the-box" simulations will fail before a version release. +`-e /path/to/env-file` Specifies the file that is used to initialize the software environment on the Harvard Cannon cluster. If omitted, a default file will be selected. `-h` displays a help screeen. +`-q` will run only a couple of integration tests instead of the full suite. This is intended for development and debugging. You will normally not need to use this option. + You can also use long names for the option switches: - `--directory` instead of `-d` - `--env-file` instead of `-e` - `--help` instead of `h` - `--no-bootstrap` instead of `n` -- `--partition partition` instead of `-p` -- `--scheduler scheduler` instead of `-s` +- `--tests-to-run partition` instead of `-t` + +## Examples + +### Request compile-only tests on Cannon or Compute1 +```console +$ cd /path/to/GCHP # Path to GCClassic superproject directory +$ cd test/integration/GCHP +$ ./integrationTest.sh -d /path/to/test/dir -t compile +``` + +### Request compile and execution tests (Harvard Cannon) +```console +$ cd /path/to/GCHP # Path to GCClassic superproject directory +$ cd test/integration/GCHP +$ ./integrationTest.sh -d /path/to/test/dir -t all -e /path/to/env-file +``` +NOTE: If you omit the `-e /path/to/env/file` a default environment file will be used to load GNU Compiler Collection 10 and related libraries. -There is an additional option (`-q` or `--quick`) that will run only a couple of integration tests instead of the full suite. This is intended for development and debugging. You will normally not need to use this option. +### Request compile & execution tests (WashU compute1) +```console +$ cd /path/to/GCHP # Path to GCClassic superproject directory +$ cd test/integration/GCHP +$ ./integrationTest.sh -d /path/to/test/dir -t all +``` +NOTE: No environment file is needed. On Compute1 the tests will run inside a software container with all necessary libraries included. diff --git a/test/integration/GCHP/integrationTest.sh b/test/integration/GCHP/integrationTest.sh index ee41fdaa9..717edf177 100755 --- a/test/integration/GCHP/integrationTest.sh +++ b/test/integration/GCHP/integrationTest.sh @@ -12,27 +12,26 @@ #\\ #\\ # !CALLING SEQUENCE: -# ./integrationTest.sh -d root-dir -e env-file [-h] [-p partition] [-q] [-s scheduler] +# ./integrationTest.sh -d root-dir -t compile|all [-e env-file] [-h] [-q] # -# Where the command-line arguments are as follows: +# Required arguments +# -d root-dir : Specify the root folder for integration tests +# -t compile|all : Specify the tests to run (compile-only or all) # -# -d root-dir : Specify the root folder for integration tests -# -e env-file : Specify the environment file (w/ module loads) -# -h : Display a help message -# -n : Do not bootstrap missing restart file variables -# -p partition : Select partition for SLURM or LSF schedulers -# -q : Run a quick set of integration tests (for testing) -# -s scheduler : Specify the scheduler (SLURM or LSF) +# Optional arguments +# -e env-file : Software environment file for Harvard Cannon +# -h : Display a help message +# -n : Do not bootstrap missing restart file variables +# -q : Run a quick set of integration tests (for testing) # # NOTE: you can also use the following long name options: # -# --directory root-dir (instead of -d root-dir ) -# --env-file env-file (instead of -e env-file ) -# --help (instead of -h ) -# --no-bootstrap (instead of -n ) -# --partition partition (instead of -p partition) -# --quick (instead of -q ) -# --scheduler scheduler (instead of -s scheduler) +# --directory (instead of -d) +# --env-file (instead of -e) +# --help (instead of -h) +# --no-bootstrap (instead of -n) +# --quick (instead of -q) +# --tests-to-run (instead of -t) #EOP #------------------------------------------------------------------------------ #BOC @@ -41,13 +40,16 @@ # Initialize #============================================================================= this="$(basename ${0})" -usage="Usage: ${this} -d root-dir -e env-file [-h] [-p partition] [-q] [-s SLURM|LSF|none]" -itRoot="none" -envFile="none" -sedPartitionCmd="none" -quick="no" -bootStrap="yes" -compileOnly="no" +usage="Usage: ${this} -d root-dir -t compile|all -s cannon|compute1 [-e env-file] [-h] [-q]" +quick="NO" +bootStrap="YES" + +# Current directory +thisDir=$(pwd -P) +cd "${thisDir}" + +# Load common functions +. "${thisDir}/../../shared/commonFunctionsForTests.sh" #============================================================================= # Parse command-line arguments @@ -56,14 +58,14 @@ compileOnly="no" # Call Linux getopt function to specify short & long input options # (e.g. -d or --directory, etc). Exit if not succesful -validArgs=$(getopt --options d:e:hnp:qs: \ - --long directory:,env-file:,help,no-bootstrap,partition:,quick,scheduler: -- "$@") +validArgs=$(getopt --options d:e:hnqt: \ + --long directory:,env-file:,help,no-bootstrap,quick,tests-to-run: -- "$@") if [[ $? -ne 0 ]]; then exit 1; fi # Parse arguments and set variables accordingly -# TODO: replace "scheduler" with "site" argument; set scheduler from site. +# NOTE: Convert some inputs to uppercase to facilitate comparisons eval set -- "${validArgs}" while [ : ]; do case "${1}" in @@ -89,96 +91,63 @@ while [ : ]; do # -n or --no-bootstrap prevents bootstrapping missing variables in # restart files (i.e. do not change EFYO -> CYS in HEMCO_Config.rc) -n | --no-bootstrap) - bootStrap="no" + bootStrap="NO" shift ;; - # -p or --partition replaces REQUESTED_PARTITION with the user's choice - -p | --partition) - sedPartitionCmd="s/REQUESTED_PARTITION/${2}/" - shift 2 - ;; - # -q or --quick runs a quick set of integration tests (for testing) -q | --quick) - quick="yes" + quick="YES" shift - ;; + ;; - # -s or --scheduler selects the scheduler (case-insensitive) - # NOTE: Will be converted to uppercase! - -s | --scheduler) - scheduler="${2^^}" + # -s or --tests-to-run specifies the type of tests to run + -t | --tests-to-run) + testsToRun="${2^^}" shift 2 ;; - + --) shift; break ;; esac done +#============================================================================= +# Sanity-check user input +#============================================================================= + +# Get the site name from the node name +site=$(get_site_name) # Error check integration tests root path -if [[ "x${itRoot}" == "xnone" ]]; then +if [[ "X${itRoot}" == "X" ]]; then echo "ERROR: The integration test root directory has not been specified!" echo "${usage}" exit 1 fi -# Exit if no scheduler has been specified -if [[ "X${scheduler}" == "X" ]]; then - echo "You must specify a scheduler! (SLURM, LSF, none)!" - echo "${usage}" - exit 1 -fi - -# Error check environment file -# TODO: Add a test on site name rather than scheduler -if [[ "x${scheduler}" != "xLSF" ]]; then - if [[ "x${envFile}" == "xnone" ]]; then - echo "ERROR: The enviroment file (module loads) has not been specified!" - echo "${usage}" - exit 1 - fi -fi - -# Exit if no partition has been selected for SLURM -if [[ "x${scheduler}" == "xSLURM" && "x${sedPartitionCmd}" == "xnone" ]]; then - echo "ERROR: You must specify a partition for SLURM." +# Error check the type of tests to run +if [[ "X${testsToRun}" == "X" ]]; then + echo "ERROR: You must specify the test type: compile|all" echo "${usage}" exit 1 fi - -# Exit if no partition has been selected for SLURM -if [[ "x${scheduler}" == "xLSF" && "x${sedPartitionCmd}" == "xnone" ]]; then - echo "ERROR: You must specify a partition for LSF." +if [[ "X${testsToRun}" != "XCOMPILE" && "X${testsToRun}" != "XALL" ]]; then + echo "ERROR: Invalid selction for tests-to-run, must be: compile|all" echo "${usage}" exit 1 fi -# If "none" is specified for the scheduler, then run compile-only tests. -if [[ "x${scheduler}" == "xNONE" ]]; then - echo "Scheduler is 'none', so compile-only tests will be performed." - read -p "Press y to accept or n to exit: " answer - if [[ "${answer}" =~ [Nn] ]]; then - echo "Exiting ... " - exit 0 +# Error checks for tests that include compile & run phases +if [[ "X${testsToRun}" == "XALL" ]]; then + + # Use the default environment file for Cannon if not specified + if [[ "X${site}" == "XCANNON" && "X${envFile}" == "X" ]]; then + envFile=$(get_default_gchp_env_file) fi - compileOnly="yes" -fi - -#============================================================================= -# Load file with utility functions to setup configuration files -#============================================================================= - -# Current directory -thisDir=$(pwd -P) -# Load common functions -if [[ -f "../../shared/commonFunctionsForTests.sh" ]]; then - . "${thisDir}/../../shared/commonFunctionsForTests.sh" -elif [[ -f "${thisDir}/commonFunctionsForTests.sh" ]]; then - . "${thisDir}/commonFunctionsForTests.sh" + # Get the sed command that will replace the partition name + sedPartitionCmd=$(get_sed_partition_cmd_from_site "${site}") fi #============================================================================= @@ -194,7 +163,7 @@ if [[ "$(absolute_path ${thisDir})" =~ "${itRoot}" ]]; then exit 1 fi # Create GEOS-Chem run directories in the integration test root folder -./integrationTestCreate.sh "${itRoot}" "${envFile}" "${compileOnly}" "${quick}" +./integrationTestCreate.sh "${itRoot}" "${envFile}" "${testsToRun}" "${quick}" if [[ $? -ne 0 ]]; then echo "ERROR: Could not create integration test run directories!" exit 1 @@ -215,7 +184,7 @@ rundirsDir="${itRoot}/${RUNDIRS_DIR}" # Edit setCommonRunSettings.sh scripts to enable or disable bootstrapping # (i.e. to allow missing species in restart files or not) -if [[ "x${compileOnly}" == "xno" ]]; then +if [[ "x${testsToRun}" == "xALL" ]]; then gchp_enable_or_disable_bootstrap "${bootStrap}" "${rundirsDir}" fi @@ -223,14 +192,21 @@ fi cd "${logsDir}" #============================================================================= -# Compile the code and run the integration tests +# Run the tests #============================================================================= -if [[ "x${scheduler}" == "xSLURM" ]]; then - +if [[ "x${testsToRun}" == "xCOMPILE" ]]; then + #------------------------------------------------------------------------- + # Compilation-only tests (scheduler is not used) + #------------------------------------------------------------------------- + echo "" + echo "Compiliation tests are running..." + ${scriptsDir}/integrationTestCompile.sh & + +elif [[ "x${testsToRun}" == "xALL" && "x${site}" == "xCANNON" ]]; then #------------------------------------------------------------------------- - # Integration tests will run via SLURM + # Compile and execution tests on Harvard Cannon (via SLURM) #------------------------------------------------------------------------- # Remove LSF #BSUB tags @@ -273,12 +249,12 @@ if [[ "x${scheduler}" == "xSLURM" ]]; then echo "Compilation tests submitted as SLURM job ${cmpId}" echo "Execution tests submitted as SLURM job ${exeId}" -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "x${testsToRun}" == "xALL" && "x${site}" == "xCOMPUTE1" ]]; then #------------------------------------------------------------------------- - # Integration tests will run via LSF + # Compile and execution tests on WashU Compute1 (via LSF) #------------------------------------------------------------------------- - + # Remove SLURM #SBATCH tags sed_ie '/#SBATCH -c 8/d' "${scriptsDir}/integrationTestCompile.sh" sed_ie '/#SBATCH -N 1/d' "${scriptsDir}/integrationTestCompile.sh" @@ -316,17 +292,16 @@ elif [[ "x${scheduler}" == "xLSF" ]]; then echo "" echo "Compilation tests submitted as LSF job ${cmpId}" echo "Execution tests submitted as LSF job ${exeId}" - + else #------------------------------------------------------------------------- - # Compile tests only will run if scheduler = none + # Exit with error #------------------------------------------------------------------------- - - # Run compilation tests echo "" - echo "Compiliation tests are running..." - ${scriptsDir}/integrationTestCompile.sh & + echo "ERROR! Invalid choice of arguments!" + echo "${usage}" + exit 1 fi diff --git a/test/integration/GCHP/integrationTestCompile.sh b/test/integration/GCHP/integrationTestCompile.sh index 18b5eab66..3dabad85e 100755 --- a/test/integration/GCHP/integrationTestCompile.sh +++ b/test/integration/GCHP/integrationTestCompile.sh @@ -49,10 +49,11 @@ envDir="${itRoot}/${ENV_DIR}" codeDir="${itRoot}/CodeDir" logsDir="${itRoot}/${LOGS_DIR}" scriptsDir="${itRoot}/${SCRIPTS_DIR}" +site=$(get_site_name) # Load the user-environment and the software environment -. ~/.bashrc > /dev/null 2>&1 -. ${envDir}/gchp.env > /dev/null 2>&1 +. ~/.bashrc > /dev/null 2>&1 +[[ "X${site}" == "XCANNON" ]] && . ${envDir}/gcclassic.env > /dev/null 2>&1 # All integration tests will use debugging features baseOptions="-DCMAKE_BUILD_TYPE=Debug -DRUNDIR='' -DINSTALLCOPY=${binDir}" @@ -72,33 +73,33 @@ scheduler="none" [[ "x${SLURM_JOBID}" != "x" ]] && scheduler="SLURM" [[ "x${LSB_JOBID}" != "x" ]] && scheduler="LSF" -if [[ "x${scheduler}" == "xSLURM" ]]; then +if [[ "X${SLURM_JOBID}" != "X" ]]; then - #----------------------- - # SLURM settings - #----------------------- + #---------------------------------- + # SLURM settings (Harvard Cannon) + #---------------------------------- # Set OMP_NUM_THREADS to the same # of cores requested with #SBATCH -c export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${LSB_JOBID}" != "X" ]]; then - #----------------------- - # LSF settings - #----------------------- + #---------------------------------- + # LSF settings (WashU Compute1) + #---------------------------------- # Set OMP_NUM_THREADS to the same # of cores requested with #BSUB -n - export OMP_NUM_THREADS=${$LSB_DJOB_NUMPROC} + export OMP_NUM_THREADS=${LSB_DJOB_NUMPROC} else - #----------------------- + #---------------------------------- # Interactive settings - #----------------------- + #---------------------------------- # For AWS, set $OMP_NUM_THREADS to the available cores kernel=$(uname -r) - [[ "x${kernel}" == "xaws" ]] && export OMP_NUM_THREADS=$(nproc) + [[ "X${kernel}" == "Xaws" ]] && export OMP_NUM_THREADS=$(nproc) fi @@ -130,9 +131,9 @@ print_to_log "HEMCO #${head_hco}" "${results}" print_to_log "" "${results}" print_to_log "Number of compilation tests: ${numTests}" "${results}" print_to_log "" "${results}" -if [[ "x${scheduler}" == "xSLURM" ]]; then +if [[ "X${SLURM_JOBID}" != "X" ]]; then print_to_log "Submitted as SLURM job: ${SLURM_JOBID}" "${results}" -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${LSB_JOBID}" != "X" ]]; then print_to_log "Submitted as LSF job: ${LSB_JOBID}" "${results}" else print_to_log "Submitted as interactive job" "${results}" @@ -202,7 +203,7 @@ if [[ "x${passed}" == "x${numTests}" ]]; then # Run execution tests interactively # (This job has already been submitted as a dependency in SLURM/LSF) - if [[ "x${scheduler}" == "xnone" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "x${LSB_JOBID}" == "X" ]]; then echo "" echo "Compilation tests finished!" ${scriptsDir}/integrationTestExecute.sh & @@ -213,7 +214,7 @@ else #--------------------------- # Unsuccessful compilation #--------------------------- - if [[ "x${scheduler}" == "xnone" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "x${LSB_JOBID}" == "X" ]]; then echo "" echo "Compilation tests failed! Exiting..." fi diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index 585e2b8be..551da98f3 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -12,8 +12,8 @@ #\\ #\\ # !CALLING SEQUENCE: -# ./integrationTestCreate.sh /path/to/int/test/root /path/to/env-file -# ./integrationTestCreate.sh /path/to/int/test/root /path/to/env-file quick=1 +# ./integrationTestCreate.sh /path/to/root /path/to/env-file tests-to-run +# ./integrationTestCreate.sh /path/to/root /path/to/env-file tests-to-run quick=1 #EOP #------------------------------------------------------------------------------ #BOC @@ -29,19 +29,19 @@ if [[ "x${itRoot}" == "x" ]]; then exit 1 fi -# Environment file +# Environment file (for Harvard Cannon only) +site=$(get_site_name) envFile="${2}" -if [[ "x${envFile}" == "x" ]]; then - echo "ERROR: The enviroment file (w/ module loads) has not been specified!" - exit 1 -fi -if [[ ! -f "${envFile}" ]]; then - echo "ERROR: The enviroment file is not a valid file!" - exit 1 +if [[ "X${site}" == "XCANNON" ]]; then + [[ "X${envFile}" == "X" ]] && envFile=$(get_default_gcc_env_file) + if [[ ! -f ${envFile} ]]; then + echo "ERROR: The enviroment file is not a valid file!" + exit 1 + fi fi -# Run a compile-only integration test? -compileOnly="${3}" +# Type of tests to run? +testsToRun="${3}" # Run a short integration test? quick="${4}" @@ -130,9 +130,11 @@ printf "Creating scripts directory ${scriptsDir}\n" mkdir -p "${scriptsDir}" # Subdir for run directories -printf "Creating rundirs directory ${rundirsDir}\n" -mkdir -p "${rundirsDir}" - +if [[ "x${testsToRun}" == "xALL" ]]; then + printf "Creating rundirs directory ${rundirsDir}\n" + mkdir -p "${rundirsDir}" +fi + # Create a symbolic link to the code from the Integration Test root folder printf "Linking to superproject ${itRoot}/CodeDir\n" ln -s "${superProjectDir}" ${itRoot}/CodeDir @@ -157,7 +159,7 @@ log="${logsDir}/createIntegrationTests.log" #============================================================================= # Don't create run directories for compile-only tests. #============================================================================= -if [[ "x${compileOnly}" == "xno" ]]; then +if [[ "X${testsToRun}" == "XALL" ]]; then # Switch to folder where rundir creation scripts live cd "${geosChemDir}/run/GCHP" @@ -178,7 +180,7 @@ if [[ "x${compileOnly}" == "xno" ]]; then #create_rundir "12\n1\n${rundirsDir}\n\nn\n" "${log}" # DEBUG: Exit after creating a couple of rundirs if $quick is "yes" - if [[ "x${quick}" == "xyes" ]]; then + if [[ "X${quick}" == "XYES" ]]; then cd ${thisDir} exit 0 fi diff --git a/test/integration/GCHP/integrationTestExecute.sh b/test/integration/GCHP/integrationTestExecute.sh index 3f835308f..4d4f9688f 100755 --- a/test/integration/GCHP/integrationTestExecute.sh +++ b/test/integration/GCHP/integrationTestExecute.sh @@ -49,10 +49,11 @@ envDir="${itRoot}/${ENV_DIR}" codeDir="${itRoot}/CodeDir" logsDir="${itRoot}/${LOGS_DIR}" rundirsDir="${itRoot}/${RUNDIRS_DIR}" +site=$(get_site_name) # Load the environment and the software environment -. ~/.bashrc > /dev/null 2>&1 -. ${envDir}/gchp.env > /dev/null 2>&1 +. ~/.bashrc > /dev/null 2>&1 +[[ "X${site}" == "XCANNON" ]] && . ${envDir}/gcclassic.env > /dev/null 2>&1 # Get the Git commit of the superproject and submodules head_gchp=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ @@ -64,26 +65,25 @@ head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ git -C "${codeDir}/src/GCHP_GridComp/HEMCO_GridComp/HEMCO" \ log --oneline --no-decorate -1) -# Determine the scheduler from the job ID (or lack of one) -scheduler="none" -[[ "x${SLURM_JOBID}" != "x" ]] && scheduler="SLURM" -[[ "x${LSB_JOBID}" != "x" ]] && scheduler="LSF" +# Site-specific settings +if [[ "X${site}" == "XCANNON" && "X${SLURM_JOBID}" != "X" ]]; then -if [[ "x${scheduler}" == "xSLURM" ]]; then + #---------------------------------- + # SLURM settings (Harvard Cannon) + #---------------------------------- - #--------------------------------- - # Run via SLURM (Harvard Cannon) - #--------------------------------- - - # Cannon-specific setting to get around connection issues at high # cores - export OMPI_MCL_btl=openib + # Set OMP_NUM_THREADS to the same # of cores requested with #SBATCH -c + export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${site}" == "XCOMPUTE1" && "X${LSB_JOBID}" != "X" ]]; then #--------------------------------- - # Run via LSF (WashU Compute1) + # LSF settings (WashU Compute1) #--------------------------------- + # Set OMP_NUM_THREADS to the same # of cores requested with #BSUB -n + export OMP_NUM_THREADS=${LSB_DJOB_NUMPROC} + # Unlimit resources to prevent OS killing GCHP due to resource usage/ # Alternatively you can put this in your environment file. ulimit -c 0 # coredumpsize @@ -91,16 +91,18 @@ elif [[ "x${scheduler}" == "xLSF" ]]; then ulimit -u 50000 # maxproc ulimit -v unlimited # vmemoryuse ulimit -s unlimited # stacksize - + else #--------------------------------- - # Run interactively + # Interactive settings #--------------------------------- + echo "" + echo "Execution tests running..." # For AWS, set $OMP_NUM_THREADS to the available cores kernel=$(uname -r) - [[ "x${kernel}" == "xaws" ]] && export OMP_NUM_THREADS=$(nproc) + [[ "X${kernel}" == "Xaws" ]] && export OMP_NUM_THREADS=$(nproc) fi @@ -132,9 +134,9 @@ print_to_log "HEMCO #${head_hco}" "${results}" print_to_log "" "${results}" print_to_log "Number of execution tests: ${numTests}" "${results}" print_to_log "" "${results}" -if [[ "x${scheduler}" == "xSLURM" ]]; then +if [[ "X${SLURM_JOBID}" != "X" ]]; then print_to_log "Submitted as SLURM job: ${SLURM_JOBID}" "${results}" -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${LSB_JOBID}" == "XCOMPUTE1" ]]; then print_to_log "Submitted as LSF job: ${LSB_JOBID}" "${results}" else print_to_log "Submitted as interactive job" "${results}" @@ -194,7 +196,7 @@ for runDir in *; do # on Compute1. We will later replace this test with # a test on the site name instead of on the scheduler. # TODO: Test on name rather than scheduler - if [[ "x${scheduler}" == "xLSF" ]]; then + if [[ "X${site}" == "XCOMPUTE1" ]]; then chmod 755 -R "${runAbsPath}" fi @@ -218,7 +220,7 @@ for runDir in *; do done # Run GCHP and evenly distribute tasks across nodes - if [[ "x${scheduler}" == "xSLURM" ]]; then + if [[ "X${site}" == "XCANNON" && "X${SLURM_JOBID}" != "X" ]]; then #--------------------------------------------- # Executing GCHP on SLURM (Harvard Cannon) @@ -239,7 +241,7 @@ for runDir in *; do srun -n ${coreCt} -N ${SLURM_NNODES} -m plane=${planeCt} \ --mpi=pmix ./${exeFile} >> "${log}" 2>&1 - elif [[ "x${scheduler}" == "xLSF" ]]; then + elif [[ "X${scheduler}" == "xLSF" && "X${LSB_JOBID}" != "X" ]]; then #--------------------------------------------- # Executing GCHP on LSF (WashU Compute1) @@ -305,14 +307,14 @@ print_to_log "Execution tests failed: ${failed}" ${results} print_to_log "Execution tests not yet completed: ${remain}" ${results} # Check if all tests passed -if [[ "x${passed}" == "x${numTests}" ]]; then +if [[ "X${passed}" == "X${numTests}" ]]; then print_to_log "" ${results} print_to_log "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" ${results} print_to_log "%%% All execution tests passed! %%%" ${results} print_to_log "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" ${results} # Print success (if interactive) - if [[ "x${SLURM_JOBID}" == "x" && "x${LSB_JOBID}" == "x" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "X${LSB_JOBID}" == "X" ]]; then echo "" echo "Execution tests finished!" fi @@ -322,7 +324,7 @@ else #-------------------------- # Unsuccessful execution #-------------------------- - if [[ "x${SLURM_JOBID}" == "x" && "x${LSB_JOBID}" == "x" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "X${LSB_JOBID}" == "X" ]]; then echo "" echo "Execution tests failed! Exiting ..." fi From 1f557d25c6d6c8ead2c7c33530b24679b0ba7889 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 11 Mar 2024 16:51:12 -0400 Subject: [PATCH 137/331] Get the site name before parsing arguments in integrationTestCompile.sh test/integration/GCClassic/integrationTestCreate.sh test/integration/GCHP/integrationTestCreate.sh - Define the $thisDir variable and source commonFunctionsForTests.sh before parsing the input arguments. This allows us to use only error-check the environment file argument for Harvard Cannon. test/integration/GCClassic/integrationTestCompile.sh - Removed extraneous space in an if block Signed-off-by: Bob Yantosca --- .../GCClassic/integrationTestCompile.sh | 2 +- .../GCClassic/integrationTestCreate.sh | 21 +++++++++-------- .../integration/GCHP/integrationTestCreate.sh | 23 +++++++++++-------- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/test/integration/GCClassic/integrationTestCompile.sh b/test/integration/GCClassic/integrationTestCompile.sh index bc0c7da7c..9044b430e 100755 --- a/test/integration/GCClassic/integrationTestCompile.sh +++ b/test/integration/GCClassic/integrationTestCompile.sh @@ -206,7 +206,7 @@ else #--------------------------- # Unsuccessful compilation #--------------------------- - if [[ "X${SLURM_JOBID}" == "X" && "x${LSB_JOBID}" == "X" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "x${LSB_JOBID}" == "X" ]]; then echo "" echo "Compilation tests failed! Exiting..." fi diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index 483f103aa..43a491075 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -19,7 +19,18 @@ #BOC #============================================================================= -# Arguments +# Load common functions +#============================================================================= + +# Current directory +thisDir=$(pwd -P) +cd "${thisDir}" + +# Source the script containing utility functions and variables +. "${thisDir}../../shared/commonFunctionsForTests.sh" + +#============================================================================= +# Parse input arguments #============================================================================= # Integration test root folder @@ -50,10 +61,6 @@ quick="${4}" # Global variable and function definitions #============================================================================= -# Current directory -thisDir=$(pwd -P) -cd "${thisDir}" - # GCClassic superproject directory (absolute paths) cd ../../../../../ superProjectDir=$(pwd -P) @@ -71,10 +78,6 @@ head_gc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ git -C "${hemcoDir}" log --oneline --no-decorate -1) -# Source the script containing utility functions and variables -commonFuncs="${geosChemDir}/test/shared/commonFunctionsForTests.sh" -. "${commonFuncs}" - # Echo header printf "${SEP_MAJOR}\n" printf "Creating GEOS-Chem Classic Integration Tests\n\n" diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index 551da98f3..ed2f4cdbd 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -19,7 +19,18 @@ #BOC #============================================================================= -# Arguments +# Load common functions +#============================================================================= + +# Current directory +thisDir=$(pwd -P) +cd "${thisDir}" + +# Source the script containing utility functions and variables +. "${thisDir}../../shared/commonFunctionsForTests.sh" + +#============================================================================= +# Parse input arguments #============================================================================= # Integration test root folder @@ -50,10 +61,6 @@ quick="${4}" # Global variable and function definitions #============================================================================= -# Current directory -thisDir=$(pwd -P) -cd ${thisDir} - # GCClassic superproject directory cd ../../../../../../../ superProjectDir=$(pwd -P) @@ -71,10 +78,6 @@ head_gc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ git -C "${hemcoDir}" log --oneline --no-decorate -1) -# Source the script containing utility functions and variables -commonFuncs="${geosChemDir}/test/shared/commonFunctionsForTests.sh" -. "${commonFuncs}" - # Echo header printf "${SEP_MAJOR}\n" printf "Creating GCHP Integration Tests\n\n" @@ -84,7 +87,7 @@ printf "HEMCO #${head_hco}\n" printf "${SEP_MAJOR}\n" #============================================================================= -# Initial setup of integration test directory +# Create integration test folder and subdirectories #============================================================================= # Create integration test root folder if it doesn't exist From 58cba3538990eef789c7ccd89bf1408e4a25f1df Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 11 Mar 2024 17:02:08 -0400 Subject: [PATCH 138/331] Bug fix, add missing "/" in integrationTestCreate.sh test/integration/GCClassic/integrationTestCreate.sh test/integration/GCHP/integrationTestCreate.sh - Added a missing "/" after ${testDir}, in the command to source the commonFunctionsForTests.sh script. Signed-off-by: Bob Yantosca --- test/integration/GCClassic/integrationTestCreate.sh | 2 +- test/integration/GCHP/integrationTestCreate.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index 43a491075..01ac2c670 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -27,7 +27,7 @@ thisDir=$(pwd -P) cd "${thisDir}" # Source the script containing utility functions and variables -. "${thisDir}../../shared/commonFunctionsForTests.sh" +. "${thisDir}/../../shared/commonFunctionsForTests.sh" #============================================================================= # Parse input arguments diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index ed2f4cdbd..1c76f56f8 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -27,7 +27,7 @@ thisDir=$(pwd -P) cd "${thisDir}" # Source the script containing utility functions and variables -. "${thisDir}../../shared/commonFunctionsForTests.sh" +. "${thisDir}/../../shared/commonFunctionsForTests.sh" #============================================================================= # Parse input arguments From 053942b08f8a1aca82528cd051b7a7946dcb4382 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 11 Mar 2024 17:21:48 -0400 Subject: [PATCH 139/331] Bug fix: restore deleted $commonFuncs variable test/integration/GCClassic/integrationTestCreate.sh test/integration/GCHP/integrationTest.sh - Now save the path to the commonFunctionsForTests.sh in the bash variable $commonFuncs. This is used later in the script, removing it caused an error. - Also, only copy the environment file to the integration test root directory structure for Harvard Cannon. Signed-off-by: Bob Yantosca --- test/integration/GCClassic/integrationTestCreate.sh | 7 +++++-- test/integration/GCHP/integrationTestCreate.sh | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index 01ac2c670..3bdfa4db9 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -27,7 +27,8 @@ thisDir=$(pwd -P) cd "${thisDir}" # Source the script containing utility functions and variables -. "${thisDir}/../../shared/commonFunctionsForTests.sh" +commonFuncs="${thisDir}/../../shared/commonFunctionsForTests.sh" +. "${commonFuncs}" #============================================================================= # Parse input arguments @@ -147,12 +148,14 @@ ln -s "${superProjectDir}" ${itRoot}/CodeDir #============================================================================= printf "\nCopying run scripts to: ${itRoot}/${SCRIPTS_DIR}\n" -cp -f ${envFile} ${envDir}/gcclassic.env cp -f ${thisDir}/integration*.sh ${scriptsDir} cp -f ${commonFuncs} ${scriptsDir} cp -f ${thisDir}/README.md ${scriptsDir} cp -f ${thisDir}/README.testroot.md ${itRoot}/README.md +# Only copy the environment file for Harvard Cannon +[[ "X${site}" == "XCANNON" ]] && cp -f ${envFile} ${envDir}/gcclassic.env + # This is necessary on Compute1 to make all scripts executable chmod 755 -R ${scriptsDir} diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index 1c76f56f8..831181f2e 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -27,7 +27,8 @@ thisDir=$(pwd -P) cd "${thisDir}" # Source the script containing utility functions and variables -. "${thisDir}/../../shared/commonFunctionsForTests.sh" +commonFuncs="${thisDir}/../../shared/commonFunctionsForTests.sh" +. "${commonFuncs}" #============================================================================= # Parse input arguments @@ -147,12 +148,14 @@ ln -s "${superProjectDir}" ${itRoot}/CodeDir #============================================================================= printf "\nCopying run scripts to: ${itRoot}/${SCRIPTS_DIR}\n" -cp -f ${envFile} ${envDir}/gchp.env cp -f ${thisDir}/integration*.sh ${scriptsDir} cp -f ${commonFuncs} ${scriptsDir} cp -f ${thisDir}/README.md ${scriptsDir} cp -f ${thisDir}/README.testroot.md ${itRoot}/README.md +# Only copy the environment file for Harvard CannonO +[[ "X${site}" == "XCANNON" ]] && cp -f ${envFile} ${envDir}/gchp.env + # This is necessary on Compute1 to make all scripts executable chmod 755 -R ${scriptsDir} From 864db36093aa5e3417e78e15a56e4438e2b19eb0 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 11 Mar 2024 17:38:31 -0400 Subject: [PATCH 140/331] Fixed typo "gchp" -> "gcclassic" in GCHP integration test scripts test/integration/GCHP/integrationTestCompile.sh test/integration/GCHP/integrationTestExecute.sh - Now wource the gchp.env file instead of gcclassic.env, which is the wrong environment file. For Harvard Cannon only. test/integration/GCHP/integrationTestCreate.sh - Removed extraneous "0" character in comment Signed-off-by: Bob Yantosca --- test/integration/GCHP/integrationTestCompile.sh | 2 +- test/integration/GCHP/integrationTestCreate.sh | 2 +- test/integration/GCHP/integrationTestExecute.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/integration/GCHP/integrationTestCompile.sh b/test/integration/GCHP/integrationTestCompile.sh index 3dabad85e..94080e0ec 100755 --- a/test/integration/GCHP/integrationTestCompile.sh +++ b/test/integration/GCHP/integrationTestCompile.sh @@ -53,7 +53,7 @@ site=$(get_site_name) # Load the user-environment and the software environment . ~/.bashrc > /dev/null 2>&1 -[[ "X${site}" == "XCANNON" ]] && . ${envDir}/gcclassic.env > /dev/null 2>&1 +[[ "X${site}" == "XCANNON" ]] && . ${envDir}/gchp.env > /dev/null 2>&1 # All integration tests will use debugging features baseOptions="-DCMAKE_BUILD_TYPE=Debug -DRUNDIR='' -DINSTALLCOPY=${binDir}" diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index 831181f2e..10e303a9c 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -153,7 +153,7 @@ cp -f ${commonFuncs} ${scriptsDir} cp -f ${thisDir}/README.md ${scriptsDir} cp -f ${thisDir}/README.testroot.md ${itRoot}/README.md -# Only copy the environment file for Harvard CannonO +# Only copy the environment file for Harvard Cannon [[ "X${site}" == "XCANNON" ]] && cp -f ${envFile} ${envDir}/gchp.env # This is necessary on Compute1 to make all scripts executable diff --git a/test/integration/GCHP/integrationTestExecute.sh b/test/integration/GCHP/integrationTestExecute.sh index 4d4f9688f..0c04ca969 100755 --- a/test/integration/GCHP/integrationTestExecute.sh +++ b/test/integration/GCHP/integrationTestExecute.sh @@ -53,7 +53,7 @@ site=$(get_site_name) # Load the environment and the software environment . ~/.bashrc > /dev/null 2>&1 -[[ "X${site}" == "XCANNON" ]] && . ${envDir}/gcclassic.env > /dev/null 2>&1 +[[ "X${site}" == "XCANNON" ]] && . ${envDir}/gchp.env > /dev/null 2>&1 # Get the Git commit of the superproject and submodules head_gchp=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ From 0f37d92f9a085dd994f99ba121f9dbbecd41f53f Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 11 Mar 2024 18:26:56 -0400 Subject: [PATCH 141/331] Update parallel test scripts for consistency w/ integration tests test/parallel/GCClassic/parallelTest.sh test/parallel/GCClassic/parallelTestCompile.sh test/parallel/GCClassic/parallelTestCreate.sh test/parallel/GCClassic/parallelTestEcxecute.sh - Make the corresponding code refactoring updates as w/ int tests test/integration/GCClassic/README.md test/integration/GCHP/README.md - Fixed typo, "--tests-to-run partition" -> "--tests-to-run" test/integration/GCClassic/integrationTest.sh test/integration/GCHP/integrationTest.sh - Updated comments test/integration/GCClassic/integrationTestCompile.sh test/integration/GCHP/integrationTestCompile.sh - Now also use test for $site in IF blocks that set OMP_NUM_THREADS - Remove leftover code that set the $scheduler variable test/integration/GCHP/integrationTestCreate.sh - Bug fix: call get_default_gchp_env_file (not get_default_gcc_env_file) test/parallel/GCClassic/README.md CHANGELOG.md - Updated accordingly --- CHANGELOG.md | 4 +- test/integration/GCClassic/README.md | 2 +- test/integration/GCClassic/integrationTest.sh | 8 +- .../GCClassic/integrationTestCompile.sh | 5 +- test/integration/GCHP/README.md | 2 +- test/integration/GCHP/integrationTest.sh | 8 +- .../GCHP/integrationTestCompile.sh | 10 +- .../integration/GCHP/integrationTestCreate.sh | 2 +- test/parallel/GCClassic/README.md | 79 ++++--- test/parallel/GCClassic/parallelTest.sh | 147 ++++++------- .../parallel/GCClassic/parallelTestCompile.sh | 23 +-- test/parallel/GCClassic/parallelTestCreate.sh | 195 ++++++++++-------- .../parallel/GCClassic/parallelTestExecute.sh | 40 ++-- 13 files changed, 276 insertions(+), 249 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0366a772..2433243a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,8 +21,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Add `#SBATCH -c 1` to GCHP integration test scripts and sample run scripts for Harvard Cannon - In GCC/GCHP integration tests, passing `-s none` will run compile-only tests. Query user to proceed or to exit. - GCC/GCHP integration tests will exit immediately if `scheduler` is omitted. -- Don't create integration test run directories for compile-only tests -- Refactor integration test scripts to reduce the number of input arguments +- Don't create run directories for integration/parallel tests if invoked with `-t compile` +- Refactor integration and parallel test scripts to reduce the number of input arguments ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/test/integration/GCClassic/README.md b/test/integration/GCClassic/README.md index 532af655f..c52a401f4 100644 --- a/test/integration/GCClassic/README.md +++ b/test/integration/GCClassic/README.md @@ -64,7 +64,7 @@ You can also use long names for the option switches: - `--env-file` instead of `-e` - `--help` instead of `h` - `--no-bootstrap` instead of `n` -- `--tests-to-run partition` instead of `-t` +- `--tests-to-run` instead of `-t` ## Examples diff --git a/test/integration/GCClassic/integrationTest.sh b/test/integration/GCClassic/integrationTest.sh index 1c56d59bd..9fbea8255 100755 --- a/test/integration/GCClassic/integrationTest.sh +++ b/test/integration/GCClassic/integrationTest.sh @@ -40,7 +40,7 @@ # Initialize #============================================================================= this="$(basename ${0})" -usage="Usage: ${this} -d root-dir -t compile|all -s cannon|compute1 [-e env-file] [-h] [-q]" +usage="Usage: ${this} -d root-dir -t compile|all [-e env-file] [-h] [-n] [-q]" quick="NO" bootStrap="YES" @@ -101,7 +101,7 @@ while [ : ]; do shift ;; - # -s or --tests-to-run specifies the type of tests to run + # -t or --tests-to-run specifies the type of tests to run -t | --tests-to-run) testsToRun="${2^^}" shift 2 @@ -208,7 +208,7 @@ if [[ "X${testsToRun}" == "XCOMPILE" ]]; then elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCANNON" ]]; then #------------------------------------------------------------------------- - # Compile execution tests on Harvard Cannon (using SLURM scheduler) + # Compilation & execution tests on Harvard Cannon (via SLURM) #------------------------------------------------------------------------- # Remove LSF #BSUB tags @@ -255,7 +255,7 @@ elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCANNON" ]]; then elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCOMPUTE1" ]]; then #------------------------------------------------------------------------- - # Compile and execution tests on WashU Compute1 (via LSF) + # Compilation and execution tests on WashU Compute1 (via LSF) #------------------------------------------------------------------------- # Remove SLURM #SBATCH tags diff --git a/test/integration/GCClassic/integrationTestCompile.sh b/test/integration/GCClassic/integrationTestCompile.sh index 9044b430e..97edbf507 100755 --- a/test/integration/GCClassic/integrationTestCompile.sh +++ b/test/integration/GCClassic/integrationTestCompile.sh @@ -66,7 +66,8 @@ head_gc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ git -C "${codeDir}/src/HEMCO" log --oneline --no-decorate -1) -if [[ "X${SLURM_JOBID}" != "X" ]]; then +# Site-specific settings +if [[ "X${site}" == "XCANNON" && "X${SLURM_JOBID}" != "X" ]]; then #---------------------------------- # SLURM settings (Harvard Cannon) @@ -75,7 +76,7 @@ if [[ "X${SLURM_JOBID}" != "X" ]]; then # Set OMP_NUM_THREADS to the same # of cores requested with #SBATCH -c export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} -elif [[ "X${LSB_JOBID}" != "X" ]]; then +elif [[ "X${site}" == "XCOMPUTE1" && "X${LSB_JOBID}" != "X" ]]; then #---------------------------------- # LSF settings (WashU Compute1) diff --git a/test/integration/GCHP/README.md b/test/integration/GCHP/README.md index d60f9cbbe..e85c349f5 100644 --- a/test/integration/GCHP/README.md +++ b/test/integration/GCHP/README.md @@ -64,7 +64,7 @@ You can also use long names for the option switches: - `--env-file` instead of `-e` - `--help` instead of `h` - `--no-bootstrap` instead of `n` -- `--tests-to-run partition` instead of `-t` +- `--tests-to-run` instead of `-t` ## Examples diff --git a/test/integration/GCHP/integrationTest.sh b/test/integration/GCHP/integrationTest.sh index 717edf177..5a740d033 100755 --- a/test/integration/GCHP/integrationTest.sh +++ b/test/integration/GCHP/integrationTest.sh @@ -40,7 +40,7 @@ # Initialize #============================================================================= this="$(basename ${0})" -usage="Usage: ${this} -d root-dir -t compile|all -s cannon|compute1 [-e env-file] [-h] [-q]" +usage="Usage: ${this} -d root-dir -t compile|all [-e env-file] [-h] [-n] [-q]" quick="NO" bootStrap="YES" @@ -101,7 +101,7 @@ while [ : ]; do shift ;; - # -s or --tests-to-run specifies the type of tests to run + # -t or --tests-to-run specifies the type of tests to run -t | --tests-to-run) testsToRun="${2^^}" shift 2 @@ -206,7 +206,7 @@ if [[ "x${testsToRun}" == "xCOMPILE" ]]; then elif [[ "x${testsToRun}" == "xALL" && "x${site}" == "xCANNON" ]]; then #------------------------------------------------------------------------- - # Compile and execution tests on Harvard Cannon (via SLURM) + # Compilation & execution tests on Harvard Cannon (via SLURM) #------------------------------------------------------------------------- # Remove LSF #BSUB tags @@ -252,7 +252,7 @@ elif [[ "x${testsToRun}" == "xALL" && "x${site}" == "xCANNON" ]]; then elif [[ "x${testsToRun}" == "xALL" && "x${site}" == "xCOMPUTE1" ]]; then #------------------------------------------------------------------------- - # Compile and execution tests on WashU Compute1 (via LSF) + # Compilation and execution tests on WashU Compute1 (via LSF) #------------------------------------------------------------------------- # Remove SLURM #SBATCH tags diff --git a/test/integration/GCHP/integrationTestCompile.sh b/test/integration/GCHP/integrationTestCompile.sh index 94080e0ec..6efc716f7 100755 --- a/test/integration/GCHP/integrationTestCompile.sh +++ b/test/integration/GCHP/integrationTestCompile.sh @@ -68,12 +68,8 @@ head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ git -C "${codeDir}/src/GCHP_GridComp/HEMCO_GridComp/HEMCO" \ log --oneline --no-decorate -1) -# Determine the scheduler from the job ID (or lack of one) -scheduler="none" -[[ "x${SLURM_JOBID}" != "x" ]] && scheduler="SLURM" -[[ "x${LSB_JOBID}" != "x" ]] && scheduler="LSF" - -if [[ "X${SLURM_JOBID}" != "X" ]]; then +# Site-specific settings +if [[ "X${site}" == "XCANNON" && "X${SLURM_JOBID}" != "X" ]]; then #---------------------------------- # SLURM settings (Harvard Cannon) @@ -82,7 +78,7 @@ if [[ "X${SLURM_JOBID}" != "X" ]]; then # Set OMP_NUM_THREADS to the same # of cores requested with #SBATCH -c export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} -elif [[ "X${LSB_JOBID}" != "X" ]]; then +elif [[ "X${site}" == "XCOMPUTE1" && "X${LSB_JOBID}" != "X" ]]; then #---------------------------------- # LSF settings (WashU Compute1) diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index 10e303a9c..91dea4702 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -45,7 +45,7 @@ fi site=$(get_site_name) envFile="${2}" if [[ "X${site}" == "XCANNON" ]]; then - [[ "X${envFile}" == "X" ]] && envFile=$(get_default_gcc_env_file) + [[ "X${envFile}" == "X" ]] && envFile=$(get_default_gchp_env_file) if [[ ! -f ${envFile} ]]; then echo "ERROR: The enviroment file is not a valid file!" exit 1 diff --git a/test/parallel/GCClassic/README.md b/test/parallel/GCClassic/README.md index 568d4722d..4dbab4102 100644 --- a/test/parallel/GCClassic/README.md +++ b/test/parallel/GCClassic/README.md @@ -2,7 +2,15 @@ ## Overview: -This directory contains scripts to submit automated GEOS-Chem Classic parallelization tests. Parallelization tests are two short GEOS-Chem Classic simulations run using different numbers of computational cores. Executables are run with all debugging options. This should reveal any errors in OpenMP parallel DO loops. +This directory contains: + +1. Scripts to submit automated GEOS-Chem Classic parallelization tests, which will test the following processes: + + - GEOS-Chem Classic run directory creation + - GEOS-Chem Classic code configuration and compilation + - GEOS-Chem Classic execution + +Parallelization tests are short GEOS-Chem Classic simulations. Executables are compiled with all debugging options. This should reveal any coding errors or run-directory configuration errors. ## Files @@ -22,57 +30,62 @@ This directory contains scripts to submit automated GEOS-Chem Classic paralleliz - `commonFunctionsForTests.sh` - Link to `../../shared/commonFunctionsForTests.sh`, which contains global variables and functions for the parallelization and parallelization tests. -## Running GEOS-Chem Classic Parallelization Tests +## Before you begin -Before you submit any GEOS-Chem Classic parallelization tests, please take a moment to: +Please take a moment to: 1. Verify that the `GCClassic` superproject is checked out to the correct branch and commit. 2. Run `git submodule update --init --recursive` in order to update all submodules. 3. Verify that the `HEAD` commit of the `GEOS-Chem` submodule contains the code that you wish to test. (If not, then check out the proper branch.) 4. Verify that the `HEAD` commit of the `HEMCO` submodule contains the code that you wish to test. (If not, then check out the proper branch.) -### With the SLURM scheduler +## Command-line Arguments + +The parallelization test scripts accept the following command-line arguments: + +### Required arguments + +`-d /path/to/test/dir` specifies the root directory where parallelization test subdirectories and scripts will be placed. + +`-t compile|all` specifies the type of test to be run: + - `compile` will run compilation-only tests. + - `all` will run compilation and execution tests. + +### Optional arguments + +`-e /path/to/env-file` Specifies the file that is used to initialize the software environment on the Harvard Cannon cluster. If omitted, a default file will be selected. + +`-h` displays a help screeen. + +`-q` will run only a couple of parallelization tests instead of the full suite. This is intended for development and debugging. You will normally not need to use this option. + +You can also use long names for the option switches: +- `--directory` instead of `-d` +- `--env-file` instead of `-e` +- `--help` instead of `h` +- `--tests-to-run` instead of `-t` + +## Examples +### Request compile-only tests on Cannon or Compute1 ```console $ cd /path/to/GCClassic # Path to GCClassic superproject directory $ cd test/parallel/GCClassic -$ ./parallelTest.sh -d /path/to/test/dir -e /path/to/env-file -s slurm -p partition +$ ./parallelTest.sh -d /path/to/test/dir -t compile ``` -### With the LSF scheduler - +### Request compile and execution tests (Harvard Cannon) ```console $ cd /path/to/GCClassic # Path to GCClassic superproject directory $ cd test/parallel/GCClassic -$ ./parallelTest.sh -d /path/to/test/dir -e /path/to/env-file -s lsf -p partition +$ ./parallelTest.sh -d /path/to/test/dir -t all -e /path/to/env-file ``` +NOTE: If you omit the `-e /path/to/env/file` a default environment file will be used to load GNU Compiler Collection 10 and related libraries. -### Interactively at the command line - +### Request compile & execution tests (WashU compute1) ```console $ cd /path/to/GCClassic # Path to GCClassic superproject directory $ cd test/parallel/GCClassic -$ ./parallelTest.sh -d /path/to/test/dir -e /path/to/env-file +$ ./parallelTest.sh -d /path/to/test/dir -t all ``` - -## Command-line Arguments - -The parallelization test scripts accept the following command-line arguments - -`-d /path/to/test/dir` specifies the root directory where parallelization test subdirectories and scripts will be placed. - -`-e /path/to/env-file` specifies the file that is used to initialize the software environment. This file will typically contain either `module load` or `spack load` commands. - -`-s scheduler` specifies the choice of scheduler (case-insensitive). SLURM and LSF schedulers are currently supported. You may omit this for running interactively. - -`-p partition` specifies the partition for the scheduler. You may omit this for running interactively. - -`-s` specifies that the SLURM scheduler will be used to run the parallelization test scripts. - -You can also use long names for the option switches: -- `--directory` instead of `-d` -- `--env-file` instead of `-e` -- `--partition partition` instead of `-p` -- `--scheduler scheduler` instead of `-s` - -There is an additional option (`-q` or `--quick`) that will run only a couple of parallelization tests instead of the full suite. This is intended for development and debugging. You will normally not need to use this option. +NOTE: No environment file is needed. On Compute1 the tests will run inside a software container with all necessary libraries included. diff --git a/test/parallel/GCClassic/parallelTest.sh b/test/parallel/GCClassic/parallelTest.sh index 2cb854769..5d6f9c05a 100755 --- a/test/parallel/GCClassic/parallelTest.sh +++ b/test/parallel/GCClassic/parallelTest.sh @@ -12,25 +12,26 @@ #\\ #\\ # !CALLING SEQUENCE: -# ./parallelTest.sh -d root-dir -e env-file [-h] [-p partition] [-q] [-s scheduler] +# ./parallelTest.sh -d root-dir -t compile|all [-e env-file] [-h] [-q] # -# Where the command-line arguments are as follows: +# Required arguments +# -d root-dir : Specify the root folder for integration tests +# -t compile|all : Specify the tests to run (compile-only or all) # -# -d root-dir : Specify the root folder for parallelization tests -# -e env-file : Specitify the environment file (w/ module loads) -# -h : Display a help message -# -p partition : Select partition for SLURM or LSF schedulers -# -q : Run a quick set of parallelization tests (for testing) -# -s scheduler : Specify the scheduler (SLURM or LSF) +# Optional arguments +# -e env-file : Software environment file for Harvard Cannon +# -h : Display a help message +# -n : Do not bootstrap missing restart file variables +# -q : Run a quick set of integration tests (for testing) # # NOTE: you can also use the following long name options: # -# --directory root-dir (instead of -d root-dir ) -# --env-file env-file (instead of -e env-file ) -# --help (instead of -h ) -# --partition partition (instead of -p partition) -# --quick (instead of -q ) -# --scheduler scheduler (instead of -s scheduler) +# --directory (instead of -d) +# --env-file (instead of -e) +# --help (instead of -h) +# --no-bootstrap (instead of -n) +# --quick (instead of -q) +# --tests-to-run (instead of -t) #EOP #------------------------------------------------------------------------------ #BOC @@ -39,12 +40,15 @@ # Initialize #============================================================================= this="$(basename ${0})" -usage="Usage: ${this} -d root-dir -e env-file [-h] [-p partition] [-q] [-s scheduler]" -ptRoot="none" -envFile="none" -scheduler="none" -sedCmd="none" -quick="no" +usage="Usage: ${this} -d root-dir -t compile|all [-e env-file] [-h] [-q]" +quick="NO" + +# Current directory +thisDir=$(pwd -P) +cd "${thisDir}" + +# Load common functions +. "${thisDir}/../../shared/commonFunctionsForTests.sh" #============================================================================= # Parse command-line arguments @@ -53,13 +57,14 @@ quick="no" # Call Linux getopt function to specify short & long input options # (e.g. -d or --directory, etc). Exit if not succesful -validArgs=$(getopt --options d:e:hp:qs: \ - --long directory:,env-file:,help,partition:,quick,scheduler: -- "$@") +validArgs=$(getopt --options d:e:hqt: \ + --long directory:,env-file:,help,quick,tests-to-run: -- "$@") if [[ $? -ne 0 ]]; then exit 1; fi # Parse arguments and set variables accordingly +# NOTE: Convert some inputs to uppercase to facilitate comparisons eval set -- "${validArgs}" while [ : ]; do case "${1}" in @@ -82,21 +87,15 @@ while [ : ]; do exit 1 ;; - # -p or --partition replaces REQUESTED_PARTITON w/ the user's choice - -p | --partition) - sedCmd="s/REQUESTED_PARTITION/${2}/" - shift 2 - ;; - # -q or --quick runs a quick set of parallelization tests (for testing) -q | --quick) quick="yes" shift ;; - # -s or --scheduler selects the scheduler to use - -s | --scheduler) - scheduler="${2^^}" + # -t or --tests-to-run specifies the type of tests to run + -t | --tests-to-run) + testsToRun="${2^^}" shift 2 ;; @@ -106,46 +105,42 @@ while [ : ]; do esac done -# Error check parallelization tests root path -if [[ "x${ptRoot}" == "xnone" ]]; then - echo "ERROR: The parallelization test root directory has not been specified!" - echo "${usage}" - exit 1 -fi +#============================================================================= +# Sanity-check user input +#============================================================================= -# Error check environment file -if [[ "x${envFile}" == "xnone" ]]; then - echo "ERROR: The enviroment file (module loads) has not been specified!" +# Get the site name from the node name +site=$(get_site_name) + +# Error check integration tests root path +if [[ "X${ptRoot}" == "X" ]]; then + echo "ERROR: The parallelization test root directory has not been specified!" echo "${usage}" exit 1 fi -# Exit if no partition has been selected for SLURM -if [[ "x${scheduler}" == "xSLURM" && "x${sedCmd}" == "xnone" ]]; then - echo "ERROR: You must specify a partition for SLURM." +# Error check the type of tests to run +if [[ "X${testsToRun}" == "X" ]]; then + echo "ERROR: You must specify the test type: compile|all" echo "${usage}" exit 1 fi - -# Exit if no partition has been selected for SLURM -if [[ "x${scheduler}" == "xLSF" && "x${sedCmd}" == "xnone" ]]; then - echo "ERROR: You must specify a partition for LSF." +if [[ "X${testsToRun}" != "XCOMPILE" && "X${testsToRun}" != "XALL" ]]; then + echo "ERROR: Invalid selction for tests-to-run, must be: compile|all" echo "${usage}" exit 1 fi -#============================================================================= -# Load file with utility functions to setup configuration files -#============================================================================= - -# Current directory -thisDir=$(pwd -P) +# Error checks for tests that include compile & run phases +if [[ "X${testsToRun}" == "XALL" ]]; then + + # Use the default environment file for Cannon if not specified + if [[ "X${site}" == "XCANNON" && "X${envFile}" == "X" ]]; then + envFile=$(get_default_gcc_env_file) + fi -# Load common functions -if [[ -f "../../shared/commonFunctionsForTests.sh" ]]; then - . "${thisDir}/../../shared/commonFunctionsForTests.sh" -elif [[ -f "${thisDir}/commonFunctionsForTests.sh" ]]; then - . "${thisDir}/commonFunctionsForTests.sh" + # Get the sed command that will replace the partition name + sedPartitionCmd=$(get_sed_partition_cmd_from_site "${site}") fi #============================================================================= @@ -155,8 +150,14 @@ fi # Convert parallelization test root folder to an absolute path ptRoot=$(absolute_path "${ptRoot}") +# Prevent running integration tests in the source code directory tree +if [[ "$(absolute_path ${thisDir})" =~ "${ptRoot}" ]]; then + echo "ERROR: You cannot run parallel tests in the source code directory!" + exit 1 +fi + # Create GEOS-Chem run directories in the parallelization test root folder -./parallelTestCreate.sh "${ptRoot}" "${envFile}" "${quick}" +./parallelTestCreate.sh "${ptRoot}" "${envFile}" "${testsToRun}" "${quick}" if [[ $? -ne 0 ]]; then echo "ERROR: Could not create parallelization test run directories!" exit 1 @@ -178,12 +179,21 @@ scriptsDir="${ptRoot}/${SCRIPTS_DIR}" cd "${logsDir}" #============================================================================= -# Compile the code and run the parallelization tests +# Run the tests #============================================================================= -if [[ "x${scheduler}" == "xSLURM" ]]; then +if [[ "X${testsToRun}" == "XCOMPILE" ]]; then + + #------------------------------------------------------------------------- + # Compilation-only tests (scheduler is not used) + #------------------------------------------------------------------------- + echo "" + echo "Compiliation tests are running..." + ${scriptsDir}/parallelTestCompile.sh & + +elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCANNON" ]]; then #------------------------------------------------------------------------- - # Parallelization tests will run via SLURM + # Compilation and execution tests on Harvard Cannon (via SLURM) #------------------------------------------------------------------------- # Remove LSF #BSUB tags @@ -226,10 +236,10 @@ if [[ "x${scheduler}" == "xSLURM" ]]; then echo "Compilation tests submitted as SLURM job ${cmpId}" echo "Execution tests submitted as SLURM job ${exeId}" -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCOMPUTE1" ]]; then #------------------------------------------------------------------------- - # Parallelization tests will run via LSF + # Compilation and execution tests on WashU Compute1 (via LSF) #------------------------------------------------------------------------- # Remove SLURM #SBATCH tags @@ -268,13 +278,12 @@ elif [[ "x${scheduler}" == "xLSF" ]]; then else #------------------------------------------------------------------------- - # Parallelization tests will run interactively + # Exit with error #------------------------------------------------------------------------- - - # Run compilation tests echo "" - echo "Compiliation tests are running..." - ${scriptsDir}/parallelTestCompile.sh & + echo "ERROR! Invalid choice of arguments!" + echo "${usage}" + exit 1 fi diff --git a/test/parallel/GCClassic/parallelTestCompile.sh b/test/parallel/GCClassic/parallelTestCompile.sh index 1763e8e84..351ceb5ce 100755 --- a/test/parallel/GCClassic/parallelTestCompile.sh +++ b/test/parallel/GCClassic/parallelTestCompile.sh @@ -49,10 +49,11 @@ envDir="${ptRoot}/${ENV_DIR}" codeDir="${ptRoot}/CodeDir" logsDir="${ptRoot}/${LOGS_DIR}" scriptsDir="${ptRoot}/${SCRIPTS_DIR}" +site=$(get_site_name) # Load the user-environment and the software environment -. ~/.bashrc > /dev/null 2>&1 -. ${envDir}/gcclassic.env > /dev/null 2>&1 +. ~/.bashrc > /dev/null 2>&1 +[[ "X${site}" == "XCANNON" ]] && . ${envDir}/gcclassic.env > /dev/null 2>&1 # All parallelization tests will use debugging features baseOptions="-DCMAKE_BUILD_TYPE=Debug -DRUNDIR='' -DINSTALLCOPY=${binDir}" @@ -65,12 +66,8 @@ head_gc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ git -C "${codeDir}/src/HEMCO" log --oneline --no-decorate -1) -# Determine the scheduler from the job ID (or lack of one) -scheduler="none" -[[ "x${SLURM_JOBID}" != "x" ]] && scheduler="SLURM" -[[ "x${LSB_JOBID}" != "x" ]] && scheduler="LSF" - -if [[ "x${scheduler}" == "xSLURM" ]]; then +# Scheduler-specific settings +if [[ "X${SLURM_JOBID}" != "X" ]]; then #----------------------- # SLURM settings @@ -79,7 +76,7 @@ if [[ "x${scheduler}" == "xSLURM" ]]; then # Set OMP_NUM_THREADS to the same # of cores requested with #SBATCH -c export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${LSB_JOBID}" != "X" ]]; then #----------------------- # LSF settings @@ -134,9 +131,9 @@ print_to_log "" "${results}" print_to_log "Using ${OMP_NUM_THREADS} OpenMP threads" "${results}" print_to_log "Number of compilation tests: ${numTests}" "${results}" print_to_log "" "${results}" -if [[ "x${scheduler}" == "xSLURM" ]]; then +if [[ "X${SLURM_JOBID}" != "X" ]]; then print_to_log "Submitted as SLURM job: ${SLURM_JOBID}" "${results}" -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${LSB_JOBID}" != "X" ]]; then print_to_log "Submitted as LSF job: ${LSB_JOBID}" "${results}" else print_to_log "Submitted as interactive job" "${results}" @@ -204,7 +201,7 @@ if [[ "x${passed}" == "x${numTests}" ]]; then print_to_log "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" "${results}" # Start the interactive execution test script upon successful finish - if [[ "x${scheduler}" == "xnone" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "x${LSB_JOBID}" == "X" ]]; then echo "" echo "Compilation tests finished!" ${scriptsDir}/parallelTestExecute.sh & @@ -215,7 +212,7 @@ else #--------------------------- # Unsuccessful compilation #--------------------------- - if [[ "x${scheduler}" == "xnone" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "x${LSB_JOBID}" == "X" ]]; then echo "" echo "Compilation tests failed! Exiting..." fi diff --git a/test/parallel/GCClassic/parallelTestCreate.sh b/test/parallel/GCClassic/parallelTestCreate.sh index dd9bb34ac..4f5c2f48e 100755 --- a/test/parallel/GCClassic/parallelTestCreate.sh +++ b/test/parallel/GCClassic/parallelTestCreate.sh @@ -18,28 +18,43 @@ #------------------------------------------------------------------------------ #BOC +#============================================================================= +# Load common functions +#============================================================================= + +# Current directory +thisDir=$(pwd -P) +cd "${thisDir}" + +# Source the script containing utility functions and variables +commonFuncs="${thisDir}/../../shared/commonFunctionsForTests.sh" +. "${commonFuncs}" + #============================================================================= # Arguments #============================================================================= # Parallelization test root folder ptRoot="${1}" -if [[ "x${ptRoot}" == "x" ]]; then +if [[ "X${ptRoot}" == "X" ]]; then echo "ERROR: The root-level directory for tests has not been specified!" exit 1 fi -# Environment file +# Environment file (for Harvard Cannon only) +site=$(get_site_name) envFile="${2}" -if [[ "x${envFile}" == "x" ]]; then - echo "ERROR: The enviroment file (w/ module loads) has not been specified!" - exit 1 -fi -if [[ ! -f ${envFile} ]]; then - echo "ERROR: The enviroment file is not a valid file!" - exit 1 +if [[ "X${site}" == "XCANNON" ]]; then + [[ "X${envFile}" == "X" ]] && envFile=$(get_default_gcc_env_file) + if [[ ! -f ${envFile} ]]; then + echo "ERROR: The enviroment file is not a valid file!" + exit 1 + fi fi +# Type of tests to run? +testsToRun="${3}" + # Run a short parallelization test? quick="${3}" @@ -47,10 +62,6 @@ quick="${3}" # Global variable and function definitions #============================================================================= -# Current directory -thisDir=$(pwd -P) -cd "${thisDir}" - # GCClassic superproject directory cd ../../../../../ superProjectDir=$(pwd -P) @@ -68,10 +79,6 @@ head_gc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ git -C "${hemcoDir}" log --oneline --no-decorate -1) -# Source the script containing utility functions and variables -commonFuncs="${geosChemDir}/test/shared/commonFunctionsForTests.sh" -. "${commonFuncs}" - # Echo header printf "${SEP_MAJOR}\n" printf "Creating GEOS-Chem Classic Parallelization Tests\n\n" @@ -124,8 +131,10 @@ printf "Creating scripts directory ${scriptsDir}\n" mkdir -p "${scriptsDir}" # Subdir for run directories -printf "Creating rundirs directory ${rundirsDir}\n" -mkdir -p "${rundirsDir}" +if [[ "x${testsToRun}" == "xALL" ]]; then + printf "Creating rundirs directory ${rundirsDir}\n" + mkdir -p "${rundirsDir}" +fi # Create a symbolic link to the code from the Integration Test root folder printf "Linking to superproject ${ptRoot}/CodeDir\n" @@ -136,115 +145,127 @@ ln -s "${superProjectDir}" ${ptRoot}/CodeDir #============================================================================= printf "\nCopying run scripts to: ${ptRoot}\n" -cp -f ${envFile} ${envDir}/gcclassic.env cp -f ${thisDir}/parallelTest*.sh ${scriptsDir} cp -f ${commonFuncs} ${scriptsDir} cp -f ${thisDir}/README.md ${scriptsDir} cp -f ${thisDir}/README.testroot.md ${ptRoot}/README.md +# Only copy the environment file for Harvard Cannon +[[ "X${site}" == "XCANNON" ]] && cp -f ${envFile} ${envDir}/gcclassic.env + +# This is necessary on Compute1 to make all scripts executable +chmod 755 -R ${scriptsDir} + # Log file with echoback from rundir creation log="${logsDir}/createParallelTests.log" -# Switch to folder where rundir creation scripts live -cd "${geosChemDir}/run/GCClassic" - #============================================================================= -# Create individual run directories: 4x5 - MERRA2 - 72L +# Don't create run directories for compile-only tests. #============================================================================= -printf "\nCreating new run directories:\n" +if [[ "X${testsToRun}" == "XALL" ]]; then -# 4x5 merra2 aerosol -create_rundir "2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # Switch to folder where rundir creation scripts live + cd "${geosChemDir}/run/GCClassic" -#4x5 merra2 carbon -create_rundir "12\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + #========================================================================= + # Create individual run directories: 4x5 - MERRA2 - 72L + #========================================================================= + printf "\nCreating new run directories:\n" -# 4x5 merra2 CH4 -create_rundir "3\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 aerosol + create_rundir "2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem -create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + #4x5 merra2 carbon + create_rundir "12\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# DEBUG: Exit after creating a couple of rundirs if $quick is "yes" -if [[ "x${quick}" == "xyes" ]]; then - cd ${thisDir} - exit 0 -fi + # 4x5 merra2 CH4 + create_rundir "3\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_LuoWd -dir="gc_4x5_merra2_fullchem_LuoWd" -create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" + # 4x5 merra2 fullchem + create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_aciduptake -create_rundir "1\n5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # DEBUG: Exit after creating a couple of rundirs if $quick is "yes" + if [[ "x${quick}" == "xyes" ]]; then + cd ${thisDir} + exit 0 + fi -# 4x5 merra2 fullchem_APM -create_rundir "1\n7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_LuoWd + dir="gc_4x5_merra2_fullchem_LuoWd" + create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" -# 4x5 merra2 fullchem_benchmark -create_rundir "1\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_aciduptake + create_rundir "1\n5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_complexSOA -create_rundir "1\n3\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_APM + create_rundir "1\n7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_complexSOA_SVPOA -create_rundir "1\n3\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_benchmark + create_rundir "1\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_marinePOA -create_rundir "1\n4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_complexSOA + create_rundir "1\n3\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_RRTMG -create_rundir "1\n8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_complexSOA_SVPOA + create_rundir "1\n3\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 fullchem_TOMAS15_47L -create_rundir "1\n6\n1\n1\n1\n2\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_marinePOA + create_rundir "1\n4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 Hg -create_rundir "5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_RRTMG + create_rundir "1\n8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 POPs_BaP -create_rundir "6\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_TOMAS15_47L + create_rundir "1\n6\n1\n1\n1\n2\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 tagCH4 -create_rundir "7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 Hg + create_rundir "5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 tagCO -create_rundir "8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 POPs_BaP + create_rundir "6\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 tagO3 -create_rundir "9\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 tagCH4 + create_rundir "7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 TransportTracers -create_rundir "10\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 tagCO + create_rundir "8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 TransportTracers_LuoWd -dir="gc_4x5_merra2_TransportTracers_LuoWd" -create_rundir "10\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" + # 4x5 merra2 tagO3 + create_rundir "9\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -# 4x5 merra2 metals" -create_rundir "11\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 TransportTracers + create_rundir "10\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -#============================================================================= -# Create individual run directories: 4x5 and 47L (MERRA2) -#============================================================================= + # 4x5 merra2 TransportTracers_LuoWd + dir="gc_4x5_merra2_TransportTracers_LuoWd" + create_rundir "10\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" -# 4x5 merra2 fullchem_47L" -create_rundir "1\n1\n1\n1\n2\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 metals" + create_rundir "11\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" -#============================================================================= -# Nested-grid simulations -#============================================================================= + #============================================================================= + # Create individual run directories: 4x5 and 47L (MERRA2) + #============================================================================= -# 05x0625 merra2 CH4_47L_na" -create_rundir "3\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" + # 4x5 merra2 fullchem_47L" + create_rundir "1\n1\n1\n1\n2\n${rundirsDir}\n\nn\n" "${log}" -#============================================================================= -# Cleanup and quit -#============================================================================= + #============================================================================= + # Nested-grid simulations + #============================================================================= + + # 05x0625 merra2 CH4_47L_na" + create_rundir "3\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" + +fi # Switch back to the present directory cd "${thisDir}" +#============================================================================= +# Cleanup and quit +#============================================================================= + # Free local variables unset binDir unset buildDir diff --git a/test/parallel/GCClassic/parallelTestExecute.sh b/test/parallel/GCClassic/parallelTestExecute.sh index b04de5a62..cb93532b5 100755 --- a/test/parallel/GCClassic/parallelTestExecute.sh +++ b/test/parallel/GCClassic/parallelTestExecute.sh @@ -48,10 +48,12 @@ envDir="${ptRoot}/${ENV_DIR}" codeDir="${ptRoot}/CodeDir" logsDir="${ptRoot}/${LOGS_DIR}" rundirsDir="${ptRoot}/${RUNDIRS_DIR}" +numTests=$(count_rundirs "${rundirsDir}") +site=$(get_site_name) # Load the environment and the software environment -. ~/.bashrc > /dev/null 2>&1 -. ${envDir}/gcclassic.env > /dev/null 2>&1 +. ~/.bashrc > /dev/null 2>&1 +[[ "X${site}" == "XCANNON" ]] && . ${envDir}/gcclassic.env > /dev/null 2>&1 # Get the Git commit of the superproject and submodules head_gcc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ @@ -61,18 +63,13 @@ head_gc=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ head_hco=$(export GIT_DISCOVERY_ACROSS_FILESYSTEM=1; \ git -C "${codeDir}/src/HEMCO" log --oneline --no-decorate -1) -# Determine the scheduler from the job ID (or lack of one) -scheduler="none" -[[ "x${SLURM_JOBID}" != "x" ]] && scheduler="SLURM" -[[ "x${LSB_JOBID}" != "x" ]] && scheduler="LSF" - -# Define the full number of cores to use for the parallelization tests -if [[ "x${scheduler}" == "xSLURM" ]]; then +# Site-specific settings +if [[ "X${site}" == "XCANNON" && "X${SLURM_JOBID}" != "X" ]]; then # SLURM export allThreads=${SLURM_CPUS_PER_TASK} -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${site}" == "XCOMPUTE1" && "X${LSB_JOBID}" != "X" ]]; then # LSF export allThreads=${LSB_DJOB_NUMPROC} @@ -96,13 +93,6 @@ fewerThreads=$(( ${allThreads} / 2 )) # Sanity check: Max out the OMP_STACKSIZE if it is not set [[ "x${OMP_STACKSIZE}" == "x" ]] && export OMP_STACKSIZE=500m -#============================================================================ -# Load common variables and functions for tesets -#============================================================================ - -# Count the number of tests to be run (same as the # of run directories) -numTests=$(count_rundirs "${rundirsDir}") - #============================================================================ # Initialize results logfile #============================================================================ @@ -123,9 +113,9 @@ print_to_log "1st run uses ${allThreads} OpenMP threads" "${results}" print_to_log "2nd run uses ${fewerThreads} OpenMP threads" "${results}" print_to_log "Number of parallelization tests: ${numTests}" "${results}" print_to_log "" "${results}" -if [[ "x${scheduler}" == "xSLURM" ]]; then +if [[ "X${SLURM_JOBID}" != "X" ]]; then print_to_log "Submitted as SLURM job: ${SLURM_JOBID}" "${results}" -elif [[ "x${scheduler}" == "xLSF" ]]; then +elif [[ "X${LSB_JOBID}" != "X" ]]; then print_to_log "Submitted as LSF job: ${LSB_JOBID}" "${results}" else print_to_log "Submitted as interactive job" "${results}" @@ -155,7 +145,7 @@ for runDir in *; do # Do the following if for only valid GEOS-Chem run dirs expr=$(is_valid_rundir "${runAbsPath}") - if [[ "x${expr}" == "xTRUE" ]]; then + if [[ "X${expr}" == "XTRUE" ]]; then # Define log file log="${logsDir}/parallel.${runDir}.log" @@ -196,7 +186,7 @@ for runDir in *; do # Run GEOS-Chem Classic export OMP_NUM_THREADS=${allThreads} echo "Now using ${OMP_NUM_THREADS}" >> "${log}" 2>&1 - if [[ "x${scheduler}" == "xSLURM" ]]; then + if [[ "X${site}" == "XCANNON" && "X${SLURM_JOBID}" != "X" ]]; then srun -c ${allThreads} ./${exeFile} >> "${log}" 2>&1 else ./${exeFile} >> "${log}" 2>&1 @@ -215,7 +205,7 @@ for runDir in *; do # Run GEOS-Chem Classic export OMP_NUM_THREADS=${fewerThreads} echo "Now using ${OMP_NUM_THREADS}" >> "${log}" 2>&1 - if [[ "x${scheduler}" == "xSLURM" ]]; then + if [[ "X${site}" == "XCANNON" && "X${SLURM_JOBID}" != "X" ]]; then srun -c ${fewerThreads} ./${exeFile} >> "${log}" 2>&1 else ./${exeFile} >> "${log}" 2>&1 @@ -269,7 +259,7 @@ print_to_log "Parallelization tests failed: ${failed}" "${results}" print_to_log "Parallelization tests not yet completed: ${remain}" "${results}" # Check for success -if [[ "x${passed}" == "x${numTests}" ]]; then +if [[ "X${passed}" == "X${numTests}" ]]; then #-------------------------- # Successful execution @@ -280,7 +270,7 @@ if [[ "x${passed}" == "x${numTests}" ]]; then print_to_log "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" "${results}" # Print success (if interactive) - if [[ "x${SLURM_JOBID}" == "x" && "x${LSB_JOBID}" == "x" ]]; then + if [[ "X${SLURM_JOBID}" == "X" && "X${LSB_JOBID}" == "X" ]]; then echo "" echo "Parallelization tests finished!" fi @@ -290,7 +280,7 @@ else #-------------------------- # Unsuccessful execution #-------------------------- - if [[ "x${SLURM_JOBID}" == "x" && "x${LSB_JOBID}" == "x" ]]; then + if [[ "X${SLURM_JOBID}" == "x" && "x${LSB_JOBID}" == "X" ]]; then echo "" echo "Parallelization tests failed! Exiting ..." fi From da696a9fa272ca906c1eb9ec11db3a1399422bc8 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 12 Mar 2024 10:38:22 -0400 Subject: [PATCH 142/331] Fix errors in parallelTest scripts; only create envDir for Cannon test/parallel/GCClassic/parallelTest.sh - Make sure that $quick is set to uppercase YES or NO - Rename ${sedCmd} to ${sedPartitionCmd} test/parallel/GCClassic/parallelTestCreate.sh - Set quick to the 4th argument, not the 3rd (which is now testsToRun) - Fix error in create_rundir command for carbon, we now need to add an extra input "1\n" to select all species. - Now test if quick is uppercase YES or NO Also: we now only create the "env/: dir (which holds the environment file) if we are running integration/parallel tests on Harvard Cannon. These files were updated: - test/integration/GCClassic/integrationTestCreate.sh - test/integration/GCHP/integrationTestCreate.sh - test/parallel/GCClassic/parallelTestCreate.sh Signed-off-by: Bob Yantosca --- .../GCClassic/integrationTestCreate.sh | 8 ++++--- .../integration/GCHP/integrationTestCreate.sh | 8 ++++--- test/parallel/GCClassic/parallelTest.sh | 10 ++++----- test/parallel/GCClassic/parallelTestCreate.sh | 22 ++++++++++--------- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index 3bdfa4db9..3719a205a 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -121,9 +121,11 @@ done printf "\nCreating exe files directory ${binDir}\n" mkdir -p "${binDir}" -# Subdir for env files -printf "Creating env files directory ${envDir}\n" -mkdir -p "${envDir}" +# Subdir for env files (for Harvard Cannon only) +if [[ "X${site}" == "XCANNON" ]]; then + printf "Creating env files directory ${envDir}\n" + mkdir -p "${envDir}" +fi # Subdir for log files printf "Creating logs directory ${logsDir}\n" diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index 91dea4702..cf4d0ead0 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -121,9 +121,11 @@ done printf "\nCreating exe files directory ${binDir}\n" mkdir -p "${binDir}" -# Subdir for env files -printf "Creating env files directory ${envDir}\n" -mkdir -p "${envDir}" +# Subdir for env files (for Harvard Cannon only) +if [[ "X${site}" == "XCANNON" ]]; then + printf "Creating env files directory ${envDir}\n" + mkdir -p "${envDir}" +fi # Subdir for log files printf "Creating logs directory ${logsDir}\n" diff --git a/test/parallel/GCClassic/parallelTest.sh b/test/parallel/GCClassic/parallelTest.sh index 5d6f9c05a..158e9c917 100755 --- a/test/parallel/GCClassic/parallelTest.sh +++ b/test/parallel/GCClassic/parallelTest.sh @@ -89,7 +89,7 @@ while [ : ]; do # -q or --quick runs a quick set of parallelization tests (for testing) -q | --quick) - quick="yes" + quick="YES" shift ;; @@ -219,8 +219,8 @@ elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCANNON" ]]; then "${scriptsDir}/parallelTestExecute.sh" # Replace "REQUESTED_PARTITION" with the partition name - sed_ie "${sedCmd}" "${scriptsDir}/parallelTestCompile.sh" - sed_ie "${sedCmd}" "${scriptsDir}/parallelTestExecute.sh" + sed_ie "${sedPartitionCmd}" "${scriptsDir}/parallelTestCompile.sh" + sed_ie "${sedPartitionCmd}" "${scriptsDir}/parallelTestExecute.sh" # Submit compilation tests script output=$(sbatch ${scriptsDir}/parallelTestCompile.sh) @@ -258,8 +258,8 @@ elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCOMPUTE1" ]]; then sed_ie '/#SBATCH --mail-type=END/d' "${scriptsDir}/parallelTestExecute.sh" # Replace "REQUESTED_PARTITION" with the partition name - sed_ie "${sedCmd}" "${scriptsDir}/parallelTestCompile.sh" - sed_ie "${sedCmd}" "${scriptsDir}/parallelTestExecute.sh" + sed_ie "${sedPartitionCmd}" "${scriptsDir}/parallelTestCompile.sh" + sed_ie "${sedPartitionCmd}" "${scriptsDir}/parallelTestExecute.sh" # Submit compilation tests script output=$(bsub $scriptsDir}/parallelTestCompile.sh) diff --git a/test/parallel/GCClassic/parallelTestCreate.sh b/test/parallel/GCClassic/parallelTestCreate.sh index 4f5c2f48e..651ee336e 100755 --- a/test/parallel/GCClassic/parallelTestCreate.sh +++ b/test/parallel/GCClassic/parallelTestCreate.sh @@ -56,7 +56,7 @@ fi testsToRun="${3}" # Run a short parallelization test? -quick="${3}" +quick="${4}" #============================================================================= # Global variable and function definitions @@ -118,9 +118,11 @@ done printf "\nCreating exe files directory ${binDir}\n" mkdir -p "${binDir}" -# Subdir for env files -printf "Creating env files directory ${envDir}\n" -mkdir -p "${envDir}" +# Subdir for env files (for Harvard Cannon only) +if [[ "X${site}" == "XCANNON" ]]; then + printf "Creating env files directory ${envDir}\n" + mkdir -p "${envDir}" +fi # Subdir for log files printf "Creating logs directory ${logsDir}\n" @@ -176,7 +178,7 @@ if [[ "X${testsToRun}" == "XALL" ]]; then create_rundir "2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" #4x5 merra2 carbon - create_rundir "12\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "12\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 CH4 create_rundir "3\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" @@ -185,7 +187,7 @@ if [[ "X${testsToRun}" == "XALL" ]]; then create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # DEBUG: Exit after creating a couple of rundirs if $quick is "yes" - if [[ "x${quick}" == "xyes" ]]; then + if [[ "X${quick}" == "XYES" ]]; then cd ${thisDir} exit 0 fi @@ -243,16 +245,16 @@ if [[ "X${testsToRun}" == "XALL" ]]; then # 4x5 merra2 metals" create_rundir "11\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" - #============================================================================= + #========================================================================= # Create individual run directories: 4x5 and 47L (MERRA2) - #============================================================================= + #========================================================================= # 4x5 merra2 fullchem_47L" create_rundir "1\n1\n1\n1\n2\n${rundirsDir}\n\nn\n" "${log}" - #============================================================================= + #========================================================================= # Nested-grid simulations - #============================================================================= + #========================================================================= # 05x0625 merra2 CH4_47L_na" create_rundir "3\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" From 7f0b611c38112f3b1d87350bd906b84186fd8f34 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Tue, 12 Mar 2024 16:11:26 -0400 Subject: [PATCH 143/331] Update volcano emissions and extend to the end of 2022 Following the original request in https://github.com/geoschem/geos-chem/issues/1956, volcano emissions have been updated to a newer version from GMAO (v202005 to v202302. These files were obtained from https://gmao.gsfc.nasa.gov/gmaoftp/geoscf/volcano_so2/v202302/. Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 1 + run/GCClassic/createRunDir.sh | 9 +++++++-- run/GCHP/createRunDir.sh | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74c17ba6a..84e32cae9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Switch from fixed to monthly timezones, which account for daylight savings time more accurately when computing emissions - Updated NOAA GMD surface CH4 boundary conditions through 2022 - Rename `NITs_Jscale_JHNO3` to `NITs_Jscale` and `NIT_Jscale_JHNO2` to `NIT_Jscale` in `geoschem_config.yml` templates +- Updated volcano emissions from GMAO v202005 product to v202302 which extends to the end of 2022 ### Fixed - Use rate-law function `GCARR_ac` for rxns that have Arrhenius `B` parameters that are zero diff --git a/run/GCClassic/createRunDir.sh b/run/GCClassic/createRunDir.sh index 6293da3a1..84d6b020f 100755 --- a/run/GCClassic/createRunDir.sh +++ b/run/GCClassic/createRunDir.sh @@ -456,8 +456,13 @@ if [[ ${met} = "ModelE2.1" ]]; then # NOTE: Benchmark simulations always use the climatological emissions! if [[ "x${sim_name}" == "xfullchem" ]] || \ [[ "x${sim_name}" == "xaerosol" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2021-09/so2_volcanic_emissions_CARN_v202005.degassing_only.rc'\n" - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2021-09/so2_volcanic_emissions_CARN_v202005.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202302.degassing_only.rc'\n" + + if [[ "x${sim_extra_option}" == "xbenchmark" ]]; then + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202302.degassing_only.rc'\n" + else + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" + fi fi else diff --git a/run/GCHP/createRunDir.sh b/run/GCHP/createRunDir.sh index 4046e2589..32de6fcbd 100755 --- a/run/GCHP/createRunDir.sh +++ b/run/GCHP/createRunDir.sh @@ -284,12 +284,12 @@ fi # NOTE: Fullchem benchmarks use the climatological volcano emissions! if [[ "x${sim_name}" == "xfullchem" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2021-09/so2_volcanic_emissions_CARN_v202005.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202202.degassing_only.rc'\n" if [[ "x${sim_extra_option}" == "xbenchmark" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2021-09/so2_volcanic_emissions_CARN_v202005.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202302.degassing_only.rc'\n" else - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2021-09/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" fi fi From c55b6fb73ad7dc0c0de8087e032210ae94817478 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 21 Dec 2023 14:46:23 -0700 Subject: [PATCH 144/331] Updates for building within CESM Signed-off-by: Lizzie Lundgren --- GeosCore/fast_jx_mod.F90 | 58 ++++++++++++++++++++-------------------- GeosCore/ucx_mod.F90 | 4 +-- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/GeosCore/fast_jx_mod.F90 b/GeosCore/fast_jx_mod.F90 index cf5d703d5..c9c4d2672 100644 --- a/GeosCore/fast_jx_mod.F90 +++ b/GeosCore/fast_jx_mod.F90 @@ -1022,35 +1022,35 @@ SUBROUTINE RD_XXX ( amIRoot, dryrun, NUN, NAMFIL, RC ) #if defined( MODEL_CESM ) ENDIF - CALL MPI_BCAST( NJX, 1, mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NJX') - CALL MPI_BCAST( NW1, 1, mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NW1') - CALL MPI_BCAST( NW2, 1, mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NW2') - CALL MPI_BCAST( WBIN, Size(WBIN), mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: WBIN') - CALL MPI_BCAST( WL, Size(WL), mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: WL') - CALL MPI_BCAST( FL, Size(FL), mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: FL') - CALL MPI_BCAST( QO2, Size(QO2), mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QO2') - CALL MPI_BCAST( QO3, Size(QO3), mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QO3') - CALL MPI_BCAST( Q1D, Size(Q1D), mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: Q1D') - CALL MPI_BCAST( QQQ, Size(QQQ), mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QQQ') - CALL MPI_BCAST( QRAYL, Size(QRAYL), mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QRAYL') - CALL MPI_BCAST( TQQ, Size(TQQ), mpi_real8, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: TQQ') - CALL MPI_BCAST( LQQ, Size(LQQ), mpi_integer, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: LQQ') - CALL MPI_BCAST( TITLEJX, X_*6, mpi_character, masterprocid, mpirun, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: TITLEJX') - CALL MPI_BCAST( SQQ, X_*1, mpi_character, masterprocid, mpirun, ierr ) + CALL MPI_BCAST( NJX, 1, mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NJX')com + CALL MPI_BCAST( NW1, 1, mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NW1')com + CALL MPI_BCAST( NW2, 1, mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NW2')com + CALL MPI_BCAST( WBIN, Size(WBIN), mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: WBIN'com + CALL MPI_BCAST( WL, Size(WL), mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: WL') com + CALL MPI_BCAST( FL, Size(FL), mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: FL') com + CALL MPI_BCAST( QO2, Size(QO2), mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QO2')com + CALL MPI_BCAST( QO3, Size(QO3), mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QO3')com + CALL MPI_BCAST( Q1D, Size(Q1D), mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: Q1D')com + CALL MPI_BCAST( QQQ, Size(QQQ), mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QQQ')com + CALL MPI_BCAST( QRAYL, Size(QRAYL), mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QRAYLcom + CALL MPI_BCAST( TQQ, Size(TQQ), mpi_real8, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: TQQ')com + CALL MPI_BCAST( LQQ, Size(LQQ), mpi_integer, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: LQQ')com + CALL MPI_BCAST( TITLEJX, X_*6, mpi_character, masterprocid, mpicom, ierr ) + IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: TITLEcom) + CALL MPI_BCAST( SQQ, X_*1, mpi_character, masterprocid, mpicom, ierr ) IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: SQQ') #endif diff --git a/GeosCore/ucx_mod.F90 b/GeosCore/ucx_mod.F90 index da173d3d3..fe6b003ec 100644 --- a/GeosCore/ucx_mod.F90 +++ b/GeosCore/ucx_mod.F90 @@ -3905,7 +3905,7 @@ SUBROUTINE NOXCOEFF_INIT( Input_Opt, State_Grid, State_Chm ) #if defined( MODEL_CESM ) USE UNITS, ONLY : freeUnit USE CAM_ABORTUTILS, ONLY : endrun - USE SPMD_UTILS, ONLY : mpirun, masterprocid, mpi_success, mpi_real8 + USE SPMD_UTILS, ONLY : mpicom, masterprocid, mpi_success, mpi_real8 #endif ! ! !INPUT PARAMETERS: @@ -4139,7 +4139,7 @@ SUBROUTINE NOXCOEFF_INIT( Input_Opt, State_Grid, State_Chm ) #if defined( MODEL_CESM ) ENDIF - CALL MPI_BCAST( State_Chm%NOXCOEFF, nSize, mpi_real8, masterprocid, mpicom ) + CALL MPI_BCAST( State_Chm%NOXCOEFF, nSize, mpi_real8, masterprocid, mpicom, ierr ) IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NOXCOEFF') #endif From a6b63085ece1d7881f5910e5a93411ee325f9c11 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 15 Feb 2024 07:52:36 -0700 Subject: [PATCH 145/331] Update CESM config files for running GEOS-Chem 14.3 in CESM Signed-off-by: Lizzie Lundgren --- run/CESM/HEMCO_Diagn.rc | 890 +---------------------------------- run/CESM/HISTORY.rc | 114 +++-- run/CESM/geoschem_config.yml | 51 +- 3 files changed, 111 insertions(+), 944 deletions(-) mode change 100644 => 120000 run/CESM/HEMCO_Diagn.rc diff --git a/run/CESM/HEMCO_Diagn.rc b/run/CESM/HEMCO_Diagn.rc deleted file mode 100644 index 6bfcd39f3..000000000 --- a/run/CESM/HEMCO_Diagn.rc +++ /dev/null @@ -1,889 +0,0 @@ -#------------------------------------------------------------------------------ -# GEOS-Chem Global Chemical Transport Model ! -#------------------------------------------------------------------------------ -#BOP -# -# !MODULE: HEMCO_Diagn.rc -# -# !DESCRIPTION: Configuration file for netCDF diagnostic output from HEMCO. -#\\ -#\\ -# !REMARKS: -# For more information about scheduling HEMCO diagnostics, see: -# http://wiki.geos-chem.org/The_HEMCO_User%27s_Guide#Diagnostics -# -# For a list of species by inventory, please see: -# http://wiki.geos-chem.org/HEMCO_data_directories#Default_GEOS-Chem_emissions_configurations -# -# All diagnostics will now be saved out in units of kg/m2/s. If necessary, -# you can convert hydrocarbon species to e.g. kg C/m2/s in post-processing. -# -# The INVENTORY DIAGNOSTICS (starting with "Inv") are only needed for -# benchmark simulations, and can be left commented out for production runs. -# -# !REVISION HISTORY: -# 13 Feb 2018 - E. Lundgren - Initial version -# See https://github.com/geoschem/geos-chem for complete history -#EOP -#------------------------------------------------------------------------------ -#BOC -# Name Spec ExtNr Cat Hier Dim OutUnit LongName - -############################################################################### -##### ACET emissions ##### -############################################################################### -EmisACET_Total ACET -1 -1 -1 3 kg/m2/s ACET_emission_flux_from_all_sectors -EmisACET_Anthro ACET 0 1 -1 3 kg/m2/s ACET_emission_flux_from_anthropogenic -EmisACET_BioBurn ACET 111 -1 -1 2 kg/m2/s ACET_emission_flux_from_biomass_burning -EmisACET_Biogenic ACET 0 4 -1 2 kg/m2/s ACET_emission_flux_from_biogenic_sources -EmisACET_Ocean ACET 101 -1 -1 2 kg/m2/s ACET_emission_flux_from_ocean - -############################################################################### -##### ALD2 emissions ##### -############################################################################### -EmisALD2_Total ALD2 -1 -1 -1 3 kg/m2/s ALD2_emission_flux_from_all_sectors -EmisALD2_Anthro ALD2 0 1 -1 3 kg/m2/s ALD2_emission_flux_from_anthropogenic -EmisALD2_BioBurn ALD2 111 -1 -1 2 kg/m2/s ALD2_emission_flux_from_biomass_burning -EmisALD2_Biogenic ALD2 0 4 -1 2 kg/m2/s ALD2_emission_flux_from_biogenic_sources -EmisALD2_Ocean ALD2 101 -1 -1 2 kg/m2/s ALD2_emission_flux_from_ocean -EmisALD2_PlantDecay ALD2 0 3 -1 2 kg/m2/s ALD2_emission_flux_from_decaying_plants -EmisALD2_Ship ALD2 0 10 -1 2 kg/m2/s ALD2_emission_flux_from_ships - -############################################################################### -##### ALK4 emissions ##### -############################################################################### -EmisALK4_Total ALK4 -1 -1 -1 3 kg/m2/s ALK4_emission_flux_from_all_sectors -EmisALK4_Aircraft ALK4 0 20 -1 3 kg/m2/s ALK4_emission_flux_from_aircraft -EmisALK4_Anthro ALK4 0 1 -1 3 kg/m2/s ALK4_emission_flux_from_anthropogenic -EmisALK4_BioBurn ALK4 111 -1 -1 2 kg/m2/s ALK4_emission_flux_from_biomass_burning -EmisALK4_Ship ALK4 0 10 -1 2 kg/m2/s ALK4_emission_flux_from_ships - -############################################################################### -##### BCPI and BCPO emissions ##### -############################################################################### -EmisBCPI_Total BCPI -1 -1 -1 3 kg/m2/s BCPI_emission_flux_from_all_sectors -EmisBCPI_Aircraft BCPI 0 20 -1 3 kg/m2/s BCPI_emission_flux_from_aircraft -EmisBCPI_Anthro BCPI 0 1 -1 3 kg/m2/s BCPI_emission_flux_from_anthropogenic -EmisBCPI_BioBurn BCPI 111 -1 -1 2 kg/m2/s BCPI_emission_flux_from_biomass_burning -EmisBCPI_Ship BCPI 0 10 -1 2 kg/m2/s BCPI_emission_flux_from_ships -EmisBCPO_Total BCPO -1 -1 -1 2 kg/m2/s BCPO_emission_flux_from_all_sectors -EmisBCPO_Anthro BCPO 0 1 -1 2 kg/m2/s BCPO_emission_flux_from_anthropogenic -EmisBCPO_BioBurn BCPO 111 -1 -1 2 kg/m2/s BCPO_emission_flux_from_biomass_burning -EmisBCPO_Ship BCPO 0 10 -1 2 kg/m2/s BCPO_emission_flux_from_ships - -############################################################################### -##### BENZ emissions ##### -############################################################################### -EmisBENZ_Total BENZ -1 -1 -1 3 kg/m2/s BENZ_emission_flux_from_all_sectors -EmisBENZ_Anthro BENZ 0 1 -1 3 kg/m2/s BENZ_emission_flux_from_anthropogenic -EmisBENZ_BioBurn BENZ 111 -1 -1 2 kg/m2/s BENZ_emission_flux_from_biomass_burning -EmisBENZ_Ship BENZ 0 10 -1 2 kg/m2/s BENZ_emission_flux_from_ships - -############################################################################### -##### C2H2 emissions ###### -############################################################################### -# C2H2 is not an active species in GEOS-Chem; disable for now -#EmisC2H2_Total C2H2 -1 -1 -1 3 kg/m2/s C2H2_emission_flux_from_all_sectors -#EmisC2H2_Anthro C2H2 0 1 -1 3 kg/m2/s C2H2_emission_flux_from_anthropogenic -#EmisC2H2_Ship C2H2 0 10 -1 2 kg/m2/s C2H2_emission_flux_from_ships - -############################################################################### -##### C2H4 emissions ###### -############################################################################### -# C2H4 is not an active species in GEOS-Chem; disable for now -#EmisC2H4_Total C2H4 -1 -1 -1 3 kg/m2/s C2H4_emission_flux_from_all_sectors -#EmisC2H4_Anthro C2H4 0 1 -1 3 kg/m2/s C2H4_emission_flux_from_anthropogenic -#EmisC2H4_Biogenic C2H4 0 4 -1 2 kg/m2/s C2H4_emission_flux_from_biogenic_sources -#EmisC2H4_Ship C2H4 0 10 -1 2 kg/m2/s C2H4_emission_flux_from_ships - -############################################################################### -##### C2H6 emissions ###### -############################################################################### -EmisC2H6_Total C2H6 -1 -1 -1 3 kg/m2/s C2H6_emission_flux_from_all_sectors -EmisC2H6_Aircraft C2H6 0 20 -1 3 kg/m2/s C2H6_emission_flux_from_aircraft -EmisC2H6_Anthro C2H6 0 1 -1 3 kg/m2/s C2H6_emission_flux_from_anthropogenic -EmisC2H6_BioBurn C2H6 111 -1 -1 2 kg/m2/s C2H6_emission_flux_from_biomass_burning -EmisC2H6_Ship C2H6 0 10 -1 2 kg/m2/s C2H6_emission_flux_from_ships - -############################################################################### -##### C3H8 emissions ##### -############################################################################### -EmisC3H8_Total C3H8 -1 -1 -1 3 kg/m2/s C3H8_emission_flux_from_all_sectors -EmisC3H8_Aircraft C3H8 0 20 -1 3 kg/m2/s C3H8_emission_flux_from_aircraft -EmisC3H8_Anthro C3H8 0 1 -1 3 kg/m2/s C3H8_emission_flux_from_anthropogenic -EmisC3H8_BioBurn C3H8 111 -1 -1 2 kg/m2/s C3H8_emission_flux_from_biomass_burning -EmisC3H8_Ship C3H8 0 10 -1 2 kg/m2/s C3H8_emission_flux_from_ships - -############################################################################### -##### CH2Br2 emissions ##### -############################################################################### -EmisCH2Br2_Ocean CH2Br2 0 1 -1 2 kg/m2/s CH2Br2_emission_flux_from_ocean - -############################################################################### -##### CH2I2 emissions ##### -############################################################################### -EmisCH2I2_Ocean CH2I2 0 1 -1 2 kg/m2/s CH2I2_emission_flux_from_ocean - -############################################################################### -##### CH2ICl emissions ##### -############################################################################### -EmisCH2ICl_Ocean CH2ICl 0 1 -1 2 kg/m2/s CH2ICl_emission_flux_from_ocean - -############################################################################### -##### CH2IBr emissions ##### -############################################################################### -EmisCH2IBr_Ocean CH2IBr 0 1 -1 2 kg/m2/s CH2IBr_emission_flux_from_ocean - -############################################################################### -##### CH2O emissions ##### -############################################################################### -EmisCH2O_Total CH2O -1 -1 -1 3 kg/m2/s CH2O_emission_flux_from_all_sectors -EmisCH2O_Aircraft CH2O 0 20 -1 3 kg/m2/s CH2O_emission_flux_from_aircraft -EmisCH2O_Anthro CH2O 0 1 -1 3 kg/m2/s CH2O_emission_flux_from_anthropogenic -EmisCH2O_BioBurn CH2O 111 -1 -1 2 kg/m2/s CH2O_emission_flux_from_biomass_burning -EmisCH2O_Ship CH2O 0 10 -1 2 kg/m2/s CH2O_emission_flux_from_ships - -############################################################################### -##### CH3I emissions ##### -############################################################################### -EmisCH3I_Ocean CH3I 0 1 -1 2 kg/m2/s CH3I_emission_flux_from_ocean - -############################################################################### -##### CH4 emissions ##### -############################################################################### -# Zero for now, so comment out -#EmisCH4_Total CH4 -1 -1 -1 3 kg/m2/s CH4_emission_flux_from_all_sectors -#EmisCH4_Anthro CH4 0 1 -1 3 kg/m2/s CH4_emission_flux_from_anthropogenic -#EmisCH4_BioBurn CH4 0 5 -1 2 kg/m2/s CH4_emission_flux_from_biomass_burning -#EmisCH4_Ship CH4 0 10 -1 2 kg/m2/s CH4_emission_flux_from_ships - -############################################################################### -##### CHBr3 emissions ##### -############################################################################### -EmisCHBr3_Ocean CHBr3 0 1 -1 2 kg/m2/s CHBr3_emission_flux_from_ocean - -############################################################################### -##### CO sources ##### -############################################################################### -EmisCO_Total CO -1 -1 -1 3 kg/m2/s CO_emission_flux_from_all_sectors -EmisCO_Aircraft CO 0 20 -1 3 kg/m2/s CO_emission_flux_from_aircraft -EmisCO_Anthro CO 0 1 -1 3 kg/m2/s CO_emission_flux_from_anthropogenic -EmisCO_BioBurn CO 111 -1 -1 2 kg/m2/s CO_emission_flux_from_biomass_burning -EmisCO_Ship CO 0 10 -1 2 kg/m2/s CO_emission_flux_from_ships - -############################################################################### -##### CO2 emissions ##### -############################################################################### -EmisCO2_Total CO2 -1 -1 -1 3 kg/m2/s CO2_emission_flux_from_all_sectors -EmisCO2_Anthro CO2 0 1 -1 3 kg/m2/s CO2_emission_flux_from_anthropogenic -EmisCO2_BioBurn CO2 0 5 -1 2 kg/m2/s CO2_emission_flux_from_biomass_burning -EmisCO2_Ship CO2 0 10 -1 2 kg/m2/s CO2_emission_flux_from_ships - -############################################################################### -##### DMS emissions ##### -############################################################################### -EmisDMS_Ocean DMS 101 -1 -1 2 kg/m2/s DMS_emission_flux_from_ocean - -############################################################################### -##### Dust emissions ##### -############################################################################### -EmisDST1_Total DST1 -1 -1 -1 2 kg/m2/s DST1_emission_flux_from_all_sectors -EmisDST1_Anthro DST1 0 1 -1 2 kg/m2/s DST1_emission_flux_from_anthropogenic -EmisDST1_Natural DST1 0 3 -1 2 kg/m2/s DST1_emission_flux_from_natural_sources -EmisDST2_Natural DST2 0 3 -1 2 kg/m2/s DST2_emission_flux_from_natural_sources -EmisDST3_Natural DST3 0 3 -1 2 kg/m2/s DST3_emission_flux_from_natural_sources -EmisDST4_Natural DST4 0 3 -1 2 kg/m2/s DST4_emission_flux_from_natural_sources - -############################################################################### -##### EOH emissions ##### -############################################################################### -EmisEOH_Total EOH -1 -1 -1 3 kg/m2/s EOH_emission_flux_from_all_sectors -EmisEOH_Anthro EOH 0 1 -1 3 kg/m2/s EOH_emission_flux_from_anthropogenic -EmisEOH_BioBurn EOH 111 -1 -1 2 kg/m2/s EOH_emission_flux_from_biomass_burning -EmisEOH_Biogenic EOH 0 4 -1 2 kg/m2/s EOH_emission_flux_from_biogenic_sources -EmisEOH_PlantDecay EOH 0 3 -1 2 kg/m2/s EOH_emission_flux_from_decaying_plants -EmisEOH_Ship EOH 0 10 -1 2 kg/m2/s EOH_emission_flux_from_ships - -############################################################################### -##### ETNO3 emissions ##### -############################################################################### -EmisETNO3_Ocean ETNO3 101 -1 -1 2 kg/m2/s ETNO3_emission_flux_from_ocean - -############################################################################### -##### HAC emissions ##### -############################################################################### -EmisHAC_Total HAC -1 -1 -1 3 kg/m2/s HAC_emission_flux_from_all_sectors -EmisHAC_Anthro HAC 0 1 -1 3 kg/m2/s HAC_emission_flux_from_anthropogenic - -############################################################################### -##### GLYC emissions ##### -############################################################################### -EmisGLYC_Total GLYC -1 -1 -1 3 kg/m2/s GLYC_emission_flux_from_all_sectors -EmisGLYC_Anthro GLYC 0 1 -1 3 kg/m2/s GLYC_emission_flux_from_anthropogenic - -############################################################################### -##### GLYX emissions ##### -############################################################################### -# Zero for now, so comment out -#EmisGLYX_Total GLYX -1 -1 -1 3 kg/m2/s GLYX_emission_flux_from_all_sectors -#EmisGLYX_Anthro GLYX 0 1 -1 3 kg/m2/s GLYX_emission_flux_from_anthropogenic - -############################################################################### -##### HCOOH sources ##### -############################################################################### -EmisHCOOH_Total HCOOH -1 -1 -1 3 kg/m2/s HCOOH_emission_flux_from_all_sectors -EmisHCOOH_Anthro HCOOH 0 1 -1 3 kg/m2/s HCOOH_emission_flux_from_anthropogenic -EmisHCOOH_Ship HCOOH 0 10 -1 2 kg/m2/s HCOOH_emission_flux_from_ship - -############################################################################### -##### HNO2 emissions ##### -############################################################################### -EmisHNO2_Anthro HNO2 0 1 -1 3 kg/m2/s HNO2_emission_flux_from_anthropogenic - -############################################################################### -##### HNO3 emissions ##### -############################################################################### -EmisHNO3_Ship HNO3 102 -1 -1 2 kg/m2/s HNO3_emission_flux_from_ships - -############################################################################### -##### ISOP emissions ##### -############################################################################### -EmisISOP_Total ISOP -1 -1 -1 3 kg/m2/s ISOP_emission_flux_from_all_sectors -EmisISOP_Anthro ISOP 0 1 -1 3 kg/m2/s ISOP_emission_flux_from_anthropogenic -EmisISOP_Biogenic ISOP 0 4 -1 2 kg/m2/s ISOP_emission_flux_from_biogenic_sources - -############################################################################### -##### LIMO emissions ##### -############################################################################### -EmisLIMO_Biogenic LIMO 0 4 -1 2 kg/m2/s LIMO_emission_flux_from_biogenic_sources - -############################################################################### -##### MACR emissions ##### -############################################################################### -EmisMACR_Total MACR -1 -1 -1 3 kg/m2/s MACR_emission_flux_from_all_sectors -EmisMACR_Aircraft MACR 0 20 -1 3 kg/m2/s MACR_emission_flux_from_anthropogenic -EmisMACR_Anthro MACR 0 1 -1 3 kg/m2/s MACR_emission_flux_from_anthropogenic - -############################################################################### -##### MEK emissions ##### -############################################################################### -EmisMEK_Total MEK -1 -1 -1 3 kg/m2/s MEK_emission_flux_from_all_sectors -EmisMEK_Anthro MEK 0 1 -1 3 kg/m2/s MEK_emission_flux_from_anthropogenic -EmisMEK_BioBurn MEK 111 -1 -1 2 kg/m2/s MEK_emission_flux_from_biomass_burning -EmisMEK_Ship MEK 0 10 -1 2 kg/m2/s MEK_emission_flux_from_ships - -############################################################################### -##### MENO3 emissions ##### -############################################################################### -EmisMENO3_Ocean MENO3 101 -1 -1 2 kg/m2/s MENO3_emission_flux_from_ocean - -############################################################################### -##### MGLY emissions ##### -############################################################################### -# Zero for now, so comment out -#EmisMGLY_Total MGLY -1 -1 -1 3 kg/m2/s MGLY_emission_flux_from_all_sectors -#EmisMGLY_Anthro MGLY 0 1 -1 3 kg/m2/s MGLY_emission_flux_from_anthropogenic - -############################################################################### -##### MOH emissions ##### -############################################################################### -EmisMOH_Total MOH -1 -1 -1 3 kg/m2/s MOH_emission_flux_from_all_sectors -EmisMOH_Anthro MOH 0 1 -1 3 kg/m2/s MOH_emission_flux_from_anthropogenic -EmisMOH_BioBurn MOH 111 -1 -1 2 kg/m2/s MOH_emission_flux_from_biomass_burning -EmisMOH_Biogenic MOH 108 -1 -1 2 kg/m2/s MOH_emission_flux_from_biogenic_sources -EmisMOH_Ocean MOH 101 -1 -1 2 kg/m2/s MOH_emission_flux_from_ocean -EmisMOH_Ship MOH 0 10 -1 2 kg/m2/s MOH_emission_flux_from_ships - -############################################################################### -##### MTPA emissions ##### -############################################################################### -EmisMTPA_Total MTPA -1 -1 -1 3 kg/m2/s MTPA_emission_flux_from_all_sectors -EmisMTPA_BioBurn MTPA 111 -1 -1 2 kg/m2/s MTPA_emission_flux_from_biomass_burning -EmisMTPA_Biogenic MTPA 0 4 -1 2 kg/m2/s MTPA_emission_flux_from_biogenic_sources - -############################################################################### -##### MTPO emissions ##### -############################################################################### -EmisMTPO_Biogenic MTPO 0 4 -1 2 kg/m2/s MTPO_emission_flux_from_biogenic_sources - -############################################################################### -##### MVK emissions ##### -############################################################################### -EmisMVK_Anthro MVK 0 1 -1 3 kg/m2/s MVK_emission_flux_from_anthropogenic - -############################################################################### -##### NAP emissions ##### -############################################################################### -EmisNAP_Total NAP -1 -1 -1 3 kg/m2/s NAP_emission_flux_from_all_sectors -EmisNAP_Anthro NAP 0 1 -1 3 kg/m2/s NAP_emission_flux_from_anthropogenic -EmisNAP_BioBurn NAP 111 -1 -1 2 kg/m2/s NAP_emission_flux_from_biomass_burning - -############################################################################### -##### NH3 emissions ##### -############################################################################### -EmisNH3_Total NH3 -1 -1 -1 3 kg/m2/s NH3_emission_flux_from_all_sectors -EmisNH3_Anthro NH3 0 1 -1 3 kg/m2/s NH3_emission_flux_from_anthropogenic -EmisNH3_BioBurn NH3 111 -1 -1 2 kg/m2/s NH3_emission_flux_from_biomass_burning -EmisNH3_Natural NH3 0 3 -1 2 kg/m2/s NH3_emission_flux_from_natural_sources -EmisNH3_Seabirds NH3 0 30 -1 2 kg/m2/s NH3_emission_flux_from_seabirds -EmisNH3_Ship NH3 0 10 -1 2 kg/m2/s NH3_emission_flux_from_ships - -############################################################################### -##### NO emissions ##### -##### ##### -##### - Separate fertilizer NOx emissions are only available when the ##### -##### SoilNOx extension is enabled ##### -############################################################################### -EmisNO_Total NO -1 -1 -1 3 kg/m2/s NO_emission_flux_from_all_sectors -EmisNO_Aircraft NO 0 20 -1 3 kg/m2/s NO_emission_flux_from_aircraft -EmisNO_Anthro NO 0 1 -1 3 kg/m2/s NO_emission_flux_from_anthropogenic -EmisNO_BioBurn NO 111 -1 -1 2 kg/m2/s NO_emission_flux_from_biomass_burning -EmisNO_Lightning NO 103 -1 -1 3 kg/m2/s NO_emission_flux_from_lightning -EmisNO_Ship NO 102 -1 -1 2 kg/m2/s NO_emission_flux_from_ships -EmisNO_Soil NO 0 3 -1 2 kg/m2/s NO_emission_flux_from_soil_including_fertilizer -#EmisNO_Fert -1 104 -1 -1 2 kg/m2/s NO_emission_flux_from_fertilizer_only - -############################################################################### -##### NO2 emissions ##### -############################################################################### -EmisNO2_Anthro NO2 0 1 -1 3 kg/m2/s NO2_emission_flux_from_anthropogenic -EmisNO2_Ship NO2 102 -1 -1 2 kg/m2/s NO2_emission_flux_from_ships - -############################################################################### -##### O3 emissions ##### -############################################################################### -EmisO3_Ship O3 102 -1 -1 2 kg/m2/s O3_emission_flux_from_ships - -############################################################################### -##### OCPI and OCPO emissions ##### -############################################################################### -EmisOCPI_Total OCPI -1 -1 -1 3 kg/m2/s OCPI_emission_flux_from_all_sectors -EmisOCPI_Aircraft OCPI 0 20 -1 3 kg/m2/s OCPI_emission_flux_from_aircraft -EmisOCPI_Anthro OCPI 0 1 -1 3 kg/m2/s OCPI_emission_flux_from_anthropogenic -EmisOCPI_BioBurn OCPI 111 -1 -1 2 kg/m2/s OCPI_emission_flux_from_biomass_burning -EmisOCPI_Ship OCPI 0 10 -1 2 kg/m2/s OCPI_emission_flux_from_ships -EmisOCPO_Total OCPO -1 -1 -1 2 kg/m2/s OCPO_emission_flux_from_all_sectors -EmisOCPO_Anthro OCPO 0 1 -1 2 kg/m2/s OCPO_emission_flux_from_anthropogenic -EmisOCPO_BioBurn OCPO 111 -1 -1 2 kg/m2/s OCPO_emission_flux_from_biomass_burning -EmisOCPO_Ship OCPO 0 10 -1 2 kg/m2/s OCPO_emission_flux_from_ships - -############################################################################### -##### pFe emissions ##### -############################################################################### -EmispFe_Total pFe -1 -1 -1 3 kg/m2/s pFe_emission_flux_from_all_sectors -EmispFe_Anthro pFe 0 1 -1 3 kg/m2/s pFe_emission_flux_from_anthropogenic -EmispFe_Ship pFe 0 10 -1 2 kg/m2/s pFe_emission_flux_from_ships - -############################################################################### -##### POG1 and POG2 emissions ##### -############################################################################### -EmisPOG1_Total POG1 -1 -1 -1 3 kg/m2/s POG1_emission_flux_from_all_sectors -EmisPOG1_Anthro POG1 0 1 -1 3 kg/m2/s POG1_emission_flux_from_anthropogenic -EmisPOG1_BioBurn POG1 111 -1 -1 2 kg/m2/s POG1_emission_flux_from_GFED_inventory -EmisPOG2_Total POG2 -1 -1 -1 3 kg/m2/s POG2_emission_flux_from_all_sectors -EmisPOG2_Anthro POG2 0 1 -1 3 kg/m2/s POG2_emission_flux_from_anthropogenic -EmisPOG2_BioBurn POG2 111 -1 -1 2 kg/m2/s POG2_emission_flux_from_GFED_inventory - -############################################################################### -##### PRPE emissions ##### -############################################################################### -EmisPRPE_Total PRPE -1 -1 -1 3 kg/m2/s PRPE_emission_flux_from_all_sectors -EmisPRPE_Aircraft PRPE 0 20 -1 3 kg/m2/s PRPE_emission_flux_from_aircraft -EmisPRPE_Anthro PRPE 0 1 -1 3 kg/m2/s PRPE_emission_flux_from_anthropogenic -EmisPRPE_BioBurn PRPE 111 -1 -1 2 kg/m2/s PRPE_emission_flux_from_biomass_burning -EmisPRPE_Biogenic PRPE 0 4 -1 2 kg/m2/s PRPE_emission_flux_from_biogenic_sources -EmisPRPE_Ship PRPE 0 10 -1 2 kg/m2/s PRPE_emission_flux_from_ships - -############################################################################### -##### RCHO emissions ##### -############################################################################### -EmisRCHO_Total RCHO -1 -1 -1 3 kg/m2/s RCHO_emission_flux_from_all_sectors -EmisRCHO_Aircraft RCHO 0 20 -1 3 kg/m2/s RCHO_emission_flux_from_aircraft -EmisRCHO_Anthro RCHO 0 1 -1 3 kg/m2/s RCHO_emission_flux_from_anthropogenic - -############################################################################### -##### SESQ emissions ##### -############################################################################### -# SESQ is not an active species in GEOS-Chem; disable for now -#EmisSESQ_Biogenic SESQ 0 4 -1 2 kg/m2/s SESQ_emission_flux_from_biogenic_sources - -############################################################################### -##### Sea salt emissions ##### -############################################################################### -EmisSALA_Natural SALA 0 3 -1 2 kg/m2/s SALA_emission_flux_from_natural_sources -EmisBrSALA_Natural BrSALA 0 3 -1 2 kg/m2/s BrSALA_emission_flux_from_natural_sources -EmisSALAAL_Natural SALAAL 0 3 -1 2 kg/m2/s SALAAL_emission_flux_from_natural_sources -EmisSALACL_Natural SALACL 0 3 -1 2 kg/m2/s SALACL_emission_flux_from_natural_sources -EmisSALC_Natural SALC 0 3 -1 2 kg/m2/s SALC_emission_flux_from_natural_sources -EmisBrSALC_Natural BrSALC 0 3 -1 2 kg/m2/s BrSALC_emission_flux_from_natural_sources -EmisSALCAL_Natural SALCAL 0 3 -1 2 kg/m2/s SALCAL_emission_flux_from_natural_sources -EmisSALCCL_Natural SALCCL 0 3 -1 2 kg/m2/s SALCCL_emission_flux_from_natural_sources - -############################################################################### -##### SO2 emissions ##### -############################################################################### -EmisSO2_Total SO2 -1 -1 -1 3 kg/m2/s SO2_emission_flux_from_all_sectors -EmisSO2_Aircraft SO2 0 20 -1 3 kg/m2/s SO2_emission_flux_from_aircraft -EmisSO2_Anthro SO2 0 1 -1 3 kg/m2/s SO2_emission_flux_from_anthropogenic -EmisSO2_BioBurn SO2 111 -1 -1 2 kg/m2/s SO2_emission_flux_from_biomass_burning -EmisSO2_VolcErupt SO2 117 51 -1 3 kg/m2/s SO2_emission_flux_from_eruptive_volcano -EmisSO2_VolcDegas SO2 117 52 -1 3 kg/m2/s SO2_emission_flux_from_noneruptive_volcano -EmisSO2_Ship SO2 0 10 -1 2 kg/m2/s SO2_emission_flux_from_ships - -############################################################################### -##### SO4 emissions ##### -############################################################################### -EmisSO4_Total SO4 -1 -1 -1 3 kg/m2/s SO4_emission_flux_from_all_sectors -EmisSO4_Aircraft SO4 0 20 -1 3 kg/m2/s SO4_emission_flux_from_aircraft -EmisSO4_Anthro SO4 0 1 -1 3 kg/m2/s SO4_emission_flux_from_anthropogenic -EmisSO4_Ship SO4 0 10 -1 2 kg/m2/s SO4_emission_flux_from_ship - -############################################################################### -##### SOAP sources ##### -############################################################################### -EmisSOAP_Total SOAP -1 -1 -1 3 kg/m2/s SOAP_emission_flux_from_all_sectors -EmisSOAP_Aircraft SOAP 0 20 -1 3 kg/m2/s SOAP_emission_flux_from_aircraft -EmisSOAP_Anthro SOAP 0 1 -1 3 kg/m2/s SOAP_emission_flux_from_anthropogenic -EmisSOAP_Biogenic SOAP 0 4 -1 2 kg/m2/s SOAP_emission_flux_from_biogenic_sources -EmisSOAP_BioBurn SOAP 111 -1 -1 2 kg/m2/s SOAP_emission_flux_from_biomass_burning -EmisSOAP_Ship SOAP 0 10 -1 2 kg/m2/s SOAP_emission_flux_from_ships - -############################################################################### -##### SOAS sources ##### -############################################################################### -EmisSOAS_Biogenic SOAS 0 4 -1 2 kg/m2/s SOAS_emission_flux_from_biogenic_sources - -############################################################################### -##### TOLU emissions ##### -############################################################################### -EmisTOLU_Total TOLU -1 -1 -1 3 kg/m2/s TOLU_emission_flux_from_all_sectors -EmisTOLU_Anthro TOLU 0 1 -1 3 kg/m2/s TOLU_emission_flux_from_anthropogenic -EmisTOLU_BioBurn TOLU 111 -1 -1 2 kg/m2/s TOLU_emission_flux_from_biomass_burning -EmisTOLU_Ship TOLU 0 10 -1 2 kg/m2/s TOLU_emission_flux_from_ships - -############################################################################### -##### XYLE emissions ##### -############################################################################### -EmisXYLE_Total XYLE -1 -1 -1 3 kg/m2/s XYLE_emission_flux_from_all_sectors -EmisXYLE_Anthro XYLE 0 1 -1 3 kg/m2/s XYLE_emission_flux_from_anthropogenic -EmisXYLE_BioBurn XYLE 111 -1 -1 2 kg/m2/s XYLE_emission_flux_from_biomass_burning -EmisXYLE_Ship XYLE 0 10 -1 2 kg/m2/s XYLE_emission_flux_from_ships - -############################################################################### -##### Additional diagnostics saved out via HEMCO extensions ##### -############################################################################### - -#============================= -# LIGHTNOX extension -#============================= -HcoLightningFlashRate_Total -1 103 -1 -1 2 flashes/min/km2 Total_lightning_flash_rate -HcoLightningFlashRate_IntraCld -1 103 -1 -1 2 flashes/min/km2 Intra-cloud_lightning_flash_rate -HcoLightningFlashRate_CldGround -1 103 -1 -1 2 flashes/min/km2 Cloud-ground_lightning_flash_rate -HcoConvectiveCloudTopHeight -1 103 -1 -1 2 level Convective_cloud_top_height - -############################################################################### -##### INVENTORY DIAGNOSTICS, needed for benchmarking simulations only ##### -##### Listed in same order as HEMCO_Config.rc ##### -##### (You can comment these out for production runs, to save memory) ##### -############################################################################### - -#============================= -# APEI -#============================= -#InvAPEI_BCPI BCPI 0 1 30 2 kg/m2/s BCPI_emission_flux_from_APEI_inventory -#InvAPEI_BCPO BCPO 0 1 30 2 kg/m2/s BCPO_emission_flux_from_APEI_inventory -#InvAPEI_CO CO 0 1 30 2 kg/m2/s CO_emission_flux_from_APEI_inventory -#InvAPEI_NH3 NH3 0 1 30 2 kg/m2/s NH3_emission_flux_from_APEI_inventory -#InvAPEI_NO NO 0 1 30 2 kg/m2/s NO_emission_flux_from_APEI_inventory -#InvAPEI_OCPI OCPI 0 1 30 2 kg/m2/s OCPI_emission_flux_from_APEI_inventory -#InvAPEI_OCPO OCPO 0 1 30 2 kg/m2/s OCPO_emission_flux_from_APEI_inventory -#InvAPEI_pFe pFe 0 1 30 2 kg/m2/s pFe_emission_flux_from_APEI_inventory -#InvAPEI_POG1 POG1 0 1 30 2 kg/m2/s POG1_emission_flux_from_APEI_inventory -#InvAPEI_POG2 POG2 0 1 30 2 kg/m2/s POG2_emission_flux_from_APEI_inventory -#InvAPEI_SO2 SO2 0 1 30 2 kg/m2/s SO2_emission_flux_from_APEI_inventory -#InvAPEI_SO4 SO4 0 1 30 2 kg/m2/s SO4_emission_flux_from_APEI_inventory -#InvAPEI_SOAP SOAP 0 1 30 2 kg/m2/s SOAP_emission_flux_from_APEI_inventory - -#============================= -# NEI2011 -#============================= -#InvNEI2011_ACET ACET 0 1 50 3 kg/m2/s ACET_emission_flux_from_NEI2011_inventory -#InvNEI2011_ALD2 ALD2 0 1 50 3 kg/m2/s ALD2_emission_flux_from_NEI2011_inventory -#InvNEI2011_ALK4 ALK4 0 1 50 3 kg/m2/s ALK4_emission_flux_from_NEI2011_inventory -#InvNEI2011_BCPI BCPI 0 1 50 3 kg/m2/s BCPI_emission_flux_from_NEI2011_inventory -#InvNEI2011_BCPO BCPO 0 1 50 3 kg/m2/s BCPO_emission_flux_from_NEI2011_inventory -#InvNEI2011_BENZ BENZ 0 1 50 3 kg/m2/s BENZ_emission_flux_from_NEI2011_inventory -#InvNEI2011_C2H4 C2H4 0 1 50 3 kg/m2/s C2H4_emission_flux_from_NEI2011_inventory -#InvNEI2011_C2H6 C2H6 0 1 50 3 kg/m2/s C2H6_emission_flux_from_NEI2011_inventory -#InvNEI2011_C3H8 C3H8 0 1 50 3 kg/m2/s C3H8_emission_flux_from_NEI2011_inventory -#InvNEI2011_CH2O CH2O 0 1 50 3 kg/m2/s CH2O_emission_flux_from_NEI2011_inventory -#InvNEI2011_CO CO 0 1 50 3 kg/m2/s CO_emission_flux_from_NEI2011_inventory -#InvNEI2011_EOH EOH 0 1 50 3 kg/m2/s EOH_emission_flux_from_NEI2011_inventory -#InvNEI2011_HONO HONO 0 1 50 3 kg/m2/s HONO_emission_flux_from_NEI2011_inventory -#InvNEI2011_MACR MACR 0 1 50 3 kg/m2/s MACR_emission_flux_from_NEI2011_inventory -#InvNEI2011_MEK MEK 0 1 50 3 kg/m2/s MEK_emission_flux_from_NEI2011_inventory -#InvNEI2011_MOH MOH 0 1 50 3 kg/m2/s MOH_emission_flux_from_NEI2011_inventory -#InvNEI2011_NH3 NH3 0 1 50 3 kg/m2/s NH3_emission_flux_from_NEI2011_inventory -#InvNEI2011_NO NO 0 1 50 3 kg/m2/s NO_emission_flux_from_NEI2011_inventory -#InvNEI2011_NO2 NO2 0 1 50 3 kg/m2/s NO2_emission_flux_from_NEI2011_inventory -#InvNEI2011_pFe pFe 0 1 50 3 kg/m2/s pFe_emission_flux_from_NEI2011_inventory -#InvNEI2011_PRPE PRPE 0 1 50 3 kg/m2/s PRPE_emission_flux_from_NEI2011_inventory -#InvNEI2011_OCPI OCPI 0 1 50 3 kg/m2/s OCPI_emission_flux_from_NEI2011_inventory -#InvNEI2011_OCPO OCPO 0 1 50 3 kg/m2/s OCPO_emission_flux_from_NEI2011_inventory -#InvNEI2011_RCHO RCHO 0 1 50 3 kg/m2/s RCHO_emission_flux_from_NEI2011_inventory -#InvNEI2011_SO2 SO2 0 1 50 3 kg/m2/s SO2_emission_flux_from_NEI2011_inventory -#InvNEI2011_SO4 SO4 0 1 50 3 kg/m2/s SO4_emission_flux_from_NEI2011_inventory -#InvNEI2011_SOAP SOAP 0 1 50 3 kg/m2/s SOAP_emission_flux_from_NEI2011_inventory -#InvNEI2011_TOLU TOLU 0 1 50 3 kg/m2/s TOLU_emission_flux_from_NEI2011_inventory -#InvNEI2011_XYLE XYLE 0 1 50 3 kg/m2/s XYLE_emission_flux_from_NEI2011_inventory - -#============================= -# MIX -#============================= -#InvMIX_ACET ACET 0 1 45 2 kg/m2/s ACET_emission_flux_from_MIX_inventory -#InvMIX_ALD2 ALD2 0 1 45 2 kg/m2/s ALD2_emission_flux_from_MIX_inventory -#InvMIX_ALK4 ALK4 0 1 45 2 kg/m2/s ALK4_emission_flux_from_MIX_inventory -#InvMIX_C2H6 C2H6 0 1 45 2 kg/m2/s C2H6_emission_flux_from_MIX_inventory -#InvMIX_C3H8 C3H8 0 1 45 2 kg/m2/s C3H8_emission_flux_from_MIX_inventory -#InvMIX_CH2O CH2O 0 1 45 2 kg/m2/s CH2O_emission_flux_from_MIX_inventory -#InvMIX_CO CO 0 1 45 2 kg/m2/s CO_emission_flux_from_MIX_inventory -#InvMIX_MEK MEK 0 1 45 2 kg/m2/s MEK_emission_flux_from_MIX_inventory -#InvMIX_NH3 NH3 0 1 45 2 kg/m2/s NH3_emission_flux_from_MIX_inventory -#InvMIX_NO NO 0 1 45 2 kg/m2/s NO_emission_flux_from_MIX_inventory -#InvMIX_pFe pFe 0 1 45 2 kg/m2/s pFe_emission_flux_from_MIX_inventory -#InvMIX_PRPE PRPE 0 1 45 2 kg/m2/s PRPE_emission_flux_from_MIX_inventory -#InvMIX_SO2 SO2 0 1 45 2 kg/m2/s SO2_emission_flux_from_MIX_inventory -#InvMIX_SO4 SO4 0 1 45 2 kg/m2/s SO4_emission_flux_from_MIX_inventory -#InvMIX_SOAP SOAP 0 1 45 2 kg/m2/s SOAP_emission_flux_from_MIX_inventory - -#============================= -# DICE-AFRICA -#============================= -#InvDICEAfrica_ACET ACET 0 1 60 2 kg/m2/s ACET_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_ALD2 ALD2 0 1 60 2 kg/m2/s ALD2_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_ALK4 ALK4 0 1 60 2 kg/m2/s ALK4_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_BCPI BCPI 0 1 60 2 kg/m2/s BCPI_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_BCPO BCPO 0 1 60 2 kg/m2/s BCPO_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_BENZ BENZ 0 1 60 2 kg/m2/s BENZ_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_C2H2 C2H2 0 1 60 2 kg/m2/s C2H2_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_C2H4 C2H4 0 1 60 2 kg/m2/s C2H4_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_C2H6 C2H6 0 1 60 2 kg/m2/s C2H6_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_C3H8 C3H8 0 1 60 2 kg/m2/s C2H8_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_CH2O CH2O 0 1 60 2 kg/m2/s CH2O_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_CO CO 0 1 60 2 kg/m2/s CO_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_HAC HAC 0 1 60 2 kg/m2/s HAC_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_HCOOH HCOOH 0 1 60 2 kg/m2/s HCOOH_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_GLYC GLYC 0 1 60 2 kg/m2/s GLYC_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_ISOP ISOP 0 1 60 2 kg/m2/s ISOP_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_MACR MACR 0 1 60 2 kg/m2/s MACR_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_MEK MEK 0 1 60 2 kg/m2/s MEK_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_MOH MOH 0 1 60 2 kg/m2/s MOH_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_MVK MVK 0 1 60 2 kg/m2/s MVK_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_NH3 NH3 0 1 60 2 kg/m2/s NH3_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_NO NO 0 1 60 2 kg/m2/s NO_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_NO2 NO2 0 1 60 2 kg/m2/s NO2_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_OCPI OCPI 0 1 60 2 kg/m2/s OCPI_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_OCPO OCPO 0 1 60 2 kg/m2/s OCPO_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_pFe pFe 0 1 60 2 kg/m2/s pFe_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_PRPE PRPE 0 1 60 2 kg/m2/s PRPE_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_RCHO RCHO 0 1 60 2 kg/m2/s RCHO_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_SO2 SO2 0 1 60 2 kg/m2/s SO2_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_SO4 SO4 0 1 60 2 kg/m2/s SO4_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_SOAP SOAP 0 1 60 2 kg/m2/s SOAP_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_TOLU TOLU 0 1 60 2 kg/m2/s TOLU_emission_flux_from_DICEAfrica_inventory -#InvDICEAfrica_XYLE XYLE 0 1 60 2 kg/m2/s XYLE_emission_flux_from_DICEAfrica_inventory - -#============================= -# CEDS -#============================= -#InvCEDS_ALD2 ALD2 0 1 5 2 kg/m2/s ALD2_emission_flux_from_CEDS_inventory -#InvCEDS_ALK4 ALK4 0 1 5 2 kg/m2/s ALK4_emission_flux_from_CEDS_inventory -#InvCEDS_BCPI BCPI 0 1 5 2 kg/m2/s BCPI_emission_flux_from_CEDS_inventory -#InvCEDS_BCPO BCPO 0 1 5 2 kg/m2/s BCPO_emission_flux_from_CEDS_inventory -#InvCEDS_BENZ BENZ 0 1 5 2 kg/m2/s BENZ_emission_flux_from_CEDS_inventory -#InvCEDS_C2H2 C2H2 0 1 5 2 kg/m2/s C2H2_emission_flux_from_CEDS_inventory -#InvCEDS_C2H4 C2H4 0 1 5 2 kg/m2/s C2H4_emission_flux_from_CEDS_inventory -#InvCEDS_C2H6 C2H6 0 1 5 2 kg/m2/s C2H6_emission_flux_from_CEDS_inventory -#InvCEDS_C3H8 C3H8 0 1 5 2 kg/m2/s C3H8_emission_flux_from_CEDS_inventory -#InvCEDS_CH2O CH2O 0 1 5 2 kg/m2/s CH2O_emission_flux_from_CEDS_inventory -#InvCEDS_CO CO 0 1 5 2 kg/m2/s CO_emission_flux_from_CEDS_inventory -#InvCEDS_MOH MOH 0 1 5 2 kg/m2/s MOH_emission_flux_from_CEDS_inventory -#InvCEDS_EOH EOH 0 1 5 2 kg/m2/s EOH_emission_flux_from_CEDS_inventory -#InvCEDS_ROH ROH 0 1 5 2 kg/m2/s ROH_emission_flux_from_CEDS_inventory -#InvCEDS_HCOOH HCOOH 0 1 5 2 kg/m2/s HCOOH_emission_flux_from_CEDS_inventory -#InvCEDS_MEK MEK 0 1 5 2 kg/m2/s MEK_emission_flux_from_CEDS_inventory -#InvCEDS_NH3 NH3 0 1 5 2 kg/m2/s NH3_emission_flux_from_CEDS_inventory -#InvCEDS_NO NO 0 1 5 2 kg/m2/s NO_emission_flux_from_CEDS_inventory -#InvCEDS_OCPI OCPI 0 1 5 2 kg/m2/s OCPI_emission_flux_from_CEDS_inventory -#InvCEDS_OCPO OCPO 0 1 5 2 kg/m2/s OCPO_emission_flux_from_CEDS_inventory -#InvCEDS_pFe pFe 0 1 5 2 kg/m2/s pFe_emission_flux_from_CEDS_inventory -#InvCEDS_POG1 POG1 0 1 5 2 kg/m2/s POG1_emission_flux_from_CEDS_inventory -#InvCEDS_POG2 POG2 0 1 5 2 kg/m2/s POG2_emission_flux_from_CEDS_inventory -#InvCEDS_PRPE PRPE 0 1 5 2 kg/m2/s PRPE_emission_flux_from_CEDS_inventory -#InvCEDS_SO2 SO2 0 1 5 2 kg/m2/s SO2_emission_flux_from_CEDS_inventory -#InvCEDS_SO4 SO4 0 1 5 2 kg/m2/s SO4_emission_flux_from_CEDS_inventory -#InvCEDS_SOAP SOAP 0 1 5 2 kg/m2/s SOAP_emission_flux_from_CEDS_inventory -#InvCEDS_TOLU TOLU 0 1 5 2 kg/m2/s TOLU_emission_flux_from_CEDS_inventory -#InvCEDS_XYLE XYLE 0 1 5 2 kg/m2/s XYLE_emission_flux_from_CEDS_inventory - -#============================= -# GEIA_NH3 -#============================= -#InvGEIAnatural_NH3 NH3 0 3 1 2 kg/m2/s NH3_emission_flux_from_GEIA_natural_source - -#============================= -# Seabirds -#============================= -#InvSEABIRDS_NH3 NH3 0 30 1 2 kg/m2/s NH3_emission_flux_from_arctic_seabirds - -#============================= -# C2H62010 -#============================= -#InvC2H62010_C2H6 C2H6 0 1 100 2 kg/m2/s C2H6_from_C2H62010_anthropogenic_inventory - -#============================= -# XIAO_C3H8 -#============================= -#InvXIAO_C3H8 C3H8 0 1 10 2 kg/m2/s C3H8_from_XIAO_anthropogenic_inventory - -#============================= -# LIANG_BROMOCARB -#============================= -#InvLIANG_CH2Br2 CH2Br2 0 1 1 2 kg/m2/s CH2Br2_emission_flux_from_LIANG_BROMOCARB_inventory -#InvLIANG_CHBr3 CHBr3 0 1 1 2 kg/m2/s CHBr3_emission_flux_from_LIANG_BROMOCARB_inventory - -#============================= -# ORDONEZ_IODOCARB -#============================= -#InvORDONEZ_CH2I2 CH2I2 0 1 1 2 kg/m2/s CH2I2_emission_flux_from_ORDONEZ_IODOCARB_inventory -#InvORDONEZ_CH2ICl CH2ICl 0 1 1 2 kg/m2/s CH2ICl_emission_flux_from_ORDONEZ_IODOCARB_inventory -#InvORDONEZ_CH2IBr CH2IBr 0 1 1 2 kg/m2/s CH2IBr_emission_flux_from_ORDONEZ_IODOCARB_inventory -#InvORDONEZ_CH3I CH3I 0 1 1 2 kg/m2/s CH3I_emission_flux_from_ORDONEZ_IODOCARB_inventory - -#============================= -# CEDS_SHIP -#============================= -#InvCEDSship_ALD2 ALD2 0 10 5 2 kg/m2/s ALD2_emission_flux_from_CEDSship_inventory -#InvCEDSship_ALK4 ALK4 0 10 5 2 kg/m2/s ALK4_emission_flux_from_CEDSship_inventory -#InvCEDSship_BCPI BCPI 0 10 5 2 kg/m2/s BCPI_emission_flux_from_CEDSship_inventory -#InvCEDSship_BCPO BCPO 0 10 5 2 kg/m2/s BCPO_emission_flux_from_CEDSship_inventory -#InvCEDSship_BENZ BENZ 0 10 5 2 kg/m2/s BENZ_emission_flux_from_CEDSship_inventory -#InvCEDSship_C2H2 C2H2 0 10 5 2 kg/m2/s C2H2_emission_flux_from_CEDSship_inventory -#InvCEDSship_C2H4 C2H4 0 10 5 2 kg/m2/s C2H4_emission_flux_from_CEDSship_inventory -#InvCEDSship_C2H6 C2H6 0 10 5 2 kg/m2/s C2H6_emission_flux_from_CEDSship_inventory -#InvCEDSship_C3H8 C3H8 0 10 5 2 kg/m2/s C3H8_emission_flux_from_CEDSship_inventory -#InvCEDSship_CH2O CH2O 0 10 5 2 kg/m2/s CH2O_emission_flux_from_CEDSship_inventory -#InvCEDSship_CO CO 0 10 5 2 kg/m2/s CO_emission_flux_from_CEDSship_inventory -#InvCEDSship_EOH EOH 0 10 5 2 kg/m2/s EOH_emission_flux_from_CEDSship_inventory -#InvCEDSship_HCOOH HCOOH 0 10 5 2 kg/m2/s HCOOH_emission_flux_from_CEDSship_inventory -#InvCEDSship_MEK MEK 0 10 5 2 kg/m2/s MEK_emission_flux_from_CEDSship_inventory -#InvCEDSship_NH3 NH3 0 10 5 2 kg/m2/s NH3_emission_flux_from_CEDSship_inventory -#InvCEDSship_pFe pFe 0 10 5 2 kg/m2/s pFe_emission_flux_from_CEDSship_inventory -#InvCEDSship_PRPE PRPE 0 10 5 2 kg/m2/s PRPE_emission_flux_from_CEDSship_inventory -#InvCEDSship_OCPI OCPI 0 10 5 2 kg/m2/s OCPI_emission_flux_from_CEDSship_inventory -#InvCEDSship_OCPO OCPO 0 10 5 2 kg/m2/s OCPO_emission_flux_from_CEDSship_inventory -#InvCEDSship_SO2 SO2 0 10 5 2 kg/m2/s SO2_emission_flux_from_CEDSship_inventory -#InvCEDSship_SO4 SO4 0 10 5 2 kg/m2/s SO4_emission_flux_from_CEDSship_inventory -#InvCEDSship_SOAP SOAP 0 10 5 2 kg/m2/s SOAP_emission_flux_from_CEDSship_inventory -#InvCEDSship_TOLU TOLU 0 10 5 2 kg/m2/s TOLU_emission_flux_from_CEDSship_inventory -#InvCEDSship_XYLE XYLE 0 10 5 2 kg/m2/s XYLE_emission_flux_from_CEDSship_inventory - -#============================= -# AEIC -#============================= -#InvAEIC_ACET ACET 0 20 1 3 kg/m2/s ACET_emission_flux_from_AEIC_inventory -#InvAEIC_ALD2 ALD2 0 20 1 3 kg/m2/s ALD2_emission_flux_from_AEIC_inventory -#InvAEIC_ALK4 ALK4 0 20 1 3 kg/m2/s ALK4_emission_flux_from_AEIC_inventory -#InvAEIC_BCPI BCPI 0 20 1 3 kg/m2/s BCPI_emission_flux_from_AEIC_inventory -#InvAEIC_C2H6 C2H6 0 20 1 3 kg/m2/s C2H6_emission_flux_from_AEIC_inventory -#InvAEIC_C3H8 C3H8 0 20 1 3 kg/m2/s C3H8_emission_flux_from_AEIC_inventory -#InvAEIC_CH2O CH2O 0 20 1 3 kg/m2/s CH2O_emission_flux_from_AEIC_inventory -#InvAEIC_CO CO 0 20 1 3 kg/m2/s CO_emission_flux_from_AEIC_inventory -#InvAEIC_MACR MACR 0 20 1 3 kg/m2/s MACR_emission_flux_from_AEIC_inventory -#InvAEIC_NO NO 0 20 1 3 kg/m2/s NO_emission_flux_from_AEIC_inventory -#InvAEIC_OCPI OCPI 0 20 1 3 kg/m2/s OCPI_emission_flux_from_AEIC_inventory -#InvAEIC_PRPE PRPE 0 20 1 3 kg/m2/s PRPE_emission_flux_from_AEIC_inventory -#InvAEIC_RCHO RCHO 0 20 1 3 kg/m2/s RCHO_emission_flux_from_AEIC_inventory -#InvAEIC_SO2 SO2 0 20 1 3 kg/m2/s SO2_emission_flux_from_AEIC_inventory -#InvAEIC_SO4 SO4 0 20 1 3 kg/m2/s SO4_emission_flux_from_AEIC_inventory -#InvAEIC_SOAP SOAP 0 20 1 3 kg/m2/s SOAP_emission_flux_from_AEIC_inventory - -#============================= -# Decaying plants -#============================= -#InvPLANTDECAY_ALD2 ALD2 0 3 1 2 kg/m2/s ALD2_emission_flux_from_PLANTDECAY_inventory -#InvPLANTDECAY_EOH EOH 0 3 1 2 kg/m2/s EOH_emission_flux_from_PLANTDECAY_inventory - -#============================= -# AFCID emissions -#============================= -#InvAFCID_DST1 DST1 0 1 -1 2 kg/m2/s DST1_emission_flux_from_AFCID_inventory - -## Benchmark simulations will use online emissions -## Comment out offline emission inventories, but leave here for ease of switching -###============================= -### Offline dust emissions -###============================= -###InvOFFLINEDUST_DST1 DST1 0 3 -1 2 kg/m2/s DST1_emission_flux_from_offline_model -###InvOFFLINEDUST_DST2 DST2 0 3 -1 2 kg/m2/s DST2_emission_flux_from_offline_model -###InvOFFLINEDUST_DST3 DST3 0 3 -1 2 kg/m2/s DST3_emission_flux_from_offline_model -###InvOFFLINEDUST_DST4 DST4 0 3 -1 2 kg/m2/s DST4_emission_flux_from_offline_model -## -###============================= -### Offline biogenic VOC emissions -###============================= -###InvOFFLINEBIOVOC_ACET ACET 0 4 -1 2 kg/m2/s ACET_biogenic_emission_flux_from_offline_model -###InvOFFLINEBIOVOC_ALD2 ALD2 0 4 -1 2 kg/m2/s ALD2_biogenic_emission_flux_from_offline_model -###InvOFFLINEBIOVOC_C2H4 C2H4 0 4 -1 2 kg/m2/s C2H4_biogenic_emission_flux_from_offline_model -###InvOFFLINEBIOVOC_EOH EOH 0 4 -1 2 kg/m2/s EOH_biogenic_emission_flux_from_offline_model -###InvOFFLINEBIOVOC_ISOP ISOP 0 4 -1 2 kg/m2/s ISOP_biogenic_emission_flux_from_offline_model -###InvOFFLINEBIOVOC_LIMO LIMO 0 4 -1 2 kg/m2/s LIMO_biogenic_emission_flux_from_offline_model -###InvOFFLINEBIOVOC_MTPA MTPA 0 4 -1 2 kg/m2/s MTPA_biogenic_emission_flux_from_offline_model -###InvOFFLINEBIOVOC_MTPO MTPO 0 4 -1 2 kg/m2/s MTPO_biogenic_emission_flux_from_offline_model -###InvOFFLINEBIOVOC_PRPE PRPE 0 4 -1 2 kg/m2/s PRPE_biogenic_emission_flux_from_offline_model -###InvOFFLINEBIOVOC_SESQ SESQ 0 4 -1 2 kg/m2/s SESQ_biogenic_emission_flux_from_offline_model -###InvOFFLINEBIOVOC_SOAP SOAP 0 4 -1 2 kg/m2/s SOAP_biogenic_emission_flux_from_offline_model -###InvOFFLINEBIOVOC_SOAS SOAS 0 4 -1 2 kg/m2/s SOAS_biogenic_emission_flux_from_offline_model -## -###============================= -### Offline sea salt emissions -###============================= -###InvOFFLINESEASALT_Br2 Br2 0 3 -1 2 kg/m2/s Br2_seasalt_emission_flux_from_offline_model -###InvOFFLINESEASALT_BrSALA BrSALA 0 3 -1 2 kg/m2/s BrSALA_seasalt_emission_flux_from_offline_model -###InvOFFLINESEASALT_BrSALC BrSALC 0 3 -1 2 kg/m2/s BrSALC_seasalt_emission_flux_from_offline_model -###InvOFFLINESEASALT_SALA SALA 0 3 -1 2 kg/m2/s SALA_seasalt_emission_flux_from_offline_model -###InvOFFLINESEASALT_SALC SALC 0 3 -1 2 kg/m2/s SALC_seasalt_emission_flux_from_offline_model -## -###============================= -### Offline soil NOx emissions -###============================= -###InvOFFLINESOILNOX_NO NO 0 3 -1 2 kg/m2/s NO_soil_and_fertilizer_emission_flux_from_offline_model - -#============================= -# Seaflux extension -#============================= -#InvSeaFlux_ACET ACET 101 -1 -1 2 kg/m2/s ACET_emission_flux_from_SeaFlux_extension -#InvSeaFlux_ALD2 ALD2 101 -1 -1 2 kg/m2/s ALD2_emission_flux_from_SeaFlux_extension -#InvSeaFlux_DMS DMS 101 -1 -1 2 kg/m2/s DMS_emission_flux_from_SeaFlux_extension -#InvSeaFlux_CH3I CH3I 101 -1 -1 2 kg/m2/s CH3I_emission_flux_from_SeaFlux_extension -#InvSeaFlux_ETNO3 ETNO3 101 -1 -1 2 kg/m2/s ETNO3_emission_flux_from_SeaFlux_extension -#InvSeaFlux_MENO3 MENO3 101 -1 -1 2 kg/m2/s MENO3_emission_flux_from_SeaFlux_extension -#InvSeaFlux_MOH MOH 101 -1 -1 2 kg/m2/s MOH_emission_flux_from_SeaFlux_extension - -#============================= -# PARANOX extension -#============================= -#InvPARANOX_HNO3 HNO3 102 -1 -1 2 kg/m2/s HNO3_emission_flux_from_PARANOX_extension -#InvPARANOX_NO NO 102 -1 -1 2 kg/m2/s NO_emission_flux_from_PARANOX_extension -#InvPARANOX_NO2 NO2 102 -1 -1 2 kg/m2/s NO2_emission_flux_from_PARANOX_extension -#InvPARANOX_O3 O3 102 -1 -1 2 kg/m2/s O3_emission_flux_from_PARANOX_extension - -#============================= -# LIGHTNOX extension -#============================= -#InvLIGHTNOX_NO NO 103 -1 -1 3 kg/m2/s NO_emission_flux_from_lightning_extension - -#============================= -# SOILNOX extension -#============================= -#InvSOILNOX_NO NO 104 -1 -1 2 kg/m2/s NO_emission_flux_from_SOINOX_extension_including_soil_and_fertilizer_emissions - -#============================= -# DEAD (dust) Extension -#============================= -#InvDEAD_DST1 DST1 105 -1 -1 2 kg/m2/s DST1_emission_flux_from_DEAD_extension -#InvDEAD_DST2 DST2 105 -1 -1 2 kg/m2/s DST2_emission_flux_from_DEAD_extension -#InvDEAD_DST3 DST3 105 -1 -1 2 kg/m2/s DST3_emission_flux_from_DEAD_extension -#InvDEAD_DST4 DST4 105 -1 -1 2 kg/m2/s DST4_emission_flux_from_DEAD_extension - -#============================= -# SeaSalt extension -#============================= -#InvSeaSalt_BrSALA BrSALA 107 -1 -1 2 kg/m2/s BrSALA_emission_flux_from_SeaSalt_extension -#InvSeaSalt_BrSALC BrSALC 107 -1 -1 2 kg/m2/s BrSALC_emission_flux_from_SeaSalt_extension -#InvSeaSalt_SALA SALA 107 -1 -1 2 kg/m2/s SALA_emission_flux_from_SeaSalt_extension -#InvSeaSalt_SALC SALC 107 -1 -1 2 kg/m2/s SALC_emission_flux_from_SeaSalt_extension -#InvSeaSalt_SALAAL SALAAL 107 -1 -1 2 kg/m2/s SALAAL_emission_flux_from_SeaSalt_extension -#InvSeaSalt_SALACL SALACL 107 -1 -1 2 kg/m2/s SALACL_emission_flux_from_SeaSalt_extension -#InvSeaSalt_SALCAL SALCAL 107 -1 -1 2 kg/m2/s SALAAL_emission_flux_from_SeaSalt_extension -#InvSeaSalt_SALCCL SALCCL 107 -1 -1 2 kg/m2/s SALCCL_emission_flux_from_SeaSalt_extension - -#============================= -# MEGAN Extension -#============================= -#InvMEGAN_ALD2 ALD2 108 -1 -1 2 kg/m2/s ALD2_biogenic_emission_flux_from_MEGAN_extension -# C2H4 is not an active species in GEOS-Chem; disable for now -##InvMEGAN_C2H4 C2H4 108 -1 -1 2 kg/m2/s C2H4_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_EOH EOH 108 -1 -1 2 kg/m2/s EOH_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_ISOP ISOP 108 -1 -1 2 kg/m2/s ISOP_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_LIMO LIMO 108 -1 -1 2 kg/m2/s LIMO_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_MTPA MTPA 108 -1 -1 2 kg/m2/s MTPA_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_MTPO MTPO 108 -1 -1 2 kg/m2/s MTPO_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_PRPE PRPE 108 -1 -1 2 kg/m2/s PRPE_biogenic_emission_flux_from_MEGAN_extension -# SESQ is not an active species in GEOS-Chem; disable for now -##InvMEGAN_SESQ SESQ 108 -1 -1 2 kg/m2/s SESQ_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_SOAP SOAP 108 -1 -1 2 kg/m2/s SOAP_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_SOAS SOAS 108 -1 -1 2 kg/m2/s SOAS_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_ACET ACET 108 -1 -1 2 kg/m2/s ACET_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_ACET_MONO -1 108 -1 -1 2 kg/m2/s Acetone_from_monoterpenes_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_ACET_MBOX -1 108 -1 -1 2 kg/m2/s Acetone_from_methyl_butenol_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_ACET_DIRECT -1 108 -1 -1 2 kg/m2/s Direct_acetone_biogenic_emission_flux_from_MEGAN_extension -#InvMEGAN_MOH MOH 108 -1 -1 2 kg/m2/s Methanol_emission_flux_from_MEGAN_extension -#InvMEGAN_APIN -1 108 -1 -1 2 kg/m2/s Alpha_pinene_emission_flux_from_MEGAN_extension -#InvMEGAN_BPIN -1 108 -1 -1 2 kg/m2/s Beta_pinene_acid_emission_flux_from_MEGAN_extension -#InvMEGAN_SABI -1 108 -1 -1 2 kg/m2/s Sabinene_emission_flux_from_MEGAN_extension -#InvMEGAN_MYRC -1 108 -1 -1 2 kg/m2/s Mycrene_emission_flux_from_MEGAN_extension -#InvMEGAN_CARE -1 108 -1 -1 2 kg/m2/s 3_Carene_emission_flux_from_MEGAN_extension -#InvMEGAN_OCIM -1 108 -1 -1 2 kg/m2/s Ocimene_emission_flux_from_MEGAN_extension -#InvMEGAN_OMON -1 108 -1 -1 2 kg/m2/s Other_monoterpene_emission_flux_from_MEGAN_extension -#InvMEGAN_MONX -1 108 -1 -1 2 kg/m2/s Total_monoterpene_emission_flux_from_MEGAN_extension -#InvMEGAN_FARN -1 108 -1 -1 2 kg/m2/s alpha_Farnesene_emission_flux_from_MEGAN_extension -#InvMEGAN_BCAR -1 108 -1 -1 2 kg/m2/s beta_caryophyllene_emission_flux_from_MEGAN_extension -#InvMEGAN_OSQT -1 108 -1 -1 2 kg/m2/s Other_sesquiterpenes_emission_flux_from_MEGAN_extension -#InvMEGAN_MBOX -1 108 -1 -1 2 kg/m2/s Methyl_butenol_emission_flux_from_MEGAN_extension -#InvMEGAN_FAXX -1 108 -1 -1 2 kg/m2/s Formic_acid_emission_flux_from_MEGAN_extension -#InvMEGAN_AAXX -1 108 -1 -1 2 kg/m2/s Acetic_acid_emission_flux_from_MEGAN_extension - -#============================= -# GFED Extension -#============================= -#InvGFED_ACET ACET 111 -1 -1 2 kg/m2/s ACET_emission_flux_from_GFED_extension -#InvGFED_ALD2 ALD2 111 -1 -1 2 kg/m2/s ALD2_emission_flux_from_GFED_extension -#InvGFED_ALK4 ALK4 111 -1 -1 2 kg/m2/s ALK4_emission_flux_from_GFED_extension -#InvGFED_BCPI BCPI 111 -1 -1 2 kg/m2/s BCPI_emission_flux_from_GFED_extension -#InvGFED_BCPO BCPO 111 -1 -1 2 kg/m2/s BCPO_emission_flux_from_GFED_extension -#InvGFED_BENZ BENZ 111 -1 -1 2 kg/m2/s BENZ_emission_flux_from_GFED_extension -#InvGFED_C2H6 C2H6 111 -1 -1 2 kg/m2/s C2H6_emission_flux_from_GFED_extension -#InvGFED_C3H8 C3H8 111 -1 -1 2 kg/m2/s C3H8_emission_flux_from_GFED_extension -#InvGFED_CH2O CH2O 111 -1 -1 2 kg/m2/s CH2O_emission_flux_from_GFED_extension -#InvGFED_CO CO 111 -1 -1 2 kg/m2/s CO_emission_flux_from_GFED_extension -#InvGFED_EOH EOH 111 -1 -1 2 kg/m2/s EOH_emission_flux_from_GFED_extension -#InvGFED_MEK MEK 111 -1 -1 2 kg/m2/s MEK_emission_flux_from_GFED_extension -#InvGFED_MOH MOH 111 -1 -1 2 kg/m2/s MOH_emission_flux_from_GFED_extension -#InvGFED_MTPA MTP 111 -1 -1 2 kg/m2/s MTPA_emission_flux_from_GFED_extension -#InvGFED_NAP NAP 111 -1 -1 2 kg/m2/s NAP_emission_flux_from_GFED_extension -#InvGFED_NH3 NH3 111 -1 -1 2 kg/m2/s NH3_emission_flux_from_GFED_extension -#InvGFED_NO NO 111 -1 -1 2 kg/m2/s NO_emission_flux_from_GFED_extension -#InvGFED_OCPI OCPI 111 -1 -1 2 kg/m2/s OCPI_emission_flux_from_GFED_extension -#InvGFED_OCPO OCPO 111 -1 -1 2 kg/m2/s OCPO_emission_flux_from_GFED_extension -#InvGFED_POG1 POG1 111 -1 -1 2 kg/m2/s POG1_emission_flux_from_GFED_extension -#InvGFED_POG2 POG2 111 -1 -1 2 kg/m2/s POG2_emission_flux_from_GFED_extension -#InvGFED_PRPE PRPE 111 -1 -1 2 kg/m2/s PRPE_emission_flux_from_GFED_extension -#InvGFED_SO2 SO2 111 -1 -1 2 kg/m2/s SO2_emission_flux_from_GFED_extension -#InvGFED_SOAP SOAP 111 -1 -1 2 kg/m2/s SOAP_emission_flux_from_GFED_extension -#InvGFED_TOLU TOLU 111 -1 -1 2 kg/m2/s TOLU_emission_flux_from_GFED_extension -#InvGFED_XYLE ACET 111 -1 -1 2 kg/m2/s XYLE_emission_flux_from_GFED_extension - -#============================= -# Volcano extension -#============================= -#InvVOLCANOerupt_SO2 SO2 117 51 -1 3 kg/m2/s SO2_eruptive_emission_flux_from_Volcano_extension -#InvVOLCANOdegas_SO2 SO2 117 52 -1 3 kg/m2/s SO2_degassing_emission_flux_from_Volcano_extension - -#============================= -# INORG_IODINE Extension -#============================= -#InvIODINE_HOI HOI 120 -1 -1 2 kg/m2/s HOI_emission_flux_from_INORG_IODINE_extension -#InvIODINE_I2 I2 120 -1 -1 2 kg/m2/s I2_emission_flux_from_INORG_IODINE_extension - -#EOC diff --git a/run/CESM/HEMCO_Diagn.rc b/run/CESM/HEMCO_Diagn.rc new file mode 120000 index 000000000..2377e948f --- /dev/null +++ b/run/CESM/HEMCO_Diagn.rc @@ -0,0 +1 @@ +../GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem \ No newline at end of file diff --git a/run/CESM/HISTORY.rc b/run/CESM/HISTORY.rc index 670a97f7d..f7deb79bb 100644 --- a/run/CESM/HISTORY.rc +++ b/run/CESM/HISTORY.rc @@ -74,12 +74,15 @@ COLLECTIONS: 'Metrics', #'DryDep', 'JValues', #'KppDiags', + #'KppARDiags', #'LevelEdgeDiags', 'ProdLoss', + #'RxnRates', + #'RxnConst', 'StateChm', #'StateMet', #'StratBM', - 'UVFlux', + #'UVFlux', :: ############################################################################### ### The rest of this file consists of collection definitions. ### @@ -89,7 +92,7 @@ COLLECTIONS: 'Metrics', ############################################################################### #============================================================================== -# %%%%% THE Metrics COLLECTION %%%%% +# %%%%% Metrics %%%%% # # Diagnostics for chemistry metrics such as global mean OH concentration, # MCF lifetime, and CH4 lifetime. @@ -100,8 +103,8 @@ COLLECTIONS: 'Metrics', # Available for full-chemistry and CH4 simulations only. #============================================================================== Metrics.template: '%y4%m2%d2_%h2%n2z.nc4', - Metrics.frequency: 'End', - Metrics.duration: 'End', + Metrics.frequency: {FREQUENCY} + Metrics.duration: {DURATION} Metrics.mode: 'time-averaged' Metrics.fields: 'AirMassColumnFull ', 'LossOHbyCH4columnTrop ', @@ -109,7 +112,7 @@ COLLECTIONS: 'Metrics', 'OHwgtByAirMassColumnFull ', :: #============================================================================== -# %%%%% THE AerosolMass COLLECTION %%%%% +# %%%%% AerosolMass %%%%% # # Aerosol and PM2.5 mass # @@ -139,7 +142,7 @@ COLLECTIONS: 'Metrics', 'TotalOC ', :: #============================================================================== -# %%%%% The Aerosols COLLECTION %%%%% +# %%%%% Aerosols %%%%% # # Aerosol optical depth, surface area, number density, and hygroscopic growth # @@ -251,7 +254,7 @@ COLLECTIONS: 'Metrics', 'Chem_KhetiSLAHOBrHBr ', :: #============================================================================== -# %%%%% THE Budget COLLECTION %%%%% +# %%%%% Budget %%%%% # # GEOS-Chem budget diagnostics defined as species kg/s in the column # (full, troposphere, or PBL) due to a single component (e.g. chemistry) @@ -269,7 +272,7 @@ COLLECTIONS: 'Metrics', 'BudgetChemistryLevs1to35_O3 ', :: #============================================================================== -# %%%%% THE ConcAboveSfc COLLECTION %%%%% +# %%%%% ConcAboveSfc %%%%% # # Concentrations of O3 and HNO3 at a user-specified altitude above # the surface, such as 10m. Set the desired output altitude in meters @@ -291,7 +294,7 @@ COLLECTIONS: 'Metrics', 'SpeciesConcALT1_HNO3 ', :: #============================================================================== -# %%%%% THE ConcAfterChem COLLECTION %%%%% +# %%%%% ConcAfterChem %%%%% # # Concentrations of OH, HO2, O1D, O3P immediately after exiting the KPP solver # or OH after the CH4 specialty-simulation chemistry routine. @@ -310,7 +313,7 @@ COLLECTIONS: 'Metrics', 'O3PconcAfterChem ', :: #============================================================================== -# %%%%% THE JValues COLLECTION %%%%% +# %%%%% JValues %%%%% # # Photolysis rates (from the photolysis module) # @@ -461,7 +464,7 @@ COLLECTIONS: 'Metrics', 'Jval_ACET ', :: #============================================================================== -# %%%%% THE UVFlux COLLECTION %%%%% +# %%%%% UVFlux %%%%% # # UV fluxes (from the photolysis module) # @@ -527,7 +530,7 @@ COLLECTIONS: 'Metrics', 'UVFluxDiffuse_187nm ', :: #============================================================================== -# %%%%% THE KppDiags COLLECTION %%%%% +# %%%%% KppDiags %%%%% # # Diagnostics from the KPP solver. # @@ -547,11 +550,28 @@ COLLECTIONS: 'Metrics', 'KppSmDecomps ', #'KppNegatives ', #'KppNegatives0 ', + 'KppTime ', :: #============================================================================== -# %%%%% THE LevelEdgeDiags COLLECTION %%%%% +# %%%%% KppARDiags %%%%% # -# Diagnostics that are defined on grid box level edges +# Diagnostics from the KPP solver when auto-reduction solver is used. +# +# Available for full-chemistry simulations only if auto-reduce is enabled. +#============================================================================== + KppARDiags.template: '%y4%m2%d2_%h2%n2z.nc4', + KppARDiags.frequency: {FREQUENCY} + KppARDiags.duration: {DURATION} + KppARDiags.mode: 'time-averaged' + KppARDiags.fields: 'KppAutoReducerNVAR ', + 'KppAutoReduceThres ', + 'KppcNONZERO ', +:: +#============================================================================== +# %%%%% LevelEdgeDiags %%%%% +# +# Diagnostics that are defined on grid box level edges. Vertical dimension +# size is one more than 3D fields in the StateMet collection. # # Available for all simulations #============================================================================== @@ -568,7 +588,7 @@ COLLECTIONS: 'Metrics', 'Met_PFLLSAN ', :: #============================================================================== -# %%%%% THE ProdLoss COLLECTION %%%%% +# %%%%% ProdLoss %%%%% # # Chemical production and loss rates # @@ -600,7 +620,44 @@ COLLECTIONS: 'Metrics', 'ProdCOfromNMVOC ', :: #============================================================================== -# %%%%% THE StateChm COLLECTION %%%%% +# %%%%% RxnRates %%%%% +# +# Archives chemical reaction rates from the KPP solver. +# It is best to list individual reactions to avoid using too much memory. +# Reactions should be listed as "RxnRate_EQnnn", where nnn is the reaction +# index as listed in KPP/fullchem/gckpp_Monitor.F90 (pad zeroes as needed). +# +# Available for the fullchem simulations. +#============================================================================== + RxnRates.template: '%y4%m2%d2_%h2%n2z.nc4', + RxnRates.frequency: {FREQUENCY} + RxnRates.duration: {DURATION} + RxnRates.mode: 'time-averaged' + RxnRates.fields: 'RxnRate_EQ001 ', + 'RxnRate_EQ002 ', +:: +#============================================================================== +# %%%%% RxnConst %%%%% +# +# Archives chemical reaction rates constants from the KPP solver. +# It is best to list individual reactions to avoid using too much memory. +# Reactions should be listed as "RxnConst_EQnnn", where nnn is the reaction +# index as listed in KPP/fullchem/gckpp_Monitor.F90 (pad zeroes as needed). +# +# The units of reaction rate constants vary according to the number of reactants +# in the reaction. +# +# Available for the fullchem simulations. +#============================================================================== + RxnConst.template: '%y4%m2%d2_%h2%n2z.nc4', + RxnConst.frequency: {FREQUENCY} + RxnConst.duration: {DURATION} + RxnConst.mode: 'time-averaged' + RxnConst.fields: 'RxnConst_EQ001 ', + 'RxnConst_EQ002 ', +:: +#============================================================================== +# %%%%% StateChm %%%%% # # Fields of the State_Chm object (see also Aerosols collection) # @@ -634,9 +691,11 @@ COLLECTIONS: 'Metrics', 'Chem_YieldClNO2fine ', :: #============================================================================== -# %%%%% The StateMet COLLECTION %%%%% +# %%%%% StateMet %%%%% # -# Fields of the State_Met object (also see the LevelEdgeDiags collection) +# Fields of the State_Met object (also see the LevelEdgeDiags collection). All +# 3D fields are centered in the grid box, i.e. not at level edges. Vertical +# dimension size is one more than 3D fields in the LevelEdgeDiags collection. # # Available for all simulations #============================================================================== @@ -726,23 +785,4 @@ COLLECTIONS: 'Metrics', 'Met_V10M ', 'Met_Z0 ', 'FracOfTimeInTrop ', -:: -#============================================================================== -# %%%%% THE StratBM COLLECTION %%%%% -# -# Fields needed for GEOS-Chem 10-year stratospheric benchmarks -# -# Available for full-chemistry simulations -#============================================================================== - StratBM.template: '%y4%m2%d2_%h2%n2z.nc4', - StratBM.frequency: 00000000 010000 - StratBM.duration: 00000001 000000 - StratBM.mode: 'time-averaged' - StratBM.fields: 'SpeciesConcVV_NO2 ', - 'SpeciesConcVV_O3 ', - 'SpeciesConcVV_ClO ', - 'Met_PSC2WET ', - 'Met_BXHEIGHT ', - 'Met_AIRDEN ', - 'Met_AD ', :: \ No newline at end of file diff --git a/run/CESM/geoschem_config.yml b/run/CESM/geoschem_config.yml index 9fad3497e..f8f205413 100644 --- a/run/CESM/geoschem_config.yml +++ b/run/CESM/geoschem_config.yml @@ -32,9 +32,33 @@ operations: activate: true use_static_bnd_cond: true gamma_HO2: 0.2 + autoreduce_solver: + activate: false + use_target_threshold: + activate: true + oh_tuning_factor: 0.00005 + no2_tuning_factor: 0.0001 + use_absolute_threshold: + scale_by_pressure: true + absolute_threshold: 100.0 + keep_halogens_active: false + append_in_internal_timestep: false - convection: - activate: false + photolysis: + activate: true + input_directories: + fastjx_input_dir: /see/namelist/file + cloudj_input_dir: /see/namelist/file + overhead_O3: + use_online_O3_from_model: true + use_column_O3_from_met: true + use_TOMS_SBUV_O3: false + photolyze_nitrate_aerosol: + activate: true + NITs_Jscale_JHNO3: 100.0 + NIT_Jscale_JHNO2: 100.0 + percent_channel_A_HONO: 66.667 + percent_channel_B_NO2: 33.333 dry_deposition: activate: true @@ -44,22 +68,15 @@ operations: reference_CO2_level: 380.0 diag_alt_above_sfc_in_m: 10 + wet_deposition: + activate: true + pbl_mixing: activate: true use_non_local_pbl: true - photolysis: - input_dir: {DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2020-10/ - overhead_O3: - use_online_O3_from_model: true - use_column_O3_from_met: true - use_TOMS_SBUV_O3: false - photolyze_nitrate_aerosol: - activate: true - NITs_Jscale_JHNO3: 100.0 - NIT_Jscale_JHNO2: 100.0 - percent_channel_A_HONO: 66.667 - percent_channel_B_NO2: 33.333 + convection: + activate: false rrtmg_rad_transfer_model: activate: false @@ -71,7 +88,6 @@ operations: all_sky_flux: false transport: - activate: true transported_species: - ACET - ACTA @@ -102,6 +118,7 @@ operations: - BrO - BrSALA - BrSALC + - BUTDI - BZCO3H - BZPAN - C2H2 @@ -148,6 +165,7 @@ operations: - ETHP - ETNO3 - ETP + - FURA - GLYC - GLYX - H1211 @@ -307,9 +325,6 @@ operations: - TSOG3 - XYLE - wet_deposition: - activate: true - #============================================================================ # Settings for GEOS-Chem aerosols #============================================================================ From 17280aacc16d353a72f3ff93ef6939899f979f5f Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 15 Feb 2024 07:54:53 -0700 Subject: [PATCH 146/331] Add util directory in run/CESM; include script to generate dep_data_file CESM requires a netcdf file containing a list of gas phase dry deposited species and their molecular weights and Henry's Law coefficients. Having the script within the GEOS-Chem source code is advantageous because it can be updated at the same time that species lists change in GEOS-Chem. Signed-off-by: Lizzie Lundgren --- run/CESM/util/README | 14 + run/CESM/util/dep_data_file.cdl | 557 ++++++++++++++++++++++++++++++++ 2 files changed, 571 insertions(+) create mode 100644 run/CESM/util/README create mode 100644 run/CESM/util/dep_data_file.cdl diff --git a/run/CESM/util/README b/run/CESM/util/README new file mode 100644 index 000000000..80c339610 --- /dev/null +++ b/run/CESM/util/README @@ -0,0 +1,14 @@ +Use dep_data_file.cdl to generate the netcdf file for inputting Henry's Law coefficients +and molectular weights to CESM for use in deposition. This file must be updated every time +a new wet or dry deposited species is added to GEOS-Chem. Once created, the netcdf file +should be renamed to include GEOS-Chem version number and data created, and then copied +to the location set in cam/bld/namelist_files/namelist_defaults_cam.xml. + +Instructions to using ncgen: +ncgen x.cdl # checks syntax +ncgen -b x.cdl # writes x.nc +ncgen -o y.nc x.cdl # writes y.nc + +Notes: +- Added OX since shr_drydep_mod maps dry deposited species O3 to OX in the deposition file. + Parameters for OX are the same as O3. diff --git a/run/CESM/util/dep_data_file.cdl b/run/CESM/util/dep_data_file.cdl new file mode 100644 index 000000000..a4567c573 --- /dev/null +++ b/run/CESM/util/dep_data_file.cdl @@ -0,0 +1,557 @@ +netcdf drydep_tables { +dimensions: + n_species_table = 131; + NHen = 6; + chars = 16; +variables: + + char species_name_table(n_species_table,chars); + species_name_table:long_name = "names of species in dry deposition tables" ; + double dfoxd(n_species_table); + dfoxd:long_name = "data for foxd (reactivity factor for oxidation)"; + double dheff(n_species_table,NHen); + dheff:long_name = "data for effective Henry's Law coefficient"; + double mol_wghts(n_species_table); + mol_wghts:long_name = "species molecular mass"; + mol_wghts:units = "grams/mole"; + +// global attributes: + + :Created_by = "Elizabeth Lundgren (Harvard University)"; + :Source = "GEOS-Chem version 14.3. gas-phase dry deposited species"; + +data: + + species_name_table = + "ACET ", + "ACTA ", + "ALD2 ", + "AROMP4 ", + "AROMP5 ", + "ATOOH ", + "BALD ", + "BENZP ", + "BR2 ", + "BRCL ", + "BRNO3 ", + "BZCO3H ", + "BZPAN ", + "CH2O ", + "CL2 ", + "CLNO2 ", + "CLNO3 ", + "CLO ", + "CLOO ", + "CSL ", + "EOH ", + "ETHLN ", + "ETHN ", + "ETHP ", + "ETNO3 ", + "ETP ", + "FURA ", + "GLYC ", + "GLYX ", + "H2O2 ", + "HAC ", + "HBR ", + "HC5A ", + "HCL ", + "HCOOH ", + "HI ", + "HMHP ", + "HMML ", + "HNO3 ", + "HOBR ", + "HOCL ", + "HOI ", + "HONIT ", + "HPALD1 ", + "HPALD2 ", + "HPALD3 ", + "HPALD4 ", + "HPETHNL ", + "I2 ", + "I2O2 ", + "I2O3 ", + "I2O4 ", + "IBR ", + "ICHE ", + "ICL ", + "ICN ", + "ICPDH ", + "IDC ", + "IDCHP ", + "IDHDP ", + "IDHPE ", + "IDN ", + "IEPOXA ", + "IEPOXB ", + "IEPOXD ", + "IHN1 ", + "IHN2 ", + "IHN3 ", + "IHN4 ", + "INPB ", + "INPD ", + "IONO ", + "IONO2 ", + "IPRNO3 ", + "ITCN ", + "ITHN ", + "LIMO ", + "LVOC ", + "LVOCOA ", + "MACR ", + "MACR1OOH ", + "MAP ", + "MCRDH ", + "MCRENOL ", + "MCRHN ", + "MCRHNB ", + "MCRHP ", + "MCT ", + "MEK ", + "MENO3 ", + "MGLY ", + "MOH ", + "MONITS ", + "MONITU ", + "MP ", + "MPAN ", + "MPN ", + "MTPA ", + "MTPO ", + "MVK ", + "MVKDH ", + "MVKHC ", + "MVKHCB ", + "MVKHP ", + "MVKN ", + "MVKPC ", + "N2O5 ", + "NH3 ", + "NO2 ", + "NPHEN ", + "NPRNO3 ", + "O3 ", + "OX ", + "PAN ", + "PHEN ", + "PP ", + "PPN ", + "PROPNN ", + "PRPN ", + "PRPE ", + "PYAC ", + "R4N2 ", + "R4P ", + "RA3P ", + "RB3P ", + "RIPA ", + "RIPB ", + "RIPC ", + "RIPD ", + "RP ", + "SO2 " ; + + dfoxd = + 1. // ACET + ,1. // ACTA + ,1. // ALD2 + ,1. // AROMP4 + ,1. // AROMP5 + ,1. // ATOOH + ,1. // BALD + ,1. // BENZP + ,1.e-36 // BR2 + ,1.e-36 // BRCL + ,1.e-36 // BRNO3 + ,1. // BZCO3H + ,1. // BZPAN + ,1. // CH2O + ,1.e-36 // CL2 + ,1.e-36 // CLNO2 + ,1.e-36 // CLNO3 + ,1.e-36 // CLO + ,1.e-36 // CLOO + ,1. // CSL + ,1.e-36 // EOH + ,1 // ETHLN + ,.1 // ETHN + ,.1 // ETHP + ,.1 // ETNO3 + ,1. // ETP + ,1. // FURA + ,1. // GLYC + ,1. // GLYX + ,1. // H2O2 + ,1. // HAC + ,1.e-36 // HBR + ,1.e-36 // HC5A + ,1.e-36 // HCL + ,1. // HCOOH + ,1.e-36 // HI + ,1. // HMHP + ,1. // HMML + ,1.e-36 // HNO3 + ,1.e-36 // HOBR + ,1.e-36 // HOCL + ,1.e-36 // HOI + ,1. // HONIT + ,1.e-36 // HPALD1 + ,1.e-36 // HPALD2 + ,1.e-36 // HPALD3 + ,1.e-36 // HPALD4 + ,1. // HPETHNL + ,1.e-36 // I2 + ,1.e-36 // I2O2 + ,1.e-36 // I2O3 + ,1.e-36 // I2O4 + ,1.e-36 // IBR + ,1. // ICHE + ,1.e-36 // ICL + ,1. // ICN + ,1. // ICPDH + ,1.e-36 // IDC + ,1. // IDCHP + ,1. // IDHDP + ,1. // IDHPE + ,1. // IDN + ,1. // IEPOXA + ,1. // IEPOXB + ,1. // IEPOXD + ,1. // IHN1 + ,1. // IHN2 + ,1. // IHN3 + ,1. // IHN4 + ,1. // INPB + ,1. // INPD + ,1.e-36 // IONO + ,1.e-36 // IONO2 + ,.1 // IPRNO3 + ,1. // ITCN + ,1. // ITHN + ,1.e-36 // LIMO + ,1. // LVOC + ,1.e-36 // LVOCOA + ,1 // MACR + ,1 // MACR1OOH + ,1 // MAP + ,1 // MCRDH + ,1 // MCRENOL + ,1 // MCRHN + ,1 // MCRHNB + ,1 // MCRHP + ,1 // MCT + ,1.e-36 // MEK + ,.1 // MENO3 + ,1. // MGLY + ,1. // MOH + ,1. // MONITS + ,1. // MONITU + ,1.e-36 // MP + ,1. // MPAN + ,1.e-36 // MPN + ,1.e-36 // MTPA + ,1.e-36 // MTPO + ,1. // MVK + ,1. // MVKDH + ,1. // MVKHC + ,1. // MVKHCB + ,1. // MVKHP + ,1. // MVKN + ,1. // MVKPC + ,1.e-36 // N2O5 + ,1.e-36 // NH3 + ,.1 // NO2 + ,1. // NPHEN + ,.1 // NPRNO3 + ,1. // O3 + ,1. // OX + ,1. // PAN + ,1. // PHEN + ,1. // PP + ,1. // PPN + ,1. // PROPNN + ,1.e-36 // PRPE + ,1. // PRPN + ,1. // PYAC + ,1. // R4N2 + ,1. // R4P + ,1. // RA3P + ,1. // RB3P + ,1. // RIPA + ,1. // RIPB + ,1. // RIPC + ,1. // RIPD + ,1. // RP + ,1.e-36 ; // SO2 + + dheff = + 27.399999618530273 , 5500.0, 0., 0., 0., 0., // ACET + 4050.0000000000000 , 6200.0, 0., 0., 0., 0., // ACTA + 13.199999809265137 , 5900.0, 0., 0., 0., 0., // ALD2 + 410000.00000000000 , 7500.0, 0., 0., 0., 0., // AROMP4 + 2000000.0000000000 , 7500.0, 0., 0., 0., 0., // AROMP5 + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // ATOOH + 38.000000000000000 , 5500.0, 0., 0., 0., 0., // BALD + 2900.0000000000000 , 6800.0, 0., 0., 0., 0., // BENZP + 0.75999999046325684 , 3720.0, 0., 0., 0., 0., // BR2 + 0.97000002861022949 , 5600.0, 0., 0., 0., 0., // BRCL + 0.00000000000000 , 0.0, 0., 0., 0., 0., // BRNO3 + 24000.000000000000 , 0.0, 0., 0., 0., 0., // BZCO3H + 70.000000000000000 , 4600.0, 0., 0., 0., 0., // BZPAN + 3240.0000000000000 , 6800.0, 0., 0., 0., 0., // CH2O + 9.2000000178813934E-002 , 2000.0, 0., 0., 0., 0., // CL2 + 0.00000000000000 , 0.0, 0., 0., 0., 0., // CLNO2 + 1.0000000200408773E+020 , 0.0, 0., 0., 0., 0., // CLNO3 + 0.00000000000000 , 0.0, 0., 0., 0., 0., // CLO + 1.0000000000000000 , 3500.0, 0., 0., 0., 0., // CLOO + 420.00000000000000 , 8500.0, 0., 0., 0., 0., // CSL + 193.00000000000000 , 6400.0, 0., 0., 0., 0., // EOH + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // ETHLN + 39000.000000000000 , 8600.0, 0., 0., 0., 0., // ETHN + 650000.00000000000 , 8800.0, 0., 0., 0., 0., // ETHP + 1.6000000238418579 , 5400.0, 0., 0., 0., 0., // ETNO3 + 334.00000000000000 , 6000.0, 0., 0., 0., 0., // ETP + 1.8000000000000000E-001 , 6100.0, 0., 0., 0., 0., // FURA + 41500.000000000000 , 4600.0, 0., 0., 0., 0., // GLYC + 415000.00000000000 , 7500.0, 0., 0., 0., 0., // GLYX + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // H2O2 + 7800.0000000000000 , 0.0, 0., 0., 0., 0., // HAC + 71000003706880.000 , 10200.0, 0., 0., 0., 0., // HBR + 7800.0000000000000 , 0.0, 0., 0., 0., 0., // HC5A + 62999998464.000000 , 9000.0, 0., 0., 0., 0., // HCL + 8920.0000000000000 , 6100.0, 0., 0., 0., 0., // HCOOH + 74299998208000.000 , 3187.2, 0., 0., 0., 0., // HI + 1300000.0000000000 , 5200.0, 0., 0., 0., 0., // HMHP + 120000.00000000000 , 7200.0, 0., 0., 0., 0., // HMML + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // HNO3 + 1300.0000000000000 , 4000.0, 0., 0., 0., 0., // HOBR + 650.00000000000000 , 5900.0, 0., 0., 0., 0., // HOCL + 15400.000000000000 , 8371.0, 0., 0., 0., 0., // HOI + 26900000931840.000 , 5487.0, 0., 0., 0., 0., // HONIT + 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD1 + 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD2 + 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD3 + 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD4 + 41000.000000000000 , 4600.0, 0., 0., 0., 0., // HPETHNL + 2.7000000476837158 , 7507.4, 0., 0., 0., 0., // I2 + 1.0000000200408773E+020 , 18900.0, 0., 0., 0., 0., // I2O2 + 1.0000000200408773E+020 , 13400.0, 0., 0., 0., 0., // I2O3 + 1.0000000200408773E+020 , 13400.0, 0., 0., 0., 0., // I2O4 + 24.000000000000000 , 4916.7, 0., 0., 0., 0., // IBR + 80000000.000000000 , 0.0, 0., 0., 0., 0., // ICHE + 111.00000000000000 , 2105.5, 0., 0., 0., 0., // ICL + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // ICN + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // ICPDH + 40000.000000000000 , 0.0, 0., 0., 0., 0., // IDC + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDCHP + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDHDP + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDHPE + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDN + 80000000.000000000 , 0.0, 0., 0., 0., 0., // IEPOXA + 80000000.000000000 , 0.0, 0., 0., 0., 0., // IEPOXB + 80000000.000000000 , 0.0, 0., 0., 0., 0., // IEPOXD + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN1 + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN2 + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN3 + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN4 + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // INPB + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // INPD + 0.30000001192092896 , 7240.4, 0., 0., 0., 0., // IONO + 1.0000000200408773E+020 , 3980.0, 0., 0., 0., 0., // IONO2 + 0.79000002145767212 , 5400.0, 0., 0., 0., 0., // IPRNO3 + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // ITCN + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // ITHN + 7.0000000298023224E-002 , 0.0, 0., 0., 0., 0., // LIMO + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // LVOC + 0.00000000000000 , 0.0, 0., 0., 0., 0., // LVOCOA + 4.8600001335144043 , 4300.0, 0., 0., 0., 0., // MACR + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MACR1OOH + 840.00000000000000 , 5300.0, 0., 0., 0., 0., // MAP + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MCRDH + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MCRENOL + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MCRHN + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MCRHNB + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MCRHP + 420.00000000000000 , 8500.0, 0., 0., 0., 0., // MCT + 18.200000000000000 , 5700.0, 0., 0., 0., 0., // MEK + 11.000000000000000 , 4700.0, 0., 0., 0., 0., // MENO3 + 32400.000000000000 , 6200.0, 0., 0., 0., 0., // MGLY + 203.00000000000000 , 5600.0, 0., 0., 0., 0., // MOH + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MONITS + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MONITU + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MP + 1.7200000286102295 , 0.0, 0., 0., 0., 0., // MPAN + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MPN + 4.8999998718500137E-002 , 0.0, 0., 0., 0., 0., // MTPA + 4.8999998718500137E-002 , 0.0, 0., 0., 0., 0., // MTPO + 26.299999237060547 , 4800.0, 0., 0., 0., 0., // MVK + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKDH + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKHC + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKHCB + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKHP + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MVKN + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKPC + 0.0000000000000000 , 0.0, 0., 0., 0., 0., // N2O5 + 3300000.0000000000 , 4100.0, 0., 0., 0., 0., // NH3 + 0.0000000000000000 , 0.0, 0., 0., 0., 0., // NO2 + 2300.0000000000000 , 0.0, 0., 0., 0., 0., // NPHEN + 1.1000000238418579 , 5500.0, 0., 0., 0., 0., // NPRNO3 + 1.0132499970495701E-002 , 2800.0, 0., 0., 0., 0., // O3 + 1.0132499970495701E-002 , 2800.0, 0., 0., 0., 0., // OX + 2.940000572204590 , 5700.0, 0., 0., 0., 0., // PAN + 2800.0000000000000 , 2700.0, 0., 0., 0., 0., // PHEN + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // PP + 2.9400000572204590 , 0.0, 0., 0., 0., 0., // PPN + 1000.0000000000000 , 0.0, 0., 0., 0., 0., // PROPNN + 7.4000000000000000E-003 , 3400.0, 0., 0., 0., 0., // PRPE + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // PRPN + 314000.00000000000 , 5100.0, 0., 0., 0., 0., // PYAC + 1.0000000000000000 , 5800.0, 0., 0., 0., 0., // R4N2 + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // R4P + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // RA3P + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // RB3P + 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPA + 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPB + 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPC + 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPD + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // RP + 0.0000000000000000 , 0.0, 0., 0., 0., 0. ; // SO2 + + mol_wghts = + ,58.090000000000003 // ACET + ,60.060000000000002 // ACTA + ,44.060000000000002 // ALD2 + ,68.079999999999998 // AROMP4 + ,98.099999999999994 // AROMP5 + ,90.090000000000003 // ATOOH + ,106.12000000000000 // BALD + ,110.11000000000000 // BENZP + ,159.80000000000001 // BR2 + ,115.45000000000000 // BRCL + ,141.91000000000000 // BRNO3 + ,138.12000000000000 // BZCO3H + ,183.12000000000000 // BZPAN + ,30.030000000000001 // CH2O + ,70.900000000000006 // CL2 + ,81.450000000000003 // CLNO2 + ,97.450000000000003 // CLNO3 + ,51.450000000000003 // CLO + ,67.450000000000003 // CLOO + ,108.14000000000000 // CSL + ,46.070000000000000 // EOH + ,105.06000000000000 // ETHLN + ,107.06999999999999 // ETHN + ,78.069999999999993 // ETHP + ,91.079999999999998 // ETNO3 + ,62.079999999999998 // ETP + ,68.070000000000000 // FURA + ,60.060000000000002 // GLYC + ,58.039999999999999 // GLYX + ,34.020000000000003 // H2O2 + ,74.079999999999998 // HAC + ,80.909999999999997 // HBR + ,100.13000000000000 // HC5A + ,36.450000000000003 // HCL + ,46.030000000000001 // HCOOH + ,127.91000000000000 // HI + ,64.049999999999997 // HMHP + ,102.09999999999999 // HMML + ,63.009999999999998 // HNO3 + ,96.909999999999997 // HOBR + ,52.450000000000003 // HOCL + ,143.88999999999999 // HOI + ,215.00000000000000 // HONIT + ,116.13000000000000 // HPALD1 + ,116.13000000000000 // HPALD2 + ,116.13000000000000 // HPALD3 + ,116.13000000000000 // HPALD4 + ,76.060000000000002 // HPETHNL + ,253.80000000000001 // I2 + ,285.80000000000001 // I2O2 + ,301.80000000000001 // I2O3 + ,317.80000000000001 // I2O4 + ,206.90000000000001 // IBR + ,116.13000000000000 // ICHE + ,162.44999999999999 // ICL + ,145.13000000000000 // ICN + ,150.15000000000001 // ICPDH + ,98.109999999999999 // IDC + ,148.13000000000000 // IDCHP + ,168.16999999999999 // IDHDP + ,150.15000000000001 // IDHPE + ,192.15000000000001 // IDN + ,106.14000000000000 // IEPOXA + ,106.14000000000000 // IEPOXB + ,106.14000000000000 // IEPOXD + ,147.15000000000001 // IHN1 + ,147.15000000000001 // IHN2 + ,147.15000000000001 // IHN3 + ,147.15000000000001 // IHN4 + ,163.15000000000001 // INPB + ,163.15000000000001 // INPD + ,172.91000000000000 // IONO + ,188.91000000000000 // IONO2 + ,105.11000000000000 // IPRNO3 + ,195.15000000000000 // ITCN + ,197.16999999999999 // ITHN + ,136.25999999999999 // LIMO + ,154.19000000000000 // LVOC + ,154.19000000000000 // LVOCOA + ,70.099999999999994 // MACR + ,102.09999999999999 // MACR1OOH + ,76.060000000000002 // MAP + ,104.12000000000000 // MCRDH + ,86.099999999999994 // MCRENOL + ,149.11000000000001 // MCRHN + ,149.11000000000001 // MCRHNB + ,120.12000000000000 // MCRHP + ,124.00000000000000 // MCT + ,72.110000000000000 // MEK + ,77.049999999999997 // MENO3 + ,72.069999999999993 // MGLY + ,32.049999999999997 // MOH + ,215.28000000000000 // MONITS + ,215.28000000000000 // MONITU + ,48.050000000000000 // MP + ,147.09999999999999 // MPAN + ,93.050000000000000 // MPN + ,136.25999999999999 // MTPA + ,136.25999999999999 // MTPO + ,70.090000000000003 // MVK + ,105.13000000000000 // MVKDH + ,102.09999999999999 // MVKHC + ,102.09999999999999 // MVKHCB + ,120.12000000000000 // MVKHP + ,149.12000000000000 // MVKN + ,118.09999999999999 // MVKPC + ,108.02000000000000 // N2O5 + ,17.039999999999999 // NH3 + ,46.009999999999998 // NO2 + ,139.11000000000001 // NPHEN + ,105.11000000000000 // NPRNO3 + ,48.000000000000000 // O3 + ,48.000000000000000 // OX + ,121.06000000000000 // PAN + ,94.109999999999999 // PHEN + ,92.109999999999999 // PP + ,135.08000000000001 // PPN + ,119.08000000000000 // PROPNN + ,42.090000000000000 // PRPE + ,137.11000000000001 // PRPN + ,88.069999999999993 // PYAC + ,119.09999999999999 // R4N2 + ,90.140000000000001 // R4P + ,76.109999999999999 // RA3P + ,76.109999999999999 // RB3P + ,118.15000000000001 // RIPA + ,118.15000000000001 // RIPB + ,118.15000000000001 // RIPC + ,118.15000000000001 // RIPD + ,90.090000000000003 // RP + ,64.040000000000006 ; // SO2 + +} \ No newline at end of file From ae2f2581f748629f762a5a99c8c02bb6ce7daf8f Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 15 Feb 2024 07:55:12 -0700 Subject: [PATCH 147/331] Fix bug in CESM-only code in ucx_mod.F90 Signed-off-by: Lizzie Lundgren --- GeosCore/ucx_mod.F90 | 1 + 1 file changed, 1 insertion(+) diff --git a/GeosCore/ucx_mod.F90 b/GeosCore/ucx_mod.F90 index fe6b003ec..5ff32ad5f 100644 --- a/GeosCore/ucx_mod.F90 +++ b/GeosCore/ucx_mod.F90 @@ -4058,6 +4058,7 @@ SUBROUTINE NOXCOEFF_INIT( Input_Opt, State_Grid, State_Chm ) State_Chm%NOXCOEFF = 0.0e+0_fp #if defined( MODEL_CESM ) + nSize = State_Chm%JJNOXCOEFF * UCX_NLEVS * 6 * 12 IF ( Input_Opt%amIRoot ) THEN #endif ! Fill array From 165153ab15f67060eef79e383d7cc6cd12e1f3c0 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 15 Feb 2024 10:17:39 -0700 Subject: [PATCH 148/331] Update Cloud-J submodule call to use new name Signed-off-by: Lizzie Lundgren --- GeosCore/cldj_interface_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeosCore/cldj_interface_mod.F90 b/GeosCore/cldj_interface_mod.F90 index 0b3fe4fcc..cb1833d39 100644 --- a/GeosCore/cldj_interface_mod.F90 +++ b/GeosCore/cldj_interface_mod.F90 @@ -160,7 +160,7 @@ SUBROUTINE Run_CloudJ( Input_Opt, State_Chm, State_Diag, & USE Cldj_Cmn_Mod, ONLY : L_, L1_, W_, S_, LWEPAR USE Cldj_Cmn_Mod, ONLY : JVN_, AN_, NQD_, W_r USE Cldj_Cmn_Mod, ONLY : JIND, JFACTA, FL, QAA, RAA, SAA - USE Cld_Sub_Mod, ONLY : Cloud_JX + USE Cldj_Sub_Mod, ONLY : Cloud_JX USE Cmn_Size_Mod, ONLY : NRHAER, NRH, NDUST USE ErrCode_Mod USE Input_Opt_Mod, ONLY : OptInput From 41426648ad1f9c251db1db6a872c3ceb9d1e36d2 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 28 Feb 2024 13:53:58 -0700 Subject: [PATCH 149/331] Remove unused CESM-only Input_Opt variables Signed-off-by: Lizzie Lundgren --- Headers/input_opt_mod.F90 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index 80ac70030..9bf7dd01c 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -436,10 +436,6 @@ MODULE Input_Opt_Mod #if defined( MODEL_CESM ) ! Use albedo from land model LOGICAL :: onlineAlbedo = .TRUE. - ! Use land types from land model - LOGICAL :: onlineLandTypes = .TRUE. - ! Use dry deposition velocities as computed by the Community Land Model - LOGICAL :: ddVel_CLM = .TRUE. ! Apply water vapor tendency to specific humidity LOGICAL :: applyQtend = .TRUE. ! Apply photolytic correction for convective scavenging of soluble tracers? From 255c735faf198b79eaa11c2a887ec19fd7bf241c Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 28 Feb 2024 13:58:49 -0700 Subject: [PATCH 150/331] Remove CESM-only blocks in Fast-JX Fast-JX is no longer used in GEOS-Chem runs within CESM. It can still be run if passed compiler flag for it, but with this update it will then read photolysis ascii files from a processors, not just root. Signed-off-by: Lizzie Lundgren --- GeosCore/fast_jx_mod.F90 | 107 --------------------------------------- 1 file changed, 107 deletions(-) diff --git a/GeosCore/fast_jx_mod.F90 b/GeosCore/fast_jx_mod.F90 index c9c4d2672..b48f998b2 100644 --- a/GeosCore/fast_jx_mod.F90 +++ b/GeosCore/fast_jx_mod.F90 @@ -20,11 +20,6 @@ MODULE FJX_MOD ! !USES: ! USE PRECISION_MOD ! For GEOS-Chem Precision (fp) -#if defined( MODEL_CESM ) - USE cam_abortutils, ONLY : endrun - USE spmd_utils, ONLY : mpicom, masterprocid, mpi_success - USE spmd_utils, ONLY : mpi_character, mpi_integer, mpi_real8 -#endif IMPLICIT NONE @@ -557,16 +552,10 @@ SUBROUTINE RD_MIE( amIRoot, dryrun, LBRC, NUN, NAMFIL, RC ) ! Scalars LOGICAL :: FileExists INTEGER :: I, J, K, NK -#if defined( MODEL_CESM ) - INTEGER :: ierr -#endif ! Strings CHARACTER(LEN=78 ) :: TITLE0 CHARACTER(LEN=255) :: FileMsg, ErrMsg, ThisLoc -#if defined( MODEL_CESM ) - CHARACTER(LEN=*), PARAMETER :: subname = 'rd_mie' -#endif !================================================================= ! In dry-run mode, print file path to dryrun log and exit. @@ -610,11 +599,6 @@ SUBROUTINE RD_MIE( amIRoot, dryrun, LBRC, NUN, NAMFIL, RC ) ! RD_MIE begins here -- read data from file !================================================================= -#if defined( MODEL_CESM ) - ! Only read file on root thread if using CESM - IF ( amIRoot ) THEN -#endif - ! Open file open (NUN,FILE=NAMFIL,status='old',form='formatted') @@ -652,24 +636,6 @@ SUBROUTINE RD_MIE( amIRoot, dryrun, LBRC, NUN, NAMFIL, RC ) close(NUN) -#if defined( MODEL_CESM ) - ENDIF - - CALL MPI_BCAST( QAA, Size(QAA), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QAA') - CALL MPI_BCAST( WAA, Size(WAA), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: WAA') - CALL MPI_BCAST( PAA, Size(PAA), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: PAA') - CALL MPI_BCAST( RAA, Size(RAA), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: RAA') - CALL MPI_BCAST( SAA, Size(SAA), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: SAA') - CALL MPI_BCAST( NAA, 1, mpi_integer, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NAA') - CALL MPI_BCAST( TITLAA, 80*A_, mpi_character, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: TITLAA') -#endif IF ( amIRoot ) THEN write(6,'(a,9f8.1)') ' Aerosol optical: r-eff/rho/Q(@wavel):', & @@ -758,9 +724,6 @@ SUBROUTINE RD_XXX ( amIRoot, dryrun, NUN, NAMFIL, RC ) ! Scalars LOGICAL :: FileExists INTEGER :: I, J, JJ, K, IW, NQRD, NWWW, LQ -#if defined( MODEL_CESM ) - INTEGER :: ierr -#endif REAL(fp) :: TQQ2 ! Arrays @@ -772,9 +735,6 @@ SUBROUTINE RD_XXX ( amIRoot, dryrun, NUN, NAMFIL, RC ) CHARACTER(LEN=78) :: TITLE0 CHARACTER(LEN=6 ) :: TITLEJ2, TITLEJ3 CHARACTER(LEN=1 ) :: TSTRAT -#if defined( MODEL_CESM ) - CHARACTER(LEN=*), PARAMETER :: subname = 'rd_xxx' -#endif !================================================================= ! In dry-run mode, print file path to dryrun log and exit. @@ -827,11 +787,6 @@ SUBROUTINE RD_XXX ( amIRoot, dryrun, NUN, NAMFIL, RC ) ! >>>> W_ = 12 <<<< means trop-only, discard WL #1-4 and #9-10, some X-sects -#if defined( MODEL_CESM ) - ! Only read file on root thread if using CESM - IF ( amIRoot ) THEN -#endif - ! Open file open (NUN,FILE=NAMFIL,status='old',form='formatted') read (NUN,100) TITLE0 @@ -1019,41 +974,6 @@ SUBROUTINE RD_XXX ( amIRoot, dryrun, NUN, NAMFIL, RC ) close(NUN) -#if defined( MODEL_CESM ) - ENDIF - - CALL MPI_BCAST( NJX, 1, mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NJX')com - CALL MPI_BCAST( NW1, 1, mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NW1')com - CALL MPI_BCAST( NW2, 1, mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NW2')com - CALL MPI_BCAST( WBIN, Size(WBIN), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: WBIN'com - CALL MPI_BCAST( WL, Size(WL), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: WL') com - CALL MPI_BCAST( FL, Size(FL), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: FL') com - CALL MPI_BCAST( QO2, Size(QO2), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QO2')com - CALL MPI_BCAST( QO3, Size(QO3), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QO3')com - CALL MPI_BCAST( Q1D, Size(Q1D), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: Q1D')com - CALL MPI_BCAST( QQQ, Size(QQQ), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QQQ')com - CALL MPI_BCAST( QRAYL, Size(QRAYL), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: QRAYLcom - CALL MPI_BCAST( TQQ, Size(TQQ), mpi_real8, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: TQQ')com - CALL MPI_BCAST( LQQ, Size(LQQ), mpi_integer, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: LQQ')com - CALL MPI_BCAST( TITLEJX, X_*6, mpi_character, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: TITLEcom) - CALL MPI_BCAST( SQQ, X_*1, mpi_character, masterprocid, mpicom, ierr ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: SQQ') -#endif - 100 format(a) 101 format(10x,5i5) 102 format(10x, 6e10.3/(10x,6e10.3)/(10x,6e10.3)) @@ -1118,9 +1038,6 @@ SUBROUTINE RD_JS_JX( amIRoot, dryrun, NUNIT, NAMFIL, TITLEJX, NJXX, RC ) ! Scalars LOGICAL :: FileExists INTEGER :: J, JJ, K -#if defined( MODEL_CESM ) - INTEGER :: ierr -#endif REAL(fp) :: F_FJX ! Strings @@ -1132,9 +1049,6 @@ SUBROUTINE RD_JS_JX( amIRoot, dryrun, NUNIT, NAMFIL, TITLEJX, NJXX, RC ) ! String arrays CHARACTER(LEN=6) :: JMAP(JVN_) -#if defined( MODEL_CESM ) - CHARACTER(LEN=*), PARAMETER :: subname = 'rd_js_jx' -#endif !======================================================================== ! RD_JS_JX begins here! @@ -1190,11 +1104,6 @@ SUBROUTINE RD_JS_JX( amIRoot, dryrun, NUNIT, NAMFIL, TITLEJX, NJXX, RC ) JMAP(:) = '------' JFACTA(:) = 0.e+0_fp -#if defined( MODEL_CESM ) - ! Only read file on root thread if using CESM - IF ( amIRoot ) THEN -#endif - ! Open file open (NUNIT,file=NAMFIL,status='old',form='formatted') @@ -1236,22 +1145,6 @@ SUBROUTINE RD_JS_JX( amIRoot, dryrun, NUNIT, NAMFIL, TITLEJX, NJXX, RC ) 20 close(NUNIT) -#if defined( MODEL_CESM ) - ENDIF - - CALL MPI_BCAST( JLABEL, JVN_*50, mpi_character, masterprocid, mpirun ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: JLABEL') - CALL MPI_BCAST( JFACTA, JVN_, mpi_real8, masterprocid, mpirun ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: JFACTA') - CALL MPI_BCAST( JMAP, JVN_*6, mpi_character, masterprocid, mpirun ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: JMAP') - CALL MPI_BCAST( NRATJ, 1, mpi_integer, masterprocid, mpirun ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NRATJ') - CALL MPI_BCAST( RNAMES, JVN_*10, mpi_character, masterprocid, mpirun ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: RNAMES') - CALL MPI_BCAST( BRANCH, JVN_, mpi_integer, masterprocid, mpirun ) - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: BRANCH') -#endif ! Zero / Set index arrays that map Jvalue(j) onto rates do K = 1,NRATJ From 5771d51fe9b832677742e50a96f4efe2c9f2dbad Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 28 Feb 2024 13:59:10 -0700 Subject: [PATCH 151/331] Fix intel compiler bug in RRTMG code that came in with 14.3.0 Signed-off-by: Lizzie Lundgren --- GeosCore/input_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeosCore/input_mod.F90 b/GeosCore/input_mod.F90 index ae4053b30..053fa7c68 100644 --- a/GeosCore/input_mod.F90 +++ b/GeosCore/input_mod.F90 @@ -2911,7 +2911,7 @@ SUBROUTINE Config_RRTMG( Config, Input_Opt, RC ) WRITE( 6, 100 ) 'Consider shortwave? : ', Input_Opt%LSWRAD WRITE( 6, 100 ) 'Clear-sky flux? : ', Input_Opt%LSKYRAD(1) WRITE( 6, 100 ) 'All-sky flux? : ', Input_Opt%LSKYRAD(2) - WRITE( 6, 100 ) 'CO2 VMR in ppmv : ', Input_Opt%RRTMG_CO2_ppmv + WRITE( 6, 115 ) 'CO2 VMR in ppmv : ', Input_Opt%RRTMG_CO2_ppmv WRITE( 6, 100 ) 'Fixed dyn. heat. assumption?: ', Input_Opt%RRTMG_FDH WRITE( 6, 100 ) ' --> Seasonal evolution? : ', Input_Opt%RRTMG_SEFDH WRITE( 6, 100 ) ' --> Extend to TOA? : ', Input_Opt%RRTMG_SA_TOA From 0496452cb70321031651325efac35964e903d00a Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Fri, 1 Mar 2024 13:58:44 -0700 Subject: [PATCH 152/331] Read aerosol optics files on all threads Signed-off-by: Lizzie Lundgren --- GeosCore/photolysis_mod.F90 | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/GeosCore/photolysis_mod.F90 b/GeosCore/photolysis_mod.F90 index 484089891..025ec6052 100644 --- a/GeosCore/photolysis_mod.F90 +++ b/GeosCore/photolysis_mod.F90 @@ -916,16 +916,8 @@ SUBROUTINE RD_AOD( Input_Opt, State_Chm, RC ) ASYMAA => State_Chm%Phot%ASYMAA PHAA => State_Chm%Phot%PHAA -#if defined( MODEL_CESM ) - IF ( Input_Opt%amIRoot ) THEN - NJ1 = findFreeLUN() - ELSE - NJ1 = 0 - ENDIF -#else ! Get a free LUN NJ1 = findFreeLUN() -#endif ! IMPORTANT: aerosol_mod.F and dust_mod.F expect aerosols in this order ! @@ -985,11 +977,6 @@ SUBROUTINE RD_AOD( Input_Opt, State_Chm, RC ) ! If not a dry-run, read data from each species file !-------------------------------------------------------------- -#if defined( MODEL_CESM ) - ! Only read file on root thread if using CESM - IF ( Input_Opt%amIRoot ) THEN -#endif - ! Open file OPEN( NJ1, FILE=TRIM( THISFILE ), STATUS='OLD', IOSTAT=RC ) @@ -1028,14 +1015,10 @@ SUBROUTINE RD_AOD( Input_Opt, State_Chm, RC ) ! Close file CLOSE( NJ1 ) -#if defined( MODEL_CESM ) - ENDIF -#endif - ENDDO #if defined( MODEL_CESM ) - IF ( Input_Opt%amIRoot ) CALL freeUnit(NJ1) + CALL freeUnit(NJ1) #endif ! Free pointers From c5f16d613dbdb9c109c650abae2c2b88fc44885a Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 11 Mar 2024 12:55:48 -0600 Subject: [PATCH 153/331] Replace dep_data_file.cdl with version used for GEOS-Chem 14.3 in CESM Signed-off-by: Lizzie Lundgren --- run/CESM/util/dep_data_file.cdl | 951 +++++++++++++++++++------------- 1 file changed, 555 insertions(+), 396 deletions(-) diff --git a/run/CESM/util/dep_data_file.cdl b/run/CESM/util/dep_data_file.cdl index a4567c573..8dd5fbd76 100644 --- a/run/CESM/util/dep_data_file.cdl +++ b/run/CESM/util/dep_data_file.cdl @@ -1,10 +1,10 @@ netcdf drydep_tables { dimensions: - n_species_table = 131; + n_species_table = 168; NHen = 6; chars = 16; variables: - + char species_name_table(n_species_table,chars); species_name_table:long_name = "names of species in dry deposition tables" ; double dfoxd(n_species_table); @@ -14,14 +14,17 @@ variables: double mol_wghts(n_species_table); mol_wghts:long_name = "species molecular mass"; mol_wghts:units = "grams/mole"; - + // global attributes: - :Created_by = "Elizabeth Lundgren (Harvard University)"; - :Source = "GEOS-Chem version 14.3. gas-phase dry deposited species"; + :Created_by = "Elizabeth Lundgren (Harvard University), Haipeng Lin (Harvard University)"; + :Source = "GEOS-Chem version 14.3 gas-phase and aerosol dry or wet deposited species"; data: +// care has been taken to list gas-phase species first and aerosols (including gaseous SOA) +// at the end. + species_name_table = "ACET ", "ACTA ", @@ -153,405 +156,561 @@ data: "RIPC ", "RIPD ", "RP ", - "SO2 " ; + "SO2 ", + "AERI ", + "AONITA ", + "ASOA1 ", + "ASOA2 ", + "ASOA3 ", + "ASOAN ", + "ASOG1 ", + "ASOG2 ", + "ASOG3 ", + "BRSALA ", + "BRSALC ", + "INDIOL ", + "IONITA ", + "ISALA ", + "ISALC ", + "MONITA ", + "MSA ", + "NH4 ", + "NIT ", + "NITS ", + "SALAAL ", + "SALACL ", + "SALCAL ", + "SALCCL ", + "SO4 ", + "SO4S ", + "SOAGX ", + "SOAIE ", + "TSOA0 ", + "TSOA1 ", + "TSOA2 ", + "TSOA3 ", + "TSOG0 ", + "TSOG1 ", + "TSOG2 ", + "TSOG3 ", + "PFE " ; - dfoxd = - 1. // ACET - ,1. // ACTA - ,1. // ALD2 - ,1. // AROMP4 - ,1. // AROMP5 - ,1. // ATOOH - ,1. // BALD - ,1. // BENZP - ,1.e-36 // BR2 - ,1.e-36 // BRCL - ,1.e-36 // BRNO3 - ,1. // BZCO3H - ,1. // BZPAN - ,1. // CH2O - ,1.e-36 // CL2 - ,1.e-36 // CLNO2 - ,1.e-36 // CLNO3 - ,1.e-36 // CLO - ,1.e-36 // CLOO - ,1. // CSL - ,1.e-36 // EOH - ,1 // ETHLN - ,.1 // ETHN - ,.1 // ETHP - ,.1 // ETNO3 +// dfoxd (reactivity factor for oxidation) + + dfoxd = + 1. // ACET + ,1. // ACTA + ,1. // ALD2 + ,1. // AROMP4 + ,1. // AROMP5 + ,1. // ATOOH + ,1. // BALD + ,1. // BENZP + ,1.e-36 // BR2 + ,1.e-36 // BRCL + ,1.e-36 // BRNO3 + ,1. // BZCO3H + ,1. // BZPAN + ,1. // CH2O + ,1.e-36 // CL2 + ,1.e-36 // CLNO2 + ,1.e-36 // CLNO3 + ,1.e-36 // CLO + ,1.e-36 // CLOO + ,1. // CSL + ,1.e-36 // EOH + ,1 // ETHLN + ,.1 // ETHN + ,.1 // ETHP + ,.1 // ETNO3 ,1. // ETP ,1. // FURA - ,1. // GLYC - ,1. // GLYX - ,1. // H2O2 - ,1. // HAC - ,1.e-36 // HBR - ,1.e-36 // HC5A - ,1.e-36 // HCL - ,1. // HCOOH - ,1.e-36 // HI - ,1. // HMHP - ,1. // HMML - ,1.e-36 // HNO3 - ,1.e-36 // HOBR - ,1.e-36 // HOCL - ,1.e-36 // HOI - ,1. // HONIT - ,1.e-36 // HPALD1 - ,1.e-36 // HPALD2 - ,1.e-36 // HPALD3 - ,1.e-36 // HPALD4 - ,1. // HPETHNL - ,1.e-36 // I2 - ,1.e-36 // I2O2 - ,1.e-36 // I2O3 - ,1.e-36 // I2O4 - ,1.e-36 // IBR - ,1. // ICHE - ,1.e-36 // ICL - ,1. // ICN - ,1. // ICPDH - ,1.e-36 // IDC - ,1. // IDCHP - ,1. // IDHDP - ,1. // IDHPE - ,1. // IDN - ,1. // IEPOXA - ,1. // IEPOXB - ,1. // IEPOXD - ,1. // IHN1 - ,1. // IHN2 - ,1. // IHN3 - ,1. // IHN4 - ,1. // INPB - ,1. // INPD - ,1.e-36 // IONO - ,1.e-36 // IONO2 - ,.1 // IPRNO3 - ,1. // ITCN - ,1. // ITHN - ,1.e-36 // LIMO - ,1. // LVOC - ,1.e-36 // LVOCOA - ,1 // MACR - ,1 // MACR1OOH - ,1 // MAP - ,1 // MCRDH - ,1 // MCRENOL - ,1 // MCRHN - ,1 // MCRHNB - ,1 // MCRHP - ,1 // MCT - ,1.e-36 // MEK - ,.1 // MENO3 - ,1. // MGLY - ,1. // MOH - ,1. // MONITS - ,1. // MONITU - ,1.e-36 // MP - ,1. // MPAN - ,1.e-36 // MPN - ,1.e-36 // MTPA - ,1.e-36 // MTPO - ,1. // MVK - ,1. // MVKDH - ,1. // MVKHC - ,1. // MVKHCB - ,1. // MVKHP - ,1. // MVKN - ,1. // MVKPC - ,1.e-36 // N2O5 - ,1.e-36 // NH3 - ,.1 // NO2 - ,1. // NPHEN - ,.1 // NPRNO3 - ,1. // O3 - ,1. // OX - ,1. // PAN - ,1. // PHEN - ,1. // PP - ,1. // PPN - ,1. // PROPNN - ,1.e-36 // PRPE - ,1. // PRPN - ,1. // PYAC - ,1. // R4N2 - ,1. // R4P - ,1. // RA3P - ,1. // RB3P - ,1. // RIPA - ,1. // RIPB - ,1. // RIPC - ,1. // RIPD - ,1. // RP - ,1.e-36 ; // SO2 + ,1. // GLYC + ,1. // GLYX + ,1. // H2O2 + ,1. // HAC + ,1.e-36 // HBR + ,1.e-36 // HC5A + ,1.e-36 // HCL + ,1. // HCOOH + ,1.e-36 // HI + ,1. // HMHP + ,1. // HMML + ,1.e-36 // HNO3 + ,1.e-36 // HOBR + ,1.e-36 // HOCL + ,1.e-36 // HOI + ,1. // HONIT + ,1.e-36 // HPALD1 + ,1.e-36 // HPALD2 + ,1.e-36 // HPALD3 + ,1.e-36 // HPALD4 + ,1. // HPETHNL + ,1.e-36 // I2 + ,1.e-36 // I2O2 + ,1.e-36 // I2O3 + ,1.e-36 // I2O4 + ,1.e-36 // IBR + ,1. // ICHE + ,1.e-36 // ICL + ,1. // ICN + ,1. // ICPDH + ,1.e-36 // IDC + ,1. // IDCHP + ,1. // IDHDP + ,1. // IDHPE + ,1. // IDN + ,1. // IEPOXA + ,1. // IEPOXB + ,1. // IEPOXD + ,1. // IHN1 + ,1. // IHN2 + ,1. // IHN3 + ,1. // IHN4 + ,1. // INPB + ,1. // INPD + ,1.e-36 // IONO + ,1.e-36 // IONO2 + ,.1 // IPRNO3 + ,1. // ITCN + ,1. // ITHN + ,1.e-36 // LIMO + ,1. // LVOC + ,1.e-36 // LVOCOA + ,1 // MACR + ,1 // MACR1OOH + ,1 // MAP + ,1 // MCRDH + ,1 // MCRENOL + ,1 // MCRHN + ,1 // MCRHNB + ,1 // MCRHP + ,1 // MCT + ,1.e-36 // MEK + ,.1 // MENO3 + ,1. // MGLY + ,1. // MOH + ,1. // MONITS + ,1. // MONITU + ,1.e-36 // MP + ,1. // MPAN + ,1.e-36 // MPN + ,1.e-36 // MTPA + ,1.e-36 // MTPO + ,1. // MVK + ,1. // MVKDH + ,1. // MVKHC + ,1. // MVKHCB + ,1. // MVKHP + ,1. // MVKN + ,1. // MVKPC + ,1.e-36 // N2O5 + ,1.e-36 // NH3 + ,.1 // NO2 + ,1. // NPHEN + ,.1 // NPRNO3 + ,1. // O3 + ,1. // OX + ,1. // PAN + ,1. // PHEN + ,1. // PP + ,1. // PPN + ,1. // PROPNN + ,1.e-36 // PRPE + ,1. // PRPN + ,1. // PYAC + ,1. // R4N2 + ,1. // R4P + ,1. // RA3P + ,1. // RB3P + ,1. // RIPA + ,1. // RIPB + ,1. // RIPC + ,1. // RIPD + ,1. // RP + ,1.e-36 // SO2 + ,1.e-36 // AERI + ,1.e-36 // AONITA + ,1.e-36 // ASOA1 + ,1.e-36 // ASOA2 + ,1.e-36 // ASOA3 + ,1.e-36 // ASOAN + ,1.e-36 // ASOG1 + ,1.e-36 // ASOG2 + ,1.e-36 // ASOG3 + ,1.e-36 // BRSALA + ,1.e-36 // BRSALC + ,1.e-36 // INDIOL + ,1.e-36 // IONITA + ,1.e-36 // ISALA + ,1.e-36 // ISALC + ,1.e-36 // MONITA + ,1.e-36 // MSA + ,1.e-36 // NH4 + ,1.e-36 // NIT + ,1.e-36 // NITS + ,1.e-36 // SALAAL + ,1.e-36 // SALACL + ,1.e-36 // SALCAL + ,1.e-36 // SALCCL + ,1.e-36 // SO4 + ,1.e-36 // SO4S + ,1.e-36 // SOAGX + ,1.e-36 // SOAIE + ,1.e-36 // TSOA0 + ,1.e-36 // TSOA1 + ,1.e-36 // TSOA2 + ,1.e-36 // TSOA3 + ,1.e-36 // TSOG0 + ,1.e-36 // TSOG1 + ,1.e-36 // TSOG2 + ,1.e-36 // TSOG3 + ,1.e-36 ; // PFE + +// dheff: Effective Henry Law coefficients. +// Use species_database.yml: Henry_K0, Henry_CR, 0., 0., 0., 0., +// According to Fritz et al. (GMD 2022), aerosols not found will use +// coefficients from HNO3. - dheff = - 27.399999618530273 , 5500.0, 0., 0., 0., 0., // ACET - 4050.0000000000000 , 6200.0, 0., 0., 0., 0., // ACTA - 13.199999809265137 , 5900.0, 0., 0., 0., 0., // ALD2 - 410000.00000000000 , 7500.0, 0., 0., 0., 0., // AROMP4 - 2000000.0000000000 , 7500.0, 0., 0., 0., 0., // AROMP5 - 294.00000000000000 , 5200.0, 0., 0., 0., 0., // ATOOH - 38.000000000000000 , 5500.0, 0., 0., 0., 0., // BALD - 2900.0000000000000 , 6800.0, 0., 0., 0., 0., // BENZP - 0.75999999046325684 , 3720.0, 0., 0., 0., 0., // BR2 - 0.97000002861022949 , 5600.0, 0., 0., 0., 0., // BRCL - 0.00000000000000 , 0.0, 0., 0., 0., 0., // BRNO3 - 24000.000000000000 , 0.0, 0., 0., 0., 0., // BZCO3H - 70.000000000000000 , 4600.0, 0., 0., 0., 0., // BZPAN - 3240.0000000000000 , 6800.0, 0., 0., 0., 0., // CH2O - 9.2000000178813934E-002 , 2000.0, 0., 0., 0., 0., // CL2 - 0.00000000000000 , 0.0, 0., 0., 0., 0., // CLNO2 - 1.0000000200408773E+020 , 0.0, 0., 0., 0., 0., // CLNO3 - 0.00000000000000 , 0.0, 0., 0., 0., 0., // CLO - 1.0000000000000000 , 3500.0, 0., 0., 0., 0., // CLOO - 420.00000000000000 , 8500.0, 0., 0., 0., 0., // CSL - 193.00000000000000 , 6400.0, 0., 0., 0., 0., // EOH - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // ETHLN - 39000.000000000000 , 8600.0, 0., 0., 0., 0., // ETHN - 650000.00000000000 , 8800.0, 0., 0., 0., 0., // ETHP - 1.6000000238418579 , 5400.0, 0., 0., 0., 0., // ETNO3 - 334.00000000000000 , 6000.0, 0., 0., 0., 0., // ETP + dheff = + 27.399999618530273 , 5500.0, 0., 0., 0., 0., // ACET + 4050.0000000000000 , 6200.0, 0., 0., 0., 0., // ACTA + 13.199999809265137 , 5900.0, 0., 0., 0., 0., // ALD2 + 410000.00000000000 , 7500.0, 0., 0., 0., 0., // AROMP4 + 2000000.0000000000 , 7500.0, 0., 0., 0., 0., // AROMP5 + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // ATOOH + 38.000000000000000 , 5500.0, 0., 0., 0., 0., // BALD + 2900.0000000000000 , 6800.0, 0., 0., 0., 0., // BENZP + 0.75999999046325684 , 3720.0, 0., 0., 0., 0., // BR2 + 0.97000002861022949 , 5600.0, 0., 0., 0., 0., // BRCL + 0.00000000000000 , 0.0, 0., 0., 0., 0., // BRNO3 + 24000.000000000000 , 0.0, 0., 0., 0., 0., // BZCO3H + 70.000000000000000 , 4600.0, 0., 0., 0., 0., // BZPAN + 3240.0000000000000 , 6800.0, 0., 0., 0., 0., // CH2O + 9.2000000178813934E-002 , 2000.0, 0., 0., 0., 0., // CL2 + 0.00000000000000 , 0.0, 0., 0., 0., 0., // CLNO2 + 1.0000000200408773E+020 , 0.0, 0., 0., 0., 0., // CLNO3 + 0.00000000000000 , 0.0, 0., 0., 0., 0., // CLO + 1.0000000000000000 , 3500.0, 0., 0., 0., 0., // CLOO + 420.00000000000000 , 8500.0, 0., 0., 0., 0., // CSL + 193.00000000000000 , 6400.0, 0., 0., 0., 0., // EOH + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // ETHLN + 39000.000000000000 , 8600.0, 0., 0., 0., 0., // ETHN + 650000.00000000000 , 8800.0, 0., 0., 0., 0., // ETHP + 1.6000000238418579 , 5400.0, 0., 0., 0., 0., // ETNO3 + 334.00000000000000 , 6000.0, 0., 0., 0., 0., // ETP 1.8000000000000000E-001 , 6100.0, 0., 0., 0., 0., // FURA - 41500.000000000000 , 4600.0, 0., 0., 0., 0., // GLYC - 415000.00000000000 , 7500.0, 0., 0., 0., 0., // GLYX - 83000.000000000000 , 7400.0, 0., 0., 0., 0., // H2O2 - 7800.0000000000000 , 0.0, 0., 0., 0., 0., // HAC - 71000003706880.000 , 10200.0, 0., 0., 0., 0., // HBR - 7800.0000000000000 , 0.0, 0., 0., 0., 0., // HC5A - 62999998464.000000 , 9000.0, 0., 0., 0., 0., // HCL - 8920.0000000000000 , 6100.0, 0., 0., 0., 0., // HCOOH - 74299998208000.000 , 3187.2, 0., 0., 0., 0., // HI - 1300000.0000000000 , 5200.0, 0., 0., 0., 0., // HMHP - 120000.00000000000 , 7200.0, 0., 0., 0., 0., // HMML - 83000.000000000000 , 7400.0, 0., 0., 0., 0., // HNO3 - 1300.0000000000000 , 4000.0, 0., 0., 0., 0., // HOBR - 650.00000000000000 , 5900.0, 0., 0., 0., 0., // HOCL - 15400.000000000000 , 8371.0, 0., 0., 0., 0., // HOI - 26900000931840.000 , 5487.0, 0., 0., 0., 0., // HONIT - 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD1 - 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD2 - 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD3 - 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD4 - 41000.000000000000 , 4600.0, 0., 0., 0., 0., // HPETHNL - 2.7000000476837158 , 7507.4, 0., 0., 0., 0., // I2 - 1.0000000200408773E+020 , 18900.0, 0., 0., 0., 0., // I2O2 - 1.0000000200408773E+020 , 13400.0, 0., 0., 0., 0., // I2O3 - 1.0000000200408773E+020 , 13400.0, 0., 0., 0., 0., // I2O4 - 24.000000000000000 , 4916.7, 0., 0., 0., 0., // IBR - 80000000.000000000 , 0.0, 0., 0., 0., 0., // ICHE - 111.00000000000000 , 2105.5, 0., 0., 0., 0., // ICL - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // ICN - 100000000.00000000 , 7200.0, 0., 0., 0., 0., // ICPDH - 40000.000000000000 , 0.0, 0., 0., 0., 0., // IDC - 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDCHP - 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDHDP - 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDHPE - 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDN - 80000000.000000000 , 0.0, 0., 0., 0., 0., // IEPOXA - 80000000.000000000 , 0.0, 0., 0., 0., 0., // IEPOXB - 80000000.000000000 , 0.0, 0., 0., 0., 0., // IEPOXD - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN1 - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN2 - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN3 - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN4 - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // INPB - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // INPD - 0.30000001192092896 , 7240.4, 0., 0., 0., 0., // IONO - 1.0000000200408773E+020 , 3980.0, 0., 0., 0., 0., // IONO2 - 0.79000002145767212 , 5400.0, 0., 0., 0., 0., // IPRNO3 - 100000000.00000000 , 7200.0, 0., 0., 0., 0., // ITCN - 100000000.00000000 , 7200.0, 0., 0., 0., 0., // ITHN - 7.0000000298023224E-002 , 0.0, 0., 0., 0., 0., // LIMO - 100000000.00000000 , 7200.0, 0., 0., 0., 0., // LVOC - 0.00000000000000 , 0.0, 0., 0., 0., 0., // LVOCOA - 4.8600001335144043 , 4300.0, 0., 0., 0., 0., // MACR - 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MACR1OOH - 840.00000000000000 , 5300.0, 0., 0., 0., 0., // MAP - 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MCRDH - 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MCRENOL - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MCRHN - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MCRHNB - 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MCRHP - 420.00000000000000 , 8500.0, 0., 0., 0., 0., // MCT - 18.200000000000000 , 5700.0, 0., 0., 0., 0., // MEK - 11.000000000000000 , 4700.0, 0., 0., 0., 0., // MENO3 - 32400.000000000000 , 6200.0, 0., 0., 0., 0., // MGLY - 203.00000000000000 , 5600.0, 0., 0., 0., 0., // MOH - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MONITS - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MONITU - 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MP - 1.7200000286102295 , 0.0, 0., 0., 0., 0., // MPAN - 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MPN - 4.8999998718500137E-002 , 0.0, 0., 0., 0., 0., // MTPA - 4.8999998718500137E-002 , 0.0, 0., 0., 0., 0., // MTPO - 26.299999237060547 , 4800.0, 0., 0., 0., 0., // MVK - 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKDH - 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKHC - 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKHCB - 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKHP - 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MVKN - 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKPC - 0.0000000000000000 , 0.0, 0., 0., 0., 0., // N2O5 - 3300000.0000000000 , 4100.0, 0., 0., 0., 0., // NH3 - 0.0000000000000000 , 0.0, 0., 0., 0., 0., // NO2 - 2300.0000000000000 , 0.0, 0., 0., 0., 0., // NPHEN - 1.1000000238418579 , 5500.0, 0., 0., 0., 0., // NPRNO3 - 1.0132499970495701E-002 , 2800.0, 0., 0., 0., 0., // O3 - 1.0132499970495701E-002 , 2800.0, 0., 0., 0., 0., // OX - 2.940000572204590 , 5700.0, 0., 0., 0., 0., // PAN - 2800.0000000000000 , 2700.0, 0., 0., 0., 0., // PHEN - 294.00000000000000 , 5200.0, 0., 0., 0., 0., // PP - 2.9400000572204590 , 0.0, 0., 0., 0., 0., // PPN - 1000.0000000000000 , 0.0, 0., 0., 0., 0., // PROPNN - 7.4000000000000000E-003 , 3400.0, 0., 0., 0., 0., // PRPE - 294.00000000000000 , 5200.0, 0., 0., 0., 0., // PRPN - 314000.00000000000 , 5100.0, 0., 0., 0., 0., // PYAC - 1.0000000000000000 , 5800.0, 0., 0., 0., 0., // R4N2 - 294.00000000000000 , 5200.0, 0., 0., 0., 0., // R4P - 294.00000000000000 , 5200.0, 0., 0., 0., 0., // RA3P - 294.00000000000000 , 5200.0, 0., 0., 0., 0., // RB3P - 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPA - 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPB - 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPC - 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPD - 294.00000000000000 , 5200.0, 0., 0., 0., 0., // RP - 0.0000000000000000 , 0.0, 0., 0., 0., 0. ; // SO2 + 41500.000000000000 , 4600.0, 0., 0., 0., 0., // GLYC + 415000.00000000000 , 7500.0, 0., 0., 0., 0., // GLYX + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // H2O2 + 7800.0000000000000 , 0.0, 0., 0., 0., 0., // HAC + 71000003706880.000 , 10200.0, 0., 0., 0., 0., // HBR + 7800.0000000000000 , 0.0, 0., 0., 0., 0., // HC5A + 62999998464.000000 , 9000.0, 0., 0., 0., 0., // HCL + 8920.0000000000000 , 6100.0, 0., 0., 0., 0., // HCOOH + 74299998208000.000 , 3187.2, 0., 0., 0., 0., // HI + 1300000.0000000000 , 5200.0, 0., 0., 0., 0., // HMHP + 120000.00000000000 , 7200.0, 0., 0., 0., 0., // HMML + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // HNO3 + 1300.0000000000000 , 4000.0, 0., 0., 0., 0., // HOBR + 650.00000000000000 , 5900.0, 0., 0., 0., 0., // HOCL + 15400.000000000000 , 8371.0, 0., 0., 0., 0., // HOI + 26900000931840.000 , 5487.0, 0., 0., 0., 0., // HONIT + 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD1 + 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD2 + 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD3 + 40000.000000000000 , 0.0, 0., 0., 0., 0., // HPALD4 + 41000.000000000000 , 4600.0, 0., 0., 0., 0., // HPETHNL + 2.7000000476837158 , 7507.4, 0., 0., 0., 0., // I2 + 1.0000000200408773E+020 , 18900.0, 0., 0., 0., 0., // I2O2 + 1.0000000200408773E+020 , 13400.0, 0., 0., 0., 0., // I2O3 + 1.0000000200408773E+020 , 13400.0, 0., 0., 0., 0., // I2O4 + 24.000000000000000 , 4916.7, 0., 0., 0., 0., // IBR + 80000000.000000000 , 0.0, 0., 0., 0., 0., // ICHE + 111.00000000000000 , 2105.5, 0., 0., 0., 0., // ICL + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // ICN + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // ICPDH + 40000.000000000000 , 0.0, 0., 0., 0., 0., // IDC + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDCHP + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDHDP + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDHPE + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // IDN + 80000000.000000000 , 0.0, 0., 0., 0., 0., // IEPOXA + 80000000.000000000 , 0.0, 0., 0., 0., 0., // IEPOXB + 80000000.000000000 , 0.0, 0., 0., 0., 0., // IEPOXD + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN1 + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN2 + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN3 + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // IHN4 + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // INPB + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // INPD + 0.30000001192092896 , 7240.4, 0., 0., 0., 0., // IONO + 1.0000000200408773E+020 , 3980.0, 0., 0., 0., 0., // IONO2 + 0.79000002145767212 , 5400.0, 0., 0., 0., 0., // IPRNO3 + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // ITCN + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // ITHN + 7.0000000298023224E-002 , 0.0, 0., 0., 0., 0., // LIMO + 100000000.00000000 , 7200.0, 0., 0., 0., 0., // LVOC + 0.00000000000000 , 0.0, 0., 0., 0., 0., // LVOCOA + 4.8600001335144043 , 4300.0, 0., 0., 0., 0., // MACR + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MACR1OOH + 840.00000000000000 , 5300.0, 0., 0., 0., 0., // MAP + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MCRDH + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MCRENOL + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MCRHN + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MCRHNB + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MCRHP + 420.00000000000000 , 8500.0, 0., 0., 0., 0., // MCT + 18.200000000000000 , 5700.0, 0., 0., 0., 0., // MEK + 11.000000000000000 , 4700.0, 0., 0., 0., 0., // MENO3 + 32400.000000000000 , 6200.0, 0., 0., 0., 0., // MGLY + 203.00000000000000 , 5600.0, 0., 0., 0., 0., // MOH + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MONITS + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MONITU + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MP + 1.7200000286102295 , 0.0, 0., 0., 0., 0., // MPAN + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // MPN + 4.8999998718500137E-002 , 0.0, 0., 0., 0., 0., // MTPA + 4.8999998718500137E-002 , 0.0, 0., 0., 0., 0., // MTPO + 26.299999237060547 , 4800.0, 0., 0., 0., 0., // MVK + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKDH + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKHC + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKHCB + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKHP + 17000.000000000000 , 9200.0, 0., 0., 0., 0., // MVKN + 1400000.0000000000 , 7200.0, 0., 0., 0., 0., // MVKPC + 0.0000000000000000 , 0.0, 0., 0., 0., 0., // N2O5 + 3300000.0000000000 , 4100.0, 0., 0., 0., 0., // NH3 + 0.0000000000000000 , 0.0, 0., 0., 0., 0., // NO2 + 2300.0000000000000 , 0.0, 0., 0., 0., 0., // NPHEN + 1.1000000238418579 , 5500.0, 0., 0., 0., 0., // NPRNO3 + 1.0132499970495701E-002 , 2800.0, 0., 0., 0., 0., // O3 + 1.0132499970495701E-002 , 2800.0, 0., 0., 0., 0., // OX + 2.940000572204590 , 5700.0, 0., 0., 0., 0., // PAN + 2800.0000000000000 , 2700.0, 0., 0., 0., 0., // PHEN + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // PP + 2.9400000572204590 , 0.0, 0., 0., 0., 0., // PPN + 1000.0000000000000 , 0.0, 0., 0., 0., 0., // PROPNN + 7.4000000000000000E-003 , 3400.0, 0., 0., 0., 0., // PRPE + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // PRPN + 314000.00000000000 , 5100.0, 0., 0., 0., 0., // PYAC + 1.0000000000000000 , 5800.0, 0., 0., 0., 0., // R4N2 + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // R4P + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // RA3P + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // RB3P + 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPA + 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPB + 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPC + 1700000.0000000000 , 0.0, 0., 0., 0., 0., // RIPD + 294.00000000000000 , 5200.0, 0., 0., 0., 0., // RP + 1.36e+00, 3100., 1.30e-02, 1960., 6.6e-08, 1500., // SO2 - uses CAM-chem params as GC handling is special + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // AERI + 2900.0000000000000 , 6800.0, 0., 0., 0., 0., // AONITA + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // ASOA1 + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // ASOA2 + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // ASOA3 + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // ASOAN + 100000.00000000000 , 6039.0, 0., 0., 0., 0., // ASOG1 + 100000.00000000000 , 6039.0, 0., 0., 0., 0., // ASOG2 + 100000.00000000000 , 6039.0, 0., 0., 0., 0., // ASOG3 + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // BRSALA + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // BRSALC + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // INDIOL + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // IONITA + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // ISALA + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // ISALC + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // MONITA + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // MSA + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // NH4 + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // NIT + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // NITS + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // SALAAL + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // SALACL + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // SALCAL + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // SALCCL + 1.36e+00, 3100., 1.30e-02, 1960., 6.6e-08, 1500., // SO4 + 1.36e+00, 3100., 1.30e-02, 1960., 6.6e-08, 1500., // SO4S + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // SOAGX + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // SOAIE + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // TSOA0 + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // TSOA1 + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // TSOA2 + 83000.000000000000 , 7400.0, 0., 0., 0., 0., // TSOA3 + 100000.00000000000 , 6039.0, 0., 0., 0., 0., // TSOG0 + 100000.00000000000 , 6039.0, 0., 0., 0., 0., // TSOG1 + 100000.00000000000 , 6039.0, 0., 0., 0., 0., // TSOG2 + 100000.00000000000 , 6039.0, 0., 0., 0., 0., // TSOG3 + 83000.000000000000 , 7400.0, 0., 0., 0., 0. ; // PFE + mol_wghts = - ,58.090000000000003 // ACET - ,60.060000000000002 // ACTA - ,44.060000000000002 // ALD2 - ,68.079999999999998 // AROMP4 - ,98.099999999999994 // AROMP5 - ,90.090000000000003 // ATOOH - ,106.12000000000000 // BALD - ,110.11000000000000 // BENZP - ,159.80000000000001 // BR2 - ,115.45000000000000 // BRCL - ,141.91000000000000 // BRNO3 - ,138.12000000000000 // BZCO3H - ,183.12000000000000 // BZPAN - ,30.030000000000001 // CH2O - ,70.900000000000006 // CL2 - ,81.450000000000003 // CLNO2 - ,97.450000000000003 // CLNO3 - ,51.450000000000003 // CLO - ,67.450000000000003 // CLOO - ,108.14000000000000 // CSL - ,46.070000000000000 // EOH - ,105.06000000000000 // ETHLN - ,107.06999999999999 // ETHN - ,78.069999999999993 // ETHP - ,91.079999999999998 // ETNO3 - ,62.079999999999998 // ETP + ,58.090000000000003 // ACET + ,60.060000000000002 // ACTA + ,44.060000000000002 // ALD2 + ,68.079999999999998 // AROMP4 + ,98.099999999999994 // AROMP5 + ,90.090000000000003 // ATOOH + ,106.12000000000000 // BALD + ,110.11000000000000 // BENZP + ,159.80000000000001 // BR2 + ,115.45000000000000 // BRCL + ,141.91000000000000 // BRNO3 + ,138.12000000000000 // BZCO3H + ,183.12000000000000 // BZPAN + ,30.030000000000001 // CH2O + ,70.900000000000006 // CL2 + ,81.450000000000003 // CLNO2 + ,97.450000000000003 // CLNO3 + ,51.450000000000003 // CLO + ,67.450000000000003 // CLOO + ,108.14000000000000 // CSL + ,46.070000000000000 // EOH + ,105.06000000000000 // ETHLN + ,107.06999999999999 // ETHN + ,78.069999999999993 // ETHP + ,91.079999999999998 // ETNO3 + ,62.079999999999998 // ETP ,68.070000000000000 // FURA - ,60.060000000000002 // GLYC - ,58.039999999999999 // GLYX - ,34.020000000000003 // H2O2 - ,74.079999999999998 // HAC - ,80.909999999999997 // HBR - ,100.13000000000000 // HC5A - ,36.450000000000003 // HCL - ,46.030000000000001 // HCOOH - ,127.91000000000000 // HI - ,64.049999999999997 // HMHP - ,102.09999999999999 // HMML - ,63.009999999999998 // HNO3 - ,96.909999999999997 // HOBR - ,52.450000000000003 // HOCL - ,143.88999999999999 // HOI - ,215.00000000000000 // HONIT - ,116.13000000000000 // HPALD1 - ,116.13000000000000 // HPALD2 - ,116.13000000000000 // HPALD3 - ,116.13000000000000 // HPALD4 - ,76.060000000000002 // HPETHNL - ,253.80000000000001 // I2 - ,285.80000000000001 // I2O2 - ,301.80000000000001 // I2O3 - ,317.80000000000001 // I2O4 - ,206.90000000000001 // IBR - ,116.13000000000000 // ICHE - ,162.44999999999999 // ICL - ,145.13000000000000 // ICN - ,150.15000000000001 // ICPDH - ,98.109999999999999 // IDC - ,148.13000000000000 // IDCHP - ,168.16999999999999 // IDHDP - ,150.15000000000001 // IDHPE - ,192.15000000000001 // IDN - ,106.14000000000000 // IEPOXA - ,106.14000000000000 // IEPOXB - ,106.14000000000000 // IEPOXD - ,147.15000000000001 // IHN1 - ,147.15000000000001 // IHN2 - ,147.15000000000001 // IHN3 - ,147.15000000000001 // IHN4 - ,163.15000000000001 // INPB - ,163.15000000000001 // INPD - ,172.91000000000000 // IONO - ,188.91000000000000 // IONO2 - ,105.11000000000000 // IPRNO3 - ,195.15000000000000 // ITCN - ,197.16999999999999 // ITHN - ,136.25999999999999 // LIMO - ,154.19000000000000 // LVOC + ,60.060000000000002 // GLYC + ,58.039999999999999 // GLYX + ,34.020000000000003 // H2O2 + ,74.079999999999998 // HAC + ,80.909999999999997 // HBR + ,100.13000000000000 // HC5A + ,36.450000000000003 // HCL + ,46.030000000000001 // HCOOH + ,127.91000000000000 // HI + ,64.049999999999997 // HMHP + ,102.09999999999999 // HMML + ,63.009999999999998 // HNO3 + ,96.909999999999997 // HOBR + ,52.450000000000003 // HOCL + ,143.88999999999999 // HOI + ,215.00000000000000 // HONIT + ,116.13000000000000 // HPALD1 + ,116.13000000000000 // HPALD2 + ,116.13000000000000 // HPALD3 + ,116.13000000000000 // HPALD4 + ,76.060000000000002 // HPETHNL + ,253.80000000000001 // I2 + ,285.80000000000001 // I2O2 + ,301.80000000000001 // I2O3 + ,317.80000000000001 // I2O4 + ,206.90000000000001 // IBR + ,116.13000000000000 // ICHE + ,162.44999999999999 // ICL + ,145.13000000000000 // ICN + ,150.15000000000001 // ICPDH + ,98.109999999999999 // IDC + ,148.13000000000000 // IDCHP + ,168.16999999999999 // IDHDP + ,150.15000000000001 // IDHPE + ,192.15000000000001 // IDN + ,106.14000000000000 // IEPOXA + ,106.14000000000000 // IEPOXB + ,106.14000000000000 // IEPOXD + ,147.15000000000001 // IHN1 + ,147.15000000000001 // IHN2 + ,147.15000000000001 // IHN3 + ,147.15000000000001 // IHN4 + ,163.15000000000001 // INPB + ,163.15000000000001 // INPD + ,172.91000000000000 // IONO + ,188.91000000000000 // IONO2 + ,105.11000000000000 // IPRNO3 + ,195.15000000000000 // ITCN + ,197.16999999999999 // ITHN + ,136.25999999999999 // LIMO + ,154.19000000000000 // LVOC ,154.19000000000000 // LVOCOA - ,70.099999999999994 // MACR - ,102.09999999999999 // MACR1OOH - ,76.060000000000002 // MAP - ,104.12000000000000 // MCRDH - ,86.099999999999994 // MCRENOL - ,149.11000000000001 // MCRHN - ,149.11000000000001 // MCRHNB - ,120.12000000000000 // MCRHP - ,124.00000000000000 // MCT - ,72.110000000000000 // MEK - ,77.049999999999997 // MENO3 - ,72.069999999999993 // MGLY - ,32.049999999999997 // MOH - ,215.28000000000000 // MONITS - ,215.28000000000000 // MONITU - ,48.050000000000000 // MP - ,147.09999999999999 // MPAN - ,93.050000000000000 // MPN - ,136.25999999999999 // MTPA - ,136.25999999999999 // MTPO - ,70.090000000000003 // MVK - ,105.13000000000000 // MVKDH - ,102.09999999999999 // MVKHC - ,102.09999999999999 // MVKHCB - ,120.12000000000000 // MVKHP - ,149.12000000000000 // MVKN - ,118.09999999999999 // MVKPC - ,108.02000000000000 // N2O5 - ,17.039999999999999 // NH3 - ,46.009999999999998 // NO2 - ,139.11000000000001 // NPHEN - ,105.11000000000000 // NPRNO3 - ,48.000000000000000 // O3 - ,48.000000000000000 // OX - ,121.06000000000000 // PAN - ,94.109999999999999 // PHEN - ,92.109999999999999 // PP - ,135.08000000000001 // PPN - ,119.08000000000000 // PROPNN - ,42.090000000000000 // PRPE - ,137.11000000000001 // PRPN - ,88.069999999999993 // PYAC - ,119.09999999999999 // R4N2 - ,90.140000000000001 // R4P - ,76.109999999999999 // RA3P - ,76.109999999999999 // RB3P - ,118.15000000000001 // RIPA - ,118.15000000000001 // RIPB - ,118.15000000000001 // RIPC - ,118.15000000000001 // RIPD - ,90.090000000000003 // RP - ,64.040000000000006 ; // SO2 + ,70.099999999999994 // MACR + ,102.09999999999999 // MACR1OOH + ,76.060000000000002 // MAP + ,104.12000000000000 // MCRDH + ,86.099999999999994 // MCRENOL + ,149.11000000000001 // MCRHN + ,149.11000000000001 // MCRHNB + ,120.12000000000000 // MCRHP + ,124.00000000000000 // MCT + ,72.110000000000000 // MEK + ,77.049999999999997 // MENO3 + ,72.069999999999993 // MGLY + ,32.049999999999997 // MOH + ,215.28000000000000 // MONITS + ,215.28000000000000 // MONITU + ,48.050000000000000 // MP + ,147.09999999999999 // MPAN + ,93.050000000000000 // MPN + ,136.25999999999999 // MTPA + ,136.25999999999999 // MTPO + ,70.090000000000003 // MVK + ,105.13000000000000 // MVKDH + ,102.09999999999999 // MVKHC + ,102.09999999999999 // MVKHCB + ,120.12000000000000 // MVKHP + ,149.12000000000000 // MVKN + ,118.09999999999999 // MVKPC + ,108.02000000000000 // N2O5 + ,17.039999999999999 // NH3 + ,46.009999999999998 // NO2 + ,139.11000000000001 // NPHEN + ,105.11000000000000 // NPRNO3 + ,48.000000000000000 // O3 + ,48.000000000000000 // OX + ,121.06000000000000 // PAN + ,94.109999999999999 // PHEN + ,92.109999999999999 // PP + ,135.08000000000001 // PPN + ,119.08000000000000 // PROPNN + ,42.090000000000000 // PRPE + ,137.11000000000001 // PRPN + ,88.069999999999993 // PYAC + ,119.09999999999999 // R4N2 + ,90.140000000000001 // R4P + ,76.109999999999999 // RA3P + ,76.109999999999999 // RB3P + ,118.15000000000001 // RIPA + ,118.15000000000001 // RIPB + ,118.15000000000001 // RIPC + ,118.15000000000001 // RIPD + ,90.090000000000003 // RP + ,64.040000000000006 // SO2 + ,126.90000000000000 // AERI + ,189.12000000000000 // AONITA + ,150.00000000000000 // ASOA1 + ,150.00000000000000 // ASOA2 + ,150.00000000000000 // ASOA3 + ,150.00000000000000 // ASOAN + ,150.00000000000000 // ASOG1 + ,150.00000000000000 // ASOG2 + ,150.00000000000000 // ASOG3 + ,79.900000000000000 // BRSALA + ,79.900000000000000 // BRSALC + ,102.00000000000000 // INDIOL + ,14.010000000000000 // IONITA + ,126.90000000000000 // ISALA + ,126.90000000000000 // ISALC + ,14.010000000000000 // MONITA + ,96.100000000000000 // MSA + ,18.050000000000000 // NH4 + ,62.010000000000000 // NIT + ,31.400000000000000 // NITS + ,31.400000000000000 // SALAAL + ,35.450000000000000 // SALACL + ,31.400000000000000 // SALCAL + ,35.450000000000000 // SALCCL + ,31.400000000000000 // SO4 + ,31.400000000000000 // SO4S + ,58.040000000000000 // SOAGX + ,118.15000000000000 // SOAIE + ,150.00000000000000 // TSOA0 + ,150.00000000000000 // TSOA1 + ,150.00000000000000 // TSOA2 + ,150.00000000000000 // TSOA3 + ,150.00000000000000 // TSOG0 + ,150.00000000000000 // TSOG1 + ,150.00000000000000 // TSOG2 + ,150.00000000000000 // TSOG3 + ,55.850000000000000 ; // PFE } \ No newline at end of file From 20b3fd6501131c9d4d97892cb3cee5448a9bd536 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 11 Mar 2024 12:57:23 -0600 Subject: [PATCH 154/331] Update CESM default HEMCO_Config.rc to (mostly) match GC-Classic Some emissions are handled differently in CESM and notes in HEMCO_Config.rc document this. Signed-off-by: Lizzie Lundgren --- run/CESM/HEMCO_Config.rc | 2595 ++++++++++++++++++++++---------------- 1 file changed, 1477 insertions(+), 1118 deletions(-) diff --git a/run/CESM/HEMCO_Config.rc b/run/CESM/HEMCO_Config.rc index a0efba98e..2d3b3438f 100644 --- a/run/CESM/HEMCO_Config.rc +++ b/run/CESM/HEMCO_Config.rc @@ -23,12 +23,12 @@ #BOC ############################################################################### ### BEGIN SECTION SETTINGS +############################################################################### -ROOT: /glade/p/univ/umit0034/ExtData/HEMCO -METDIR: /n/holyscratch01/external_repos/GEOS-CHEM/gcgrid/data/ExtData/GEOS_2x2.5/MERRA2 -GCAP2SCENARIO: not_used -GCAP2VERTRES: 47 -Logfile: HEMCO.log +ROOT: /glade/campaign/cesm/cesmdata/cseg/inputdata/atm/cam/geoschem/emis/ExtData/HEMCO +GCAPSCENARIO: not_used +GCAPVERTRES: 47 +Logfile: * DiagnFile: HEMCO_Diagn.rc DiagnPrefix: ./OutputDir/HEMCO_diagnostics DiagnFreq: Monthly @@ -61,7 +61,7 @@ VerboseOnCores: root # Accepted values: root all --> CEDS_GBDMAPS : false # 1970-2017 --> CEDS_GBDMAPS_byFuelType: false # 1970-2017 --> EDGARv43 : false # 1970-2010 - --> HTAP : false # 2008-2010 + --> HTAPv3 : false # 2000-2018 --> GEIA_NH3 : true # 1990 --> SEABIRD_NH3 : true # 1990 --> POET_EOH : false # 1985 @@ -80,7 +80,7 @@ VerboseOnCores: root # Accepted values: root all # research purposes. Recommended setting: "AEIC2019_DAILY: false". # # 2. AEIC2019_MONMEAN selects monthly-mean AEIC 2019 emisisons, which will -# incur much less computational overhaead. This options should suffice +# incur much less computational overhaead. This option should suffice # for most simulations. Recommended setting "AEIC2019_MONMEAN: true". # # 3. AEIC_SCALE_1990_2019: If "false", the AEIC 2019 data from the year @@ -109,7 +109,7 @@ VerboseOnCores: root # Accepted values: root all --> CEDSv2_SHIP : true # 1750-2017 --> CEDS_GBDMAPS_SHIP : false # 1970-2017 --> CEDS_GBDMAPS_SHIP_byFuelType: false # 1970-2017 - --> HTAP_SHIP : false # 2008-2010 + --> HTAPv3_SHIP : false # 2000-2018 --> ICOADS_SHIP : false # 2002 --> ARCTAS_SHIP : false # 2008 --> CORBETT_SHIP : false # 1985 @@ -119,7 +119,7 @@ VerboseOnCores: root # Accepted values: root all --> RCP_60 : false # 2005-2100 --> RCP_85 : false # 2005-2100 # ----- CMIP6 ANTHRO EMISSIONS / BOUNDARY CONDITIONS -------------------------- -# Set GCAP2SCENARIO (e.g., HIST, SSP585) above in SECTION SETTINGS +# Set GCAPSCENARIO (e.g., HIST, SSP585) above in SECTION SETTINGS --> CMIP6_SFC_BC : false # 1750-2100 --> CMIP6_SFC_LAND_ANTHRO : false # 1850-2100 --> CMIP6_AIRCRAFT : false # 1850-2100 @@ -128,12 +128,12 @@ VerboseOnCores: root # Accepted values: root all --> QFED2 : false # 2000-2020 --> GFAS : false # 2003-2021 --> BB4MIPS : false # 1850-2100 + --> GFED4_CLIMATOLOGY : false # If true, turn off GFED ext below # ----- OFFLINE EMISSIONS ----------------------------------------------------- # To use online emissions instead set the offline emissions to 'false' and the # corresponding HEMCO extension to 'on': # OFFLINE_DUST - DustDead or DustGinoux # OFFLINE_BIOGENICVOC - MEGAN -# - Note: MEGAN must always be on for species not in OFFLINE_BIOGENICVOC # OFFLINE_SEASALT - SeaSalt # OFFLINE_SOILNOX - SoilNOx # @@ -141,11 +141,11 @@ VerboseOnCores: root # Accepted values: root all # update ExtNr and Cat in HEMCO_Diagn.rc to properly save out emissions for # any affected species. #------------------------------------------------------------------------------ - --> OFFLINE_DUST : false # 1980-2021 - --> OFFLINE_BIOGENICVOC : false # 1980-2021 - --> OFFLINE_SEASALT : false # 1980-2021 + --> OFFLINE_DUST : false # 1980-2019 + --> OFFLINE_BIOGENICVOC : false # 1980-2020 + --> OFFLINE_SEASALT : false # 1980-2019 --> CalcBrSeasalt : false - --> OFFLINE_SOILNOX : true # 1980-2021 + --> OFFLINE_SOILNOX : true # 1980-2020 # ----- NON-EMISSIONS DATA ---------------------------------------------------- --> UVALBEDO : true # 1985 --> CCM_STRAT_Bry : false # 2007 @@ -166,13 +166,15 @@ VerboseOnCores: root # Accepted values: root all --> LUT data format : nc --> LUT source dir : $ROOT/PARANOX/v2015-02 103 LightNOx : off NO + --> LightningClimatology : off --> CDF table : $ROOT/LIGHTNOX/v2014-07/light_dist.ott2010.dat 104 SoilNOx : off NO --> Use fertilizer NOx : true 105 DustDead : off DST1/DST2/DST3/DST4 --> Mass tuning factor : 4.7586e-4 106 DustGinoux : off DST1/DST2/DST3/DST4 -107 SeaSalt : off SALA/SALC/SALACL/SALCCL/SALAAL/SALCAL/BRSALA/BRSALC/MOPO/MOPI +#ewl: Use BRSALA or BrSALA, BrSALC or BRSALC. Did this change in standard model? +107 SeaSalt : off SALA/SALC/SALACL/SALCCL/SALAAL/SALCAL/BrSALA/BrSALC/MOPO/MOPI --> SALA lower radius : 0.01 --> SALA upper radius : 0.5 --> SALC lower radius : 0.5 @@ -198,7 +200,9 @@ VerboseOnCores: root # Accepted values: root all --> Monoterp to SOAS : 0.050 --> Othrterp to SOAP : 0.050 --> Othrterp to SOAS : 0.050 -111 GFED : on NO/CO/ALK4/ACET/MEK/ALD2/PRPE/C2H2/C2H4/C3H8/CH2O/C2H6/SO2/NH3/bc_a4/pom_a4/POG1/POG2/MTPA/BENZ/TOLU/XYLE/NAP/EOH/MOH/SOAP +# For CESM: (1) use bc_a4 and pom_a4 instead of BCPO, BCPI, OCPO, and OCPI in GFED, and +# (2) add scaling for bc_a4 and pom_a4 +111 GFED : on NO/CO/ALK4/ACET/MEK/ALD2/PRPE/C2H2/C2H4/C3H8/CH2O/C2H6/SO2/NH3/bc_a4/pom_a4/POG1/POG2/MTPA/BENZ/TOLU/XYLE/NAP/EOH/MOH/SOAP/FURA/PHEN/MVK/ISOP/ACTA/MGLY/GLYX/RCHO --> GFED4 : true --> GFED_daily : false --> GFED_3hourly : false @@ -212,12 +216,10 @@ VerboseOnCores: root # Accepted values: root all --> CO to SOAP : 0.013 --> GFED_subgrid_coag : false #see the note near scale factor 281 for the source of this emis factor -114 FINN : off NO/CO/ALK4/ACET/MEK/ALD2/PRPE/C2H2/C2H4/C3H8/CH2O/C2H6/SO2/NH3/bc_a4/pom_a4/GLYC/HAC/SOAP +114 FINN : off NO/CO/ALK4/ACET/MEK/ALD2/PRPE/C2H2/C2H4/C3H8/CH2O/C2H6/SO2/NH3/BCPI/BCPO/OCPI/OCPO/GLYC/HAC/SOAP --> FINN_daily : false --> Scaling_CO : 1.0 --> Scaling_SOAP : 0.013 - --> Scaling_bc_a4 : 1.0 - --> Scaling_pom_a4 : 1.4 --> hydrophilic BC : 0.2 --> hydrophilic OC : 0.5 --> FINN_subgrid_coag : false @@ -230,6 +232,17 @@ VerboseOnCores: root # Accepted values: root all --> Emit HOI : true --> Emit I2 : true 130 TOMAS_Jeagle : off SS01/SS02/SS03/SS04/SS05/SS06/SS07/SS08/SS09/SS10/SS11/SS12/SS13/SS14/SS15/SS16/SS17/SS18/SS19/SS20/SS21/SS22/SS23/SS24/SS25/SS26/SS27/SS28/SS29/SS30/SS31/SS32/SS33/SS34/SS35/SS36/SS37/SS38/SS39/SS40 + --> Reduce SS cold water : true + --> Blowing Snow SS : true + --> NH FYI snow salinity : 0.1 + --> NH MYI snow salinity : 0.05 + --> SH FYI snow salinity : 0.03 + --> SH MYI snow salinity : 0.015 + --> NH snow age : 3.0 + --> SH snow age : 1.5 + --> N per snowflake : 1.0 + --> Model sea salt Br- : false + --> Br- mass ratio : 2.11e-3 131 TOMAS_DustDead : off DUST01/DUST02/DUST03/DUST04/DUST05/DUST06/DUST07/DUST08/DUST09/DUST10/DUST11/DUST12/DUST13/DUST14/DUST15/DUST16/DUST17/DUST18/DUST19/DUST20/DUST21/DUST22/DUST23/DUST24/DUST25/DUST26/DUST27/DUST28/DUST29/DUST30/DUST31/DUST32/DUST33/DUST34/DUST35/DUST36/DUST37/DUST38/DUST39/DUST40 --> Mass tuning factor : 4.7586e-4 ### END SECTION EXTENSION SWITCHES ### @@ -238,7 +251,7 @@ VerboseOnCores: root # Accepted values: root all ### BEGIN SECTION BASE EMISSIONS ############################################################################### -# ExtNr Name sourceFile sourceVar sourceTime C/R/E SrcDim SrcUnit Species ScalIDs Cat Hier +# ExtNr Name sourceFile sourceVar sourceTime C/R/E SrcDim SrcUnit Species ScalIDs Cat Hier (((EMISSIONS @@ -287,6 +300,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__afdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__afdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__afdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_SO4__afdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_ACET__agACET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 0 EPA16_ALD2__agALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 @@ -331,6 +346,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__airportsPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__airportsPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__airportsPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__airportsPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__airportsPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__airportsSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -367,6 +384,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__nonptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__nonptPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__nonptPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__nonptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__nonptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__nonptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -401,6 +420,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__nonroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__nonroadPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__nonroadPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__nonroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__nonroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__nonroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -436,6 +457,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__npogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__npogPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__npogPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__npogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__npogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__npogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -470,6 +493,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__onroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__onroadPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__onroadPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__onroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__onroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__onroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -503,6 +528,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__onroad_caPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__onroad_caPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__onroad_caPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__onroad_caPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__onroad_caPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__onroad_caSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -536,6 +563,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__railPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__railPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__railPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__railPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__railPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__railSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -571,6 +600,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__rwcPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__rwcPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__rwcPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__rwcPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__rwcPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__rwcSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -604,6 +635,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__c1c2PNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__c1c2POC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__c1c2POC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__clc2POC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__clc2POC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__c1c2PRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__c1c2PSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__c1c2SO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -637,6 +670,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__c3PNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c3_12_0pt1degree_3D_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__c3POC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c3_12_0pt1degree_3D_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__c3POC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c3_12_0pt1degree_3D_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__c3POC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__c3POC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__c3PRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c3_12_0pt1degree_3D_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__c3PSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c3_12_0pt1degree_3D_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__c3SO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c3_12_0pt1degree_3D_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -673,6 +708,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__pteguPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptegu_0pt1degree_3D_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__pteguPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptegu_0pt1degree_3D_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__pteguPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptegu_0pt1degree_3D_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__pteguPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__pteguPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__pteguPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptegu_0pt1degree_3D_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__pteguPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptegu_0pt1degree_3D_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__pteguSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptegu_0pt1degree_3D_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -709,6 +746,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__ptogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_pt_oilgas_allinln_0pt1degree_3D_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__ptogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_pt_oilgas_allinln_0pt1degree_3D_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__ptogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_pt_oilgas_allinln_0pt1degree_3D_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__ptogPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__ptogPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__ptogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_pt_oilgas_allinln_0pt1degree_3D_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__ptogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_pt_oilgas_allinln_0pt1degree_3D_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__ptogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_pt_oilgas_allinln_0pt1degree_3D_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -745,6 +784,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__ptnonipmPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__ptnonipmPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__ptnonipmPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__ptnonipmPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__ptnonipmPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__ptnonipmPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__ptnonipmPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__ptnonipmSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -778,6 +819,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__onroad_canPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__onroad_canPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__onroad_canPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__onroad_canPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__onroad_canPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__onroad_canSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -812,6 +855,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__onroad_mexPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__onroad_mexPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__onroad_mexPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__onroad_mexPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__onroad_mexPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__onroad_mexSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -826,6 +871,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__othafdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__othafdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__othafdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_SO4__othafdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_ACET__otharACET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 0 EPA16_ALD2__otharALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 @@ -853,6 +900,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__otharPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__otharPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__otharPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__otharPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__otharPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__otharSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -867,6 +916,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__othptdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__othptdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__othptdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_SO4__othptdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_ACET__othptACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 0 EPA16_ALD2__othptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 @@ -894,6 +945,8 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_NIT__othptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 0 EPA16_OCPI__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 0 EPA16_OCPO__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_POG1__othptPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 +0 EPA16_POG2__othptPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 0 EPA16_C3H8__othptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 0 EPA16_SO4__othptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_SO2__othptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 @@ -950,6 +1003,8 @@ VerboseOnCores: root # Accepted values: root all 0 DICE_CARS_BCPO - - - - - - BCPO 71/1008 1 60 0 DICE_CARS_OCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-cars-2013-v01-4Oct2016.nc OC 2013/1/1/0 C xy g/m2/yr OCPI 72/1008/330 1 60 0 DICE_CARS_OCPO - - - - - - OCPO 73/1008/330 1 60 +0 DICE_CARS_POG1 - - - - - - POG1 74/76/1008/330 1 60 +0 DICE_CARS_POG2 - - - - - - POG2 74/77/1008/330 1 60 # ------------------------ # Motorcycles @@ -971,6 +1026,8 @@ VerboseOnCores: root # Accepted values: root all 0 DICE_MOTORCYCLES_BCPO - - - - - - BCPO 71/1008 1 60 0 DICE_MOTORCYCLES_OCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-motorcycles-2013-v01-4Oct2016.nc OC 2013/1/1/0 C xy g/m2/yr OCPI 72/1008 1 60 0 DICE_MOTORCYCLES_OCPO - - - - - - OCPO 73/1008 1 60 +0 DICE_MOTORCYCLES_POG1 - - - - - - POG1 74/76/1008 1 60 +0 DICE_MOTORCYCLES_POG2 - - - - - - POG2 74/77/1008 1 60 # ------------------------ # Backup generators @@ -996,9 +1053,11 @@ VerboseOnCores: root # Accepted values: root all 0 DICE_BACKUPGEN_TOLU $ROOT/DICE_Africa/v2016-10/DICE-Africa-generator-use-2013-v01-4Oct2016.nc TOLU 2013/1/1/0 C xy g/m2/yr TOLU 26/1008 1 60 0 DICE_BACKUPGEN_XYLE $ROOT/DICE_Africa/v2016-10/DICE-Africa-generator-use-2013-v01-4Oct2016.nc XYLE 2013/1/1/0 C xy g/m2/yr XYLE 26/1008 1 60 0 DICE_BACKUPGEN_BCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-generator-use-2013-v01-4Oct2016.nc BC 2013/1/1/0 C xy g/m2/yr BCPI 70/1008 1 60 -0 DICE_BACKUPGEN_BCPO - - - - - - BCPO 71/1008 1 60 +0 DICE_BACKUPGEN_BCPO - - - - - - BCPO 71/1008 1 60 0 DICE_BACKUPGEN_OCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-generator-use-2013-v01-4Oct2016.nc OC 2013/1/1/0 C xy g/m2/yr OCPI 72/1008 1 60 -0 DICE_BACKUPGEN_OCPO - - - - - - OCPO 73/1008 1 60 +0 DICE_BACKUPGEN_OCPO - - - - - - OCPO 73/1008 1 60 +0 DICE_BACKUPGEN_POG1 - - - - - - POG1 74/76/1008 1 60 +0 DICE_BACKUPGEN_POG2 - - - - - - POG2 74/77/1008 1 60 # ------------------------ # Charcoal production @@ -1020,6 +1079,8 @@ VerboseOnCores: root # Accepted values: root all 0 DICE_CHARCOALPROD_BCPO - - - - - - BCPO 71/1008/320 1 60 0 DICE_CHARCOALPROD_OCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-charcoal-production-2013-v01-4Oct2016.nc OC 2013/1/1/0 C xy g/m2/yr OCPI 72/1008/320 1 60 0 DICE_CHARCOALPROD_OCPO - - - - - - OCPO 73/1008/320 1 60 +0 DICE_CHARCOALPROD_POG1 - - - - - - POG1 74/76/1008/320 1 60 +0 DICE_CHARCOALPROD_POG2 - - - - - - POG2 74/77/1008/320 1 60 # ------------------------ # Flaring of natural gas @@ -1038,6 +1099,8 @@ VerboseOnCores: root # Accepted values: root all 0 DICE_GASFLARE_BCPO - - - - - - BCPO 71/1008 1 60 0 DICE_GASFLARE_OCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-gas-flares-2013-v01-4Oct2016.nc OC 2013/1/1/0 C xy g/m2/yr OCPI 72/1008 1 60 0 DICE_GASFLARE_OCPO - - - - - - OCPO 73/1008 1 60 +0 DICE_GASFLARE_POG1 - - - - - - POG1 74/76/1008 1 60 +0 DICE_GASFLARE_POG2 - - - - - - POG2 74/77/1008 1 60 # ------------------------------ # Ag waste burning for energy @@ -1075,7 +1138,9 @@ VerboseOnCores: root # Accepted values: root all 0 DICE_AGBURNING_BCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-household-crop-residue-use-2013-v01-4Oct2016.nc BC 2013/1/1/0 C xy g/m2/yr BCPI 70/1008 2 60 0 DICE_AGBURNING_BCPO - - - - - g/m2/yr BCPO 71/1008 2 60 0 DICE_AGBURNING_OCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-household-crop-residue-use-2013-v01-4Oct2016.nc OC 2013/1/1/0 C xy g/m2/yr OCPI 72/1008 2 60 -0 DICE_AGBURNING_OCPO - - - - - g/m2/yr OCPO 73/1008 2 60 +0 DICE_AGBURNING_OCPO - - - - - - OCPO 73/1008 2 60 +0 DICE_AGBURNING_POG1 - - - - - - POG1 74/76/1008 2 60 +0 DICE_AGBURNING_POG2 - - - - - - POG2 74/77/1008 2 60 # ------------------------------ # Charcoal use @@ -1096,6 +1161,8 @@ VerboseOnCores: root # Accepted values: root all 0 DICE_CHARCOALUSE_BCPO - - - - - - BCPO 71/1008 2 60 0 DICE_CHARCOALUSE_OCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-charcoal-use-2013-v01-4Oct2016.nc OC 2013/1/1/0 C xy g/m2/yr OCPI 72/1008 2 60 0 DICE_CHARCOALUSE_OCPO - - - - - - OCPO 73/1008 2 60 +0 DICE_CHARCOALUSE_POG1 - - - - - - POG1 74/76/1008 2 60 +0 DICE_CHARCOALUSE_POG2 - - - - - - POG2 74/77/1008 2 60 # ------------------------------ # Kerosene use @@ -1106,6 +1173,8 @@ VerboseOnCores: root # Accepted values: root all 0 DICE_KEROSENE_BCPO - - - - - - BCPO 71/1008 1 60 0 DICE_KEROSENE_OCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-kerosene-use-2013-v01-4Oct2016.nc OC 2013/1/1/0 C xy g/m2/yr OCPI 72/1008 1 60 0 DICE_KEROSENE_OCPO - - - - - - OCPO 73/1008 1 60 +0 DICE_KEROSENE_POG1 - - - - - - POG1 74/76/1008 1 60 +0 DICE_KEROSENE_POG2 - - - - - - POG2 74/77/1008 1 60 # ------------------------------ # Artisanal oil refining @@ -1131,6 +1200,8 @@ VerboseOnCores: root # Accepted values: root all 0 DICE_OILREFINING_BCPO - - - - - - BCPO 71/1008 1 60 0 DICE_OILREFINING_OCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-adhoc-oil-refining-2006-v01-4Oct2016.nc OC 2013/1/1/0 C xy g/m2/yr OCPI 72/1008 1 60 0 DICE_OILREFINING_OCPO - - - - - - OCPO 73/1008 1 60 +0 DICE_OILREFINING_POG1 - - - - - - POG1 74/76/1008 1 60 +0 DICE_OILREFINING_POG2 - - - - - - POG2 74/77/1008 1 60 # -------------------------- # Household fuelwood use @@ -1166,6 +1237,8 @@ VerboseOnCores: root # Accepted values: root all 0 DICE_HOUSEFUELWOOD_BCPO - - - - - - BCPO 71/1008 2 60 0 DICE_HOUSEFUELWOOD_OCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-household-fuelwood-use-2013-v01-4Oct2016.nc OC 2013/1/1/0 C xy g/m2/yr OCPI 72/1008 2 60 0 DICE_HOUSEFUELWOOD_OCPO - - - - - - OCPO 73/1008 2 60 +0 DICE_HOUSEFUELWOOD_POG1 - - - - - - POG1 74/76/1008 2 60 +0 DICE_HOUSEFUELWOOD_POG2 - - - - - - POG2 74/77/1008 2 60 # --------------------------------- # Commercial (other) fuelwood use @@ -1201,6 +1274,8 @@ VerboseOnCores: root # Accepted values: root all 0 DICE_OTHERFUELWOOD_BCPO - - - - - - BCPO 71/1008 2 60 0 DICE_OTHERFUELWOOD_OCPI $ROOT/DICE_Africa/v2016-10/DICE-Africa-other-fuelwood-use-2013-v01-4Oct2016.nc OC 2013/1/1/0 C xy g/m2/yr OCPI 72/1008 2 60 0 DICE_OTHERFUELWOOD_OCPO - - - - - - OCPO 73/1008 2 60 +0 DICE_OTHERFUELWOOD_POG1 - - - - - - POG1 74/76/1008 2 60 +0 DICE_OTHERFUELWOOD_POG2 - - - - - - POG2 74/77/1008 2 60 # --------------------------------------------------- # Efficient Combustion Emissions from EDGAR @@ -1253,7 +1328,7 @@ VerboseOnCores: root # Accepted values: root all 0 AF_EDGAR_POG2_POW - - - - - - POG2 1201/1008/74/77 1 60 0 AF_EDGAR_OCPI_ENG $ROOT/EDGARv43/v2016-11/EDGAR_v43.OC.ENG.0.1x0.1.nc emi_oc 1970-2010/1/1/0 RF xy kg/m2/s OCPI 1202/1008/72 1 60 0 AF_EDGAR_OCPO_ENG - - - - - - OCPO 1202/1008/73 1 60 -0 AF_EDGAR_POG1_ENG - - - - - - POG1 1202/74/1008/76 1 60 +0 AF_EDGAR_POG1_ENG - - - - - - POG1 1202/1008/74/76 1 60 0 AF_EDGAR_POG2_ENG - - - - - - POG2 1202/1008/74/77 1 60 0 AF_EDGAR_OCPI_IND $ROOT/EDGARv43/v2016-11/EDGAR_v43.OC.IND.0.1x0.1.nc emi_oc 1970-2010/1/1/0 RF xy kg/m2/s OCPI 1203/1008/72 1 60 0 AF_EDGAR_OCPO_IND - - - - - - OCPO 1203/1008/73 1 60 @@ -1292,287 +1367,295 @@ VerboseOnCores: root # Accepted values: root all # --- CEDS v2 --- # # %%% This is the default global inventory. You may select either CEDS, -# EDGAR, HTAP or CMIP6_SFC_LAND_ANTHRO for the global base emissions %%% +# EDGAR, HTAPv3 or CMIP6_SFC_LAND_ANTHRO for the global base emissions %%% +# +# Note for CESM: +# Scaling of enegy and industrial sectors is applied the same way +# as in the GEOS-Chem offline model except for aerosols SO2, SO4, +# black and organic carbon. These species use scaling +# for CESM developed by Louisa Emmons. See scaling section titled +# "CEDS to CAM-Chem scale factors" for reference. #============================================================================== (((CEDSv2 -0 CEDS_NO_AGR $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_agr 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_ENE $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ene 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_IND $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ind 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_TRA $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_tra 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_RCO $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_rco 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_SLV $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_slv 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_WST $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_wst 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 - -0 CEDS_CO_AGR $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_AGR - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_ENE $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ene 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_ENE - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_IND $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ind 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_IND - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_TRA $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_TRA - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_RCO $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_RCO - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_SLV $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_SLV - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_WST $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_WST - - - - - - SOAP 26/280 1 5 - -0 CEDS_SO2_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_AGR - - - - - - so4_a1 8902 1 5 -0 CEDS_pFe_AGR - - - - - - pFe 66 1 5 -0 CEDS_SO2_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_ENE - - - - xyL=100m:300m - so4_a1 8907 1 5 -0 CEDS_pFe_ENE - - - - - - pFe 66 1 5 -0 CEDS_SO2_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_IND - - - - xyL=100m:300m - so4_a1 8908 1 5 -0 CEDS_pFe_IND - - - - - - pFe 66 1 5 -0 CEDS_SO2_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_TRA - - - - - - so4_a1 8906 1 5 -0 CEDS_pFe_TRA - - - - - - pFe 66 1 5 -0 CEDS_SO2_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_RCO - - - - - - so4_a1 8905 1 5 -0 CEDS_pFe_RCO - - - - - - pFe 66 1 5 -0 CEDS_SO2_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_SLV - - - - - - so4_a1 8904 1 5 -0 CEDS_pFe_SLV - - - - - - pFe 66 1 5 -0 CEDS_SO2_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_WST - - - - - - so4_a1 8903 1 5 -0 CEDS_pFe_WST - - - - - - pFe 66 1 5 - -0 CEDS_NH3_AGR $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_agr 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_ENE $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ene 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_IND $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ind 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_TRA $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_tra 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_RCO $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_rco 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_SLV $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_slv 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_WST $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_wst 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CEDS_NO_AGR $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_agr 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 +0 CEDS_NO_ENE $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s NO 25/315 1 5 +0 CEDS_NO_IND $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s NO 25/316 1 5 +0 CEDS_NO_TRA $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_tra 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 +0 CEDS_NO_RCO $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_rco 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 +0 CEDS_NO_SLV $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_slv 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 +0 CEDS_NO_WST $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_wst 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 + +0 CEDS_CO_AGR $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CEDS_SOAP_AGR - - - - - - SOAP 26/280 1 5 +0 CEDS_CO_ENE $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s CO 26/315 1 5 +0 CEDS_SOAP_ENE - - - - - - SOAP 26/280/315 1 5 +0 CEDS_CO_IND $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s CO 26/316 1 5 +0 CEDS_SOAP_IND - - - - - - SOAP 26/280 1 5 +0 CEDS_CO_TRA $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CEDS_SOAP_TRA - - - - - - SOAP 26/280 1 5 +0 CEDS_CO_RCO $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CEDS_SOAP_RCO - - - - - - SOAP 26/280 1 5 +0 CEDS_CO_SLV $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CEDS_SOAP_SLV - - - - - - SOAP 26/280 1 5 +0 CEDS_CO_WST $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CEDS_SOAP_WST - - - - - - SOAP 26/280 1 5 + +0 CEDS_SO2_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CEDS_SO4_AGR - - - - - - so4_a1 8902 1 5 +0 CEDS_pFe_AGR - - - - - - pFe 66 1 5 +0 CEDS_SO2_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CEDS_SO4_ENE - - - - xyL=100m:300m - so4_a1 8907 1 5 +0 CEDS_pFe_ENE - - - - - - pFe 66 1 5 +0 CEDS_SO2_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CEDS_SO4_IND - - - - xyL=100m:300m - so4_a1 8908 1 5 +0 CEDS_pFe_IND - - - - - - pFe 66 1 5 +0 CEDS_SO2_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CEDS_SO4_TRA - - - - - - so4_a1 8906 1 5 +0 CEDS_pFe_TRA - - - - - - pFe 66 1 5 +0 CEDS_SO2_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CEDS_SO4_RCO - - - - - - so4_a1 8905 1 5 +0 CEDS_pFe_RCO - - - - - - pFe 66 1 5 +0 CEDS_SO2_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CEDS_SO4_SLV - - - - - - so4_a1 8904 1 5 +0 CEDS_pFe_SLV - - - - - - pFe 66 1 5 +0 CEDS_SO2_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CEDS_SO4_WST - - - - - - so4_a1 8903 1 5 +0 CEDS_pFe_WST - - - - - - pFe 66 1 5 + +0 CEDS_NH3_AGR $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_agr 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CEDS_NH3_ENE $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s NH3 315 1 5 +0 CEDS_NH3_IND $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s NH3 316 1 5 +0 CEDS_NH3_TRA $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_tra 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CEDS_NH3_RCO $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_rco 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CEDS_NH3_SLV $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_slv 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CEDS_NH3_WST $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_wst 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 #----------------------------------------------------- # AEROSOL NUMBER EMISSIONS FOR CEDS in CESM - hplin 8/11/22 # note shp emiss in ship section #----------------------------------------------------- -0 CEDS_SO4n_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8902/8014 1 5 -0 CEDS_SO4n_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8903/8014 1 5 -0 CEDS_SO4n_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8904/8014 1 5 -0 CEDS_SO4n_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a2 8906/8022 1 5 -0 CEDS_SO4n_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a2 8905/8022 1 5 -0 CEDS_SO4n_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xyL=100m:300m kg/m2/s num_a1 8907/8011 1 5 -0 CEDS_SO4n_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xyL=100m:300m kg/m2/s num_a1 8908/8011 1 5 + +0 CEDS_SO4n_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8902/8014 1 5 +0 CEDS_SO4n_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8903/8014 1 5 +0 CEDS_SO4n_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8904/8014 1 5 +0 CEDS_SO4n_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a2 8906/8022 1 5 +0 CEDS_SO4n_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a2 8905/8022 1 5 +0 CEDS_SO4n_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xyL=100m:300m kg/m2/s num_a1 8907/8011 1 5 +0 CEDS_SO4n_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xyL=100m:300m kg/m2/s num_a1 8908/8011 1 5 # BC emiss are classified as a4 for all anthro -0 CEDS_BCn_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 +0 CEDS_BCn_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 +0 CEDS_BCn_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 +0 CEDS_BCn_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 +0 CEDS_BCn_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 +0 CEDS_BCn_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 +0 CEDS_BCn_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 +0 CEDS_BCn_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 # OC emiss are classified as a4 for all anthro -0 CEDS_OCn_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 +0 CEDS_OCn_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 +0 CEDS_OCn_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 +0 CEDS_OCn_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 +0 CEDS_OCn_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 +0 CEDS_OCn_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 +0 CEDS_OCn_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 +0 CEDS_OCn_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 #----------------------------------------------------- # // end AEROSOL NUMBER EMISSIONS FOR CEDS in CESM #----------------------------------------------------- -0 CEDS_BCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 - -0 CEDS_OCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_AGR - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_AGR - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_ENE - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_ENE - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_IND - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_IND - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_TRA - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_TRA - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_RCO - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_RCO - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_SLV - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_SLV - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_WST - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_WST - - - - - - POG2 73/74/77 1 5 +0 CEDS_BCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 +0 CEDS_BCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 +0 CEDS_BCPI_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 +0 CEDS_BCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 +0 CEDS_BCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 +0 CEDS_BCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 +0 CEDS_BCPI_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 + +0 CEDS_OCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 +0 CEDS_POG1_AGR - - - - - - POG1 73/74/76 1 5 +0 CEDS_POG2_AGR - - - - - - POG2 73/74/77 1 5 +0 CEDS_OCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 +0 CEDS_POG1_ENE - - - - - - POG1 73/74/76 1 5 +0 CEDS_POG2_ENE - - - - - - POG2 73/74/77 1 5 +0 CEDS_OCPI_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 +0 CEDS_POG1_IND - - - - - - POG1 73/74/76 1 5 +0 CEDS_POG2_IND - - - - - - POG2 73/74/77 1 5 +0 CEDS_OCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 +0 CEDS_POG1_TRA - - - - - - POG1 73/74/76 1 5 +0 CEDS_POG2_TRA - - - - - - POG2 73/74/77 1 5 +0 CEDS_OCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 +0 CEDS_POG1_RCO - - - - - - POG1 73/74/76 1 5 +0 CEDS_POG2_RCO - - - - - - POG2 73/74/77 1 5 +0 CEDS_OCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 +0 CEDS_POG1_SLV - - - - - - POG1 73/74/76 1 5 +0 CEDS_POG2_SLV - - - - - - POG2 73/74/77 1 5 +0 CEDS_OCPI_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 +0 CEDS_POG1_WST - - - - - - POG1 73/74/76 1 5 +0 CEDS_POG2_WST - - - - - - POG2 73/74/77 1 5 # Comment out CO2 for fullchem simulations: CO2 not advected -#0 CEDS_CO2_AGR $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_ENE $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_IND $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_TRA $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_RCO $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_SLV $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_WST $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_AGR $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_ENE $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s CO2 315 1 5 +#0 CEDS_CO2_IND $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s CO2 316 1 5 +#0 CEDS_CO2_TRA $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_RCO $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_SLV $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CEDS_CO2_WST $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 # Comment out CH4 for fullchem simulations: do not use CH4 emissions # CEDS CH4 emissions are only available for 1970-2014 -#0 CEDS_CH4_AGR $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_agr 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_ENE $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ene 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_IND $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ind 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_TRA $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_tra 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_RCO $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_rco 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_SLV $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_slv 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_WST $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_wst 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_AGR $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_agr 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_ENE $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ene 1970-2014/1-12/1/0 C xyL* kg/m2/s CH4 315 1 5 +#0 CEDS_CH4_IND $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ind 1970-2014/1-12/1/0 C xyL* kg/m2/s CH4 316 1 5 +#0 CEDS_CH4_TRA $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_tra 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_RCO $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_rco 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_SLV $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_slv 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CEDS_CH4_WST $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_wst 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 # NOTE: EOH files in CEDS/v2021-06 are actually VOC1 (total alchohols) and are split into MOH, EOH, ROH here -0 CEDS_MOH_AGR $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_AGR - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_AGR - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_ENE $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_ENE - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_ENE - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_IND $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_IND - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_IND - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_TRA $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_TRA - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_TRA - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_RCO $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_RCO - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_RCO - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_SLV $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_SLV - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_SLV - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_WST $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_WST - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_WST - - - - - - ROH 26/92 1 5 - -0 CEDS_C2H6_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_IND $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_WST $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 - -0 CEDS_C3H8_AGR $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_agr 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_ENE $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ene 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_IND $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ind 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_TRA $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_tra 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_RCO $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_rco 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_SLV $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_slv 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_WST $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_wst 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 - -0 CEDS_C4H10_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C5H12_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C6H14_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C2H4_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_IND $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_WST $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 - -0 CEDS_PRPE_AGR $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_agr 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_ENE $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ene 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_IND $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ind 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_TRA $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_tra 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_RCO $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_rco 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_SLV $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_slv 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_WST $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_wst 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 - -0 CEDS_C2H2_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_IND $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_WST $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 - -0 CEDS_BENZ_AGR $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_agr 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_ENE $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ene 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_IND $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ind 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_TRA $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_tra 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_RCO $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_rco 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_SLV $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_slv 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_WST $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_wst 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 - -0 CEDS_TOLU_AGR $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_agr 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_ENE $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ene 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_IND $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ind 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_TRA $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_tra 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_RCO $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_rco 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_SLV $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_slv 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_WST $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_wst 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 - -0 CEDS_XYLE_AGR $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_agr 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_ENE $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ene 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_IND $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ind 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_TRA $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_tra 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_RCO $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_rco 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_SLV $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_slv 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_WST $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_wst 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 - -0 CEDS_CH2O_AGR $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_agr 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_ENE $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ene 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_IND $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ind 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_TRA $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_tra 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_RCO $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_rco 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_SLV $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_slv 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_WST $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_wst 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 - -0 CEDS_ALD2_AGR $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_ENE $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_IND $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_TRA $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_RCO $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_SLV $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_WST $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 - -0 CEDS_MEK_AGR $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_agr 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_ENE $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ene 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_IND $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ind 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_TRA $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_tra 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_RCO $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_rco 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_SLV $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_slv 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_WST $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_wst 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 - -0 CEDS_HCOOH_AGR $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_ENE $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_IND $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_TRA $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_RCO $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_SLV $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_WST $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CEDS_MOH_AGR $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CEDS_EOH_AGR - - - - - - EOH 26/91 1 5 +0 CEDS_ROH_AGR - - - - - - ROH 26/92 1 5 +0 CEDS_MOH_ENE $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s MOH 26/90/315 1 5 +0 CEDS_EOH_ENE - - - - - - EOH 26/91/315 1 5 +0 CEDS_ROH_ENE - - - - - - ROH 26/92/315 1 5 +0 CEDS_MOH_IND $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s MOH 26/90/316 1 5 +0 CEDS_EOH_IND - - - - - - EOH 26/91/316 1 5 +0 CEDS_ROH_IND - - - - - - ROH 26/92/316 1 5 +0 CEDS_MOH_TRA $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CEDS_EOH_TRA - - - - - - EOH 26/91 1 5 +0 CEDS_ROH_TRA - - - - - - ROH 26/92 1 5 +0 CEDS_MOH_RCO $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CEDS_EOH_RCO - - - - - - EOH 26/91 1 5 +0 CEDS_ROH_RCO - - - - - - ROH 26/92 1 5 +0 CEDS_MOH_SLV $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CEDS_EOH_SLV - - - - - - EOH 26/91 1 5 +0 CEDS_ROH_SLV - - - - - - ROH 26/92 1 5 +0 CEDS_MOH_WST $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CEDS_EOH_WST - - - - - - EOH 26/91 1 5 +0 CEDS_ROH_WST - - - - - - ROH 26/92 1 5 + +0 CEDS_C2H6_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 +0 CEDS_C2H6_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H6 26/315 1 5 +0 CEDS_C2H6_IND $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H6 26/316 1 5 +0 CEDS_C2H6_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 +0 CEDS_C2H6_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 +0 CEDS_C2H6_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 +0 CEDS_C2H6_WST $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 + +0 CEDS_C3H8_AGR $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_agr 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 +0 CEDS_C3H8_ENE $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C3H8 26/315 1 5 +0 CEDS_C3H8_IND $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C3H8 26/316 1 5 +0 CEDS_C3H8_TRA $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_tra 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 +0 CEDS_C3H8_RCO $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_rco 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 +0 CEDS_C3H8_SLV $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_slv 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 +0 CEDS_C3H8_WST $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_wst 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 + +0 CEDS_C4H10_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C4H10_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/315 1 5 +0 CEDS_C4H10_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/316 1 5 +0 CEDS_C4H10_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C4H10_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C4H10_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C4H10_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C5H12_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C5H12_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/315 1 5 +0 CEDS_C5H12_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/316 1 5 +0 CEDS_C5H12_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C5H12_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C5H12_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C5H12_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C6H14_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C6H14_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/315 1 5 +0 CEDS_C6H14_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/316 1 5 +0 CEDS_C6H14_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C6H14_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C6H14_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CEDS_C6H14_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C2H4_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 +0 CEDS_C2H4_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H4 26/315 1 5 +0 CEDS_C2H4_IND $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H4 26/316 1 5 +0 CEDS_C2H4_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 +0 CEDS_C2H4_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 +0 CEDS_C2H4_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 +0 CEDS_C2H4_WST $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 + +0 CEDS_PRPE_AGR $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_agr 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 +0 CEDS_PRPE_ENE $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s PRPE 26/315 1 5 +0 CEDS_PRPE_IND $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s PRPE 26/316 1 5 +0 CEDS_PRPE_TRA $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_tra 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 +0 CEDS_PRPE_RCO $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_rco 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 +0 CEDS_PRPE_SLV $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_slv 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 +0 CEDS_PRPE_WST $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_wst 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 + +0 CEDS_C2H2_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 +0 CEDS_C2H2_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H2 26/315 1 5 +0 CEDS_C2H2_IND $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H2 26/316 1 5 +0 CEDS_C2H2_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 +0 CEDS_C2H2_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 +0 CEDS_C2H2_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 +0 CEDS_C2H2_WST $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 + +0 CEDS_BENZ_AGR $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_agr 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 +0 CEDS_BENZ_ENE $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s BENZ 26/315 1 5 +0 CEDS_BENZ_IND $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s BENZ 26/316 1 5 +0 CEDS_BENZ_TRA $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_tra 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 +0 CEDS_BENZ_RCO $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_rco 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 +0 CEDS_BENZ_SLV $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_slv 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 +0 CEDS_BENZ_WST $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_wst 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 + +0 CEDS_TOLU_AGR $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_agr 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 +0 CEDS_TOLU_ENE $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s TOLU 26/315 1 5 +0 CEDS_TOLU_IND $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s TOLU 26/316 1 5 +0 CEDS_TOLU_TRA $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_tra 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 +0 CEDS_TOLU_RCO $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_rco 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 +0 CEDS_TOLU_SLV $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_slv 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 +0 CEDS_TOLU_WST $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_wst 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 + +0 CEDS_XYLE_AGR $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_agr 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 +0 CEDS_XYLE_ENE $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s XYLE 26/315 1 5 +0 CEDS_XYLE_IND $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s XYLE 26/316 1 5 +0 CEDS_XYLE_TRA $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_tra 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 +0 CEDS_XYLE_RCO $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_rco 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 +0 CEDS_XYLE_SLV $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_slv 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 +0 CEDS_XYLE_WST $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_wst 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 + +0 CEDS_CH2O_AGR $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_agr 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 +0 CEDS_CH2O_ENE $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s CH2O 26/315 1 5 +0 CEDS_CH2O_IND $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s CH2O 26/316 1 5 +0 CEDS_CH2O_TRA $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_tra 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 +0 CEDS_CH2O_RCO $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_rco 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 +0 CEDS_CH2O_SLV $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_slv 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 +0 CEDS_CH2O_WST $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_wst 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 + +0 CEDS_ALD2_AGR $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 +0 CEDS_ALD2_ENE $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALD2 26/315 1 5 +0 CEDS_ALD2_IND $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALD2 26/316 1 5 +0 CEDS_ALD2_TRA $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 +0 CEDS_ALD2_RCO $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 +0 CEDS_ALD2_SLV $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 +0 CEDS_ALD2_WST $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 + +0 CEDS_MEK_AGR $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_agr 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 +0 CEDS_MEK_ENE $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s MEK 26/315 1 5 +0 CEDS_MEK_IND $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s MEK 26/316 1 5 +0 CEDS_MEK_TRA $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_tra 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 +0 CEDS_MEK_RCO $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_rco 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 +0 CEDS_MEK_SLV $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_slv 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 +0 CEDS_MEK_WST $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_wst 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 + +0 CEDS_HCOOH_AGR $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CEDS_HCOOH_ENE $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s HCOOH 26/315 1 5 +0 CEDS_HCOOH_IND $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s HCOOH 26/316 1 5 +0 CEDS_HCOOH_TRA $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CEDS_HCOOH_RCO $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CEDS_HCOOH_SLV $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CEDS_HCOOH_WST $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 )))CEDSv2 #============================================================================== @@ -1590,10 +1673,13 @@ VerboseOnCores: root # Accepted values: root all (((CEDS_GBDMAPS >>>include $ROOT/CEDS/v2020-08/HEMCO_Config.CEDS_GBDMAPS.rc )))CEDS_GBDMAPS + (((CEDS_GBDMAPS_byFuelType -(((.not.CEDS_GBDMAPS.and..not.CEDSv2 +(((.not.CEDS_GBDMAPS +(((.not.CEDSv2 >>>include $ROOT/CEDS/v2020-08/HEMCO_Config.CEDS_GBDMAPS_byFuelType.rc -))).not.CEDS_GBDMAPS.and..not.CEDSv2 +))).not.CEDSv2 +))).not.CEDS_GBDMAPS )))CEDS_GBDMAPS_byFuelType #============================================================================== @@ -1601,296 +1687,299 @@ VerboseOnCores: root # Accepted values: root all # CEDS (historical) or Shared Socioeconomic Pathways (future), consistent with # the CMIP6 simulation experimental design. # -# Make sure that the desired $GCAP2SCENARIO is set above in SECTION SETTINGS +# Make sure that the desired $GCAPSCENARIO is set above in SECTION SETTINGS # #============================================================================== (((CMIP6_SFC_LAND_ANTHRO -0 CMIP6_NO_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NO_agr 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CMIP6_NO_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NO_ene 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CMIP6_NO_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NO_ind 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CMIP6_NO_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NO_tra 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CMIP6_NO_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NO_rco 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CMIP6_NO_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NO_slv 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CMIP6_NO_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NO_wst 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 - -0 CMIP6_CO_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO_agr 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CMIP6_SOAP_AGR - - - - - - SOAP 26/280 1 5 -0 CMIP6_CO_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO_ene 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CMIP6_SOAP_ENE - - - - - - SOAP 26/280 1 5 -0 CMIP6_CO_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO_ind 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CMIP6_SOAP_IND - - - - - - SOAP 26/280 1 5 -0 CMIP6_CO_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO_tra 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CMIP6_SOAP_TRA - - - - - - SOAP 26/280 1 5 -0 CMIP6_CO_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO_rco 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CMIP6_SOAP_RCO - - - - - - SOAP 26/280 1 5 -0 CMIP6_CO_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO_slv 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CMIP6_SOAP_SLV - - - - - - SOAP 26/280 1 5 -0 CMIP6_CO_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO_wst 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CMIP6_SOAP_WST - - - - - - SOAP 26/280 1 5 - -0 CMIP6_SO2_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 SO2_agr 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CMIP6_SO4_AGR - - - - - - SO4 63 1 5 -0 CMIP6_pFe_AGR - - - - - - pFe 66 1 5 -0 CMIP6_SO2_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 SO2_ene 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CMIP6_SO4_ENE - - - - - - SO4 63 1 5 -0 CMIP6_pFe_ENE - - - - - - pFe 66 1 5 -0 CMIP6_SO2_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 SO2_ind 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CMIP6_SO4_IND - - - - - - SO4 63 1 5 -0 CMIP6_pFe_IND - - - - - - pFe 66 1 5 -0 CMIP6_SO2_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 SO2_tra 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CMIP6_SO4_TRA - - - - - - SO4 63 1 5 -0 CMIP6_pFe_TRA - - - - - - pFe 66 1 5 -0 CMIP6_SO2_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 SO2_rco 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CMIP6_SO4_RCO - - - - - - SO4 63 1 5 -0 CMIP6_pFe_RCO - - - - - - pFe 66 1 5 -0 CMIP6_SO2_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 SO2_slv 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CMIP6_SO4_SLV - - - - - - SO4 63 1 5 -0 CMIP6_pFe_SLV - - - - - - pFe 66 1 5 -0 CMIP6_SO2_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 SO2_wst 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CMIP6_SO4_WST - - - - - - SO4 63 1 5 -0 CMIP6_pFe_WST - - - - - - pFe 66 1 5 - -0 CMIP6_NH3_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NH3_agr 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CMIP6_NH3_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NH3_ene 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CMIP6_NH3_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NH3_ind 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CMIP6_NH3_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NH3_tra 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CMIP6_NH3_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NH3_rco 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CMIP6_NH3_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NH3_slv 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CMIP6_NH3_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NH3_wst 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 - -0 CMIP6_BCPI_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BC_agr 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CMIP6_BCPO_AGR - - - - - - BCPO 71 1 5 -0 CMIP6_BCPI_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BC_ene 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CMIP6_BCPO_ENE - - - - - - BCPO 71 1 5 -0 CMIP6_BCPI_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BC_ind 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CMIP6_BCPO_IND - - - - - - BCPO 71 1 5 -0 CMIP6_BCPI_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BC_tra 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CMIP6_BCPO_TRA - - - - - - BCPO 71 1 5 -0 CMIP6_BCPI_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BC_rco 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CMIP6_BCPO_RCO - - - - - - BCPO 71 1 5 -0 CMIP6_BCPI_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BC_slv 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CMIP6_BCPO_SLV - - - - - - BCPO 71 1 5 -0 CMIP6_BCPI_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BC_wst 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 -0 CMIP6_BCPO_WST - - - - - - BCPO 71 1 5 - -0 CMIP6_OCPI_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 OC_agr 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CMIP6_OCPO_AGR - - - - - - OCPO 73 1 5 -0 CMIP6_POG1_AGR - - - - - - POG1 73/74/76 1 5 -0 CMIP6_POG2_AGR - - - - - - POG2 73/74/77 1 5 -0 CMIP6_OCPI_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 OC_ene 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CMIP6_OCPO_ENE - - - - - - OCPO 73 1 5 -0 CMIP6_POG1_ENE - - - - - - POG1 73/74/76 1 5 -0 CMIP6_POG2_ENE - - - - - - POG2 73/74/77 1 5 -0 CMIP6_OCPI_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 OC_ind 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CMIP6_OCPO_IND - - - - - - OCPO 73 1 5 -0 CMIP6_POG1_IND - - - - - - POG1 73/74/76 1 5 -0 CMIP6_POG2_IND - - - - - - POG2 73/74/77 1 5 -0 CMIP6_OCPI_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 OC_tra 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CMIP6_OCPO_TRA - - - - - - OCPO 73 1 5 -0 CMIP6_POG1_TRA - - - - - - POG1 73/74/76 1 5 -0 CMIP6_POG2_TRA - - - - - - POG2 73/74/77 1 5 -0 CMIP6_OCPI_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 OC_rco 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CMIP6_OCPO_RCO - - - - - - OCPO 73 1 5 -0 CMIP6_POG1_RCO - - - - - - POG1 73/74/76 1 5 -0 CMIP6_POG2_RCO - - - - - - POG2 73/74/77 1 5 -0 CMIP6_OCPI_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 OC_slv 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CMIP6_OCPO_SLV - - - - - - OCPO 73 1 5 -0 CMIP6_POG1_SLV - - - - - - POG1 73/74/76 1 5 -0 CMIP6_POG2_SLV - - - - - - POG2 73/74/77 1 5 -0 CMIP6_OCPI_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 OC_wst 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 -0 CMIP6_OCPO_WST - - - - - - OCPO 73 1 5 -0 CMIP6_POG1_WST - - - - - - POG1 73/74/76 1 5 -0 CMIP6_POG2_WST - - - - - - POG2 73/74/77 1 5 +0 CMIP6_NO_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NO_agr 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 +0 CMIP6_NO_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NO_ene 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 +0 CMIP6_NO_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NO_ind 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 +0 CMIP6_NO_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NO_tra 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 +0 CMIP6_NO_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NO_rco 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 +0 CMIP6_NO_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NO_slv 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 +0 CMIP6_NO_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NO_wst 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 1 5 + +0 CMIP6_CO_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO_agr 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CMIP6_SOAP_AGR - - - - - - SOAP 26/280 1 5 +0 CMIP6_CO_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO_ene 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CMIP6_SOAP_ENE - - - - - - SOAP 26/280 1 5 +0 CMIP6_CO_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO_ind 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CMIP6_SOAP_IND - - - - - - SOAP 26/280 1 5 +0 CMIP6_CO_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO_tra 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CMIP6_SOAP_TRA - - - - - - SOAP 26/280 1 5 +0 CMIP6_CO_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO_rco 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CMIP6_SOAP_RCO - - - - - - SOAP 26/280 1 5 +0 CMIP6_CO_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO_slv 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CMIP6_SOAP_SLV - - - - - - SOAP 26/280 1 5 +0 CMIP6_CO_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO_wst 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CMIP6_SOAP_WST - - - - - - SOAP 26/280 1 5 + +0 CMIP6_SO2_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 SO2_agr 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CMIP6_SO4_AGR - - - - - - SO4 63 1 5 +0 CMIP6_pFe_AGR - - - - - - pFe 66 1 5 +0 CMIP6_SO2_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 SO2_ene 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CMIP6_SO4_ENE - - - - - - SO4 63 1 5 +0 CMIP6_pFe_ENE - - - - - - pFe 66 1 5 +0 CMIP6_SO2_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 SO2_ind 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CMIP6_SO4_IND - - - - - - SO4 63 1 5 +0 CMIP6_pFe_IND - - - - - - pFe 66 1 5 +0 CMIP6_SO2_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 SO2_tra 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CMIP6_SO4_TRA - - - - - - SO4 63 1 5 +0 CMIP6_pFe_TRA - - - - - - pFe 66 1 5 +0 CMIP6_SO2_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 SO2_rco 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CMIP6_SO4_RCO - - - - - - SO4 63 1 5 +0 CMIP6_pFe_RCO - - - - - - pFe 66 1 5 +0 CMIP6_SO2_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 SO2_slv 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CMIP6_SO4_SLV - - - - - - SO4 63 1 5 +0 CMIP6_pFe_SLV - - - - - - pFe 66 1 5 +0 CMIP6_SO2_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 SO2_wst 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CMIP6_SO4_WST - - - - - - SO4 63 1 5 +0 CMIP6_pFe_WST - - - - - - pFe 66 1 5 + +0 CMIP6_NH3_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NH3_agr 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CMIP6_NH3_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NH3_ene 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CMIP6_NH3_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NH3_ind 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CMIP6_NH3_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NH3_tra 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CMIP6_NH3_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NH3_rco 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CMIP6_NH3_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NH3_slv 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CMIP6_NH3_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NH3_wst 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 1 5 + +0 CMIP6_BCPI_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BC_agr 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 +0 CMIP6_BCPO_AGR - - - - - - BCPO 71 1 5 +0 CMIP6_BCPI_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BC_ene 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 +0 CMIP6_BCPO_ENE - - - - - - BCPO 71 1 5 +0 CMIP6_BCPI_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BC_ind 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 +0 CMIP6_BCPO_IND - - - - - - BCPO 71 1 5 +0 CMIP6_BCPI_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BC_tra 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 +0 CMIP6_BCPO_TRA - - - - - - BCPO 71 1 5 +0 CMIP6_BCPI_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BC_rco 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 +0 CMIP6_BCPO_RCO - - - - - - BCPO 71 1 5 +0 CMIP6_BCPI_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BC_slv 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 +0 CMIP6_BCPO_SLV - - - - - - BCPO 71 1 5 +0 CMIP6_BCPI_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BC_wst 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 1 5 +0 CMIP6_BCPO_WST - - - - - - BCPO 71 1 5 + +0 CMIP6_OCPI_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 OC_agr 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 +0 CMIP6_OCPO_AGR - - - - - - OCPO 73 1 5 +0 CMIP6_POG1_AGR - - - - - - POG1 74/76 1 5 +0 CMIP6_POG2_AGR - - - - - - POG2 74/77 1 5 +0 CMIP6_OCPI_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 OC_ene 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 +0 CMIP6_OCPO_ENE - - - - - - OCPO 73 1 5 +0 CMIP6_POG1_ENE - - - - - - POG1 74/76 1 5 +0 CMIP6_POG2_ENE - - - - - - POG2 74/77 1 5 +0 CMIP6_OCPI_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 OC_ind 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 +0 CMIP6_OCPO_IND - - - - - - OCPO 73 1 5 +0 CMIP6_POG1_IND - - - - - - POG1 74/76 1 5 +0 CMIP6_POG2_IND - - - - - - POG2 74/77 1 5 +0 CMIP6_OCPI_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 OC_tra 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 +0 CMIP6_OCPO_TRA - - - - - - OCPO 73 1 5 +0 CMIP6_POG1_TRA - - - - - - POG1 74/76 1 5 +0 CMIP6_POG2_TRA - - - - - - POG2 74/77 1 5 +0 CMIP6_OCPI_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 OC_rco 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 +0 CMIP6_OCPO_RCO - - - - - - OCPO 73 1 5 +0 CMIP6_POG1_RCO - - - - - - POG1 74/76 1 5 +0 CMIP6_POG2_RCO - - - - - - POG2 74/77 1 5 +0 CMIP6_OCPI_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 OC_slv 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 +0 CMIP6_OCPO_SLV - - - - - - OCPO 73 1 5 +0 CMIP6_POG1_SLV - - - - - - POG1 74/76 1 5 +0 CMIP6_POG2_SLV - - - - - - POG2 74/77 1 5 +0 CMIP6_OCPI_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 OC_wst 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 1 5 +0 CMIP6_OCPO_WST - - - - - - OCPO 73 1 5 +0 CMIP6_POG1_WST - - - - - - POG1 74/76 1 5 +0 CMIP6_POG2_WST - - - - - - POG2 74/77 1 5 # Comment out CO2 for fullchem simulations: CO2 not advected -#0 CMIP6_CO2_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO2_agr 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CMIP6_CO2_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO2_ene 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CMIP6_CO2_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO2_ind 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CMIP6_CO2_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO2_tra 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CMIP6_CO2_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO2_rco 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CMIP6_CO2_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO2_slv 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CMIP6_CO2_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO2_wst 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CMIP6_CO2_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO2_agr 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CMIP6_CO2_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO2_ene 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CMIP6_CO2_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO2_ind 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CMIP6_CO2_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO2_tra 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CMIP6_CO2_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO2_rco 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CMIP6_CO2_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO2_slv 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 +#0 CMIP6_CO2_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO2_wst 1750-2100/1-12/1/0 C xy kg/m2/s CO2 - 1 5 # Comment out CH4 for fullchem simulations: do not use CH4 emissions # CMIP6 CH4 emissions are only available for 1970-2014 -#0 CMIP6_CH4_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH4_agr 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CMIP6_CH4_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH4_ene 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CMIP6_CH4_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH4_ind 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CMIP6_CH4_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH4_tra 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CMIP6_CH4_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH4_rco 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CMIP6_CH4_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH4_slv 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CMIP6_CH4_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH4_wst 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CMIP6_CH4_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_agr 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CMIP6_CH4_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_ene 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CMIP6_CH4_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_ind 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CMIP6_CH4_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_tra 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CMIP6_CH4_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_rco 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CMIP6_CH4_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_slv 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +#0 CMIP6_CH4_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_wst 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 # NOTE: EOH files in CMIP6/v2021-01 are actually VOC1 (total alchohols) and are split into MOH, EOH, ROH here -0 CMIP6_MOH_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 EOH_agr 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CMIP6_EOH_AGR - - - - - - EOH 26/91 1 5 -0 CMIP6_ROH_AGR - - - - - - ROH 26/92 1 5 -0 CMIP6_MOH_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 EOH_ene 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CMIP6_EOH_ENE - - - - - - EOH 26/91 1 5 -0 CMIP6_ROH_ENE - - - - - - ROH 26/92 1 5 -0 CMIP6_MOH_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 EOH_ind 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CMIP6_EOH_IND - - - - - - EOH 26/91 1 5 -0 CMIP6_ROH_IND - - - - - - ROH 26/92 1 5 -0 CMIP6_MOH_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 EOH_tra 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CMIP6_EOH_TRA - - - - - - EOH 26/91 1 5 -0 CMIP6_ROH_TRA - - - - - - ROH 26/92 1 5 -0 CMIP6_MOH_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 EOH_rco 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CMIP6_EOH_RCO - - - - - - EOH 26/91 1 5 -0 CMIP6_ROH_RCO - - - - - - ROH 26/92 1 5 -0 CMIP6_MOH_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 EOH_slv 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CMIP6_EOH_SLV - - - - - - EOH 26/91 1 5 -0 CMIP6_ROH_SLV - - - - - - ROH 26/92 1 5 -0 CMIP6_MOH_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 EOH_wst 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CMIP6_EOH_WST - - - - - - EOH 26/91 1 5 -0 CMIP6_ROH_WST - - - - - - ROH 26/92 1 5 - -0 CMIP6_C2H6_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H6_agr 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CMIP6_C2H6_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H6_ene 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CMIP6_C2H6_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H6_ind 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CMIP6_C2H6_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H6_tra 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CMIP6_C2H6_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H6_rco 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CMIP6_C2H6_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H6_slv 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CMIP6_C2H6_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H6_wst 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 - -0 CMIP6_C3H8_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C3H8_agr 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CMIP6_C3H8_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C3H8_ene 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CMIP6_C3H8_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C3H8_ind 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CMIP6_C3H8_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C3H8_tra 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CMIP6_C3H8_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C3H8_rco 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CMIP6_C3H8_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C3H8_slv 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CMIP6_C3H8_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C3H8_wst 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 - -0 CMIP6_C4H10_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_butanes_agr 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C4H10_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_butanes_ene 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C4H10_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_butanes_ind 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C4H10_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_butanes_tra 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C4H10_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_butanes_rco 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C4H10_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_butanes_slv 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C4H10_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_butanes_wst 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CMIP6_C5H12_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_pentanes_agr 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C5H12_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_pentanes_ene 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C5H12_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_pentanes_ind 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C5H12_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_pentanes_tra 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C5H12_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_pentanes_rco 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C5H12_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_pentanes_slv 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C5H12_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_pentanes_wst 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CMIP6_C6H14_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_hexanes_agr 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C6H14_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_hexanes_ene 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C6H14_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_hexanes_ind 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C6H14_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_hexanes_tra 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C6H14_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_hexanes_rco 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C6H14_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_hexanes_slv 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CMIP6_C6H14_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_hexanes_wst 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CMIP6_C2H4_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H4_agr 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CMIP6_C2H4_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H4_ene 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CMIP6_C2H4_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H4_ind 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CMIP6_C2H4_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H4_tra 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CMIP6_C2H4_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H4_rco 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CMIP6_C2H4_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H4_slv 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CMIP6_C2H4_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H4_wst 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 - -0 CMIP6_PRPE_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 PRPE_agr 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CMIP6_PRPE_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 PRPE_ene 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CMIP6_PRPE_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 PRPE_ind 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CMIP6_PRPE_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 PRPE_tra 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CMIP6_PRPE_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 PRPE_rco 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CMIP6_PRPE_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 PRPE_slv 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CMIP6_PRPE_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 PRPE_wst 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 - -0 CMIP6_C2H2_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H2_agr 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CMIP6_C2H2_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H2_ene 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CMIP6_C2H2_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H2_ind 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CMIP6_C2H2_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H2_tra 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CMIP6_C2H2_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H2_rco 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CMIP6_C2H2_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H2_slv 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CMIP6_C2H2_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H2_wst 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 - -0 CMIP6_BENZ_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BENZ_agr 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CMIP6_BENZ_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BENZ_ene 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CMIP6_BENZ_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BENZ_ind 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CMIP6_BENZ_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BENZ_tra 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CMIP6_BENZ_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BENZ_rco 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CMIP6_BENZ_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BENZ_slv 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CMIP6_BENZ_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BENZ_wst 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 - -0 CMIP6_TOLU_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 TOLU_agr 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CMIP6_TOLU_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 TOLU_ene 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CMIP6_TOLU_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 TOLU_ind 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CMIP6_TOLU_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 TOLU_tra 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CMIP6_TOLU_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 TOLU_rco 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CMIP6_TOLU_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 TOLU_slv 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CMIP6_TOLU_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 TOLU_wst 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 - -0 CMIP6_XYLE_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 XYLE_agr 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CMIP6_XYLE_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 XYLE_ene 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CMIP6_XYLE_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 XYLE_ind 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CMIP6_XYLE_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 XYLE_tra 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CMIP6_XYLE_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 XYLE_rco 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CMIP6_XYLE_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 XYLE_slv 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CMIP6_XYLE_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 XYLE_wst 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 - -0 CMIP6_CH2O_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH2O_agr 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CMIP6_CH2O_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH2O_ene 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CMIP6_CH2O_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH2O_ind 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CMIP6_CH2O_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH2O_tra 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CMIP6_CH2O_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH2O_rco 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CMIP6_CH2O_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH2O_slv 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CMIP6_CH2O_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH2O_wst 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 - -0 CMIP6_ALD2_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALD2_agr 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CMIP6_ALD2_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALD2_ene 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CMIP6_ALD2_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALD2_ind 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CMIP6_ALD2_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALD2_tra 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CMIP6_ALD2_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALD2_rco 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CMIP6_ALD2_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALD2_slv 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CMIP6_ALD2_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALD2_wst 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 - -0 CMIP6_MEK_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MEK_agr 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CMIP6_MEK_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MEK_ene 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CMIP6_MEK_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MEK_ind 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CMIP6_MEK_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MEK_tra 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CMIP6_MEK_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MEK_rco 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CMIP6_MEK_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MEK_slv 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CMIP6_MEK_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MEK_wst 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 - -0 CMIP6_HCOOH_AGR $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 HCOOH_agr 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CMIP6_HCOOH_ENE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 HCOOH_ene 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CMIP6_HCOOH_IND $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 HCOOH_ind 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CMIP6_HCOOH_TRA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 HCOOH_tra 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CMIP6_HCOOH_RCO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 HCOOH_rco 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CMIP6_HCOOH_SLV $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 HCOOH_slv 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CMIP6_HCOOH_WST $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 HCOOH_wst 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CMIP6_MOH_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 EOH_agr 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CMIP6_EOH_AGR - - - - - - EOH 26/91 1 5 +0 CMIP6_ROH_AGR - - - - - - ROH 26/92 1 5 +0 CMIP6_MOH_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 EOH_ene 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CMIP6_EOH_ENE - - - - - - EOH 26/91 1 5 +0 CMIP6_ROH_ENE - - - - - - ROH 26/92 1 5 +0 CMIP6_MOH_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 EOH_ind 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CMIP6_EOH_IND - - - - - - EOH 26/91 1 5 +0 CMIP6_ROH_IND - - - - - - ROH 26/92 1 5 +0 CMIP6_MOH_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 EOH_tra 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CMIP6_EOH_TRA - - - - - - EOH 26/91 1 5 +0 CMIP6_ROH_TRA - - - - - - ROH 26/92 1 5 +0 CMIP6_MOH_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 EOH_rco 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CMIP6_EOH_RCO - - - - - - EOH 26/91 1 5 +0 CMIP6_ROH_RCO - - - - - - ROH 26/92 1 5 +0 CMIP6_MOH_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 EOH_slv 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CMIP6_EOH_SLV - - - - - - EOH 26/91 1 5 +0 CMIP6_ROH_SLV - - - - - - ROH 26/92 1 5 +0 CMIP6_MOH_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 EOH_wst 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CMIP6_EOH_WST - - - - - - EOH 26/91 1 5 +0 CMIP6_ROH_WST - - - - - - ROH 26/92 1 5 + +0 CMIP6_C2H6_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H6_agr 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 +0 CMIP6_C2H6_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H6_ene 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 +0 CMIP6_C2H6_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H6_ind 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 +0 CMIP6_C2H6_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H6_tra 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 +0 CMIP6_C2H6_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H6_rco 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 +0 CMIP6_C2H6_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H6_slv 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 +0 CMIP6_C2H6_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H6_wst 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 + +0 CMIP6_C3H8_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C3H8_agr 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 +0 CMIP6_C3H8_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C3H8_ene 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 +0 CMIP6_C3H8_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C3H8_ind 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 +0 CMIP6_C3H8_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C3H8_tra 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 +0 CMIP6_C3H8_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C3H8_rco 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 +0 CMIP6_C3H8_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C3H8_slv 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 +0 CMIP6_C3H8_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C3H8_wst 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 + +0 CMIP6_C4H10_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_butanes_agr 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C4H10_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_butanes_ene 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C4H10_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_butanes_ind 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C4H10_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_butanes_tra 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C4H10_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_butanes_rco 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C4H10_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_butanes_slv 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C4H10_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_butanes_wst 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CMIP6_C5H12_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_pentanes_agr 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C5H12_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_pentanes_ene 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C5H12_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_pentanes_ind 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C5H12_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_pentanes_tra 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C5H12_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_pentanes_rco 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C5H12_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_pentanes_slv 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C5H12_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_pentanes_wst 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CMIP6_C6H14_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_hexanes_agr 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C6H14_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_hexanes_ene 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C6H14_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_hexanes_ind 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C6H14_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_hexanes_tra 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C6H14_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_hexanes_rco 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C6H14_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_hexanes_slv 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 +0 CMIP6_C6H14_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_hexanes_wst 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CMIP6_C2H4_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H4_agr 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 +0 CMIP6_C2H4_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H4_ene 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 +0 CMIP6_C2H4_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H4_ind 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 +0 CMIP6_C2H4_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H4_tra 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 +0 CMIP6_C2H4_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H4_rco 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 +0 CMIP6_C2H4_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H4_slv 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 +0 CMIP6_C2H4_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H4_wst 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 + +0 CMIP6_PRPE_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 PRPE_agr 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 +0 CMIP6_PRPE_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 PRPE_ene 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 +0 CMIP6_PRPE_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 PRPE_ind 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 +0 CMIP6_PRPE_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 PRPE_tra 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 +0 CMIP6_PRPE_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 PRPE_rco 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 +0 CMIP6_PRPE_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 PRPE_slv 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 +0 CMIP6_PRPE_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 PRPE_wst 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 + +0 CMIP6_C2H2_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H2_agr 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 +0 CMIP6_C2H2_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H2_ene 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 +0 CMIP6_C2H2_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H2_ind 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 +0 CMIP6_C2H2_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H2_tra 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 +0 CMIP6_C2H2_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H2_rco 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 +0 CMIP6_C2H2_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H2_slv 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 +0 CMIP6_C2H2_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H2_wst 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 + +0 CMIP6_BENZ_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BENZ_agr 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 +0 CMIP6_BENZ_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BENZ_ene 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 +0 CMIP6_BENZ_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BENZ_ind 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 +0 CMIP6_BENZ_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BENZ_tra 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 +0 CMIP6_BENZ_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BENZ_rco 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 +0 CMIP6_BENZ_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BENZ_slv 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 +0 CMIP6_BENZ_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BENZ_wst 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 + +0 CMIP6_TOLU_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 TOLU_agr 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 +0 CMIP6_TOLU_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 TOLU_ene 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 +0 CMIP6_TOLU_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 TOLU_ind 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 +0 CMIP6_TOLU_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 TOLU_tra 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 +0 CMIP6_TOLU_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 TOLU_rco 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 +0 CMIP6_TOLU_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 TOLU_slv 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 +0 CMIP6_TOLU_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 TOLU_wst 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 + +0 CMIP6_XYLE_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 XYLE_agr 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 +0 CMIP6_XYLE_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 XYLE_ene 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 +0 CMIP6_XYLE_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 XYLE_ind 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 +0 CMIP6_XYLE_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 XYLE_tra 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 +0 CMIP6_XYLE_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 XYLE_rco 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 +0 CMIP6_XYLE_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 XYLE_slv 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 +0 CMIP6_XYLE_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 XYLE_wst 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 + +0 CMIP6_CH2O_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH2O_agr 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 +0 CMIP6_CH2O_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH2O_ene 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 +0 CMIP6_CH2O_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH2O_ind 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 +0 CMIP6_CH2O_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH2O_tra 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 +0 CMIP6_CH2O_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH2O_rco 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 +0 CMIP6_CH2O_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH2O_slv 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 +0 CMIP6_CH2O_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH2O_wst 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 + +0 CMIP6_ALD2_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALD2_agr 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 +0 CMIP6_ALD2_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALD2_ene 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 +0 CMIP6_ALD2_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALD2_ind 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 +0 CMIP6_ALD2_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALD2_tra 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 +0 CMIP6_ALD2_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALD2_rco 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 +0 CMIP6_ALD2_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALD2_slv 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 +0 CMIP6_ALD2_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALD2_wst 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 + +0 CMIP6_MEK_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MEK_agr 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 +0 CMIP6_MEK_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MEK_ene 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 +0 CMIP6_MEK_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MEK_ind 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 +0 CMIP6_MEK_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MEK_tra 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 +0 CMIP6_MEK_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MEK_rco 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 +0 CMIP6_MEK_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MEK_slv 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 +0 CMIP6_MEK_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MEK_wst 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 1 5 + +0 CMIP6_HCOOH_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 HCOOH_agr 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CMIP6_HCOOH_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 HCOOH_ene 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CMIP6_HCOOH_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 HCOOH_ind 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CMIP6_HCOOH_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 HCOOH_tra 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CMIP6_HCOOH_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 HCOOH_rco 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CMIP6_HCOOH_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 HCOOH_slv 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CMIP6_HCOOH_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 HCOOH_wst 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 )))CMIP6_SFC_LAND_ANTHRO #============================================================================== # CEDS (historical) or Shared Socioeconomic Pathways (future) aircraft # emissions, consistent with the CMIP6 simulation experimental design # -# Make sure that the desired $GCAP2SCENARIO is set above in SECTION SETTINGS +# Make sure that the desired $GCAPSCENARIO is set above in SECTION SETTINGS # #============================================================================== (((CMIP6_AIRCRAFT -0 CMIP6_AIR_NO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 NO_air 1750-2100/1-12/1/0 C xyz kg/m2/s NO - 20 1 -0 CMIP6_AIR_CO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 CO_air 1750-2100/1-12/1/0 C xyz kg/m2/s CO - 20 1 -0 CMIP6_AIR_SOAP - - - - - - SOAP 280 20 1 -0 CMIP6_AIR_SO2 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 SO2_air 1750-2100/1-12/1/0 C xyz kg/m2/s SO2 - 20 1 -0 CMIP6_AIR_SO4 - - - - - - SO4 63 20 1 -0 CMIP6_AIR_ACET - - - - - - ACET 601 20 1 -0 CMIP6_AIR_ALD2 - - - - - - ALD2 602 20 1 -0 CMIP6_AIR_ALK4 - - - - - - ALK4 603 20 1 -0 CMIP6_AIR_C2H6 - - - - - - C2H6 604 20 1 -0 CMIP6_AIR_C3H8 - - - - - - C3H8 605 20 1 -0 CMIP6_AIR_CH2O - - - - - - CH2O 606 20 1 -0 CMIP6_AIR_PRPE - - - - - - PRPE 607 20 1 -0 CMIP6_AIR_MACR - - - - - - MACR 608 20 1 -0 CMIP6_AIR_RCHO - - - - - - RCHO 609 20 1 -0 CMIP6_AIR_NH3 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 NH3_air 1750-2100/1-12/1/0 C xyz kg/m2/s NH3 - 20 1 +0 CMIP6_AIR_NO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 NO_air 1750-2100/1-12/1/0 C xyz kg/m2/s NO - 20 1 +0 CMIP6_AIR_CO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 CO_air 1750-2100/1-12/1/0 C xyz kg/m2/s CO - 20 1 +0 CMIP6_AIR_SOAP - - - - - - SOAP 280 20 1 +0 CMIP6_AIR_SO2 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 SO2_air 1750-2100/1-12/1/0 C xyz kg/m2/s SO2 - 20 1 +0 CMIP6_AIR_SO4 - - - - - - SO4 63 20 1 +0 CMIP6_AIR_pFe - - - - - - pFe 66 20 1 +0 CMIP6_AIR_ACET - - - - - - ACET 601 20 1 +0 CMIP6_AIR_ALD2 - - - - - - ALD2 602 20 1 +0 CMIP6_AIR_ALK4 - - - - - - ALK4 603 20 1 +0 CMIP6_AIR_C2H6 - - - - - - C2H6 604 20 1 +0 CMIP6_AIR_C3H8 - - - - - - C3H8 605 20 1 +0 CMIP6_AIR_CH2O - - - - - - CH2O 606 20 1 +0 CMIP6_AIR_PRPE - - - - - - PRPE 607 20 1 +0 CMIP6_AIR_MACR - - - - - - MACR 608 20 1 +0 CMIP6_AIR_RCHO - - - - - - RCHO 609 20 1 +0 CMIP6_AIR_NH3 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 NH3_air 1750-2100/1-12/1/0 C xyz kg/m2/s NH3 - 20 1 # Assume all BC/OC is BCPI/OCPI -0 CMIP6_AIR_BCPI $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 BC_air 1750-2100/1-12/1/0 C xyz kg/m2/s BCPI - 20 1 -0 CMIP6_AIR_OCPI $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 OC_air 1750-2100/1-12/1/0 C xyz kg/m2/s OCPI - 20 1 +0 CMIP6_AIR_BCPI $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 BC_air 1750-2100/1-12/1/0 C xyz kg/m2/s BCPI - 20 1 +0 CMIP6_AIR_OCPI $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 OC_air 1750-2100/1-12/1/0 C xyz kg/m2/s OCPI - 20 1 +0 CMIP6_AIR_POG1 - - - - - - POG1 74/76 20 1 +0 CMIP6_AIR_POG2 - - - - - - POG2 74/77 20 1 )))CMIP6_AIRCRAFT @@ -1898,7 +1987,7 @@ VerboseOnCores: root # Accepted values: root all # --- EDGAR v4.3 --- # # %%% This is an optional inventory. You may select either CEDS, EDGAR, -# or HTAP for the global base emissions %%% +# or HTAPv3 for the global base emissions %%% # # The following emissions are not included in EDGAR and will be added: # * Wiedinmyer et al. (2014) global trash emissions @@ -2063,6 +2152,8 @@ VerboseOnCores: root # Accepted values: root all 0 TRASH_BCPO - - - - - - BCPO 71 1 2 0 TRASH_OCPI $ROOT/TrashEmis/v2015-03/TrashBurn_v2_generic.01x01.nc OC 2008/1/1/0 C xy kg/m2/s OCPI 72 1 2 0 TRASH_OCPO - - - - - - OCPO 73 1 2 +0 TRASH_POG1 - - - - - - POG1 74/76 1 2 +0 TRASH_POG2 - - - - - - POG2 74/77 1 2 0 TRASH_NH3 $ROOT/TrashEmis/v2015-03/TrashBurn_v2_generic.01x01.nc NH3 2008/1/1/0 C xy kg/m2/s NH3 - 1 2 #============================================================================== @@ -2212,63 +2303,235 @@ VerboseOnCores: root # Accepted values: root all )))EDGARv43 #============================================================================== -# --- HTAP v2 --- +# --- HTAP v3 --- # # %%% This is an optional inventory. You may select either CEDS, EDGAR, -# or HTAP for the global base emissions %%% +# or HTAPv3 for the global base emissions %%% +# +# ==> HTAPv3 ship emissions are listed in the ship emissions section below +#============================================================================== +(((HTAPv3 +0 HTAPv3_NO_AGR $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NO_0.1x0.1_$YYYY.nc NO_AGR 2000-2018/1-12/1/0 C xy kg/m2/s NO 25 1 4 +0 HTAPv3_NO_ENE $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NO_0.1x0.1_$YYYY.nc NO_ENE 2000-2018/1-12/1/0 C xy kg/m2/s NO 25 1 4 +0 HTAPv3_NO_IND $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NO_0.1x0.1_$YYYY.nc NO_IND 2000-2018/1-12/1/0 C xy kg/m2/s NO 25 1 4 +0 HTAPv3_NO_TRA $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NO_0.1x0.1_$YYYY.nc NO_TRA 2000-2018/1-12/1/0 C xy kg/m2/s NO 25 1 4 +0 HTAPv3_NO_RCO $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NO_0.1x0.1_$YYYY.nc NO_RCO 2000-2018/1-12/1/0 C xy kg/m2/s NO 25 1 4 +0 HTAPv3_NO_SLV $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NO_0.1x0.1_$YYYY.nc NO_SLV 2000-2018/1-12/1/0 C xy kg/m2/s NO 25 1 4 +0 HTAPv3_NO_WST $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NO_0.1x0.1_$YYYY.nc NO_WST 2000-2018/1-12/1/0 C xy kg/m2/s NO 25 1 4 +0 HTAPv3_CO_AGR $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_CO_0.1x0.1_$YYYY.nc CO_AGR 2000-2018/1-12/1/0 C xy kg/m2/s CO 26 1 4 +0 HTAPv3_SOAP_AGR - - - - - - SOAP 26/280 1 4 +0 HTAPv3_CO_ENE $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_CO_0.1x0.1_$YYYY.nc CO_ENE 2000-2018/1-12/1/0 C xy kg/m2/s CO 26 1 4 +0 HTAPv3_SOAP_ENE - - - - - - SOAP 26/280 1 4 +0 HTAPv3_CO_IND $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_CO_0.1x0.1_$YYYY.nc CO_IND 2000-2018/1-12/1/0 C xy kg/m2/s CO 26 1 4 +0 HTAPv3_SOAP_IND - - - - - - SOAP 26/280 1 4 +0 HTAPv3_CO_TRA $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_CO_0.1x0.1_$YYYY.nc CO_TRA 2000-2018/1-12/1/0 C xy kg/m2/s CO 26 1 4 +0 HTAPv3_SOAP_TRA - - - - - - SOAP 26/280 1 4 +0 HTAPv3_CO_RCO $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_CO_0.1x0.1_$YYYY.nc CO_RCO 2000-2018/1-12/1/0 C xy kg/m2/s CO 26 1 4 +0 HTAPv3_SOAP_RCO - - - - - - SOAP 26/280 1 4 +0 HTAPv3_CO_SLV $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_CO_0.1x0.1_$YYYY.nc CO_SLV 2000-2018/1-12/1/0 C xy kg/m2/s CO 26 1 4 +0 HTAPv3_SOAP_SLV - - - - - - SOAP 26/280 1 4 +0 HTAPv3_CO_WST $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_CO_0.1x0.1_$YYYY.nc CO_WST 2000-2018/1-12/1/0 C xy kg/m2/s CO 26 1 4 +0 HTAPv3_SOAP_WST - - - - - - SOAP 26/280 1 4 +0 HTAPv3_SO2_AGR $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_SO2_0.1x0.1_$YYYY.nc SO2_AGR 2000-2018/1-12/1/0 C xy kg/m2/s SO2 - 1 4 +0 HTAPv3_SO4_AGR - - - - - - SO4 63 1 4 +0 HTAPv3_pFe_AGR - - - - - - pFe 66 1 4 +0 HTAPv3_SO2_ENE $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_SO2_0.1x0.1_$YYYY.nc SO2_ENE 2000-2018/1-12/1/0 C xy kg/m2/s SO2 - 1 4 +0 HTAPv3_SO4_ENE - - - - - - SO4 63 1 4 +0 HTAPv3_pFe_ENE - - - - - - pFe 66 1 4 +0 HTAPv3_SO2_IND $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_SO2_0.1x0.1_$YYYY.nc SO2_IND 2000-2018/1-12/1/0 C xy kg/m2/s SO2 - 1 4 +0 HTAPv3_SO4_IND - - - - - - SO4 63 1 4 +0 HTAPv3_pFe_IND - - - - - - pFe 66 1 4 +0 HTAPv3_SO2_TRA $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_SO2_0.1x0.1_$YYYY.nc SO2_TRA 2000-2018/1-12/1/0 C xy kg/m2/s SO2 - 1 4 +0 HTAPv3_SO4_TRA - - - - - - SO4 63 1 4 +0 HTAPv3_pFe_TRA - - - - - - pFe 66 1 4 +0 HTAPv3_SO2_RCO $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_SO2_0.1x0.1_$YYYY.nc SO2_RCO 2000-2018/1-12/1/0 C xy kg/m2/s SO2 - 1 4 +0 HTAPv3_SO4_RCO - - - - - - SO4 63 1 4 +0 HTAPv3_pFe_RCO - - - - - - pFe 66 1 4 +0 HTAPv3_SO2_SLV $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_SO2_0.1x0.1_$YYYY.nc SO2_SLV 2000-2018/1-12/1/0 C xy kg/m2/s SO2 - 1 4 +0 HTAPv3_SO4_SLV - - - - - - SO4 63 1 4 +0 HTAPv3_pFe_SLV - - - - - - pFe 66 1 4 +0 HTAPv3_SO2_WST $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_SO2_0.1x0.1_$YYYY.nc SO2_WST 2000-2018/1-12/1/0 C xy kg/m2/s SO2 - 1 4 +0 HTAPv3_SO4_WST - - - - - - SO4 63 1 4 +0 HTAPv3_pFe_WST - - - - - - pFe 66 1 4 +0 HTAPv3_NH3_AGR $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NH3_0.1x0.1_$YYYY.nc NH3_AGR 2000-2018/1-12/1/0 C xy kg/m2/s NH3 - 1 4 +0 HTAPv3_NH3_ENE $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NH3_0.1x0.1_$YYYY.nc NH3_ENE 2000-2018/1-12/1/0 C xy kg/m2/s NH3 - 1 4 +0 HTAPv3_NH3_IND $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NH3_0.1x0.1_$YYYY.nc NH3_IND 2000-2018/1-12/1/0 C xy kg/m2/s NH3 - 1 4 +0 HTAPv3_NH3_TRA $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NH3_0.1x0.1_$YYYY.nc NH3_TRA 2000-2018/1-12/1/0 C xy kg/m2/s NH3 - 1 4 +0 HTAPv3_NH3_RCO $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NH3_0.1x0.1_$YYYY.nc NH3_RCO 2000-2018/1-12/1/0 C xy kg/m2/s NH3 - 1 4 +0 HTAPv3_NH3_SLV $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NH3_0.1x0.1_$YYYY.nc NH3_SLV 2000-2018/1-12/1/0 C xy kg/m2/s NH3 - 1 4 +0 HTAPv3_NH3_WST $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NH3_0.1x0.1_$YYYY.nc NH3_WST 2000-2018/1-12/1/0 C xy kg/m2/s NH3 - 1 4 +0 HTAPv3_BCPI_AGR $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_BC_0.1x0.1_$YYYY.nc BC_AGR 2000-2018/1-12/1/0 C xy kg/m2/s BCPI 70 1 4 +0 HTAPv3_BCPO_AGR - - - - - - BCPO 71 1 4 +0 HTAPv3_BCPI_ENE $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_BC_0.1x0.1_$YYYY.nc BC_ENE 2000-2018/1-12/1/0 C xy kg/m2/s BCPI 70 1 4 +0 HTAPv3_BCPO_ENE - - - - - - BCPO 71 1 4 +0 HTAPv3_BCPI_IND $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_BC_0.1x0.1_$YYYY.nc BC_IND 2000-2018/1-12/1/0 C xy kg/m2/s BCPI 70 1 4 +0 HTAPv3_BCPO_IND - - - - - - BCPO 71 1 4 +0 HTAPv3_BCPI_TRA $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_BC_0.1x0.1_$YYYY.nc BC_TRA 2000-2018/1-12/1/0 C xy kg/m2/s BCPI 70 1 4 +0 HTAPv3_BCPO_TRA - - - - - - BCPO 71 1 4 +0 HTAPv3_BCPI_RCO $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_BC_0.1x0.1_$YYYY.nc BC_RCO 2000-2018/1-12/1/0 C xy kg/m2/s BCPI 70 1 4 +0 HTAPv3_BCPO_RCO - - - - - - BCPO 71 1 4 +0 HTAPv3_BCPI_SLV $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_BC_0.1x0.1_$YYYY.nc BC_SLV 2000-2018/1-12/1/0 C xy kg/m2/s BCPI 70 1 4 +0 HTAPv3_BCPO_SLV - - - - - - BCPO 71 1 4 +0 HTAPv3_BCPI_WST $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_BC_0.1x0.1_$YYYY.nc BC_WST 2000-2018/1-12/1/0 C xy kg/m2/s BCPI 70 1 4 +0 HTAPv3_BCPO_WST - - - - - - BCPO 71 1 4 +0 HTAPv3_OCPI_AGR $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_OC_0.1x0.1_$YYYY.nc OC_AGR 2000-2018/1-12/1/0 C xy kg/m2/s OCPI 72 1 4 +0 HTAPv3_OCPO_AGR - - - - - - OCPO 73 1 4 +0 HTAPv3_POG1_AGR - - - - - - POG1 73/74/76 1 4 +0 HTAPv3_POG2_AGR - - - - - - POG2 73/74/77 1 4 +0 HTAPv3_OCPI_ENE $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_OC_0.1x0.1_$YYYY.nc OC_ENE 2000-2018/1-12/1/0 C xy kg/m2/s OCPI 72 1 4 +0 HTAPv3_OCPO_ENE - - - - - - OCPO 73 1 4 +0 HTAPv3_POG1_ENE - - - - - - POG1 73/74/76 1 4 +0 HTAPv3_POG2_ENE - - - - - - POG2 73/74/77 1 4 +0 HTAPv3_OCPI_IND $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_OC_0.1x0.1_$YYYY.nc OC_IND 2000-2018/1-12/1/0 C xy kg/m2/s OCPI 72 1 4 +0 HTAPv3_OCPO_IND - - - - - - OCPO 73 1 4 +0 HTAPv3_POG1_IND - - - - - - POG1 73/74/76 1 4 +0 HTAPv3_POG2_IND - - - - - - POG2 73/74/77 1 4 +0 HTAPv3_OCPI_TRA $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_OC_0.1x0.1_$YYYY.nc OC_TRA 2000-2018/1-12/1/0 C xy kg/m2/s OCPI 72 1 4 +0 HTAPv3_OCPO_TRA - - - - - - OCPO 73 1 4 +0 HTAPv3_POG1_TRA - - - - - - POG1 73/74/76 1 4 +0 HTAPv3_POG2_TRA - - - - - - POG2 73/74/77 1 4 +0 HTAPv3_OCPI_RCO $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_OC_0.1x0.1_$YYYY.nc OC_RCO 2000-2018/1-12/1/0 C xy kg/m2/s OCPI 72 1 4 +0 HTAPv3_OCPO_RCO - - - - - - OCPO 73 1 4 +0 HTAPv3_POG1_RCO - - - - - - POG1 73/74/76 1 4 +0 HTAPv3_POG2_RCO - - - - - - POG2 73/74/77 1 4 +0 HTAPv3_OCPI_SLV $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_OC_0.1x0.1_$YYYY.nc OC_SLV 2000-2018/1-12/1/0 C xy kg/m2/s OCPI 72 1 4 +0 HTAPv3_OCPO_SLV - - - - - - OCPO 73 1 4 +0 HTAPv3_POG1_SLV - - - - - - POG1 73/74/76 1 4 +0 HTAPv3_POG2_SLV - - - - - - POG2 73/74/77 1 4 +0 HTAPv3_OCPI_WST $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_OC_0.1x0.1_$YYYY.nc OC_WST 2000-2018/1-12/1/0 C xy kg/m2/s OCPI 72 1 4 +0 HTAPv3_OCPO_WST - - - - - - OCPO 73 1 4 +0 HTAPv3_POG1_WST - - - - - - POG1 73/74/76 1 4 +0 HTAPv3_POG2_WST - - - - - - POG2 73/74/77 1 4 # -# ==> HTAP ship emissions are listed in the ship emissions section below -# ==> Disable aircraft emissions and get them from AEIC instead. -#============================================================================== -(((HTAP -0 HTAP_NO_IND $ROOT/HTAP/v2015-03/NO/EDGAR_HTAP_NO_INDUSTRY.generic.01x01.nc emi_no 2008-2010/1-12/1/0 C xy kg/m2/s NO 1/27/25 1 4 -0 HTAP_NO_POW $ROOT/HTAP/v2015-03/NO/EDGAR_HTAP_NO_ENERGY.generic.01x01.nc emi_no 2008-2010/1-12/1/0 C xy kg/m2/s NO 1/27/25 1 4 -0 HTAP_NO_RES $ROOT/HTAP/v2015-03/NO/EDGAR_HTAP_NO_RESIDENTIAL.generic.01x01.nc emi_no 2008-2010/1-12/1/0 C xy kg/m2/s NO 1/27/25 1 4 -0 HTAP_NO_TRA $ROOT/HTAP/v2015-03/NO/EDGAR_HTAP_NO_TRANSPORT.generic.01x01.nc emi_no 2008-2010/1-12/1/0 C xy kg/m2/s NO 1/27/25 1 4 -#0 HTAP_NO_AIR1 $ROOT/HTAP/v2015-03/NO/EDGAR_HTAP_NO_AIR_LTO.generic.01x01.nc emi_no 2008-2010/1/1/0 C xy kg/m2/s NO 1/27/25 1 4 -#0 HTAP_NO_AIR2 $ROOT/HTAP/v2015-03/NO/EDGAR_HTAP_NO_AIR_CDS.generic.01x01.nc emi_no 2008-2010/1/1/0 C xy kg/m2/s NO 1/27/25 1 4 -#0 HTAP_NO_AIR3 $ROOT/HTAP/v2015-03/NO/EDGAR_HTAP_NO_AIR_CRS.generic.01x01.nc emi_no 2008-2010/1/1/0 C xy kg/m2/s NO 1/27/25 1 4 -0 HTAP_CO_IND $ROOT/HTAP/v2015-03/CO/EDGAR_HTAP_CO_INDUSTRY.generic.01x01.nc emi_co 2008-2010/1-12/1/0 C xy kg/m2/s CO 6/28/26 1 4 -0 HTAP_SOAP_IND - - - - - - SOAP 6/28/26/280 1 4 -0 HTAP_CO_POW $ROOT/HTAP/v2015-03/CO/EDGAR_HTAP_CO_ENERGY.generic.01x01.nc emi_co 2008-2010/1-12/1/0 C xy kg/m2/s CO 6/28/26 1 4 -0 HTAP_SOAP_POW - - - - - - SOAP 6/28/26/280 1 4 -0 HTAP_CO_RES $ROOT/HTAP/v2015-03/CO/EDGAR_HTAP_CO_RESIDENTIAL.generic.01x01.nc emi_co 2008-2010/1-12/1/0 C xy kg/m2/s CO 6/28/26 1 4 -0 HTAP_SOAP_RES - - - - - - SOAP 6/28/26/280 1 4 -0 HTAP_CO_TRA $ROOT/HTAP/v2015-03/CO/EDGAR_HTAP_CO_TRANSPORT.generic.01x01.nc emi_co 2008-2010/1-12/1/0 C xy kg/m2/s CO 6/28/26 1 4 -0 HTAP_SOAP_TRA - - - - - - SOAP 6/28/26/280 1 4 -#0 HTAP_CO_AIR1 $ROOT/HTAP/v2015-03/CO/EDGAR_HTAP_CO_AIR_LTO.generic.01x01.nc emi_co 2008-2010/1/1/0 C xy kg/m2/s CO 6/28/26 1 4 -#0 HTAP_SOAP_CO - - - - - - SOAP 6/28/26/280 1 4 -#0 HTAP_CO_AIR2 $ROOT/HTAP/v2015-03/CO/EDGAR_HTAP_CO_AIR_CDS.generic.01x01.nc emi_co 2008-2010/1/1/0 C xy kg/m2/s CO 6/28/26 1 4 -#0 HTAP_SOAP_CO - - - - - - SOAP 6/28/26/280 1 4 -#0 HTAP_CO_AIR3 $ROOT/HTAP/v2015-03/CO/EDGAR_HTAP_CO_AIR_CRS.generic.01x01.nc emi_co 2008-2010/1/1/0 C xy kg/m2/s CO 6/28/26 1 4 -#0 HTAP_SOAP_CO - - - - - - SOAP 6/28/26/280 1 4 -0 HTAP_SO2_IND $ROOT/HTAP/v2015-03/SO2/EDGAR_HTAP_SO2_INDUSTRY.generic.01x01.nc emi_so2 2008-2010/1-12/1/0 C xy kg/m2/s SO2 11/29 1 4 -0 HTAP_SO4_IND - - - - - - SO4 11/29/63 1 4 -0 HTAP_pFe_IND - - - - - - pFe 11/29/66 1 4 -0 HTAP_SO2_POW $ROOT/HTAP/v2015-03/SO2/EDGAR_HTAP_SO2_ENERGY.generic.01x01.nc emi_so2 2008-2010/1-12/1/0 C xy kg/m2/s SO2 11/29 1 4 -0 HTAP_SO4_POW - - - - - - SO4 11/29/63 1 4 -0 HTAP_pFe_POW - - - - - - pFe 11/29/66 1 4 -0 HTAP_SO2_RES $ROOT/HTAP/v2015-03/SO2/EDGAR_HTAP_SO2_RESIDENTIAL.generic.01x01.nc emi_so2 2008-2010/1-12/1/0 C xy kg/m2/s SO2 11/29 1 4 -0 HTAP_SO4_RES - - - - - - SO4 11/29/63 1 4 -0 HTAP_pFe_RES - - - - - - pFe 11/29/66 1 4 -0 HTAP_SO2_TRA $ROOT/HTAP/v2015-03/SO2/EDGAR_HTAP_SO2_TRANSPORT.generic.01x01.nc emi_so2 2008-2010/1-12/1/0 C xy kg/m2/s SO2 11/29 1 4 -0 HTAP_SO4_TRA - - - - - - SO4 11/29/63 1 4 -0 HTAP_pFe_TRA - - - - - - pFe 11/29/66 1 4 -#0 HTAP_SO2_AIR1 $ROOT/HTAP/v2015-03/SO2/EDGAR_HTAP_SO2_AIR_LTO.generic.01x01.nc emi_so2 2008-2010/1/1/0 C xy kg/m2/s SO2 11/29 1 4 -#0 HTAP_SO4_AIR1 - - - - - - SO4 11/29/63 1 4 -#0 HTAP_pFe_AIR1 - - - - - - pFe 11/29/66 1 4 -#0 HTAP_SO2_AIR2 $ROOT/HTAP/v2015-03/SO2/EDGAR_HTAP_SO2_AIR_CDS.generic.01x01.nc emi_so2 2008-2010/1/1/0 C xy kg/m2/s SO2 11/29 1 4 -#0 HTAP_SO4_AIR2 - - - - - - SO4 11/29/63 1 4 -#0 HTAP_pFe_AIR2 - - - - - - pFe 11/29/66 1 4 -#0 HTAP_SO2_AIR3 $ROOT/HTAP/v2015-03/SO2/EDGAR_HTAP_SO2_AIR_CRS.generic.01x01.nc emi_so2 2008-2010/1/1/0 C xy kg/m2/s SO2 11/29 1 4 -#0 HTAP_SO4_AIR3 - - - - - - SO4 11/29/63 1 4 -#0 HTAP_pFe_AIR3 - - - - - - pFe 11/29/66 1 4 -0 HTAP_NH3_IND $ROOT/HTAP/v2015-03/NH3/EDGAR_HTAP_NH3_INDUSTRY.generic.01x01.nc emi_nh3 2008-2010/1-12/1/0 C xy kg/m2/s NH3 - 1 4 -0 HTAP_NH3_POW $ROOT/HTAP/v2015-03/NH3/EDGAR_HTAP_NH3_ENERGY.generic.01x01.nc emi_nh3 2008-2010/1-12/1/0 C xy kg/m2/s NH3 - 1 4 -0 HTAP_NH3_RES $ROOT/HTAP/v2015-03/NH3/EDGAR_HTAP_NH3_RESIDENTIAL.generic.01x01.nc emi_nh3 2008-2010/1-12/1/0 C xy kg/m2/s NH3 - 1 4 -0 HTAP_NH3_TRA $ROOT/HTAP/v2015-03/NH3/EDGAR_HTAP_NH3_TRANSPORT.generic.01x01.nc emi_nh3 2008-2010/1-12/1/0 C xy kg/m2/s NH3 - 1 4 -0 HTAP_NH3_AGR $ROOT/HTAP/v2015-03/NH3/EDGAR_HTAP_NH3_AGRICULTURE.generic.01x01.nc emi_nh3 2008-2010/1-12/1/0 C xy kg/m2/s NH3 - 1 4 -)))HTAP +# Use CEDSv2 for species that are not in the HTAPv3 inventory +# NOTE: EOH files in CEDS/v2021-06 are actually VOC1 (total alchohols) and are split into MOH, EOH, ROH here +0 CEDS_MOH_AGR $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 4 +0 CEDS_EOH_AGR - - - - - - EOH 26/91 1 4 +0 CEDS_ROH_AGR - - - - - - ROH 26/92 1 4 +0 CEDS_MOH_ENE $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 4 +0 CEDS_EOH_ENE - - - - - - EOH 26/91 1 4 +0 CEDS_ROH_ENE - - - - - - ROH 26/92 1 4 +0 CEDS_MOH_IND $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 4 +0 CEDS_EOH_IND - - - - - - EOH 26/91 1 4 +0 CEDS_ROH_IND - - - - - - ROH 26/92 1 4 +0 CEDS_MOH_TRA $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 4 +0 CEDS_EOH_TRA - - - - - - EOH 26/91 1 4 +0 CEDS_ROH_TRA - - - - - - ROH 26/92 1 4 +0 CEDS_MOH_RCO $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 4 +0 CEDS_EOH_RCO - - - - - - EOH 26/91 1 4 +0 CEDS_ROH_RCO - - - - - - ROH 26/92 1 4 +0 CEDS_MOH_SLV $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 4 +0 CEDS_EOH_SLV - - - - - - EOH 26/91 1 4 +0 CEDS_ROH_SLV - - - - - - ROH 26/92 1 4 +0 CEDS_MOH_WST $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 4 +0 CEDS_EOH_WST - - - - - - EOH 26/91 1 4 +0 CEDS_ROH_WST - - - - - - ROH 26/92 1 4 +0 CEDS_C2H6_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 4 +0 CEDS_C2H6_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 4 +0 CEDS_C2H6_IND $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 4 +0 CEDS_C2H6_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 4 +0 CEDS_C2H6_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 4 +0 CEDS_C2H6_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 4 +0 CEDS_C2H6_WST $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 4 +0 CEDS_C3H8_AGR $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_agr 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 4 +0 CEDS_C3H8_ENE $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ene 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 4 +0 CEDS_C3H8_IND $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ind 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 4 +0 CEDS_C3H8_TRA $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_tra 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 4 +0 CEDS_C3H8_RCO $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_rco 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 4 +0 CEDS_C3H8_SLV $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_slv 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 4 +0 CEDS_C3H8_WST $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_wst 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 4 +0 CEDS_C4H10_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C4H10_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C4H10_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C4H10_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C4H10_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C4H10_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C4H10_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C5H12_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C5H12_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C5H12_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C5H12_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C5H12_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C5H12_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C5H12_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C6H14_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C6H14_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C6H14_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C6H14_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C6H14_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C6H14_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C6H14_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 4 +0 CEDS_C2H4_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 4 +0 CEDS_C2H4_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 4 +0 CEDS_C2H4_IND $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 4 +0 CEDS_C2H4_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 4 +0 CEDS_C2H4_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 4 +0 CEDS_C2H4_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 4 +0 CEDS_C2H4_WST $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 4 +0 CEDS_PRPE_AGR $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_agr 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 4 +0 CEDS_PRPE_ENE $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ene 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 4 +0 CEDS_PRPE_IND $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ind 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 4 +0 CEDS_PRPE_TRA $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_tra 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 4 +0 CEDS_PRPE_RCO $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_rco 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 4 +0 CEDS_PRPE_SLV $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_slv 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 4 +0 CEDS_PRPE_WST $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_wst 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 4 +0 CEDS_C2H2_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 4 +0 CEDS_C2H2_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ene 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 4 +0 CEDS_C2H2_IND $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ind 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 4 +0 CEDS_C2H2_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 4 +0 CEDS_C2H2_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 4 +0 CEDS_C2H2_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 4 +0 CEDS_C2H2_WST $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 4 +0 CEDS_BENZ_AGR $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_agr 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 4 +0 CEDS_BENZ_ENE $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ene 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 4 +0 CEDS_BENZ_IND $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ind 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 4 +0 CEDS_BENZ_TRA $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_tra 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 4 +0 CEDS_BENZ_RCO $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_rco 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 4 +0 CEDS_BENZ_SLV $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_slv 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 4 +0 CEDS_BENZ_WST $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_wst 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 4 +0 CEDS_TOLU_AGR $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_agr 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 4 +0 CEDS_TOLU_ENE $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ene 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 4 +0 CEDS_TOLU_IND $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ind 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 4 +0 CEDS_TOLU_TRA $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_tra 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 4 +0 CEDS_TOLU_RCO $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_rco 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 4 +0 CEDS_TOLU_SLV $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_slv 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 4 +0 CEDS_TOLU_WST $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_wst 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 4 +0 CEDS_XYLE_AGR $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_agr 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 4 +0 CEDS_XYLE_ENE $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ene 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 4 +0 CEDS_XYLE_IND $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ind 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 4 +0 CEDS_XYLE_TRA $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_tra 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 4 +0 CEDS_XYLE_RCO $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_rco 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 4 +0 CEDS_XYLE_SLV $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_slv 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 4 +0 CEDS_XYLE_WST $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_wst 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 4 +0 CEDS_CH2O_AGR $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_agr 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 4 +0 CEDS_CH2O_ENE $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ene 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 4 +0 CEDS_CH2O_IND $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ind 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 4 +0 CEDS_CH2O_TRA $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_tra 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 4 +0 CEDS_CH2O_RCO $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_rco 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 4 +0 CEDS_CH2O_SLV $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_slv 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 4 +0 CEDS_CH2O_WST $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_wst 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 4 +0 CEDS_ALD2_AGR $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 4 +0 CEDS_ALD2_ENE $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ene 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 4 +0 CEDS_ALD2_IND $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ind 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 4 +0 CEDS_ALD2_TRA $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 4 +0 CEDS_ALD2_RCO $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 4 +0 CEDS_ALD2_SLV $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 4 +0 CEDS_ALD2_WST $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 4 +0 CEDS_MEK_AGR $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_agr 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 4 +0 CEDS_MEK_ENE $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ene 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 4 +0 CEDS_MEK_IND $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ind 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 4 +0 CEDS_MEK_TRA $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_tra 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 4 +0 CEDS_MEK_RCO $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_rco 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 4 +0 CEDS_MEK_SLV $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_slv 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 4 +0 CEDS_MEK_WST $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_wst 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 4 +0 CEDS_HCOOH_AGR $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 4 +0 CEDS_HCOOH_ENE $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ene 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 4 +0 CEDS_HCOOH_IND $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ind 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 4 +0 CEDS_HCOOH_TRA $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 4 +0 CEDS_HCOOH_RCO $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 4 +0 CEDS_HCOOH_SLV $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 4 +0 CEDS_HCOOH_WST $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 4 +)))HTAPv3 #============================================================================== # --- GEIA NH3 from natural sources --- @@ -2338,7 +2601,7 @@ VerboseOnCores: root # Accepted values: root all # # ==> CEDS ship emissions are now the default. # ==> If CEDS_SHIP is turned off above then ARCTAS should be used over ICOADS, -# CORBETT, and HTAP for SO2 and ICOADS should be used for CO and NO. +# CORBETT, and HTAPv3 for SO2 and ICOADS should be used for CO and NO. # ==> Ship NO emissions are used by PARANOx and the extension number must be # adjusted accordingly. If PARANOx is turned off, set the ExtNr back to # zero. @@ -2359,11 +2622,37 @@ VerboseOnCores: root # Accepted values: root all 0 CORBETT_SHIP_SO2 $ROOT/CORBETT_SHIP/v2014-07/CORBETT_ship.geos.1x1.nc SO2_SHIP 1985/1-12/1/0 C xy kg/m2/s SO2 - 10 3 )))CORBETT_SHIP -(((HTAP_SHIP -0 HTAP_SHIP_SO2 $ROOT/HTAP/v2015-03/EDGAR_HTAP_SO2_SHIPS.generic.01x01.nc emi_so2 2008-2010/1/1/0 C xy kg/m2/s SO2 11/29 10 4 -0 HTAP_SHIP_CO $ROOT/HTAP/v2015-03/EDGAR_HTAP_CO_SHIPS.generic.01x01.nc emi_co 2008-2010/1/1/0 C xy kg/m2/s CO 6/28 10 4 -0 HTAP_SHIP_SOAP - - - - - - SOAP 6/28/280 10 4 -)))HTAP_SHIP +(((HTAPv3_SHIP +0 HTAPv3_CO_SHP $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_CO_0.1x0.1_$YYYY.nc CO_SHP 2000-2018/1-12/1/0 C xy kg/m2/s CO 26 10 4 +0 HTAPv3_SOAP_SHP - - - - - - SOAP 26/280 10 4 +0 HTAPv3_SO2_SHP $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_SO2_0.1x0.1_$YYYY.nc SO2_SHP 2000-2018/1-12/1/0 C xy kg/m2/s SO2 - 10 4 +0 HTAPv3_SO4_SHP - - - - - - SO4 63 10 4 +0 HTAPv3_pFe_SHP - - - - - - pFe 66 10 4 +0 HTAPv3_NH3_SHP $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NH3_0.1x0.1_$YYYY.nc NH3_SHP 2000-2018/1-12/1/0 C xy kg/m2/s NH3 - 10 4 +0 HTAPv3_BCPI_SHP $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_BC_0.1x0.1_$YYYY.nc BC_SHP 2000-2018/1-12/1/0 C xy kg/m2/s BCPI 70 10 4 +0 HTAPv3_BCPO_SHP - - - - - - BCPO 71 10 4 +0 HTAPv3_OCPI_SHP $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_OC_0.1x0.1_$YYYY.nc OC_SHP 2000-2018/1-12/1/0 C xy kg/m2/s OCPI 72 10 4 +0 HTAPv3_OCPO_SHP - - - - - - OCPO 73 10 4 +# Use CEDSv2 ship emissions for species not in HTAPv3 +0 CEDS_MOH_SHP $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_shp 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 10 4 +0 CEDS_EOH_SHP - - - - - - EOH 26/91 10 4 +0 CEDS_ROH_SHP - - - - - - ROH 26/92 10 4 +0 CEDS_C2H6_SHP $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_shp 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 10 4 +0 CEDS_C3H8_SHP $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_shp 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 10 4 +0 CEDS_C4H10_SHP $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_shp 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 10 4 +0 CEDS_C5H12_SHP $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_shp 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 10 4 +0 CEDS_C6H14_SHP $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_shp 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 10 4 +0 CEDS_C2H4_SHP $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_shp 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 10 4 +0 CEDS_PRPE_SHP $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_shp 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 10 4 +0 CEDS_C2H2_SHP $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_shp 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 10 4 +0 CEDS_BENZ_SHP $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_shp 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 10 4 +0 CEDS_TOLU_SHP $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_shp 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 10 4 +0 CEDS_XYLE_SHP $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_shp 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 10 4 +0 CEDS_CH2O_SHP $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_shp 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 10 4 +0 CEDS_ALD2_SHP $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_shp 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 10 4 +0 CEDS_MEK_SHP $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_shp 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 10 4 +0 CEDS_HCOOH_SHP $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_shp 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 10 4 +)))HTAPv3_SHIP (((CEDSv2_SHIP 0 CEDS_CO_SHP $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_shp 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 10 5 @@ -2376,6 +2665,8 @@ VerboseOnCores: root # Accepted values: root all 0 CEDS_BCPO_SHP - - - - - - BCPO 71 10 5 0 CEDS_OCPI_SHP $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_shp 1750-2019/1-12/1/0 C xy kg/m2/s OCPI 72 10 5 0 CEDS_OCPO_SHP - - - - - - OCPO 73 10 5 +0 CEDS_POG1_SHP - - - - - - POG1 74/76 10 5 +0 CEDS_POG2_SHP - - - - - - POG2 74/77 10 5 0 CEDS_MOH_SHP $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_shp 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 10 5 0 CEDS_EOH_SHP - - - - - - EOH 26/91 10 5 0 CEDS_ROH_SHP - - - - - - ROH 26/92 10 5 @@ -2398,13 +2689,14 @@ VerboseOnCores: root # Accepted values: root all #----------------------------------------------------- # AEROSOL NUMBER EMISSIONS FOR CEDS in CESM - hplin 8/11/22 #----------------------------------------------------- -0 CEDS_SO4n_SHP $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_shp 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8909/8013 1 5 -0 CEDS_BCn_SHP $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_shp 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_OCn_SHP $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_shp 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 +0 CEDS_SO4n_SHP $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_shp 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8909/8013 1 5 +0 CEDS_BCn_SHP $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_shp 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 +0 CEDS_OCn_SHP $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_shp 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 #----------------------------------------------------- # // end AEROSOL NUMBER EMISSIONS FOR CEDS in CESM #----------------------------------------------------- + )))CEDSv2_SHIP (((CEDS_GBDMAPS_SHIP @@ -2412,9 +2704,11 @@ VerboseOnCores: root # Accepted values: root all )))CEDS_GBDMAPS_SHIP (((CEDS_SHIP_byFuelType -(((.not.CEDS_GBDMAPS_SHIP.and..not.CEDSv2_SHIP +(((.not.CEDS_GBDMAPS_SHIP +(((.not.CEDSv2_SHIP >>>include $ROOT/CEDS/v2020-08/HEMCO_Config.CEDS_GBD-MAPS_SHIP_byFuelType.rc -))).not.CEDS_GBDMAPS_SHIP.and..not.CEDSv2_SHIP +))).not.CEDSv2_SHIP +))).not.CEDS_GBDMAPS_SHIP )))CEDS_SHIP_byFuelType #============================================================================== @@ -2422,39 +2716,41 @@ VerboseOnCores: root # Accepted values: root all # CEDS (historical) or Shared Socioeconomic Pathways (future), consistent with # the CMIP6 simulation experimental design. # -# Make sure that the desired $GCAP2SCENARIO is set above in SECTION SETTINGS +# Make sure that the desired $GCAPSCENARIO is set above in SECTION SETTINGS # #============================================================================== (((CMIP6_SHIP -0 CMIP6_CO_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO_shp 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 10 5 -0 CMIP6_SOAP_SHP - - - - - - SOAP 26/280 10 5 -0 CMIP6_SO2_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 SO2_shp 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 10 5 -0 CMIP6_SO4_SHP - - - - - - SO4 63 10 5 -0 CMIP6_pFe_SHP - - - - - - pFe 66 10 5 -0 CMIP6_NH3_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NH3_shp 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 10 5 -0 CMIP6_BCPI_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BC_shp 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 10 5 -0 CMIP6_BCPO_SHP - - - - - - BCPO 71 10 5 -0 CMIP6_OCPI_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 OC_shp 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 10 5 -0 CMIP6_OCPO_SHP - - - - - - OCPO 73 10 5 +0 CMIP6_CO_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO_shp 1750-2100/1-12/1/0 C xy kg/m2/s CO 26 10 5 +0 CMIP6_SOAP_SHP - - - - - - SOAP 26/280 10 5 +0 CMIP6_SO2_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 SO2_shp 1750-2100/1-12/1/0 C xy kg/m2/s SO2 - 10 5 +0 CMIP6_SO4_SHP - - - - - - SO4 63 10 5 +0 CMIP6_pFe_SHP - - - - - - pFe 66 10 5 +0 CMIP6_NH3_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NH3_shp 1750-2100/1-12/1/0 C xy kg/m2/s NH3 - 10 5 +0 CMIP6_BCPI_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BC_shp 1750-2100/1-12/1/0 C xy kg/m2/s BCPI 70 10 5 +0 CMIP6_BCPO_SHP - - - - - - BCPO 71 10 5 +0 CMIP6_OCPI_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 OC_shp 1750-2100/1-12/1/0 C xy kg/m2/s OCPI 72 10 5 +0 CMIP6_OCPO_SHP - - - - - - OCPO 73 10 5 +0 CMIP6_POG1_SHP - - - - - - POG1 74/76 10 5 +0 CMIP6_POG2_SHP - - - - - - POG2 74/77 10 5 # NOTE: EOH files in CMIP6/v2021-01 are actually VOC1 (total alchohols) and are split into MOH, EOH, ROH here -0 CMIP6_MOH_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 EOH_shp 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 10 5 -0 CMIP6_EOH_SHP - - - - - - EOH 26/91 10 5 -0 CMIP6_ROH_SHP - - - - - - ROH 26/92 10 5 -0 CMIP6_C2H6_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H6_shp 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 10 5 -0 CMIP6_C3H8_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C3H8_shp 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 10 5 -0 CMIP6_C4H10_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_butanes_shp 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 10 5 -0 CMIP6_C5H12_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_pentanes_shp 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 10 5 -0 CMIP6_C6H14_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_hexanes_shp 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 10 5 -0 CMIP6_C2H4_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H4_shp 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 10 5 -0 CMIP6_PRPE_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 PRPE_shp 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 10 5 -0 CMIP6_C2H2_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H2_shp 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 10 5 -0 CMIP6_BENZ_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BENZ_shp 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 10 5 -0 CMIP6_TOLU_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 TOLU_shp 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 10 5 -0 CMIP6_XYLE_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 XYLE_shp 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 10 5 -0 CMIP6_CH2O_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH2O_shp 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 10 5 -0 CMIP6_ALD2_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALD2_shp 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 10 5 -0 CMIP6_MEK_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MEK_shp 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 10 5 -0 CMIP6_HCOOH_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 HCOOH_shp 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 10 5 +0 CMIP6_MOH_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 EOH_shp 1750-2100/1-12/1/0 C xy kg/m2/s MOH 26/90 10 5 +0 CMIP6_EOH_SHP - - - - - - EOH 26/91 10 5 +0 CMIP6_ROH_SHP - - - - - - ROH 26/92 10 5 +0 CMIP6_C2H6_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H6_shp 1750-2100/1-12/1/0 C xy kg/m2/s C2H6 26 10 5 +0 CMIP6_C3H8_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C3H8_shp 1750-2100/1-12/1/0 C xy kg/m2/s C3H8 26 10 5 +0 CMIP6_C4H10_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_butanes_shp 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 10 5 +0 CMIP6_C5H12_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_pentanes_shp 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 10 5 +0 CMIP6_C6H14_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_hexanes_shp 1750-2100/1-12/1/0 C xy kg/m2/s ALK4 26 10 5 +0 CMIP6_C2H4_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H4_shp 1750-2100/1-12/1/0 C xy kg/m2/s C2H4 26 10 5 +0 CMIP6_PRPE_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 PRPE_shp 1750-2100/1-12/1/0 C xy kg/m2/s PRPE 26 10 5 +0 CMIP6_C2H2_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H2_shp 1750-2100/1-12/1/0 C xy kg/m2/s C2H2 26 10 5 +0 CMIP6_BENZ_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BENZ_shp 1750-2100/1-12/1/0 C xy kg/m2/s BENZ 26 10 5 +0 CMIP6_TOLU_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 TOLU_shp 1750-2100/1-12/1/0 C xy kg/m2/s TOLU 26 10 5 +0 CMIP6_XYLE_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 XYLE_shp 1750-2100/1-12/1/0 C xy kg/m2/s XYLE 26 10 5 +0 CMIP6_CH2O_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH2O_shp 1750-2100/1-12/1/0 C xy kg/m2/s CH2O 26 10 5 +0 CMIP6_ALD2_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALD2_shp 1750-2100/1-12/1/0 C xy kg/m2/s ALD2 26 10 5 +0 CMIP6_MEK_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MEK_shp 1750-2100/1-12/1/0 C xy kg/m2/s MEK 26 10 5 +0 CMIP6_HCOOH_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 HCOOH_shp 1750-2100/1-12/1/0 C xy kg/m2/s HCOOH 26 10 5 )))CMIP6_SHIP #------------------------------------------------------------------------------ @@ -2471,9 +2767,9 @@ VerboseOnCores: root # Accepted values: root all 102 ICOADS_SHIP_NO $ROOT/ICOADS_SHIP/v2014-07/ICOADS.generic.1x1.nc NO 2002/1-12/1/0 C xy kg/m2/s NO 1/5 10 1 )))ICOADS_SHIP -(((HTAP_SHIP -102 HTAP_SHIP_NO $ROOT/HTAP/v2015-03/EDGAR_HTAP_NO_SHIPS.generic.01x01.nc emi_no 2008-2010/1/1/0 C xy kg/m2/s NO 1/27 10 2 -)))HTAP_SHIP +(((HTAPv3_SHIP +102 HTAPv3_NO_SHP $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NO_0.1x0.1_$YYYY.nc NO_SHP 2000-2018/1-12/1/0 C xy kg/m2/s NO 25 10 4 +)))HTAPv3_SHIP (((CEDSv2_SHIP 102 CEDS_NO_SHP $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_shp 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 10 5 @@ -2497,25 +2793,20 @@ VerboseOnCores: root # Accepted values: root all 0 ICOADS_SHIP_NO $ROOT/ICOADS_SHIP/v2014-07/ICOADS.generic.1x1.nc NO 2002/1-12/1/0 C xy kg/m2/s NO 1/5 10 1 )))ICOADS_SHIP -(((HTAP_SHIP -0 HTAP_SHIP_NO $ROOT/HTAP/v2015-03/EDGAR_HTAP_NO_SHIPS.generic.01x01.nc emi_no 2008-2010/1/1/0 C xy kg/m2/s NO 1/27 10 2 -)))HTAP_SHIP +(((HTAPv3_SHIP +0 HTAPv3_NO_SHIP $ROOT/HTAPv3/v2022-12/$YYYY/HTAPv3_NO_0.1x0.1_$YYYY.nc NO_SHP 2000-2018/1-12/1/0 C xy kg/m2/s NO 25 10 4 +)))HTAPv3_SHIP (((CEDSv2_SHIP -0 CEDS_NO_SHP $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_shp 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 10 5 +0 CEDS_NO_SHP $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_shp 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 10 5 )))CEDSv2_SHIP -(((CMIP6_SHIP -102 CMIP6_NO_SHP $ROOT/CMIP6/v2021-01/$SCENARIO/$SCENARIO_$YYYY.nc4 NO_shp 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 10 5 -)))CMIP6_SHIP - -(((NEI2011_SHIP_HOURLY -0 NEI11_C3MARINE_NO $ROOT/NEI2011/v2015-03/$MM/NEI11_0.1x0.1_2011$MM$DD_c3marine.nc NO 2006-2013/1-12/1-31/* C xy kg/m2/s NO 251/1007 10 50 -0 NEI11_C3MARINE_NO2 $ROOT/NEI2011/v2015-03/$MM/NEI11_0.1x0.1_2011$MM$DD_c3marine.nc NO2 2006-2013/1-12/1-31/* C xy kg/m2/s NO2 251/1007 10 50 -)))NEI2011_SHIP_HOURLY +(((CEDS_GBDMAPS_SHIP +0 CEDS_NO_SHP $ROOT/CEDS/v2020-08/$YYYY/NO-em-total-anthro_CEDS_$YYYY.nc NO_shp 1970-2017/1-12/1/0 C xy kg/m2/s NO 25 10 5 +)))CEDS_GBDMAPS_SHIP (((CMIP6_SHIP -102 CMIP6_NO_SHP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NO_shp 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 10 5 +102 CMIP6_NO_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NO_shp 1750-2100/1-12/1/0 C xy kg/m2/s NO 25 10 5 )))CMIP6_SHIP ))).not.ParaNOx @@ -2528,6 +2819,12 @@ VerboseOnCores: root # Accepted values: root all # Data files are for 2019, but scale factors from 1990-2019 can be applied # in order to get year-specific emissions. See the notes in the AEIC2019 # scale factor section below for more information. +# +# Notes for CESM: +# (1) Map to species so4_a1 for SO4 instead of SO4 +# (2) Add SO4n and map to species num_a1 with custom scaling +# (3) Change BCPI/OCPI to BC/OC and map to species bc_a4 and pom_a4 +# (4) Add BCn and OCn and map to num_a4 for both with custom scaling #============================================================================== (((AEIC2019_DAILY 0 AEIC19_DAILY_NO $ROOT/AEIC2019/v2022-03/2019/$MM/AEIC_2019$MM$DD.0.5x0.625.36L.nc NO 2019/1-12/1-31/0 C xyz kg/m2/s NO 241/240 20 1 @@ -2536,13 +2833,16 @@ VerboseOnCores: root # Accepted values: root all 0 AEIC19_DAILY_CO $ROOT/AEIC2019/v2022-03/2019/$MM/AEIC_2019$MM$DD.0.5x0.625.36L.nc CO 2019/1-12/1-31/0 C xyz kg/m2/s CO 241 20 1 0 AEIC19_DAILY_SOAP - - - - - - SOAP 241/280 20 1 0 AEIC19_DAILY_SO2 $ROOT/AEIC2019/v2022-03/2019/$MM/AEIC_2019$MM$DD.0.5x0.625.36L.nc FUELBURN 2019/1-12/1-31/0 C xyz kg/m2/s SO2 241/111 20 1 -0 AEIC19_DAILY_SO4 - - - - - - so4_a1 241/112 20 1 -0 AEIC19_DAILY_SO4n - - - - - - num_a1 8011/241/112 20 1 +0 AEIC19_DAILY_pFe - - - - - - pFe 241/111/66 20 1 +0 AEIC19_DAILY_SO4 - - - - - - so4_a1 241/112 20 1 +0 AEIC19_DAILY_SO4n - - - - - - num_a1 8011/241/112 20 1 0 AEIC19_DAILY_H2O - - - - - - H2O 241/120 20 1 -0 AEIC19_DAILY_BC $ROOT/AEIC2019/v2022-03/2019/$MM/AEIC_2019$MM$DD.0.5x0.625.36L.nc BC 2019/1-12/1-31/0 C xyz kg/m2/s bc_a4 241 20 1 +0 AEIC19_DAILY_BC $ROOT/AEIC2019/v2022-03/2019/$MM/AEIC_2019$MM$DD.0.5x0.625.36L.nc BC 2019/1-12/1-31/0 C xyz kg/m2/s bc_a4 241 20 1 0 AEIC19_DAILY_BCn - - - - - - num_a4 8041/241 20 1 0 AEIC19_DAILY_OC $ROOT/AEIC2019/v2022-03/2019/$MM/AEIC_2019$MM$DD.0.5x0.625.36L.nc OC 2019/1-12/1-31/0 C xyz kg/m2/s pom_a4 241 20 1 0 AEIC19_DAILY_OCn - - - - - - num_a4 8042/241 20 1 +0 AEIC19_DAILY_POG1 - - - - - - POG1 241/74/76 20 1 +0 AEIC19_DAILY_POG2 - - - - - - POG2 241/74/77 20 1 0 AEIC19_DAILY_ACET $ROOT/AEIC2019/v2022-03/2019/$MM/AEIC_2019$MM$DD.0.5x0.625.36L.nc HC 2019/1-12/1-31/0 C xyz kg/m2/s ACET 241/114/101 20 1 0 AEIC19_DAILY_ALD2 - - - - - - ALD2 241/114/102 20 1 0 AEIC19_DAILY_ALK4 - - - - - - ALK4 241/114/103 20 1 @@ -2560,13 +2860,16 @@ VerboseOnCores: root # Accepted values: root all 0 AEIC19_MONMEAN_CO $ROOT/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019$MM.0.5x0.625.36L.nc CO 2019/1-12/1/0 C xyz kg/m2/s CO 241 20 1 0 AEIC19_MONMEAN_SOAP - - - - - - SOAP 241/280 20 1 0 AEIC19_MONMEAN_SO2 $ROOT/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019$MM.0.5x0.625.36L.nc FUELBURN 2019/1-12/1/0 C xyz kg/m2/s SO2 241/111 20 1 -0 AEIC19_MONMEAN_SO4 - - - - - - so4_a1 241/112 20 1 -0 AEIC19_MONMEAN_SO4n - - - - - - num_a1 8011/241/112 20 1 +0 AEIC19_MONMEAN_pFe - - - - - - pFe 241/111/66 20 1 +0 AEIC19_MONMEAN_SO4 - - - - - - so4_a1 241/112 20 1 +0 AEIC19_MONMEAN_SO4n - - - - - - num_a1 8011/241/112 20 1 0 AEIC19_MONMEAN_H2O - - - - - - H2O 241/120 20 1 -0 AEIC19_MONMEAN_BC $ROOT/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019$MM.0.5x0.625.36L.nc BC 2019/1-12/1/0 C xyz kg/m2/s bc_a4 241 20 1 +0 AEIC19_MONMEAN_BC $ROOT/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019$MM.0.5x0.625.36L.nc BC 2019/1-12/1/0 C xyz kg/m2/s bc_a4 241 20 1 0 AEIC19_MONMEAN_BCn - - - - - - num_a4 8041/241 20 1 0 AEIC19_MONMEAN_OC $ROOT/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019$MM.0.5x0.625.36L.nc OC 2019/1-12/1/0 C xyz kg/m2/s pom_a4 241 20 1 0 AEIC19_MONMEAN_OCn - - - - - - num_a4 8042/241 20 1 +0 AEIC19_MONMEAN_POG1 - - - - - - POG1 241/74/76 20 1 +0 AEIC19_MONMEAN_POG2 - - - - - - POG2 241/74/77 20 1 0 AEIC19_MONMEAN_ACET $ROOT/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019$MM.0.5x0.625.36L.nc HC 2019/1-12/1/0 C xyz kg/m2/s ACET 241/114/101 20 1 0 AEIC19_MONMEAN_ALD2 - - - - - - ALD2 241/114/102 20 1 0 AEIC19_MONMEAN_ALK4 - - - - - - ALK4 241/114/103 20 1 @@ -2596,7 +2899,10 @@ VerboseOnCores: root # Accepted values: root all 0 RCP3PD_SOAP - - - - - - SOAP 280 1 1 0 RCP3PD_BCPO $ROOT/RCP/v2020-07/RCP_3PD/RCPs_anthro_BC_2005-2100_23474.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s BCPO - 1 1 0 RCP3PD_OCPO $ROOT/RCP/v2020-07/RCP_3PD/RCPs_anthro_OC_2005-2100_23474.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s OCPO - 1 1 +0 RCP3PD_POG1 - - - - - - POG1 74/76 1 1 +0 RCP3PD_POG2 - - - - - - POG2 74/77 1 1 0 RCP3PD_SO2 $ROOT/RCP/v2020-07/RCP_3PD/RCPs_anthro_SO2_2005-2100_23474.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s SO2 - 1 1 +0 RCP3PD_pFe - - - - - - pFe 66 1 1 0 RCP3PD_NH3 $ROOT/RCP/v2020-07/RCP_3PD/RCPs_anthro_NH3_2005-2100_23474.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s NH3 - 1 1 0 RCP3PD_C2H2 $ROOT/RCP/v2020-07/RCP_3PD/RCPs_anthro_acetylene_2005-2100_23474_kgC.nc ACCMIP 2005-2100/1/1/0 ID xy kgC/m2/s C2H2 59 1 1 0 RCP3PD_CH2O $ROOT/RCP/v2020-07/RCP_3PD/RCPs_anthro_formaldehyde_2005-2100_23474.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH2O - 1 1 @@ -2623,7 +2929,10 @@ VerboseOnCores: root # Accepted values: root all 0 RCP45_SOAP - - - - - - SOAP 280 1 1 0 RCP45_BCPO $ROOT/RCP/v2020-07/RCP_45/RCPs_anthro_BC_2005-2100_27424.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s BCPO - 1 1 0 RCP45_OCPO $ROOT/RCP/v2020-07/RCP_45/RCPs_anthro_OC_2005-2100_27424.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s OCPO - 1 1 +0 RCP45_POG1 - - - - - - POG1 74/76 1 1 +0 RCP45_POG2 - - - - - - POG2 74/77 1 1 0 RCP45_SO2 $ROOT/RCP/v2020-07/RCP_45/RCPs_anthro_SO2_2005-2100_27424.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s SO2 - 1 1 +0 RCP45_pFe - - - - - - pFe 66 1 1 0 RCP45_NH3 $ROOT/RCP/v2020-07/RCP_45/RCPs_anthro_NH3_2005-2100_27424.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s NH3 - 1 1 0 RCP45_C2H2 $ROOT/RCP/v2020-07/RCP_45/RCPs_anthro_acetylene_2005-2100_27424_kgC.nc ACCMIP 2005-2100/1/1/0 ID xy kgC/m2/s C2H2 59 1 1 0 RCP45_CH2O $ROOT/RCP/v2020-07/RCP_45/RCPs_anthro_formaldehyde_2005-2100_27424.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH2O - 1 1 @@ -2650,7 +2959,10 @@ VerboseOnCores: root # Accepted values: root all 0 RCP60_SOAP - - - - - - SOAP 280 1 1 0 RCP60_BCPO $ROOT/RCP/v2020-07/RCP_60/RCPs_anthro_BC_2005-2100_43190.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s BCPO - 1 1 0 RCP60_OCPO $ROOT/RCP/v2020-07/RCP_60/RCPs_anthro_OC_2005-2100_43190.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s OCPO - 1 1 +0 RCP60_POG1 - - - - - - POG1 74/76 1 1 +0 RCP60_POG2 - - - - - - POG2 74/77 1 1 0 RCP60_SO2 $ROOT/RCP/v2020-07/RCP_60/RCPs_anthro_SO2_2005-2100_43190.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s SO2 - 1 1 +0 RCP60_pFe - - - - - - pFe 66 1 1 0 RCP60_NH3 $ROOT/RCP/v2020-07/RCP_60/RCPs_anthro_NH3_2005-2100_43190.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s NH3 - 1 1 0 RCP60_C2H2 $ROOT/RCP/v2020-07/RCP_60/RCPs_anthro_acetylene_2005-2100_43190_kgC.nc ACCMIP 2005-2100/1/1/0 ID xy kgC/m2/s C2H2 59 1 1 0 RCP60_CH2O $ROOT/RCP/v2020-07/RCP_60/RCPs_anthro_formaldehyde_2005-2100_43190.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH2O - 1 1 @@ -2677,7 +2989,10 @@ VerboseOnCores: root # Accepted values: root all 0 RCP85_SOAP - - - - - - SOAP 280 1 1 0 RCP85_BCPO $ROOT/RCP/v2020-07/RCP_85/RCPs_anthro_BC_2005-2100_43533.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s BCPO - 1 1 0 RCP85_OCPO $ROOT/RCP/v2020-07/RCP_85/RCPs_anthro_OC_2005-2100_43533.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s OCPO - 1 1 +0 RCP85_POG1 - - - - - - POG1 74/76 1 1 +0 RCP85_POG2 - - - - - - POG2 74/77 1 1 0 RCP85_SO2 $ROOT/RCP/v2020-07/RCP_85/RCPs_anthro_SO2_2005-2100_43533.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s SO2 - 1 1 +0 RCP80_pFe - - - - - - pFe 66 1 1 0 RCP85_NH3 $ROOT/RCP/v2020-07/RCP_85/RCPs_anthro_NH3_2005-2100_43533.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s NH3 - 1 1 0 RCP85_C2H2 $ROOT/RCP/v2020-07/RCP_85/RCPs_anthro_acetylene_2005-2100_43533_kgC.nc ACCMIP 2005-2100/1/1/0 ID xy kgC/m2/s C2H2 59 1 1 0 RCP85_CH2O $ROOT/RCP/v2020-07/RCP_85/RCPs_anthro_formaldehyde_2005-2100_43533.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH2O - 1 1 @@ -2699,77 +3014,89 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- QFED2 biomass burning (v2.5r1) --- +# +# Note: Use EF instead of EFY when using CESM #============================================================================== (((QFED2 -0 QFED_ACET_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_acet.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s ACET 75/311 5 2 -0 QFED_ACET_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_acet.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s ACET 75/312 5 2 -0 QFED_ALD2_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ald2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s ALD2 75/311 5 2 -0 QFED_ALD2_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ald2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s ALD2 75/312 5 2 -0 QFED_ALK4_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_alk4.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s ALK4 75/311 5 2 -0 QFED_ALK4_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_alk4.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s ALK4 75/312 5 2 -0 QFED_BCPI_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_bc.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s BCPI 70/75/311 5 2 -0 QFED_BCPO_PBL - - - - - - BCPO 71/75/311 5 2 -0 QFED_BCPI_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_bc.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s BCPI 70/75/312 5 2 -0 QFED_BCPO_FT - - - - - - BCPO 71/75/312 5 2 -0 QFED_OCPI_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_oc.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s OCPI 72/75/311 5 2 -0 QFED_OCPO_PBL - - - - - - OCPO 73/75/311 5 2 -0 QFED_OCPI_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_oc.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s OCPI 72/75/312 5 2 -0 QFED_OCPO_FT - - - - - - OCPO 73/75/312 5 2 -0 QFED_C2H6_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c2h6.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s C2H6 75/311 5 2 -0 QFED_C2H6_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c2h6.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s C2H6 75/312 5 2 -0 QFED_C3H8_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c3h8.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s C3H8 75/311 5 2 -0 QFED_C3H8_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c3h8.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s C3H8 75/312 5 2 -0 QFED_CH2O_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ch2o.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s CH2O 75/311 5 2 -0 QFED_CH2O_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ch2o.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s CH2O 75/312 5 2 -0 QFED_CH4_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ch4.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s CH4 75/311 5 2 -0 QFED_CH4_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ch4.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s CH4 75/312 5 2 -0 QFED_CO_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_co.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s CO 54/75/311 5 2 -0 QFED_SOAP_PBL - - - - - - SOAP 54/75/281/311 5 2 -0 QFED_CO_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_co.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s CO 54/75/312 5 2 -0 QFED_SOAP_FT - - - - - - SOAP 54/75/281/312 5 2 -0 QFED_CO2_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_co2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s CO2 75/311 5 2 -0 QFED_CO2_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_co2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s CO2 75/312 5 2 -0 QFED_MEK_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_mek.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s MEK 75/311 5 2 -0 QFED_MEK_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_mek.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s MEK 75/312 5 2 -0 QFED_NH3_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_nh3.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s NH3 75/311 5 2 -0 QFED_NH3_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_nh3.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s NH3 75/312 5 2 -0 QFED_NO_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_no.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s NO 75/311 5 2 -0 QFED_NO_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_no.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s NO 75/312 5 2 -0 QFED_SO2_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_so2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s SO2 75/311 5 2 -0 QFED_SO2_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_so2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s SO2 75/312 5 2 -0 QFED_C3H6_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c3h6.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s PRPE 75/311 5 2 -0 QFED_C3H6_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c3h6.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s PRPE 75/312 5 2 +0 QFED_ACET_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_acet.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s ACET 75/311 5 2 +0 QFED_ACET_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_acet.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s ACET 75/312 5 2 +0 QFED_ALD2_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ald2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s ALD2 75/311 5 2 +0 QFED_ALD2_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ald2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s ALD2 75/312 5 2 +0 QFED_ALK4_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_alk4.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s ALK4 75/311 5 2 +0 QFED_ALK4_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_alk4.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s ALK4 75/312 5 2 +0 QFED_BCPI_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_bc.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s BCPI 70/75/311 5 2 +0 QFED_BCPO_PBL - - - - - - BCPO 71/75/311 5 2 +0 QFED_BCPI_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_bc.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s BCPI 70/75/312 5 2 +0 QFED_BCPO_FT - - - - - - BCPO 71/75/312 5 2 +0 QFED_OCPI_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_oc.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s OCPI 72/75/311 5 2 +0 QFED_OCPO_PBL - - - - - - OCPO 73/75/311 5 2 +0 QFED_POG1_PBL - - - - - - POG1 74/76/75/311 5 2 +0 QFED_POG2_PBL - - - - - - POG2 74/77/75/311 5 2 +0 QFED_OCPI_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_oc.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s OCPI 72/75/312 5 2 +0 QFED_OCPO_FT - - - - - - OCPO 73/75/312 5 2 +0 QFED_POG1_FT - - - - - - POG1 74/76/75/312 5 2 +0 QFED_POG2_FT - - - - - - POG2 74/77/75/312 5 2 +0 QFED_C2H6_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c2h6.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s C2H6 75/311 5 2 +0 QFED_C2H6_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c2h6.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s C2H6 75/312 5 2 +0 QFED_C3H8_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c3h8.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s C3H8 75/311 5 2 +0 QFED_C3H8_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c3h8.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s C3H8 75/312 5 2 +0 QFED_CH2O_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ch2o.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s CH2O 75/311 5 2 +0 QFED_CH2O_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ch2o.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s CH2O 75/312 5 2 +0 QFED_CH4_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ch4.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s CH4 75/311 5 2 +0 QFED_CH4_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_ch4.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s CH4 75/312 5 2 +0 QFED_CO_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_co.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s CO 54/75/311 5 2 +0 QFED_SOAP_PBL - - - - - - SOAP 54/75/281/311 5 2 +0 QFED_CO_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_co.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s CO 54/75/312 5 2 +0 QFED_SOAP_FT - - - - - - SOAP 54/75/281/312 5 2 +0 QFED_CO2_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_co2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s CO2 75/311 5 2 +0 QFED_CO2_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_co2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s CO2 75/312 5 2 +0 QFED_MEK_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_mek.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s MEK 75/311 5 2 +0 QFED_MEK_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_mek.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s MEK 75/312 5 2 +0 QFED_NH3_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_nh3.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s NH3 75/311 5 2 +0 QFED_NH3_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_nh3.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s NH3 75/312 5 2 +0 QFED_NO_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_no.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s NO 75/311 5 2 +0 QFED_NO_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_no.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s NO 75/312 5 2 +0 QFED_SO2_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_so2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s SO2 75/311 5 2 +0 QFED_pFe_PBL - - - - - - pFe 75/311/66 5 2 +0 QFED_SO2_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_so2.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s SO2 75/312 5 2 +0 QFED_pFe_FT - - - - - - pF3 75/312/66 5 2 +0 QFED_C3H6_PBL $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c3h6.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=1:PBL kg/m2/s PRPE 75/311 5 2 +0 QFED_C3H6_FT $ROOT/QFED/v2018-07/$YYYY/$MM/qfed2.emis_c3h6.006.$YYYY$MM$DD.nc4 biomass 2000-2022/1-12/1-31/0/+12hour EF xyL=PBL:5500m kg/m2/s PRPE 75/312 5 2 )))QFED2 #============================================================================== # --- GFAS biomass burning --- #============================================================================== (((GFAS -0 GFAS_CO $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc cofire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s CO 75 5 3 -0 GFAS_SOAP $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc cofire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s SOAP 75/281 5 3 -0 GFAS_NO $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc noxfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s NO 75 5 3 -0 GFAS_BCPI $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc bcfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s BCPI 70/75 5 3 -0 GFAS_BCPO $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc bcfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s BCPO 71/75 5 3 -0 GFAS_OCPI $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc ocfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s OCPI 72/75 5 3 -0 GFAS_OCPO $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc ocfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s OCPO 73/75 5 3 -0 GFAS_CO2 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc co2fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s CO2 75 5 3 -0 GFAS_CH4 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc ch4fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s CH4 75 5 3 -0 GFAS_SO2 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc so2fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s SO2 75 5 3 -0 GFAS_NH3 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc nh3fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s NH3 75 5 3 -0 GFAS_ACET $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c3h6ofire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s ACET 75 5 3 -0 GFAS_ALD2 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c2h4ofire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s ALD2 75 5 3 -0 GFAS_ALK4 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc hialkanesfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s ALK4 75 5 3 -0 GFAS_PRPE1 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc hialkenesfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s PRPE 75 5 3 -0 GFAS_PRPE2 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c3h6fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s PRPE 75 5 3 -0 GFAS_C2H6 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c2h6fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s C2H6 75 5 3 -0 GFAS_C3H8 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c3h8fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s C3H8 75 5 3 -0 GFAS_CH2O $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc ch2ofire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s CH2O 75 5 3 -0 GFAS_C2H4 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c2h4fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s C2H4 75 5 3 -0 GFAS_ISOP $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c5h8fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s ISOP 75 5 3 -0 GFAS_DMS $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c2h6sfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s DMS 75 5 3 -0 GFAS_TOLU $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c7h8fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s TOLU 75 5 3 -0 GFAS_BENZ $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c6h6fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s BENZ 75 5 3 -0 GFAS_XYLE $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c8h10fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s XYLE 75 5 3 +0 GFAS_CO $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc cofire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s CO 75 5 3 +0 GFAS_SOAP $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc cofire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s SOAP 75/281 5 3 +0 GFAS_CH3OH $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc ch3ohfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s MOH 75 5 3 +0 GFAS_NO $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc noxfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s NO 75 5 3 +0 GFAS_BCPI $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc bcfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s BCPI 70/75 5 3 +0 GFAS_BCPO $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc bcfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s BCPO 71/75 5 3 +0 GFAS_OCPI $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc ocfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s OCPI 72/75 5 3 +0 GFAS_OCPO $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc ocfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s OCPO 73/75 5 3 +0 GFAS_POG1 - - - - - - POG1 74/76/75 5 3 +0 GFAS_POG2 - - - - - - POG2 74/77/75 5 3 +0 GFAS_CO2 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc co2fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s CO2 75 5 3 +0 GFAS_CH4 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc ch4fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s CH4 75 5 3 +0 GFAS_SO2 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc so2fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s SO2 75 5 3 +0 GFAS_pFe $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc so2fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s pFe 75/66 5 3 +0 GFAS_NH3 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc nh3fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s NH3 75 5 3 +0 GFAS_ACET $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c3h6ofire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s ACET 75 5 3 +0 GFAS_ALD2 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c2h4ofire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s ALD2 75 5 3 +0 GFAS_ALK4 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc hialkanesfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s ALK4 75 5 3 +0 GFAS_PRPE1 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc hialkenesfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s PRPE 75 5 3 +0 GFAS_PRPE2 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c3h6fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s PRPE 75 5 3 +0 GFAS_C2H6 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c2h6fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s C2H6 75 5 3 +0 GFAS_C3H8 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c3h8fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s C3H8 75 5 3 +0 GFAS_CH2O $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc ch2ofire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s CH2O 75 5 3 +0 GFAS_C2H4 $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c2h4fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s C2H4 75 5 3 +0 GFAS_ISOP $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c5h8fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s ISOP 75 5 3 +0 GFAS_DMS $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c2h6sfire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s DMS 75 5 3 +0 GFAS_TOLU $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c7h8fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s TOLU 75 5 3 +0 GFAS_BENZ $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c6h6fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s BENZ 75 5 3 +0 GFAS_XYLE $ROOT/GFAS/v2018-09/$YYYY/GFAS_$YYYY$MM.nc c8h10fire 2003-2021/1-12/1-31/0 C xyL=1:scal300 kg/m2/s XYLE 75 5 3 )))GFAS #============================================================================== @@ -2777,41 +3104,73 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== (((BB4MIPS # 75 is time-of-day scaling -0 CMIP6_BB_CO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s CO 75 5 3 -0 CMIP6_BB_SOAP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CO_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s SOAP 75/281 5 3 -0 CMIP6_BB_NO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NO_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s NO 75 5 3 -0 CMIP6_BB_BCPI $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BC_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s BCPI 70/75 5 3 -0 CMIP6_BB_BCPO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BC_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s BCPO 71/75 5 3 -0 CMIP6_BB_OCPI $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 OC_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s OCPI 72/75 5 3 -0 CMIP6_BB_OCPO $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 OC_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s OCPO 73/75 5 3 -0 CMIP6_BB_SO2 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 SO2_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s SO2 75 5 3 -0 CMIP6_BB_NH3 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 NH3_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s NH3 75 5 3 -0 CMIP6_BB_ALD2 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALD2_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s ALD2 75 5 3 -0 CMIP6_BB_ALK4 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ALK4_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s ALK4 75 5 3 -0 CMIP6_BB_PRPE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 PRPE_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s PRPE 75 5 3 -0 CMIP6_BB_C2H6 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H6_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s C2H6 75 5 3 -0 CMIP6_BB_C3H8 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C3H8_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s C3H8 75 5 3 -0 CMIP6_BB_CH2O $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 CH2O_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s CH2O 75 5 3 -0 CMIP6_BB_C2H4 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 C2H4_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s C2H4 75 5 3 -0 CMIP6_BB_ISOP $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ISOP_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s ISOP 75 5 3 -0 CMIP6_BB_DMS $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 DMS_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s DMS 75 5 3 -0 CMIP6_BB_TOLU $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 TOLU_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s TOLU 75 5 3 -0 CMIP6_BB_BENZ $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 BENZ_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s BENZ 75 5 3 -0 CMIP6_BB_XYLE $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 XYLE_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s XYLE 75 5 3 -0 CMIP6_BB_H2 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 H2_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s H2 75 5 3 -0 CMIP6_BB_MTPA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MONOT_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s MTPA 75 5 3 -#0 CMIP6_BB_MTPO - - - - - - MTPO 75 5 3 -#0 CMIP6_BB_LIMO - - - - - - LIMO 75 5 3 -0 CMIP6_BB_EOH $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 EOH_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s EOH 75 5 3 -0 CMIP6_BB_MOH $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MOH_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s MOH 75 5 3 -0 CMIP6_BB_ACET - - - - - - ACET 79/75 5 3 -0 CMIP6_BB_MGLY $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MGLY_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s MGLY 75 5 3 -0 CMIP6_BB_ACTA $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 ACTA_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s ACTA 75 5 3 -0 CMIP6_BB_HCN $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 HCN_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s HCN 75 5 3 -0 CMIP6_BB_HCOOH $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 HCOOH_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s HCOOH 75 5 3 -0 CMIP6_BB_MEK $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_$YYYY.nc4 MEK_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s MEK 75 5 3 +0 CMIP6_BB_CO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s CO 75 5 3 +0 CMIP6_BB_SOAP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CO_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s SOAP 75/281 5 3 +0 CMIP6_BB_NO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NO_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s NO 75 5 3 +0 CMIP6_BB_BCPI $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BC_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s BCPI 70/75 5 3 +0 CMIP6_BB_BCPO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BC_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s BCPO 71/75 5 3 +0 CMIP6_BB_OCPI $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 OC_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s OCPI 72/75 5 3 +0 CMIP6_BB_OCPO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 OC_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s OCPO 73/75 5 3 +0 CMIP6_BB_POG1 - - - - - - POG1 74/76/75 5 3 +0 CMIP6_BB_POG2 - - - - - - POG2 74/77/75 5 3 +0 CMIP6_BB_SO2 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 SO2_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s SO2 75 5 3 +0 CMIP6_BB_pFe - - - - - - pFe 75/66 5 3 +0 CMIP6_BB_NH3 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 NH3_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s NH3 75 5 3 +0 CMIP6_BB_ALD2 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALD2_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s ALD2 75 5 3 +0 CMIP6_BB_ALK4 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ALK4_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s ALK4 75 5 3 +0 CMIP6_BB_PRPE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 PRPE_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s PRPE 75 5 3 +0 CMIP6_BB_C2H6 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H6_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s C2H6 75 5 3 +0 CMIP6_BB_C3H8 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C3H8_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s C3H8 75 5 3 +0 CMIP6_BB_CH2O $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH2O_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s CH2O 75 5 3 +0 CMIP6_BB_C2H4 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 C2H4_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s C2H4 75 5 3 +0 CMIP6_BB_ISOP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ISOP_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s ISOP 75 5 3 +0 CMIP6_BB_DMS $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 DMS_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s DMS 75 5 3 +0 CMIP6_BB_TOLU $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 TOLU_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s TOLU 75 5 3 +0 CMIP6_BB_BENZ $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 BENZ_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s BENZ 75 5 3 +0 CMIP6_BB_XYLE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 XYLE_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s XYLE 75 5 3 +0 CMIP6_BB_H2 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 H2_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s H2 75 5 3 +0 CMIP6_BB_MTPA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MONOT_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s MTPA 75 5 3 +#0 CMIP6_BB_MTPO - - - - - - MTPO 75 5 3 +#0 CMIP6_BB_LIMO - - - - - - LIMO 75 5 3 +0 CMIP6_BB_EOH $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 EOH_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s EOH 75 5 3 +0 CMIP6_BB_MOH $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MOH_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s MOH 75 5 3 +0 CMIP6_BB_ACET - - - - - - ACET 79/75 5 3 +0 CMIP6_BB_MGLY $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MGLY_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s MGLY 75 5 3 +0 CMIP6_BB_ACTA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 ACTA_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s ACTA 75 5 3 +0 CMIP6_BB_HCN $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 HCN_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s HCN 75 5 3 +0 CMIP6_BB_HCOOH $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 HCOOH_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s HCOOH 75 5 3 +0 CMIP6_BB_MEK $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 MEK_bbn 1750-2100/1-12/1/0 C xyL=1:PBL kg/m2/s MEK 75 5 3 )))BB4MIPS +#============================================================================== +# --- GFED4 biomass burning emissions climatology +# NOTE: +# - These emissions were generated for 2010-2019 using the GFED extension +# in a 0.5x0.625 HEMCO 3.6.1 standalone simulation. +#============================================================================== +(((GFED4_CLIMATOLOGY +0 GFED4_CLIM_ACET $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_ACET 2019/1-12/1/0 C xy kg/m2/s ACET - 5 1 +0 GFED4_CLIM_ALD2 $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_ALD2 2019/1-12/1/0 C xy kg/m2/s ALD2 - 5 1 +0 GFED4_CLIM_ALK4 $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_ALK4 2019/1-12/1/0 C xy kg/m2/s ALK4 - 5 1 +0 GFED4_CLIM_BCPI $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_BCPI 2019/1-12/1/0 C xy kg/m2/s BCPI - 5 1 +0 GFED4_CLIM_BCPO $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_BCPO 2019/1-12/1/0 C xy kg/m2/s BCPO - 5 1 +0 GFED4_CLIM_BENZ $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_BENZ 2019/1-12/1/0 C xy kg/m2/s BENZ - 5 1 +0 GFED4_CLIM_C2H6 $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_C2H6 2019/1-12/1/0 C xy kg/m2/s C2H6 - 5 1 +0 GFED4_CLIM_C3H8 $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_C3H8 2019/1-12/1/0 C xy kg/m2/s C3H8 - 5 1 +0 GFED4_CLIM_CH2O $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_ACET 2019/1-12/1/0 C xy kg/m2/s CH2O - 5 1 +0 GFED4_CLIM_CO $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_CO 2019/1-12/1/0 C xy kg/m2/s CO - 5 1 +0 GFED4_CLIM_EOH $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_EOH 2019/1-12/1/0 C xy kg/m2/s EOH - 5 1 +0 GFED4_CLIM_MEK $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_MEK 2019/1-12/1/0 C xy kg/m2/s MEK - 5 1 +0 GFED4_CLIM_NO $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_NO 2019/1-12/1/0 C xy kg/m2/s NO - 5 1 +0 GFED4_CLIM_OCPI $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_OCPI 2019/1-12/1/0 C xy kg/m2/s OCPI - 5 1 +0 GFED4_CLIM_OCPO $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_OCPO 2019/1-12/1/0 C xy kg/m2/s OCPO - 5 1 +0 GFED4_CLIM_PRPE $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_PRPE 2019/1-12/1/0 C xy kg/m2/s PRPE - 5 1 +0 GFED4_CLIM_SO2 $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_SO2 2019/1-12/1/0 C xy kg/m2/s SO2 - 5 1 +0 GFED4_CLIM_SOAP $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_SOAP 2019/1-12/1/0 C xy kg/m2/s SOAP - 5 1 +0 GFED4_CLIM_TOLU $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_TOLU 2019/1-12/1/0 C xy kg/m2/s TOLU - 5 1 +0 GFED4_CLIM_XYLE $ROOT/GFED4/v2023-03/GFED4_climatology_2010-2019_05x0625.nc GFED4_XYLE 2019/1-12/1/0 C xy kg/m2/s XYLE - 5 1 +)))GFED4_CLIMATOLOGY + #============================================================================== # --- Anthropogenic Fugitive, Combustion and Industrial Dust --- # (Philip et al., 2017, ERL) @@ -2824,40 +3183,43 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Offline dust emissions --- +# NOTE: Use flag C if running in CESM #============================================================================== (((OFFLINE_DUST (((.not.DustDead.or.DustGinoux -0 EMIS_DST1 $ROOT/OFFLINE_DUST/v2021-08/0.5x0.625/$YYYY/$MM/dust_emissions_05.$YYYY$MM$DD.nc EMIS_DST1 1980-2021/1-12/1-31/* C xy kg/m2/s DST1 - 3 2 -0 EMIS_DST2 $ROOT/OFFLINE_DUST/v2021-08/0.5x0.625/$YYYY/$MM/dust_emissions_05.$YYYY$MM$DD.nc EMIS_DST2 1980-2021/1-12/1-31/* C xy kg/m2/s DST2 - 3 2 -0 EMIS_DST3 $ROOT/OFFLINE_DUST/v2021-08/0.5x0.625/$YYYY/$MM/dust_emissions_05.$YYYY$MM$DD.nc EMIS_DST3 1980-2021/1-12/1-31/* C xy kg/m2/s DST3 - 3 2 -0 EMIS_DST4 $ROOT/OFFLINE_DUST/v2021-08/0.5x0.625/$YYYY/$MM/dust_emissions_05.$YYYY$MM$DD.nc EMIS_DST4 1980-2021/1-12/1-31/* C xy kg/m2/s DST4 - 3 2 +0 EMIS_DST1 $ROOT/OFFLINE_DUST/v2021-08/0.5x0.625/$YYYY/$MM/dust_emissions_05.$YYYY$MM$DD.nc EMIS_DST1 1980-2022/1-12/1-31/* C xy kg/m2/s DST1 - 3 2 +0 EMIS_DST2 $ROOT/OFFLINE_DUST/v2021-08/0.5x0.625/$YYYY/$MM/dust_emissions_05.$YYYY$MM$DD.nc EMIS_DST2 1980-2022/1-12/1-31/* C xy kg/m2/s DST2 - 3 2 +0 EMIS_DST3 $ROOT/OFFLINE_DUST/v2021-08/0.5x0.625/$YYYY/$MM/dust_emissions_05.$YYYY$MM$DD.nc EMIS_DST3 1980-2022/1-12/1-31/* C xy kg/m2/s DST3 - 3 2 +0 EMIS_DST4 $ROOT/OFFLINE_DUST/v2021-08/0.5x0.625/$YYYY/$MM/dust_emissions_05.$YYYY$MM$DD.nc EMIS_DST4 1980-2022/1-12/1-31/* C xy kg/m2/s DST4 - 3 2 ))).not.DustDead.or.DustGinoux )))OFFLINE_DUST #============================================================================== # --- Offline biogenic VOC emissions --- +# NOTE: Use flag C if running in CESM #============================================================================== (((OFFLINE_BIOGENICVOC -0 BIOGENIC_ACET $ROOT/OFFLINE_BIOVOC/v2019-10/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc ACET_MEGAN 1980-2021/1-12/1-31/* C xy kgC/m2/s ACET 40 4 2 -0 BIOGENIC_ALD2 $ROOT/OFFLINE_BIOVOC/v2019-10/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc ALD2_MEGAN 1980-2021/1-12/1-31/* C xy kgC/m2/s ALD2 41 4 2 -0 BIOGENIC_C2H4 $ROOT/OFFLINE_BIOVOC/v2019-10/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc C2H4_MEGAN 1980-2021/1-12/1-31/* C xy kgC/m2/s C2H4 44 4 2 -0 BIOGENIC_EOH $ROOT/OFFLINE_BIOVOC/v2019-10/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc EOH_MEGAN 1980-2021/1-12/1-31/* C xy kgC/m2/s EOH 47 4 2 -0 BIOGENIC_ISOP $ROOT/OFFLINE_BIOVOC/v2019-10/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc ISOP_MEGAN 1980-2021/1-12/1-31/* C xy kgC/m2/s ISOP 61 4 2 -0 BIOGENIC_ISOP_SOAP - - - - - - SOAP 610 4 2 -0 BIOGENIC_ISOP_SOAS - - - - - - SOAS 610 4 2 -0 BIOGENIC_LIMO $ROOT/OFFLINE_BIOVOC/v2019-10/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc LIMO_MEGAN 1980-2021/1-12/1-31/* C xy kgC/m2/s LIMO - 4 2 -0 BIOGENIC_LIMO_SOAP - - - - - - SOAP 611 4 2 -0 BIOGENIC_LIMO_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_MTPA $ROOT/OFFLINE_BIOVOC/v2019-10/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc MTPA_MEGAN 1980-2021/1-12/1-31/* C xy kgC/m2/s MTPA - 4 2 -0 BIOGENIC_MTPA_SOAP - - - - - - SOAP 611 4 2 -0 BIOGENIC_MTPA_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_MTPO $ROOT/OFFLINE_BIOVOC/v2019-10/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc MTPO_MEGAN 1980-2021/1-12/1-31/* C xy kgC/m2/s MTPO - 4 2 -0 BIOGENIC_MTPO_SOAP - - - - - - SOAP 611 4 2 -0 BIOGENIC_MTPO_SOAS - - - - - - SOAS 611 4 2 -0 BIOGENIC_PRPE $ROOT/OFFLINE_BIOVOC/v2019-10/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc PRPE_MEGAN 1980-2021/1-12/1-31/* C xy kgC/m2/s PRPE 49 4 2 -0 BIOGENIC_SESQ $ROOT/OFFLINE_BIOVOC/v2019-10/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc SESQ_MEGAN 1980-2021/1-12/1-31/* C xy kgC/m2/s SESQ - 4 2 -0 BIOGENIC_SESQ_SOAP - - - - - - SOAP 612 4 2 -0 BIOGENIC_SESQ_SOAS - - - - - - SOAS 612 4 2 +0 BIOGENIC_ACET $ROOT/OFFLINE_BIOVOC/v2021-12/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc ACET_MEGAN 1980-2022/1-12/1-31/* C xy kg/m2/s ACET - 4 2 +0 BIOGENIC_ALD2 $ROOT/OFFLINE_BIOVOC/v2021-12/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc ALD2_MEGAN 1980-2022/1-12/1-31/* C xy kg/m2/s ALD2 - 4 2 +0 BIOGENIC_C2H4 $ROOT/OFFLINE_BIOVOC/v2021-12/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc C2H4_MEGAN 1980-2022/1-12/1-31/* C xy kg/m2/s C2H4 - 4 2 +0 BIOGENIC_EOH $ROOT/OFFLINE_BIOVOC/v2021-12/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc EOH_MEGAN 1980-2022/1-12/1-31/* C xy kg/m2/s EOH - 4 2 +0 BIOGENIC_ISOP $ROOT/OFFLINE_BIOVOC/v2021-12/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc ISOP_MEGAN 1980-2022/1-12/1-31/* C xy kg/m2/s ISOP - 4 2 +0 BIOGENIC_ISOP_SOAP - - - - - - SOAP 610 4 2 +0 BIOGENIC_ISOP_SOAS - - - - - - SOAS 610 4 2 +0 BIOGENIC_LIMO $ROOT/OFFLINE_BIOVOC/v2021-12/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc LIMO_MEGAN 1980-2022/1-12/1-31/* C xy kg/m2/s LIMO - 4 2 +0 BIOGENIC_LIMO_SOAP - - - - - - SOAP 611 4 2 +0 BIOGENIC_LIMO_SOAS - - - - - - SOAS 611 4 2 +0 BIOGENIC_MOH $ROOT/OFFLINE_BIOVOC/v2021-12/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc MOH_MEGAN 1980-2022/1-12/1-31/* C xy kg/m2/s MOH - 4 2 +0 BIOGENIC_MTPA $ROOT/OFFLINE_BIOVOC/v2021-12/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc MTPA_MEGAN 1980-2022/1-12/1-31/* C xy kg/m2/s MTPA - 4 2 +0 BIOGENIC_MTPA_SOAP - - - - - - SOAP 611 4 2 +0 BIOGENIC_MTPA_SOAS - - - - - - SOAS 611 4 2 +0 BIOGENIC_MTPO $ROOT/OFFLINE_BIOVOC/v2021-12/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc MTPO_MEGAN 1980-2022/1-12/1-31/* C xy kg/m2/s MTPO - 4 2 +0 BIOGENIC_MTPO_SOAP - - - - - - SOAP 611 4 2 +0 BIOGENIC_MTPO_SOAS - - - - - - SOAS 611 4 2 +0 BIOGENIC_PRPE $ROOT/OFFLINE_BIOVOC/v2021-12/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc PRPE_MEGAN 1980-2022/1-12/1-31/* C xy kg/m2/s PRPE - 4 2 +0 BIOGENIC_SESQ $ROOT/OFFLINE_BIOVOC/v2021-12/0.5x0.625/$YYYY/$MM/biovoc_05.$YYYY$MM$DD.nc SESQ_MEGAN 1980-2022/1-12/1-31/* C xy kg/m2/s SESQ - 4 2 +0 BIOGENIC_SESQ_SOAP - - - - - - SOAP 612 4 2 +0 BIOGENIC_SESQ_SOAS - - - - - - SOAS 612 4 2 )))OFFLINE_BIOGENICVOC #============================================================================== @@ -2873,28 +3235,31 @@ VerboseOnCores: root # Accepted values: root all # # This means that the below entries differ from GEOS-Chem "Classic" and others # by not having SALA / SALC entries. (hplin, 5/23/23) +# +# NOTE: Use flag C if running in CESM #============================================================================== (((OFFLINE_SEASALT (((.not.SeaSalt -0 SEASALT_SALAAL $ROOT/OFFLINE_SEASALT/v2019-01/0.5x0.625/$YYYY/$MM/seasalt_05.$YYYY$MM$DD.nc SALA_TOTAL 1980-2021/1-12/1-31/* C xy kg/m2/s SALAAL 615 3 2 -0 SEASALT_SALACL - - - - - - SALACL 616 3 2 +0 SEASALT_SALAAL $ROOT/OFFLINE_SEASALT/v2019-01/0.5x0.625/$YYYY/$MM/seasalt_05.$YYYY$MM$DD.nc SALA_TOTAL 1980-2021/1-12/1-31/* C xy kg/m2/s SALAAL 615 3 2 +0 SEASALT_SALACL - - - - - - SALACL 616 3 2 (((CalcBrSeasalt -0 SEASALT_BrSALA - - - - - - BrSALA 617 3 2 +0 SEASALT_BrSALA - - - - - - BrSALA 617 3 2 )))CalcBrSeasalt -0 SEASALT_SALCAL $ROOT/OFFLINE_SEASALT/v2019-01/0.5x0.625/$YYYY/$MM/seasalt_05.$YYYY$MM$DD.nc SALC_TOTAL 1980-2021/1-12/1-31/* C xy kg/m2/s SALCAL 615 3 2 -0 SEASALT_SALCCL - - - - - - SALCCL 616 3 2 +0 SEASALT_SALCAL $ROOT/OFFLINE_SEASALT/v2019-01/0.5x0.625/$YYYY/$MM/seasalt_05.$YYYY$MM$DD.nc SALC_TOTAL 1980-2021/1-12/1-31/* C xy kg/m2/s SALCAL 615 3 2 +0 SEASALT_SALCCL - - - - - - SALCCL 616 3 2 (((CalcBrSeasalt -0 SEASALT_BrSALC - - - - - - BrSALC 617 3 2 +0 SEASALT_BrSALC - - - - - - BrSALC 617 3 2 )))CalcBrSeasalt ))).not.SeaSalt )))OFFLINE_SEASALT #============================================================================== # --- Offline soil NOx emissions --- +# NOTE: Use flag C if running in CESM #============================================================================== (((OFFLINE_SOILNOX (((.not.SoilNOx -0 SOILNOX_NO $ROOT/OFFLINE_SOILNOX/v2019-01/0.5x0.625/$YYYY/$MM/soilnox_05.$YYYY$MM$DD.nc SOIL_NOx 1980-2021/1-12/1-31/* C xy kg/m2/s NO - 3 2 +0 SOILNOX_NO $ROOT/OFFLINE_SOILNOX/v2021-12/0.5x0.625/$YYYY/$MM/soilnox_05.$YYYY$MM$DD.nc SOIL_NOx 1980-2022/1-12/1-31/* C xy kg/m2/s NO - 3 2 ))).not.SoilNOx )))OFFLINE_SOILNOX @@ -3008,6 +3373,7 @@ VerboseOnCores: root # Accepted values: root all )))SeaSalt (((TOMAS_Jeagle 130 MODIS_CHLR $ROOT/MODIS_CHLR/v2019-11/MODIS.CHLRv.V5.generic.025x025.$YYYY.nc MODIS 2005-2014/1-12/1/0 C xy 1 * - 1 1 +130 MULTISEAICE $ROOT/MULTI_ICE/v2021-07/multiyearice.merra2.05x0625.$YYYY.nc FRSEAICE 1984-2017/1-12/1-31/0 C xy 1 * - 1 1 # Climatology CHLR #130 MODIS_CHLR $ROOT/MODIS_CHLR/v2019-11/MODIS.CHLRv.V5.generic.025x025.Clim.nc MODIS 2007/1-12/1/0 C xy 1 * - 1 1 @@ -3062,7 +3428,9 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- GFED biomass burning emissions (Extension 111) -# NOTE: These are the base emissions in kgDM/m2/s. +# NOTES: +# - These are the base emissions in kgDM/m2/s +# - If a year is not available, you may use the GFED4_CLIMATOLOGY option instead #============================================================================== (((GFED4 111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 @@ -3159,7 +3527,7 @@ VerboseOnCores: root # Accepted values: root all #--- Archived GMI OH concentrations --- #============================================================================== (((GMI_OH -* GMI_OH $ROOT/GMI/v2015-02/gmi.clim.OH.geos5.2x25.nc species 2005/1-12/1/0 C xyz v/v * - 1 1 +* GMI_OH $ROOT/v2015-02/gmi.clim.OH.geos5.2x25.nc species 2005/1-12/1/0 C xyz v/v * - 1 1 )))GMI_OH #============================================================================== @@ -3168,250 +3536,250 @@ VerboseOnCores: root # Accepted values: root all # Used for linearized mesospheric chemistry #============================================================================== (((GMI_PROD_LOSS -* GMI_LOSS_A3O2 $ROOT/GMI/v2015-02/gmi.clim.A3O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 A3O2 - 1 1 -* GMI_PROD_A3O2 $ROOT/GMI/v2015-02/gmi.clim.A3O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s A3O2 - 1 1 -* GMI_LOSS_ACET $ROOT/GMI/v2015-02/gmi.clim.ACET.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ACET - 1 1 -* GMI_PROD_ACET $ROOT/GMI/v2015-02/gmi.clim.ACET.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ACET - 1 1 -* GMI_LOSS_ACTA $ROOT/GMI/v2015-02/gmi.clim.ACTA.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ACTA - 1 1 -* GMI_PROD_ACTA $ROOT/GMI/v2015-02/gmi.clim.ACTA.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ACTA - 1 1 -* GMI_LOSS_ALD2 $ROOT/GMI/v2015-02/gmi.clim.ALD2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ALD2 - 1 1 -* GMI_PROD_ALD2 $ROOT/GMI/v2015-02/gmi.clim.ALD2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ALD2 - 1 1 -* GMI_LOSS_ALK4 $ROOT/GMI/v2015-02/gmi.clim.ALK4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ALK4 - 1 1 -* GMI_PROD_ALK4 $ROOT/GMI/v2015-02/gmi.clim.ALK4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ALK4 - 1 1 -* GMI_LOSS_ATO2 $ROOT/GMI/v2015-02/gmi.clim.ATO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ATO2 - 1 1 -* GMI_PROD_ATO2 $ROOT/GMI/v2015-02/gmi.clim.ATO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ATO2 - 1 1 -* GMI_LOSS_B3O2 $ROOT/GMI/v2015-02/gmi.clim.B3O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 B3O2 - 1 1 -* GMI_PROD_B3O2 $ROOT/GMI/v2015-02/gmi.clim.B3O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s B3O2 - 1 1 -#* GMI_LOSS_Br $ROOT/GMI/v2015-02/gmi.clim.Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Br - 1 1 -#* GMI_PROD_Br $ROOT/GMI/v2015-02/gmi.clim.Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Br - 1 1 -#* GMI_LOSS_BrCl $ROOT/GMI/v2015-02/gmi.clim.BrCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrCl - 1 1 -#* GMI_PROD_BrCl $ROOT/GMI/v2015-02/gmi.clim.BrCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrCl - 1 1 -#* GMI_LOSS_BrO $ROOT/GMI/v2015-02/gmi.clim.BrO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrO - 1 1 -#* GMI_PROD_BrO $ROOT/GMI/v2015-02/gmi.clim.BrO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrO - 1 1 -#* GMI_LOSS_BrNO3 $ROOT/GMI/v2015-02/gmi.clim.BrONO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrNO3 - 1 1 -#* GMI_PROD_BrNO3 $ROOT/GMI/v2015-02/gmi.clim.BrONO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrNO3 - 1 1 -* GMI_LOSS_C2H6 $ROOT/GMI/v2015-02/gmi.clim.C2H6.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 C2H6 - 1 1 -* GMI_PROD_C2H6 $ROOT/GMI/v2015-02/gmi.clim.C2H6.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s C2H6 - 1 1 -* GMI_LOSS_C3H8 $ROOT/GMI/v2015-02/gmi.clim.C3H8.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 C3H8 - 1 1 -* GMI_PROD_C3H8 $ROOT/GMI/v2015-02/gmi.clim.C3H8.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s C3H8 - 1 1 -* GMI_LOSS_CCl4 $ROOT/GMI/v2015-02/gmi.clim.CCl4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CCl4 - 1 1 -* GMI_PROD_CCl4 $ROOT/GMI/v2015-02/gmi.clim.CCl4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CCl4 - 1 1 -#* GMI_LOSS_H1202 $ROOT/GMI/v2015-02/gmi.clim.CF2Br2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1202 - 1 1 -#* GMI_PROD_H1202 $ROOT/GMI/v2015-02/gmi.clim.CF2Br2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1202 - 1 1 -* GMI_LOSS_CFC12 $ROOT/GMI/v2015-02/gmi.clim.CF2Cl2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC12 - 1 1 -* GMI_PROD_CFC12 $ROOT/GMI/v2015-02/gmi.clim.CF2Cl2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC12 - 1 1 -* GMI_LOSS_H1211 $ROOT/GMI/v2015-02/gmi.clim.CF2ClBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1211 - 1 1 -* GMI_PROD_H1211 $ROOT/GMI/v2015-02/gmi.clim.CF2ClBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1211 - 1 1 -#* GMI_LOSS_H1311 $ROOT/GMI/v2015-02/gmi.clim.CF3Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1311 - 1 1 -#* GMI_PROD_H1311 $ROOT/GMI/v2015-02/gmi.clim.CF3Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1311 - 1 1 -* GMI_LOSS_CFC113 $ROOT/GMI/v2015-02/gmi.clim.CFC113.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC113 - 1 1 -* GMI_PROD_CFC113 $ROOT/GMI/v2015-02/gmi.clim.CFC113.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC113 - 1 1 -* GMI_LOSS_CFC114 $ROOT/GMI/v2015-02/gmi.clim.CFC114.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC114 - 1 1 -* GMI_PROD_CFC114 $ROOT/GMI/v2015-02/gmi.clim.CFC114.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC114 - 1 1 -* GMI_LOSS_CFC115 $ROOT/GMI/v2015-02/gmi.clim.CFC115.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC115 - 1 1 -* GMI_PROD_CFC115 $ROOT/GMI/v2015-02/gmi.clim.CFC115.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC115 - 1 1 -* GMI_LOSS_CFC11 $ROOT/GMI/v2015-02/gmi.clim.CFCl3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC11 - 1 1 -* GMI_PROD_CFC11 $ROOT/GMI/v2015-02/gmi.clim.CFCl3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC11 - 1 1 -* GMI_LOSS_CH2O $ROOT/GMI/v2015-02/gmi.clim.CH2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH2O - 1 1 -* GMI_PROD_CH2O $ROOT/GMI/v2015-02/gmi.clim.CH2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH2O - 1 1 -#* GMI_LOSS_CH3Br $ROOT/GMI/v2015-02/gmi.clim.CH3Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3Br - 1 1 -#* GMI_PROD_CH3Br $ROOT/GMI/v2015-02/gmi.clim.CH3Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3Br - 1 1 -* GMI_LOSS_CH3CCl3 $ROOT/GMI/v2015-02/gmi.clim.CH3CCl3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3CCl3 - 1 1 -* GMI_PROD_CH3CCl3 $ROOT/GMI/v2015-02/gmi.clim.CH3CCl3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3CCl3 - 1 1 -* GMI_LOSS_CH3Cl $ROOT/GMI/v2015-02/gmi.clim.CH3Cl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3Cl - 1 1 -* GMI_PROD_CH3Cl $ROOT/GMI/v2015-02/gmi.clim.CH3Cl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3Cl - 1 1 -* GMI_LOSS_CH4 $ROOT/GMI/v2015-02/gmi.clim.CH4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH4 - 1 1 -* GMI_PROD_CH4 $ROOT/GMI/v2015-02/gmi.clim.CH4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH4 - 1 1 -* GMI_LOSS_CO $ROOT/GMI/v2015-02/gmi.clim.CO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CO - 1 1 -* GMI_PROD_CO $ROOT/GMI/v2015-02/gmi.clim.CO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CO - 1 1 -* GMI_LOSS_Cl $ROOT/GMI/v2015-02/gmi.clim.Cl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl - 1 1 -* GMI_PROD_Cl $ROOT/GMI/v2015-02/gmi.clim.Cl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl - 1 1 -* GMI_LOSS_Cl2 $ROOT/GMI/v2015-02/gmi.clim.Cl2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl2 - 1 1 -* GMI_PROD_Cl2 $ROOT/GMI/v2015-02/gmi.clim.Cl2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl2 - 1 1 -* GMI_LOSS_Cl2O2 $ROOT/GMI/v2015-02/gmi.clim.Cl2O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl2O2 - 1 1 -* GMI_PROD_Cl2O2 $ROOT/GMI/v2015-02/gmi.clim.Cl2O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl2O2 - 1 1 -* GMI_LOSS_ClO $ROOT/GMI/v2015-02/gmi.clim.ClO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ClO - 1 1 -* GMI_PROD_ClO $ROOT/GMI/v2015-02/gmi.clim.ClO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ClO - 1 1 -* GMI_LOSS_ClONO2 $ROOT/GMI/v2015-02/gmi.clim.ClONO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ClONO2 - 1 1 -* GMI_PROD_ClONO2 $ROOT/GMI/v2015-02/gmi.clim.ClONO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ClONO2 - 1 1 -* GMI_LOSS_EOH $ROOT/GMI/v2015-02/gmi.clim.EOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 EOH - 1 1 -* GMI_PROD_EOH $ROOT/GMI/v2015-02/gmi.clim.EOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s EOH - 1 1 -* GMI_LOSS_ETO2 $ROOT/GMI/v2015-02/gmi.clim.ETO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ETO2 - 1 1 -* GMI_PROD_ETO2 $ROOT/GMI/v2015-02/gmi.clim.ETO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ETO2 - 1 1 -* GMI_LOSS_ETP $ROOT/GMI/v2015-02/gmi.clim.ETP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ETP - 1 1 -* GMI_PROD_ETP $ROOT/GMI/v2015-02/gmi.clim.ETP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ETP - 1 1 -* GMI_LOSS_GCO3 $ROOT/GMI/v2015-02/gmi.clim.GCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GCO3 - 1 1 -* GMI_PROD_GCO3 $ROOT/GMI/v2015-02/gmi.clim.GCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GCO3 - 1 1 -* GMI_LOSS_GLYC $ROOT/GMI/v2015-02/gmi.clim.GLYC.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GLYC - 1 1 -* GMI_PROD_GLYC $ROOT/GMI/v2015-02/gmi.clim.GLYC.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GLYC - 1 1 -* GMI_LOSS_GLYX $ROOT/GMI/v2015-02/gmi.clim.GLYX.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GLYX - 1 1 -* GMI_PROD_GLYX $ROOT/GMI/v2015-02/gmi.clim.GLYX.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GLYX - 1 1 -* GMI_LOSS_GP $ROOT/GMI/v2015-02/gmi.clim.GP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GP - 1 1 -* GMI_PROD_GP $ROOT/GMI/v2015-02/gmi.clim.GP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GP - 1 1 -* GMI_LOSS_GPAN $ROOT/GMI/v2015-02/gmi.clim.GPAN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GPAN - 1 1 -* GMI_PROD_GPAN $ROOT/GMI/v2015-02/gmi.clim.GPAN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GPAN - 1 1 -* GMI_LOSS_H $ROOT/GMI/v2015-02/gmi.clim.H.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H - 1 1 -* GMI_PROD_H $ROOT/GMI/v2015-02/gmi.clim.H.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H - 1 1 -* GMI_LOSS_H2 $ROOT/GMI/v2015-02/gmi.clim.H2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2 - 1 1 -* GMI_PROD_H2 $ROOT/GMI/v2015-02/gmi.clim.H2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2 - 1 1 -* GMI_LOSS_H2402 $ROOT/GMI/v2015-02/gmi.clim.H2402.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2402 - 1 1 -* GMI_PROD_H2402 $ROOT/GMI/v2015-02/gmi.clim.H2402.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2402 - 1 1 -* GMI_LOSS_H2O $ROOT/GMI/v2015-02/gmi.clim.H2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2O - 1 1 -* GMI_PROD_H2O $ROOT/GMI/v2015-02/gmi.clim.H2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2O - 1 1 -* GMI_LOSS_H2O2 $ROOT/GMI/v2015-02/gmi.clim.H2O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2O2 - 1 1 -* GMI_PROD_H2O2 $ROOT/GMI/v2015-02/gmi.clim.H2O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2O2 - 1 1 -* GMI_LOSS_HAC $ROOT/GMI/v2015-02/gmi.clim.HAC.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HAC - 1 1 -* GMI_PROD_HAC $ROOT/GMI/v2015-02/gmi.clim.HAC.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HAC - 1 1 -#* GMI_LOSS_HBr $ROOT/GMI/v2015-02/gmi.clim.HBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HBr - 1 1 -#* GMI_PROD_HBr $ROOT/GMI/v2015-02/gmi.clim.HBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HBr - 1 1 -* GMI_LOSS_HCFC141b $ROOT/GMI/v2015-02/gmi.clim.HCFC141b.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC141b - 1 1 -* GMI_PROD_HCFC141b $ROOT/GMI/v2015-02/gmi.clim.HCFC141b.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC141b - 1 1 -* GMI_LOSS_HCFC142b $ROOT/GMI/v2015-02/gmi.clim.HCFC142b.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC142b - 1 1 -* GMI_PROD_HCFC142b $ROOT/GMI/v2015-02/gmi.clim.HCFC142b.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC142b - 1 1 -* GMI_LOSS_HCFC22 $ROOT/GMI/v2015-02/gmi.clim.HCFC22.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC22 - 1 1 -* GMI_PROD_HCFC22 $ROOT/GMI/v2015-02/gmi.clim.HCFC22.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC22 - 1 1 -* GMI_LOSS_HCOOH $ROOT/GMI/v2015-02/gmi.clim.HCOOH.geos5.2x25.20170108.nc loss 2005/1-12/1/0 C xyz s-1 HCOOH - 1 1 -* GMI_PROD_HCOOH $ROOT/GMI/v2015-02/gmi.clim.HCOOH.geos5.2x25.20170108.nc prod 2005/1-12/1/0 C xyz v/v/s HCOOH - 1 1 -* GMI_LOSS_HCl $ROOT/GMI/v2015-02/gmi.clim.HCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCl - 1 1 -* GMI_PROD_HCl $ROOT/GMI/v2015-02/gmi.clim.HCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCl - 1 1 -* GMI_LOSS_HNO2 $ROOT/GMI/v2015-02/gmi.clim.HNO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO2 - 1 1 -* GMI_PROD_HNO2 $ROOT/GMI/v2015-02/gmi.clim.HNO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO2 - 1 1 -* GMI_LOSS_HNO3 $ROOT/GMI/v2015-02/gmi.clim.HNO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO3 - 1 1 -* GMI_PROD_HNO3 $ROOT/GMI/v2015-02/gmi.clim.HNO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO3 - 1 1 -* GMI_LOSS_HNO4 $ROOT/GMI/v2015-02/gmi.clim.HNO4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO4 - 1 1 -* GMI_PROD_HNO4 $ROOT/GMI/v2015-02/gmi.clim.HNO4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO4 - 1 1 -* GMI_LOSS_HO2 $ROOT/GMI/v2015-02/gmi.clim.HO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HO2 - 1 1 -* GMI_PROD_HO2 $ROOT/GMI/v2015-02/gmi.clim.HO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HO2 - 1 1 -#* GMI_LOSS_HOBr $ROOT/GMI/v2015-02/gmi.clim.HOBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HOBr - 1 1 -#* GMI_PROD_HOBr $ROOT/GMI/v2015-02/gmi.clim.HOBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HOBr - 1 1 -* GMI_LOSS_HOCl $ROOT/GMI/v2015-02/gmi.clim.HOCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HOCl - 1 1 -* GMI_PROD_HOCl $ROOT/GMI/v2015-02/gmi.clim.HOCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HOCl - 1 1 -* GMI_LOSS_IALD $ROOT/GMI/v2015-02/gmi.clim.IALD.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IALD - 1 1 -* GMI_PROD_IALD $ROOT/GMI/v2015-02/gmi.clim.IALD.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IALD - 1 1 -* GMI_LOSS_IAO2 $ROOT/GMI/v2015-02/gmi.clim.IAO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IAO2 - 1 1 -* GMI_PROD_IAO2 $ROOT/GMI/v2015-02/gmi.clim.IAO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IAO2 - 1 1 -* GMI_LOSS_IAP $ROOT/GMI/v2015-02/gmi.clim.IAP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IAP - 1 1 -* GMI_PROD_IAP $ROOT/GMI/v2015-02/gmi.clim.IAP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IAP - 1 1 -* GMI_LOSS_INO2 $ROOT/GMI/v2015-02/gmi.clim.INO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 INO2 - 1 1 -* GMI_PROD_INO2 $ROOT/GMI/v2015-02/gmi.clim.INO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s INO2 - 1 1 -* GMI_LOSS_INPN $ROOT/GMI/v2015-02/gmi.clim.INPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 INPN - 1 1 -* GMI_PROD_INPN $ROOT/GMI/v2015-02/gmi.clim.INPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s INPN - 1 1 -* GMI_LOSS_ISN1 $ROOT/GMI/v2015-02/gmi.clim.ISN1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISN1 - 1 1 -* GMI_PROD_ISN1 $ROOT/GMI/v2015-02/gmi.clim.ISN1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISN1 - 1 1 -* GMI_LOSS_ISNP $ROOT/GMI/v2015-02/gmi.clim.ISNP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISNP - 1 1 -* GMI_PROD_ISNP $ROOT/GMI/v2015-02/gmi.clim.ISNP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISNP - 1 1 -* GMI_LOSS_ISOP $ROOT/GMI/v2015-02/gmi.clim.ISOP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISOP - 1 1 -* GMI_PROD_ISOP $ROOT/GMI/v2015-02/gmi.clim.ISOP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISOP - 1 1 -* GMI_LOSS_KO2 $ROOT/GMI/v2015-02/gmi.clim.KO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 KO2 - 1 1 -* GMI_PROD_KO2 $ROOT/GMI/v2015-02/gmi.clim.KO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s KO2 - 1 1 -* GMI_LOSS_MACR $ROOT/GMI/v2015-02/gmi.clim.MACR.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MACR - 1 1 -* GMI_PROD_MACR $ROOT/GMI/v2015-02/gmi.clim.MACR.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MACR - 1 1 -* GMI_LOSS_MAN2 $ROOT/GMI/v2015-02/gmi.clim.MAN2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAN2 - 1 1 -* GMI_PROD_MAN2 $ROOT/GMI/v2015-02/gmi.clim.MAN2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAN2 - 1 1 -* GMI_LOSS_MAO3 $ROOT/GMI/v2015-02/gmi.clim.MAO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAO3 - 1 1 -* GMI_PROD_MAO3 $ROOT/GMI/v2015-02/gmi.clim.MAO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAO3 - 1 1 -* GMI_LOSS_MAOP $ROOT/GMI/v2015-02/gmi.clim.MAOP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAOP - 1 1 -* GMI_PROD_MAOP $ROOT/GMI/v2015-02/gmi.clim.MAOP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAOP - 1 1 -* GMI_LOSS_MAP $ROOT/GMI/v2015-02/gmi.clim.MAP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAP - 1 1 -* GMI_PROD_MAP $ROOT/GMI/v2015-02/gmi.clim.MAP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAP - 1 1 -* GMI_LOSS_MCO3 $ROOT/GMI/v2015-02/gmi.clim.MCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MCO3 - 1 1 -* GMI_PROD_MCO3 $ROOT/GMI/v2015-02/gmi.clim.MCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MCO3 - 1 1 -* GMI_LOSS_MEK $ROOT/GMI/v2015-02/gmi.clim.MEK.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MEK - 1 1 -* GMI_PROD_MEK $ROOT/GMI/v2015-02/gmi.clim.MEK.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MEK - 1 1 -* GMI_LOSS_MGLY $ROOT/GMI/v2015-02/gmi.clim.MGLY.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MGLY - 1 1 -* GMI_PROD_MGLY $ROOT/GMI/v2015-02/gmi.clim.MGLY.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MGLY - 1 1 -* GMI_LOSS_MO2 $ROOT/GMI/v2015-02/gmi.clim.MO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MO2 - 1 1 -* GMI_PROD_MO2 $ROOT/GMI/v2015-02/gmi.clim.MO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MO2 - 1 1 -* GMI_LOSS_MOH $ROOT/GMI/v2015-02/gmi.clim.MOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MOH - 1 1 -* GMI_PROD_MOH $ROOT/GMI/v2015-02/gmi.clim.MOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MOH - 1 1 -* GMI_LOSS_MP $ROOT/GMI/v2015-02/gmi.clim.MP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MP - 1 1 -* GMI_PROD_MP $ROOT/GMI/v2015-02/gmi.clim.MP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MP - 1 1 -* GMI_LOSS_MRO2 $ROOT/GMI/v2015-02/gmi.clim.MRO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MRO2 - 1 1 -* GMI_PROD_MRO2 $ROOT/GMI/v2015-02/gmi.clim.MRO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MRO2 - 1 1 -* GMI_LOSS_MRP $ROOT/GMI/v2015-02/gmi.clim.MRP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MRP - 1 1 -* GMI_PROD_MRP $ROOT/GMI/v2015-02/gmi.clim.MRP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MRP - 1 1 -* GMI_LOSS_MVK $ROOT/GMI/v2015-02/gmi.clim.MVK.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MVK - 1 1 -* GMI_PROD_MVK $ROOT/GMI/v2015-02/gmi.clim.MVK.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MVK - 1 1 -* GMI_LOSS_MVN2 $ROOT/GMI/v2015-02/gmi.clim.MVN2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MVN2 - 1 1 -* GMI_PROD_MVN2 $ROOT/GMI/v2015-02/gmi.clim.MVN2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MVN2 - 1 1 -* GMI_LOSS_N $ROOT/GMI/v2015-02/gmi.clim.N.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N - 1 1 -* GMI_PROD_N $ROOT/GMI/v2015-02/gmi.clim.N.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N - 1 1 -* GMI_LOSS_N2O $ROOT/GMI/v2015-02/gmi.clim.N2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N2O - 1 1 -* GMI_PROD_N2O $ROOT/GMI/v2015-02/gmi.clim.N2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N2O - 1 1 -* GMI_LOSS_N2O5 $ROOT/GMI/v2015-02/gmi.clim.N2O5.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N2O5 - 1 1 -* GMI_PROD_N2O5 $ROOT/GMI/v2015-02/gmi.clim.N2O5.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N2O5 - 1 1 -* GMI_LOSS_NO $ROOT/GMI/v2015-02/gmi.clim.NO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO - 1 1 -* GMI_PROD_NO $ROOT/GMI/v2015-02/gmi.clim.NO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO - 1 1 -* GMI_LOSS_NO2 $ROOT/GMI/v2015-02/gmi.clim.NO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO2 - 1 1 -* GMI_PROD_NO2 $ROOT/GMI/v2015-02/gmi.clim.NO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO2 - 1 1 -* GMI_LOSS_NO3 $ROOT/GMI/v2015-02/gmi.clim.NO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO3 - 1 1 -* GMI_PROD_NO3 $ROOT/GMI/v2015-02/gmi.clim.NO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO3 - 1 1 -* GMI_LOSS_NOx $ROOT/GMI/v2015-02/gmi.clim.NOx.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NOx - 1 1 -* GMI_PROD_NOx $ROOT/GMI/v2015-02/gmi.clim.NOx.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NOx - 1 1 -* GMI_LOSS_O $ROOT/GMI/v2015-02/gmi.clim.O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O - 1 1 -* GMI_PROD_O $ROOT/GMI/v2015-02/gmi.clim.O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O - 1 1 -* GMI_LOSS_O1D $ROOT/GMI/v2015-02/gmi.clim.O1D.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O1D - 1 1 -* GMI_PROD_O1D $ROOT/GMI/v2015-02/gmi.clim.O1D.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O1D - 1 1 -* GMI_LOSS_O3 $ROOT/GMI/v2015-02/gmi.clim.O3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O3 - 1 1 -* GMI_PROD_O3 $ROOT/GMI/v2015-02/gmi.clim.O3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O3 - 1 1 -* GMI_LOSS_OClO $ROOT/GMI/v2015-02/gmi.clim.OClO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 OClO - 1 1 -* GMI_PROD_OClO $ROOT/GMI/v2015-02/gmi.clim.OClO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s OClO - 1 1 -* GMI_LOSS_OH $ROOT/GMI/v2015-02/gmi.clim.OH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 OH - 1 1 -* GMI_PROD_OH $ROOT/GMI/v2015-02/gmi.clim.OH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s OH - 1 1 -* GMI_LOSS_Ox $ROOT/GMI/v2015-02/gmi.clim.Ox.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Ox - 1 1 -* GMI_PROD_Ox $ROOT/GMI/v2015-02/gmi.clim.Ox.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Ox - 1 1 -* GMI_LOSS_PAN $ROOT/GMI/v2015-02/gmi.clim.PAN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PAN - 1 1 -* GMI_PROD_PAN $ROOT/GMI/v2015-02/gmi.clim.PAN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PAN - 1 1 -* GMI_LOSS_NPMN $ROOT/GMI/v2015-02/gmi.clim.NPMN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NPMN - 1 1 -* GMI_PROD_NPMN $ROOT/GMI/v2015-02/gmi.clim.NPMN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NPMN - 1 1 -* GMI_LOSS_IPMN $ROOT/GMI/v2015-02/gmi.clim.IPMN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IPMN - 1 1 -* GMI_PROD_IPMN $ROOT/GMI/v2015-02/gmi.clim.IPMN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IPMN - 1 1 -* GMI_LOSS_PO2 $ROOT/GMI/v2015-02/gmi.clim.PO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PO2 - 1 1 -* GMI_PROD_PO2 $ROOT/GMI/v2015-02/gmi.clim.PO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PO2 - 1 1 -* GMI_LOSS_PP $ROOT/GMI/v2015-02/gmi.clim.PP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PP - 1 1 -* GMI_PROD_PP $ROOT/GMI/v2015-02/gmi.clim.PP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PP - 1 1 -* GMI_LOSS_PPN $ROOT/GMI/v2015-02/gmi.clim.PPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PPN - 1 1 -* GMI_PROD_PPN $ROOT/GMI/v2015-02/gmi.clim.PPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PPN - 1 1 -* GMI_LOSS_PRN1 $ROOT/GMI/v2015-02/gmi.clim.PRN1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRN1 - 1 1 -* GMI_PROD_PRN1 $ROOT/GMI/v2015-02/gmi.clim.PRN1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRN1 - 1 1 -* GMI_LOSS_PRPE $ROOT/GMI/v2015-02/gmi.clim.PRPE.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRPE - 1 1 -* GMI_PROD_PRPE $ROOT/GMI/v2015-02/gmi.clim.PRPE.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRPE - 1 1 -* GMI_LOSS_PRPN $ROOT/GMI/v2015-02/gmi.clim.PRPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRPN - 1 1 -* GMI_PROD_PRPN $ROOT/GMI/v2015-02/gmi.clim.PRPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRPN - 1 1 -* GMI_LOSS_R4N1 $ROOT/GMI/v2015-02/gmi.clim.R4N1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4N1 - 1 1 -* GMI_PROD_R4N1 $ROOT/GMI/v2015-02/gmi.clim.R4N1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4N1 - 1 1 -* GMI_LOSS_R4N2 $ROOT/GMI/v2015-02/gmi.clim.R4N2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4N2 - 1 1 -* GMI_PROD_R4N2 $ROOT/GMI/v2015-02/gmi.clim.R4N2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4N2 - 1 1 -* GMI_LOSS_R4O2 $ROOT/GMI/v2015-02/gmi.clim.R4O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4O2 - 1 1 -* GMI_PROD_R4O2 $ROOT/GMI/v2015-02/gmi.clim.R4O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4O2 - 1 1 -* GMI_LOSS_R4P $ROOT/GMI/v2015-02/gmi.clim.R4P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4P - 1 1 -* GMI_PROD_R4P $ROOT/GMI/v2015-02/gmi.clim.R4P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4P - 1 1 -* GMI_LOSS_RA3P $ROOT/GMI/v2015-02/gmi.clim.RA3P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RA3P - 1 1 -* GMI_PROD_RA3P $ROOT/GMI/v2015-02/gmi.clim.RA3P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RA3P - 1 1 -* GMI_LOSS_RB3P $ROOT/GMI/v2015-02/gmi.clim.RB3P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RB3P - 1 1 -* GMI_PROD_RB3P $ROOT/GMI/v2015-02/gmi.clim.RB3P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RB3P - 1 1 -* GMI_LOSS_RCHO $ROOT/GMI/v2015-02/gmi.clim.RCHO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCHO - 1 1 -* GMI_PROD_RCHO $ROOT/GMI/v2015-02/gmi.clim.RCHO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCHO - 1 1 -* GMI_LOSS_RCO3 $ROOT/GMI/v2015-02/gmi.clim.RCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCO3 - 1 1 -* GMI_PROD_RCO3 $ROOT/GMI/v2015-02/gmi.clim.RCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCO3 - 1 1 -* GMI_LOSS_RCOOH $ROOT/GMI/v2015-02/gmi.clim.RCOOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCOOH - 1 1 -* GMI_PROD_RCOOH $ROOT/GMI/v2015-02/gmi.clim.RCOOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCOOH - 1 1 -* GMI_LOSS_RIO1 $ROOT/GMI/v2015-02/gmi.clim.RIO1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIO1 - 1 1 -* GMI_PROD_RIO1 $ROOT/GMI/v2015-02/gmi.clim.RIO1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIO1 - 1 1 -* GMI_LOSS_RIPA $ROOT/GMI/v2015-02/gmi.clim.RIPA.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPA - 1 1 -* GMI_PROD_RIPA $ROOT/GMI/v2015-02/gmi.clim.RIPA.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPA - 1 1 -* GMI_LOSS_RIPB $ROOT/GMI/v2015-02/gmi.clim.RIPB.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPB - 1 1 -* GMI_PROD_RIPB $ROOT/GMI/v2015-02/gmi.clim.RIPB.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPB - 1 1 -* GMI_LOSS_RIPD $ROOT/GMI/v2015-02/gmi.clim.RIPD.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPD - 1 1 -* GMI_PROD_RIPD $ROOT/GMI/v2015-02/gmi.clim.RIPD.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPD - 1 1 -* GMI_LOSS_ROH $ROOT/GMI/v2015-02/gmi.clim.ROH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ROH - 1 1 -* GMI_PROD_ROH $ROOT/GMI/v2015-02/gmi.clim.ROH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ROH - 1 1 -* GMI_LOSS_RP $ROOT/GMI/v2015-02/gmi.clim.RP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RP - 1 1 -* GMI_PROD_RP $ROOT/GMI/v2015-02/gmi.clim.RP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RP - 1 1 -* GMI_LOSS_VRO2 $ROOT/GMI/v2015-02/gmi.clim.VRO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 VRO2 - 1 1 -* GMI_PROD_VRO2 $ROOT/GMI/v2015-02/gmi.clim.VRO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s VRO2 - 1 1 -* GMI_LOSS_VRP $ROOT/GMI/v2015-02/gmi.clim.VRP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 VRP - 1 1 -* GMI_PROD_VRP $ROOT/GMI/v2015-02/gmi.clim.VRP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s VRP - 1 1 +* GMI_LOSS_A3O2 $ROOT/v2015-02/gmi.clim.A3O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 A3O2 - 1 1 +* GMI_PROD_A3O2 $ROOT/v2015-02/gmi.clim.A3O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s A3O2 - 1 1 +* GMI_LOSS_ACET $ROOT/v2015-02/gmi.clim.ACET.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ACET - 1 1 +* GMI_PROD_ACET $ROOT/v2015-02/gmi.clim.ACET.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ACET - 1 1 +* GMI_LOSS_ACTA $ROOT/v2015-02/gmi.clim.ACTA.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ACTA - 1 1 +* GMI_PROD_ACTA $ROOT/v2015-02/gmi.clim.ACTA.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ACTA - 1 1 +* GMI_LOSS_ALD2 $ROOT/v2015-02/gmi.clim.ALD2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ALD2 - 1 1 +* GMI_PROD_ALD2 $ROOT/v2015-02/gmi.clim.ALD2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ALD2 - 1 1 +* GMI_LOSS_ALK4 $ROOT/v2015-02/gmi.clim.ALK4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ALK4 - 1 1 +* GMI_PROD_ALK4 $ROOT/v2015-02/gmi.clim.ALK4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ALK4 - 1 1 +* GMI_LOSS_ATO2 $ROOT/v2015-02/gmi.clim.ATO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ATO2 - 1 1 +* GMI_PROD_ATO2 $ROOT/v2015-02/gmi.clim.ATO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ATO2 - 1 1 +* GMI_LOSS_B3O2 $ROOT/v2015-02/gmi.clim.B3O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 B3O2 - 1 1 +* GMI_PROD_B3O2 $ROOT/v2015-02/gmi.clim.B3O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s B3O2 - 1 1 +#* GMI_LOSS_Br $ROOT/v2015-02/gmi.clim.Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Br - 1 1 +#* GMI_PROD_Br $ROOT/v2015-02/gmi.clim.Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Br - 1 1 +#* GMI_LOSS_BrCl $ROOT/v2015-02/gmi.clim.BrCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrCl - 1 1 +#* GMI_PROD_BrCl $ROOT/v2015-02/gmi.clim.BrCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrCl - 1 1 +#* GMI_LOSS_BrO $ROOT/v2015-02/gmi.clim.BrO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrO - 1 1 +#* GMI_PROD_BrO $ROOT/v2015-02/gmi.clim.BrO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrO - 1 1 +#* GMI_LOSS_BrNO3 $ROOT/v2015-02/gmi.clim.BrONO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrNO3 - 1 1 +#* GMI_PROD_BrNO3 $ROOT/v2015-02/gmi.clim.BrONO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrNO3 - 1 1 +* GMI_LOSS_C2H6 $ROOT/v2015-02/gmi.clim.C2H6.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 C2H6 - 1 1 +* GMI_PROD_C2H6 $ROOT/v2015-02/gmi.clim.C2H6.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s C2H6 - 1 1 +* GMI_LOSS_C3H8 $ROOT/v2015-02/gmi.clim.C3H8.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 C3H8 - 1 1 +* GMI_PROD_C3H8 $ROOT/v2015-02/gmi.clim.C3H8.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s C3H8 - 1 1 +* GMI_LOSS_CCl4 $ROOT/v2015-02/gmi.clim.CCl4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CCl4 - 1 1 +* GMI_PROD_CCl4 $ROOT/v2015-02/gmi.clim.CCl4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CCl4 - 1 1 +#* GMI_LOSS_H1202 $ROOT/v2015-02/gmi.clim.CF2Br2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1202 - 1 1 +#* GMI_PROD_H1202 $ROOT/v2015-02/gmi.clim.CF2Br2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1202 - 1 1 +* GMI_LOSS_CFC12 $ROOT/v2015-02/gmi.clim.CF2Cl2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC12 - 1 1 +* GMI_PROD_CFC12 $ROOT/v2015-02/gmi.clim.CF2Cl2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC12 - 1 1 +* GMI_LOSS_H1211 $ROOT/v2015-02/gmi.clim.CF2ClBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1211 - 1 1 +* GMI_PROD_H1211 $ROOT/v2015-02/gmi.clim.CF2ClBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1211 - 1 1 +#* GMI_LOSS_H1311 $ROOT/v2015-02/gmi.clim.CF3Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1311 - 1 1 +#* GMI_PROD_H1311 $ROOT/v2015-02/gmi.clim.CF3Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1311 - 1 1 +* GMI_LOSS_CFC113 $ROOT/v2015-02/gmi.clim.CFC113.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC113 - 1 1 +* GMI_PROD_CFC113 $ROOT/v2015-02/gmi.clim.CFC113.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC113 - 1 1 +* GMI_LOSS_CFC114 $ROOT/v2015-02/gmi.clim.CFC114.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC114 - 1 1 +* GMI_PROD_CFC114 $ROOT/v2015-02/gmi.clim.CFC114.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC114 - 1 1 +* GMI_LOSS_CFC115 $ROOT/v2015-02/gmi.clim.CFC115.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC115 - 1 1 +* GMI_PROD_CFC115 $ROOT/v2015-02/gmi.clim.CFC115.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC115 - 1 1 +* GMI_LOSS_CFC11 $ROOT/v2015-02/gmi.clim.CFCl3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC11 - 1 1 +* GMI_PROD_CFC11 $ROOT/v2015-02/gmi.clim.CFCl3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC11 - 1 1 +* GMI_LOSS_CH2O $ROOT/v2015-02/gmi.clim.CH2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH2O - 1 1 +* GMI_PROD_CH2O $ROOT/v2015-02/gmi.clim.CH2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH2O - 1 1 +#* GMI_LOSS_CH3Br $ROOT/v2015-02/gmi.clim.CH3Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3Br - 1 1 +#* GMI_PROD_CH3Br $ROOT/v2015-02/gmi.clim.CH3Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3Br - 1 1 +* GMI_LOSS_CH3CCl3 $ROOT/v2015-02/gmi.clim.CH3CCl3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3CCl3 - 1 1 +* GMI_PROD_CH3CCl3 $ROOT/v2015-02/gmi.clim.CH3CCl3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3CCl3 - 1 1 +* GMI_LOSS_CH3Cl $ROOT/v2015-02/gmi.clim.CH3Cl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3Cl - 1 1 +* GMI_PROD_CH3Cl $ROOT/v2015-02/gmi.clim.CH3Cl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3Cl - 1 1 +* GMI_LOSS_CH4 $ROOT/v2015-02/gmi.clim.CH4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH4 - 1 1 +* GMI_PROD_CH4 $ROOT/v2015-02/gmi.clim.CH4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH4 - 1 1 +* GMI_LOSS_CO $ROOT/v2015-02/gmi.clim.CO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CO - 1 1 +* GMI_PROD_CO $ROOT/v2015-02/gmi.clim.CO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CO - 1 1 +* GMI_LOSS_Cl $ROOT/v2015-02/gmi.clim.Cl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl - 1 1 +* GMI_PROD_Cl $ROOT/v2015-02/gmi.clim.Cl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl - 1 1 +* GMI_LOSS_Cl2 $ROOT/v2015-02/gmi.clim.Cl2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl2 - 1 1 +* GMI_PROD_Cl2 $ROOT/v2015-02/gmi.clim.Cl2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl2 - 1 1 +* GMI_LOSS_Cl2O2 $ROOT/v2015-02/gmi.clim.Cl2O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl2O2 - 1 1 +* GMI_PROD_Cl2O2 $ROOT/v2015-02/gmi.clim.Cl2O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl2O2 - 1 1 +* GMI_LOSS_ClO $ROOT/v2015-02/gmi.clim.ClO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ClO - 1 1 +* GMI_PROD_ClO $ROOT/v2015-02/gmi.clim.ClO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ClO - 1 1 +* GMI_LOSS_ClONO2 $ROOT/v2015-02/gmi.clim.ClONO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ClONO2 - 1 1 +* GMI_PROD_ClONO2 $ROOT/v2015-02/gmi.clim.ClONO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ClONO2 - 1 1 +* GMI_LOSS_EOH $ROOT/v2015-02/gmi.clim.EOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 EOH - 1 1 +* GMI_PROD_EOH $ROOT/v2015-02/gmi.clim.EOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s EOH - 1 1 +* GMI_LOSS_ETO2 $ROOT/v2015-02/gmi.clim.ETO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ETO2 - 1 1 +* GMI_PROD_ETO2 $ROOT/v2015-02/gmi.clim.ETO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ETO2 - 1 1 +* GMI_LOSS_ETP $ROOT/v2015-02/gmi.clim.ETP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ETP - 1 1 +* GMI_PROD_ETP $ROOT/v2015-02/gmi.clim.ETP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ETP - 1 1 +* GMI_LOSS_GCO3 $ROOT/v2015-02/gmi.clim.GCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GCO3 - 1 1 +* GMI_PROD_GCO3 $ROOT/v2015-02/gmi.clim.GCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GCO3 - 1 1 +* GMI_LOSS_GLYC $ROOT/v2015-02/gmi.clim.GLYC.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GLYC - 1 1 +* GMI_PROD_GLYC $ROOT/v2015-02/gmi.clim.GLYC.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GLYC - 1 1 +* GMI_LOSS_GLYX $ROOT/v2015-02/gmi.clim.GLYX.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GLYX - 1 1 +* GMI_PROD_GLYX $ROOT/v2015-02/gmi.clim.GLYX.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GLYX - 1 1 +* GMI_LOSS_GP $ROOT/v2015-02/gmi.clim.GP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GP - 1 1 +* GMI_PROD_GP $ROOT/v2015-02/gmi.clim.GP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GP - 1 1 +* GMI_LOSS_GPAN $ROOT/v2015-02/gmi.clim.GPAN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GPAN - 1 1 +* GMI_PROD_GPAN $ROOT/v2015-02/gmi.clim.GPAN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GPAN - 1 1 +* GMI_LOSS_H $ROOT/v2015-02/gmi.clim.H.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H - 1 1 +* GMI_PROD_H $ROOT/v2015-02/gmi.clim.H.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H - 1 1 +* GMI_LOSS_H2 $ROOT/v2015-02/gmi.clim.H2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2 - 1 1 +* GMI_PROD_H2 $ROOT/v2015-02/gmi.clim.H2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2 - 1 1 +* GMI_LOSS_H2402 $ROOT/v2015-02/gmi.clim.H2402.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2402 - 1 1 +* GMI_PROD_H2402 $ROOT/v2015-02/gmi.clim.H2402.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2402 - 1 1 +* GMI_LOSS_H2O $ROOT/v2015-02/gmi.clim.H2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2O - 1 1 +* GMI_PROD_H2O $ROOT/v2015-02/gmi.clim.H2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2O - 1 1 +* GMI_LOSS_H2O2 $ROOT/v2015-02/gmi.clim.H2O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2O2 - 1 1 +* GMI_PROD_H2O2 $ROOT/v2015-02/gmi.clim.H2O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2O2 - 1 1 +* GMI_LOSS_HAC $ROOT/v2015-02/gmi.clim.HAC.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HAC - 1 1 +* GMI_PROD_HAC $ROOT/v2015-02/gmi.clim.HAC.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HAC - 1 1 +#* GMI_LOSS_HBr $ROOT/v2015-02/gmi.clim.HBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HBr - 1 1 +#* GMI_PROD_HBr $ROOT/v2015-02/gmi.clim.HBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HBr - 1 1 +* GMI_LOSS_HCFC141b $ROOT/v2015-02/gmi.clim.HCFC141b.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC141b - 1 1 +* GMI_PROD_HCFC141b $ROOT/v2015-02/gmi.clim.HCFC141b.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC141b - 1 1 +* GMI_LOSS_HCFC142b $ROOT/v2015-02/gmi.clim.HCFC142b.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC142b - 1 1 +* GMI_PROD_HCFC142b $ROOT/v2015-02/gmi.clim.HCFC142b.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC142b - 1 1 +* GMI_LOSS_HCFC22 $ROOT/v2015-02/gmi.clim.HCFC22.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC22 - 1 1 +* GMI_PROD_HCFC22 $ROOT/v2015-02/gmi.clim.HCFC22.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC22 - 1 1 +* GMI_LOSS_HCOOH $ROOT/v2015-02/gmi.clim.HCOOH.geos5.2x25.20170108.nc loss 2005/1-12/1/0 C xyz s-1 HCOOH - 1 1 +* GMI_PROD_HCOOH $ROOT/v2015-02/gmi.clim.HCOOH.geos5.2x25.20170108.nc prod 2005/1-12/1/0 C xyz v/v/s HCOOH - 1 1 +* GMI_LOSS_HCl $ROOT/v2015-02/gmi.clim.HCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCl - 1 1 +* GMI_PROD_HCl $ROOT/v2015-02/gmi.clim.HCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCl - 1 1 +* GMI_LOSS_HNO2 $ROOT/v2015-02/gmi.clim.HNO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO2 - 1 1 +* GMI_PROD_HNO2 $ROOT/v2015-02/gmi.clim.HNO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO2 - 1 1 +* GMI_LOSS_HNO3 $ROOT/v2015-02/gmi.clim.HNO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO3 - 1 1 +* GMI_PROD_HNO3 $ROOT/v2015-02/gmi.clim.HNO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO3 - 1 1 +* GMI_LOSS_HNO4 $ROOT/v2015-02/gmi.clim.HNO4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO4 - 1 1 +* GMI_PROD_HNO4 $ROOT/v2015-02/gmi.clim.HNO4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO4 - 1 1 +* GMI_LOSS_HO2 $ROOT/v2015-02/gmi.clim.HO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HO2 - 1 1 +* GMI_PROD_HO2 $ROOT/v2015-02/gmi.clim.HO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HO2 - 1 1 +#* GMI_LOSS_HOBr $ROOT/v2015-02/gmi.clim.HOBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HOBr - 1 1 +#* GMI_PROD_HOBr $ROOT/v2015-02/gmi.clim.HOBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HOBr - 1 1 +* GMI_LOSS_HOCl $ROOT/v2015-02/gmi.clim.HOCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HOCl - 1 1 +* GMI_PROD_HOCl $ROOT/v2015-02/gmi.clim.HOCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HOCl - 1 1 +* GMI_LOSS_IALD $ROOT/v2015-02/gmi.clim.IALD.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IALD - 1 1 +* GMI_PROD_IALD $ROOT/v2015-02/gmi.clim.IALD.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IALD - 1 1 +* GMI_LOSS_IAO2 $ROOT/v2015-02/gmi.clim.IAO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IAO2 - 1 1 +* GMI_PROD_IAO2 $ROOT/v2015-02/gmi.clim.IAO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IAO2 - 1 1 +* GMI_LOSS_IAP $ROOT/v2015-02/gmi.clim.IAP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IAP - 1 1 +* GMI_PROD_IAP $ROOT/v2015-02/gmi.clim.IAP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IAP - 1 1 +* GMI_LOSS_INO2 $ROOT/v2015-02/gmi.clim.INO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 INO2 - 1 1 +* GMI_PROD_INO2 $ROOT/v2015-02/gmi.clim.INO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s INO2 - 1 1 +* GMI_LOSS_INPN $ROOT/v2015-02/gmi.clim.INPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 INPN - 1 1 +* GMI_PROD_INPN $ROOT/v2015-02/gmi.clim.INPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s INPN - 1 1 +* GMI_LOSS_ISN1 $ROOT/v2015-02/gmi.clim.ISN1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISN1 - 1 1 +* GMI_PROD_ISN1 $ROOT/v2015-02/gmi.clim.ISN1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISN1 - 1 1 +* GMI_LOSS_ISNP $ROOT/v2015-02/gmi.clim.ISNP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISNP - 1 1 +* GMI_PROD_ISNP $ROOT/v2015-02/gmi.clim.ISNP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISNP - 1 1 +* GMI_LOSS_ISOP $ROOT/v2015-02/gmi.clim.ISOP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISOP - 1 1 +* GMI_PROD_ISOP $ROOT/v2015-02/gmi.clim.ISOP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISOP - 1 1 +* GMI_LOSS_KO2 $ROOT/v2015-02/gmi.clim.KO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 KO2 - 1 1 +* GMI_PROD_KO2 $ROOT/v2015-02/gmi.clim.KO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s KO2 - 1 1 +* GMI_LOSS_MACR $ROOT/v2015-02/gmi.clim.MACR.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MACR - 1 1 +* GMI_PROD_MACR $ROOT/v2015-02/gmi.clim.MACR.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MACR - 1 1 +* GMI_LOSS_MAN2 $ROOT/v2015-02/gmi.clim.MAN2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAN2 - 1 1 +* GMI_PROD_MAN2 $ROOT/v2015-02/gmi.clim.MAN2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAN2 - 1 1 +* GMI_LOSS_MAO3 $ROOT/v2015-02/gmi.clim.MAO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAO3 - 1 1 +* GMI_PROD_MAO3 $ROOT/v2015-02/gmi.clim.MAO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAO3 - 1 1 +* GMI_LOSS_MAOP $ROOT/v2015-02/gmi.clim.MAOP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAOP - 1 1 +* GMI_PROD_MAOP $ROOT/v2015-02/gmi.clim.MAOP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAOP - 1 1 +* GMI_LOSS_MAP $ROOT/v2015-02/gmi.clim.MAP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAP - 1 1 +* GMI_PROD_MAP $ROOT/v2015-02/gmi.clim.MAP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAP - 1 1 +* GMI_LOSS_MCO3 $ROOT/v2015-02/gmi.clim.MCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MCO3 - 1 1 +* GMI_PROD_MCO3 $ROOT/v2015-02/gmi.clim.MCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MCO3 - 1 1 +* GMI_LOSS_MEK $ROOT/v2015-02/gmi.clim.MEK.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MEK - 1 1 +* GMI_PROD_MEK $ROOT/v2015-02/gmi.clim.MEK.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MEK - 1 1 +* GMI_LOSS_MGLY $ROOT/v2015-02/gmi.clim.MGLY.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MGLY - 1 1 +* GMI_PROD_MGLY $ROOT/v2015-02/gmi.clim.MGLY.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MGLY - 1 1 +* GMI_LOSS_MO2 $ROOT/v2015-02/gmi.clim.MO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MO2 - 1 1 +* GMI_PROD_MO2 $ROOT/v2015-02/gmi.clim.MO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MO2 - 1 1 +* GMI_LOSS_MOH $ROOT/v2015-02/gmi.clim.MOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MOH - 1 1 +* GMI_PROD_MOH $ROOT/v2015-02/gmi.clim.MOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MOH - 1 1 +* GMI_LOSS_MP $ROOT/v2015-02/gmi.clim.MP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MP - 1 1 +* GMI_PROD_MP $ROOT/v2015-02/gmi.clim.MP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MP - 1 1 +* GMI_LOSS_MRO2 $ROOT/v2015-02/gmi.clim.MRO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MRO2 - 1 1 +* GMI_PROD_MRO2 $ROOT/v2015-02/gmi.clim.MRO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MRO2 - 1 1 +* GMI_LOSS_MRP $ROOT/v2015-02/gmi.clim.MRP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MRP - 1 1 +* GMI_PROD_MRP $ROOT/v2015-02/gmi.clim.MRP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MRP - 1 1 +* GMI_LOSS_MVK $ROOT/v2015-02/gmi.clim.MVK.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MVK - 1 1 +* GMI_PROD_MVK $ROOT/v2015-02/gmi.clim.MVK.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MVK - 1 1 +* GMI_LOSS_MVN2 $ROOT/v2015-02/gmi.clim.MVN2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MVN2 - 1 1 +* GMI_PROD_MVN2 $ROOT/v2015-02/gmi.clim.MVN2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MVN2 - 1 1 +* GMI_LOSS_N $ROOT/v2015-02/gmi.clim.N.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N - 1 1 +* GMI_PROD_N $ROOT/v2015-02/gmi.clim.N.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N - 1 1 +* GMI_LOSS_N2O $ROOT/v2015-02/gmi.clim.N2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N2O - 1 1 +* GMI_PROD_N2O $ROOT/v2015-02/gmi.clim.N2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N2O - 1 1 +* GMI_LOSS_N2O5 $ROOT/v2015-02/gmi.clim.N2O5.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N2O5 - 1 1 +* GMI_PROD_N2O5 $ROOT/v2015-02/gmi.clim.N2O5.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N2O5 - 1 1 +* GMI_LOSS_NO $ROOT/v2015-02/gmi.clim.NO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO - 1 1 +* GMI_PROD_NO $ROOT/v2015-02/gmi.clim.NO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO - 1 1 +* GMI_LOSS_NO2 $ROOT/v2015-02/gmi.clim.NO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO2 - 1 1 +* GMI_PROD_NO2 $ROOT/v2015-02/gmi.clim.NO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO2 - 1 1 +* GMI_LOSS_NO3 $ROOT/v2015-02/gmi.clim.NO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO3 - 1 1 +* GMI_PROD_NO3 $ROOT/v2015-02/gmi.clim.NO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO3 - 1 1 +* GMI_LOSS_NOx $ROOT/v2015-02/gmi.clim.NOx.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NOx - 1 1 +* GMI_PROD_NOx $ROOT/v2015-02/gmi.clim.NOx.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NOx - 1 1 +* GMI_LOSS_O $ROOT/v2015-02/gmi.clim.O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O - 1 1 +* GMI_PROD_O $ROOT/v2015-02/gmi.clim.O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O - 1 1 +* GMI_LOSS_O1D $ROOT/v2015-02/gmi.clim.O1D.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O1D - 1 1 +* GMI_PROD_O1D $ROOT/v2015-02/gmi.clim.O1D.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O1D - 1 1 +* GMI_LOSS_O3 $ROOT/v2015-02/gmi.clim.O3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O3 - 1 1 +* GMI_PROD_O3 $ROOT/v2015-02/gmi.clim.O3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O3 - 1 1 +* GMI_LOSS_OClO $ROOT/v2015-02/gmi.clim.OClO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 OClO - 1 1 +* GMI_PROD_OClO $ROOT/v2015-02/gmi.clim.OClO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s OClO - 1 1 +* GMI_LOSS_OH $ROOT/v2015-02/gmi.clim.OH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 OH - 1 1 +* GMI_PROD_OH $ROOT/v2015-02/gmi.clim.OH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s OH - 1 1 +* GMI_LOSS_Ox $ROOT/v2015-02/gmi.clim.Ox.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Ox - 1 1 +* GMI_PROD_Ox $ROOT/v2015-02/gmi.clim.Ox.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Ox - 1 1 +* GMI_LOSS_PAN $ROOT/v2015-02/gmi.clim.PAN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PAN - 1 1 +* GMI_PROD_PAN $ROOT/v2015-02/gmi.clim.PAN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PAN - 1 1 +* GMI_LOSS_NPMN $ROOT/v2015-02/gmi.clim.NPMN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NPMN - 1 1 +* GMI_PROD_NPMN $ROOT/v2015-02/gmi.clim.NPMN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NPMN - 1 1 +* GMI_LOSS_IPMN $ROOT/v2015-02/gmi.clim.IPMN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IPMN - 1 1 +* GMI_PROD_IPMN $ROOT/v2015-02/gmi.clim.IPMN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IPMN - 1 1 +* GMI_LOSS_PO2 $ROOT/v2015-02/gmi.clim.PO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PO2 - 1 1 +* GMI_PROD_PO2 $ROOT/v2015-02/gmi.clim.PO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PO2 - 1 1 +* GMI_LOSS_PP $ROOT/v2015-02/gmi.clim.PP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PP - 1 1 +* GMI_PROD_PP $ROOT/v2015-02/gmi.clim.PP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PP - 1 1 +* GMI_LOSS_PPN $ROOT/v2015-02/gmi.clim.PPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PPN - 1 1 +* GMI_PROD_PPN $ROOT/v2015-02/gmi.clim.PPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PPN - 1 1 +* GMI_LOSS_PRN1 $ROOT/v2015-02/gmi.clim.PRN1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRN1 - 1 1 +* GMI_PROD_PRN1 $ROOT/v2015-02/gmi.clim.PRN1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRN1 - 1 1 +* GMI_LOSS_PRPE $ROOT/v2015-02/gmi.clim.PRPE.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRPE - 1 1 +* GMI_PROD_PRPE $ROOT/v2015-02/gmi.clim.PRPE.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRPE - 1 1 +* GMI_LOSS_PRPN $ROOT/v2015-02/gmi.clim.PRPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRPN - 1 1 +* GMI_PROD_PRPN $ROOT/v2015-02/gmi.clim.PRPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRPN - 1 1 +* GMI_LOSS_R4N1 $ROOT/v2015-02/gmi.clim.R4N1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4N1 - 1 1 +* GMI_PROD_R4N1 $ROOT/v2015-02/gmi.clim.R4N1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4N1 - 1 1 +* GMI_LOSS_R4N2 $ROOT/v2015-02/gmi.clim.R4N2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4N2 - 1 1 +* GMI_PROD_R4N2 $ROOT/v2015-02/gmi.clim.R4N2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4N2 - 1 1 +* GMI_LOSS_R4O2 $ROOT/v2015-02/gmi.clim.R4O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4O2 - 1 1 +* GMI_PROD_R4O2 $ROOT/v2015-02/gmi.clim.R4O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4O2 - 1 1 +* GMI_LOSS_R4P $ROOT/v2015-02/gmi.clim.R4P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4P - 1 1 +* GMI_PROD_R4P $ROOT/v2015-02/gmi.clim.R4P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4P - 1 1 +* GMI_LOSS_RA3P $ROOT/v2015-02/gmi.clim.RA3P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RA3P - 1 1 +* GMI_PROD_RA3P $ROOT/v2015-02/gmi.clim.RA3P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RA3P - 1 1 +* GMI_LOSS_RB3P $ROOT/v2015-02/gmi.clim.RB3P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RB3P - 1 1 +* GMI_PROD_RB3P $ROOT/v2015-02/gmi.clim.RB3P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RB3P - 1 1 +* GMI_LOSS_RCHO $ROOT/v2015-02/gmi.clim.RCHO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCHO - 1 1 +* GMI_PROD_RCHO $ROOT/v2015-02/gmi.clim.RCHO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCHO - 1 1 +* GMI_LOSS_RCO3 $ROOT/v2015-02/gmi.clim.RCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCO3 - 1 1 +* GMI_PROD_RCO3 $ROOT/v2015-02/gmi.clim.RCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCO3 - 1 1 +* GMI_LOSS_RCOOH $ROOT/v2015-02/gmi.clim.RCOOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCOOH - 1 1 +* GMI_PROD_RCOOH $ROOT/v2015-02/gmi.clim.RCOOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCOOH - 1 1 +* GMI_LOSS_RIO1 $ROOT/v2015-02/gmi.clim.RIO1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIO1 - 1 1 +* GMI_PROD_RIO1 $ROOT/v2015-02/gmi.clim.RIO1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIO1 - 1 1 +* GMI_LOSS_RIPA $ROOT/v2015-02/gmi.clim.RIPA.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPA - 1 1 +* GMI_PROD_RIPA $ROOT/v2015-02/gmi.clim.RIPA.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPA - 1 1 +* GMI_LOSS_RIPB $ROOT/v2015-02/gmi.clim.RIPB.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPB - 1 1 +* GMI_PROD_RIPB $ROOT/v2015-02/gmi.clim.RIPB.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPB - 1 1 +* GMI_LOSS_RIPD $ROOT/v2015-02/gmi.clim.RIPD.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPD - 1 1 +* GMI_PROD_RIPD $ROOT/v2015-02/gmi.clim.RIPD.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPD - 1 1 +* GMI_LOSS_ROH $ROOT/v2015-02/gmi.clim.ROH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ROH - 1 1 +* GMI_PROD_ROH $ROOT/v2015-02/gmi.clim.ROH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ROH - 1 1 +* GMI_LOSS_RP $ROOT/v2015-02/gmi.clim.RP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RP - 1 1 +* GMI_PROD_RP $ROOT/v2015-02/gmi.clim.RP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RP - 1 1 +* GMI_LOSS_VRO2 $ROOT/v2015-02/gmi.clim.VRO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 VRO2 - 1 1 +* GMI_PROD_VRO2 $ROOT/v2015-02/gmi.clim.VRO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s VRO2 - 1 1 +* GMI_LOSS_VRP $ROOT/v2015-02/gmi.clim.VRP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 VRP - 1 1 +* GMI_PROD_VRP $ROOT/v2015-02/gmi.clim.VRP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s VRP - 1 1 )))GMI_PROD_LOSS #============================================================================== @@ -3532,6 +3900,7 @@ VerboseOnCores: root # Accepted values: root all # The "XLAI" denotes that the files are prepared in this way. # (2) Units are "cm2 leaf/cm2 grid box". # (3) Data is timestamped every 8 days, starting from the 2nd of the month. +# (4) Use flag C if running in CESM #============================================================================== (((YUAN_MODIS_LAI * XLAI00 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI00 2000-2020/1-12/1-31/0 C xy cm2/cm2 * - 1 1 @@ -3647,12 +4016,12 @@ VerboseOnCores: root # Accepted values: root all * MODIS_EMISSIVITY_14 $ROOT/RRTMG/v2018-11/modis_emissivity.2x25.nc RTEMISS_band14 2002/1-12/1-31/0 C xy 1 * - 1 1 * MODIS_EMISSIVITY_15 $ROOT/RRTMG/v2018-11/modis_emissivity.2x25.nc RTEMISS_band15 2002/1-12/1-31/0 C xy 1 * - 1 1 * MODIS_EMISSIVITY_16 $ROOT/RRTMG/v2018-11/modis_emissivity.2x25.nc RTEMISS_band16 2002/1-12/1-31/0 C xy 1 * - 1 1 -* TES_CLIM_CCL4 $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc CCl4 2000/1/1/0 C xyz ppbv * - 1 1 -* TES_CLIM_CFC11 $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc CFC11 2000/1/1/0 C xyz ppbv * - 1 1 -* TES_CLIM_CFC12 $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc CFC12 2000/1/1/0 C xyz ppbv * - 1 1 -* TES_CLIM_CFC22 $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc CFC22 2000/1/1/0 C xyz ppbv * - 1 1 -* TES_CLIM_CH4 $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc CH4 2000/1/1/0 C xyz ppbv * - 1 1 -* TES_CLIM_N2O $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc N2O 2000/1/1/0 C xyz ppbv * - 1 1 +* TES_CLIM_CCL4 $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc CCl4 2000/1/1/0 C xyz ppbv * - 1 1 +* TES_CLIM_CFC11 $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc CFC11 2000/1/1/0 C xyz ppbv * - 1 1 +* TES_CLIM_CFC12 $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc CFC12 2000/1/1/0 C xyz ppbv * - 1 1 +* TES_CLIM_CFC22 $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc CFC22 2000/1/1/0 C xyz ppbv * - 1 1 +* TES_CLIM_CH4 $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc CH4 2000/1/1/0 C xyz ppbv * - 1 1 +* TES_CLIM_N2O $ROOT/RRTMG/v2018-11/species_clim_profiles.2x25.nc N2O 2000/1/1/0 C xyz ppbv * - 1 1 )))RRTMG (((SfcVMR @@ -3701,50 +4070,50 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # Commented-out tracers do not exist in GEOS-Chem yet -# * SfcVMR_C2F6 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 C2F6 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_C3F8 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 C3F8 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_C4F10 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 C4F10 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_C5F12 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 C5F12 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_C6F14 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 C6F14 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_C7F16 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 C7F16 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_C8F18 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 C8F18 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_CC4F8 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CC4F8 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -* SfcVMR_CCl4 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CCl4 1750-2100/1-12/1/0 RY xy v/v CCl4 802 1 1 -# * SfcVMR_CF4 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CF4 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -* SfcVMR_CFC11 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CFC11 1750-2100/1-12/1/0 RY xy v/v CFC11 802 1 1 -* SfcVMR_CFC113 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CFC113 1750-2100/1-12/1/0 RY xy v/v CFC113 802 1 1 -* SfcVMR_CFC114 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CFC114 1750-2100/1-12/1/0 RY xy v/v CFC114 802 1 1 -* SfcVMR_CFC115 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CFC115 1750-2100/1-12/1/0 RY xy v/v CFC115 802 1 1 -* SfcVMR_CFC12 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CFC12 1750-2100/1-12/1/0 RY xy v/v CFC12 802 1 1 -* SfcVMR_CH2Cl2 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CH2Cl2 1750-2100/1-12/1/0 RY xy v/v CH2Cl2 802 1 1 -* SfcVMR_CH3Br $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CH3Br 1750-2100/1-12/1/0 RY xy v/v CH3Br 802 1 1 -* SfcVMR_CH3CCl3 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CH3CCl3 1750-2100/1-12/1/0 RY xy v/v CH3CCl3 802 1 1 -* SfcVMR_CH3Cl $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CH3Cl 1750-2100/1-12/1/0 RY xy v/v CH3Cl 802 1 1 -* SfcVMR_CH4 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CH4 1750-2100/1-12/1/0 RY xy v/v CH4 802 1 1 -* SfcVMR_CHCl3 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CHCl3 1750-2100/1-12/1/0 RY xy v/v CHCl3 802 1 1 -# * SfcVMR_CO2 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 CO2 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -* SfcVMR_H1211 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 H1211 1750-2100/1-12/1/0 RY xy v/v H1211 802 1 1 -* SfcVMR_H1301 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 H1301 1750-2100/1-12/1/0 RY xy v/v H1301 802 1 1 -* SfcVMR_H2402 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 H2402 1750-2100/1-12/1/0 RY xy v/v H2402 802 1 1 +# * SfcVMR_C2F6 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 C2F6 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_C3F8 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 C3F8 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_C4F10 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 C4F10 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_C5F12 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 C5F12 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_C6F14 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 C6F14 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_C7F16 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 C7F16 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_C8F18 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 C8F18 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_CC4F8 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CC4F8 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +* SfcVMR_CCl4 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CCl4 1750-2100/1-12/1/0 RY xy v/v CCl4 802 1 1 +# * SfcVMR_CF4 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CF4 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +* SfcVMR_CFC11 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CFC11 1750-2100/1-12/1/0 RY xy v/v CFC11 802 1 1 +* SfcVMR_CFC113 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CFC113 1750-2100/1-12/1/0 RY xy v/v CFC113 802 1 1 +* SfcVMR_CFC114 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CFC114 1750-2100/1-12/1/0 RY xy v/v CFC114 802 1 1 +* SfcVMR_CFC115 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CFC115 1750-2100/1-12/1/0 RY xy v/v CFC115 802 1 1 +* SfcVMR_CFC12 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CFC12 1750-2100/1-12/1/0 RY xy v/v CFC12 802 1 1 +* SfcVMR_CH2Cl2 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CH2Cl2 1750-2100/1-12/1/0 RY xy v/v CH2Cl2 802 1 1 +* SfcVMR_CH3Br $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CH3Br 1750-2100/1-12/1/0 RY xy v/v CH3Br 802 1 1 +* SfcVMR_CH3CCl3 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CH3CCl3 1750-2100/1-12/1/0 RY xy v/v CH3CCl3 802 1 1 +* SfcVMR_CH3Cl $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CH3Cl 1750-2100/1-12/1/0 RY xy v/v CH3Cl 802 1 1 +* SfcVMR_CH4 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CH4 1750-2100/1-12/1/0 RY xy v/v CH4 802 1 1 +* SfcVMR_CHCl3 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CHCl3 1750-2100/1-12/1/0 RY xy v/v CHCl3 802 1 1 +# * SfcVMR_CO2 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 CO2 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +* SfcVMR_H1211 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 H1211 1750-2100/1-12/1/0 RY xy v/v H1211 802 1 1 +* SfcVMR_H1301 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 H1301 1750-2100/1-12/1/0 RY xy v/v H1301 802 1 1 +* SfcVMR_H2402 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 H2402 1750-2100/1-12/1/0 RY xy v/v H2402 802 1 1 # SFC_BC_HCFC123 <- exists in UCX with lifetime of 2 years but has no surface boundary conditions; 200-600 pptv in https://doi.org/10.1021/es802308m -* SfcVMR_HCFC141b $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HCFC141b 1750-2100/1-12/1/0 RY xy v/v HCFC141b 802 1 1 -* SfcVMR_HCFC142b $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HCFC142b 1750-2100/1-12/1/0 RY xy v/v HCFC142b 802 1 1 -* SfcVMR_HCFC22 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HCFC22 1750-2100/1-12/1/0 RY xy v/v HCFC22 802 1 1 -# * SfcVMR_HFC125 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HFC125 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_HFC134a $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HFC134a 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_HFC143a $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HFC143a 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_HFC152a $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HFC152a 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_HFC227ea $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HFC227ea 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_HFC23 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HFC23 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_HFC236fa $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HFC236fa 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_HFC245fa $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HFC245fa 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_HFC32 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HFC32 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_HFC365mfc $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HFC365mfc 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_HFC4310mee $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 HFC4310mee 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -* SfcVMR_N2O $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 N2O 1750-2100/1-12/1/0 RY xy v/v N2O 802 1 1 -# * SfcVMR_NF3 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 NF3 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_SF6 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 SF6 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 -# * SfcVMR_SO2F2 $ROOT/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_BC_$YYYY.nc4 SO2F2 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +* SfcVMR_HCFC141b $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HCFC141b 1750-2100/1-12/1/0 RY xy v/v HCFC141b 802 1 1 +* SfcVMR_HCFC142b $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HCFC142b 1750-2100/1-12/1/0 RY xy v/v HCFC142b 802 1 1 +* SfcVMR_HCFC22 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HCFC22 1750-2100/1-12/1/0 RY xy v/v HCFC22 802 1 1 +# * SfcVMR_HFC125 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HFC125 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_HFC134a $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HFC134a 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_HFC143a $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HFC143a 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_HFC152a $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HFC152a 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_HFC227ea $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HFC227ea 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_HFC23 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HFC23 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_HFC236fa $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HFC236fa 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_HFC245fa $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HFC245fa 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_HFC32 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HFC32 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_HFC365mfc $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HFC365mfc 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_HFC4310mee $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 HFC4310mee 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +* SfcVMR_N2O $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 N2O 1750-2100/1-12/1/0 RY xy v/v N2O 802 1 1 +# * SfcVMR_NF3 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 NF3 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_SF6 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 SF6 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 +# * SfcVMR_SO2F2 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_BC_$YYYY.nc4 SO2F2 1750-2100/1-12/1/0 RY xy v/v * 802 1 1 #============================================================================== # -- Not part of CMIP6 experimental design; use GEOS-Chem defaults @@ -3778,20 +4147,10 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Annual scale factors --- #============================================================================== -(((HTAP.or.XIAO_C3H8 -1 TOTFUEL_THISYR $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc NOxscalar 1985-2010/1/1/0 C xy 1 1 -5 TOTFUEL_2002 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc NOxscalar 2002/1/1/0 C xy 1 -1 -27 TOTFUEL_2008_2010 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc NOxscalar 2008-2010/1/1/0 C xy 1 -1 +(((XIAO_C3H8 6 LIQFUEL_THISYR $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 1985-2010/1/1/0 C xy 1 1 7 LIQFUEL_1985 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 1985/1/1/0 C xy 1 -1 -9 LIQFUEL_2006 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2006/1/1/0 C xy 1 -1 -10 LIQFUEL_2002 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2002/1/1/0 C xy 1 -1 -28 LIQFUEL_2008_2010 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc COscalar 2008-2010/1/1/0 C xy 1 -1 -11 SOLFUEL_THISYR $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc SO2scalar 1985-2010/1/1/0 C xy 1 1 -15 SOLFUEL_2002 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc SO2scalar 2002/1/1/0 C xy 1 -1 -19 SOLFUEL_2008 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc SO2scalar 2008/1/1/0 C xy 1 -1 -29 SOLFUEL_2008_2010 $ROOT/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc SO2scalar 2008-2010/1/1/0 C xy 1 -1 -)))HTAP.or.XIAO_C3H8 +)))XIAO_C3H8 #============================================================================== # --- Diurnal scale factors --- @@ -4057,19 +4416,19 @@ VerboseOnCores: root # Accepted values: root all # --- EPA NEI day-of-week scale factors --- #============================================================================== (((NEI2016_MONMEAN -210 NEI99_DOW_NOX $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc NOX 1999/1-12/WD/0 C xy 1 1 -211 NEI99_DOW_CO $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc CO 1999/1-12/WD/0 C xy 1 1 -212 NEI99_DOW_ALK4 $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc ALK4 1999/1-12/WD/0 C xy 1 1 -213 NEI99_DOW_ACET $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc ACET 1999/1-12/WD/0 C xy 1 1 -214 NEI99_DOW_MEK $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc MEK 1999/1-12/WD/0 C xy 1 1 -215 NEI99_DOW_PRPE $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc PRPE 1999/1-12/WD/0 C xy 1 1 -216 NEI99_DOW_C3H8 $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc C3H8 1999/1-12/WD/0 C xy 1 1 -217 NEI99_DOW_C2H6 $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc C2H6 1999/1-12/WD/0 C xy 1 1 -218 NEI99_DOW_SO2 $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc SO2 1999/1-12/WD/0 C xy 1 1 -219 NEI99_DOW_SO4 $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc SO4 1999/1-12/WD/0 C xy 1 1 -220 NEI99_DOW_MSA $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc MSA 1999/1-12/WD/0 C xy 1 1 -221 NEI99_DOW_BCPI $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc BCPI 1999/1-12/WD/0 C xy 1 1 -222 NEI99_DOW_OCPI $ROOT/NEI2005/v2014-09/scaling/NEI99.dow.geos.1x1.nc OCPI 1999/1-12/WD/0 C xy 1 1 +210 NEI99_DOW_NOX $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc NOX 1999/1-12/WD/0 C xy 1 1 +211 NEI99_DOW_CO $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc CO 1999/1-12/WD/0 C xy 1 1 +212 NEI99_DOW_ALK4 $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc ALK4 1999/1-12/WD/0 C xy 1 1 +213 NEI99_DOW_ACET $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc ACET 1999/1-12/WD/0 C xy 1 1 +214 NEI99_DOW_MEK $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc MEK 1999/1-12/WD/0 C xy 1 1 +215 NEI99_DOW_PRPE $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc PRPE 1999/1-12/WD/0 C xy 1 1 +216 NEI99_DOW_C3H8 $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc C3H8 1999/1-12/WD/0 C xy 1 1 +217 NEI99_DOW_C2H6 $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc C2H6 1999/1-12/WD/0 C xy 1 1 +218 NEI99_DOW_SO2 $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc SO2 1999/1-12/WD/0 C xy 1 1 +219 NEI99_DOW_SO4 $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc SO4 1999/1-12/WD/0 C xy 1 1 +220 NEI99_DOW_MSA $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc MSA 1999/1-12/WD/0 C xy 1 1 +221 NEI99_DOW_BCPI $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc BCPI 1999/1-12/WD/0 C xy 1 1 +222 NEI99_DOW_OCPI $ROOT/NEI2005/v2023-02/NEI99.dow.geos.1x1.corrected.012023.nc OCPI 1999/1-12/WD/0 C xy 1 1 )))NEI2016_MONMEAN #============================================================================== From 821fa47be7672f3d49d8066815b87b2f3417a0d2 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 11 Mar 2024 13:41:36 -0600 Subject: [PATCH 155/331] Update changelog Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 6 ++++++ GeosCore/cldj_interface_mod.F90 | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45f8878bb..cf63b1ff4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Added GEOS-IT processed lat-lon fields as a valid option when creating GCHP run directories - Functions `charArr2str` and `str2CharArr` in `Headers/charpak_mod.F90` - Field `State_Diag%Obspack_CharArray` as a 2-D character array +- Added util folder in run/CESM to include .cdl file used to generate CESM NetCDF input file for deposition ### Changed - Updated Harvard Cannon operational run scripts to use `huce_cascade` instead of `huce_intel`; also added `sapphire` @@ -24,11 +25,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Now use `raw` instead of `native` in GCHP run directory scripts & templates - Rename env var `RUNDIR_METLIGHTNING_DIR_NATIVE` to `RUNDIR_METLIGHTNING_DIR` - Rename env var `RUNDIR_METLIGHTNING_NATIVE_RES` to `RUNDIR_METLIGHTNING_RES` +- Updated config files used in CESM from GEOS-Chem 14.1 to 14.3 ### Fixed - Fixed unit conversions in GEOS-only code - Fixed GEOS-IT native lat-lon filenames used for clusters other than discover - Fixed offline emission paths set when using GEOS-IT meteorology +- Fixed format issue in input_mod RRTMG print statement caught by some compilers + +### Removed +- Removed MPI broadcasts in CESM-only photolysis code; will read on all cores ## [14.3.0] - 2024-02-07 ### Added diff --git a/GeosCore/cldj_interface_mod.F90 b/GeosCore/cldj_interface_mod.F90 index cb1833d39..faa735272 100644 --- a/GeosCore/cldj_interface_mod.F90 +++ b/GeosCore/cldj_interface_mod.F90 @@ -160,7 +160,7 @@ SUBROUTINE Run_CloudJ( Input_Opt, State_Chm, State_Diag, & USE Cldj_Cmn_Mod, ONLY : L_, L1_, W_, S_, LWEPAR USE Cldj_Cmn_Mod, ONLY : JVN_, AN_, NQD_, W_r USE Cldj_Cmn_Mod, ONLY : JIND, JFACTA, FL, QAA, RAA, SAA - USE Cldj_Sub_Mod, ONLY : Cloud_JX + USE Cldj_Sub_Mod, ONLY : Cloud_JX USE Cmn_Size_Mod, ONLY : NRHAER, NRH, NDUST USE ErrCode_Mod USE Input_Opt_Mod, ONLY : OptInput From 3900e01839ab90868f3e1b09a0c632c654bd6221 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 14 Mar 2024 09:12:39 -0600 Subject: [PATCH 156/331] Fix path for GMI OH and prod/loss in GEOS-Chem HEMCO_Config.rc Signed-off-by: Lizzie Lundgren --- run/CESM/HEMCO_Config.rc | 490 +++++++++++++++++++-------------------- 1 file changed, 245 insertions(+), 245 deletions(-) diff --git a/run/CESM/HEMCO_Config.rc b/run/CESM/HEMCO_Config.rc index 2d3b3438f..94c7e6f07 100644 --- a/run/CESM/HEMCO_Config.rc +++ b/run/CESM/HEMCO_Config.rc @@ -3527,7 +3527,7 @@ VerboseOnCores: root # Accepted values: root all #--- Archived GMI OH concentrations --- #============================================================================== (((GMI_OH -* GMI_OH $ROOT/v2015-02/gmi.clim.OH.geos5.2x25.nc species 2005/1-12/1/0 C xyz v/v * - 1 1 +* GMI_OH $ROOT/GMI/v2015-02/gmi.clim.OH.geos5.2x25.nc species 2005/1-12/1/0 C xyz v/v * - 1 1 )))GMI_OH #============================================================================== @@ -3536,250 +3536,250 @@ VerboseOnCores: root # Accepted values: root all # Used for linearized mesospheric chemistry #============================================================================== (((GMI_PROD_LOSS -* GMI_LOSS_A3O2 $ROOT/v2015-02/gmi.clim.A3O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 A3O2 - 1 1 -* GMI_PROD_A3O2 $ROOT/v2015-02/gmi.clim.A3O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s A3O2 - 1 1 -* GMI_LOSS_ACET $ROOT/v2015-02/gmi.clim.ACET.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ACET - 1 1 -* GMI_PROD_ACET $ROOT/v2015-02/gmi.clim.ACET.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ACET - 1 1 -* GMI_LOSS_ACTA $ROOT/v2015-02/gmi.clim.ACTA.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ACTA - 1 1 -* GMI_PROD_ACTA $ROOT/v2015-02/gmi.clim.ACTA.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ACTA - 1 1 -* GMI_LOSS_ALD2 $ROOT/v2015-02/gmi.clim.ALD2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ALD2 - 1 1 -* GMI_PROD_ALD2 $ROOT/v2015-02/gmi.clim.ALD2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ALD2 - 1 1 -* GMI_LOSS_ALK4 $ROOT/v2015-02/gmi.clim.ALK4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ALK4 - 1 1 -* GMI_PROD_ALK4 $ROOT/v2015-02/gmi.clim.ALK4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ALK4 - 1 1 -* GMI_LOSS_ATO2 $ROOT/v2015-02/gmi.clim.ATO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ATO2 - 1 1 -* GMI_PROD_ATO2 $ROOT/v2015-02/gmi.clim.ATO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ATO2 - 1 1 -* GMI_LOSS_B3O2 $ROOT/v2015-02/gmi.clim.B3O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 B3O2 - 1 1 -* GMI_PROD_B3O2 $ROOT/v2015-02/gmi.clim.B3O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s B3O2 - 1 1 -#* GMI_LOSS_Br $ROOT/v2015-02/gmi.clim.Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Br - 1 1 -#* GMI_PROD_Br $ROOT/v2015-02/gmi.clim.Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Br - 1 1 -#* GMI_LOSS_BrCl $ROOT/v2015-02/gmi.clim.BrCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrCl - 1 1 -#* GMI_PROD_BrCl $ROOT/v2015-02/gmi.clim.BrCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrCl - 1 1 -#* GMI_LOSS_BrO $ROOT/v2015-02/gmi.clim.BrO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrO - 1 1 -#* GMI_PROD_BrO $ROOT/v2015-02/gmi.clim.BrO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrO - 1 1 -#* GMI_LOSS_BrNO3 $ROOT/v2015-02/gmi.clim.BrONO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrNO3 - 1 1 -#* GMI_PROD_BrNO3 $ROOT/v2015-02/gmi.clim.BrONO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrNO3 - 1 1 -* GMI_LOSS_C2H6 $ROOT/v2015-02/gmi.clim.C2H6.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 C2H6 - 1 1 -* GMI_PROD_C2H6 $ROOT/v2015-02/gmi.clim.C2H6.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s C2H6 - 1 1 -* GMI_LOSS_C3H8 $ROOT/v2015-02/gmi.clim.C3H8.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 C3H8 - 1 1 -* GMI_PROD_C3H8 $ROOT/v2015-02/gmi.clim.C3H8.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s C3H8 - 1 1 -* GMI_LOSS_CCl4 $ROOT/v2015-02/gmi.clim.CCl4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CCl4 - 1 1 -* GMI_PROD_CCl4 $ROOT/v2015-02/gmi.clim.CCl4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CCl4 - 1 1 -#* GMI_LOSS_H1202 $ROOT/v2015-02/gmi.clim.CF2Br2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1202 - 1 1 -#* GMI_PROD_H1202 $ROOT/v2015-02/gmi.clim.CF2Br2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1202 - 1 1 -* GMI_LOSS_CFC12 $ROOT/v2015-02/gmi.clim.CF2Cl2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC12 - 1 1 -* GMI_PROD_CFC12 $ROOT/v2015-02/gmi.clim.CF2Cl2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC12 - 1 1 -* GMI_LOSS_H1211 $ROOT/v2015-02/gmi.clim.CF2ClBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1211 - 1 1 -* GMI_PROD_H1211 $ROOT/v2015-02/gmi.clim.CF2ClBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1211 - 1 1 -#* GMI_LOSS_H1311 $ROOT/v2015-02/gmi.clim.CF3Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1311 - 1 1 -#* GMI_PROD_H1311 $ROOT/v2015-02/gmi.clim.CF3Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1311 - 1 1 -* GMI_LOSS_CFC113 $ROOT/v2015-02/gmi.clim.CFC113.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC113 - 1 1 -* GMI_PROD_CFC113 $ROOT/v2015-02/gmi.clim.CFC113.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC113 - 1 1 -* GMI_LOSS_CFC114 $ROOT/v2015-02/gmi.clim.CFC114.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC114 - 1 1 -* GMI_PROD_CFC114 $ROOT/v2015-02/gmi.clim.CFC114.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC114 - 1 1 -* GMI_LOSS_CFC115 $ROOT/v2015-02/gmi.clim.CFC115.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC115 - 1 1 -* GMI_PROD_CFC115 $ROOT/v2015-02/gmi.clim.CFC115.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC115 - 1 1 -* GMI_LOSS_CFC11 $ROOT/v2015-02/gmi.clim.CFCl3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC11 - 1 1 -* GMI_PROD_CFC11 $ROOT/v2015-02/gmi.clim.CFCl3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC11 - 1 1 -* GMI_LOSS_CH2O $ROOT/v2015-02/gmi.clim.CH2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH2O - 1 1 -* GMI_PROD_CH2O $ROOT/v2015-02/gmi.clim.CH2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH2O - 1 1 -#* GMI_LOSS_CH3Br $ROOT/v2015-02/gmi.clim.CH3Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3Br - 1 1 -#* GMI_PROD_CH3Br $ROOT/v2015-02/gmi.clim.CH3Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3Br - 1 1 -* GMI_LOSS_CH3CCl3 $ROOT/v2015-02/gmi.clim.CH3CCl3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3CCl3 - 1 1 -* GMI_PROD_CH3CCl3 $ROOT/v2015-02/gmi.clim.CH3CCl3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3CCl3 - 1 1 -* GMI_LOSS_CH3Cl $ROOT/v2015-02/gmi.clim.CH3Cl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3Cl - 1 1 -* GMI_PROD_CH3Cl $ROOT/v2015-02/gmi.clim.CH3Cl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3Cl - 1 1 -* GMI_LOSS_CH4 $ROOT/v2015-02/gmi.clim.CH4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH4 - 1 1 -* GMI_PROD_CH4 $ROOT/v2015-02/gmi.clim.CH4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH4 - 1 1 -* GMI_LOSS_CO $ROOT/v2015-02/gmi.clim.CO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CO - 1 1 -* GMI_PROD_CO $ROOT/v2015-02/gmi.clim.CO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CO - 1 1 -* GMI_LOSS_Cl $ROOT/v2015-02/gmi.clim.Cl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl - 1 1 -* GMI_PROD_Cl $ROOT/v2015-02/gmi.clim.Cl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl - 1 1 -* GMI_LOSS_Cl2 $ROOT/v2015-02/gmi.clim.Cl2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl2 - 1 1 -* GMI_PROD_Cl2 $ROOT/v2015-02/gmi.clim.Cl2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl2 - 1 1 -* GMI_LOSS_Cl2O2 $ROOT/v2015-02/gmi.clim.Cl2O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl2O2 - 1 1 -* GMI_PROD_Cl2O2 $ROOT/v2015-02/gmi.clim.Cl2O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl2O2 - 1 1 -* GMI_LOSS_ClO $ROOT/v2015-02/gmi.clim.ClO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ClO - 1 1 -* GMI_PROD_ClO $ROOT/v2015-02/gmi.clim.ClO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ClO - 1 1 -* GMI_LOSS_ClONO2 $ROOT/v2015-02/gmi.clim.ClONO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ClONO2 - 1 1 -* GMI_PROD_ClONO2 $ROOT/v2015-02/gmi.clim.ClONO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ClONO2 - 1 1 -* GMI_LOSS_EOH $ROOT/v2015-02/gmi.clim.EOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 EOH - 1 1 -* GMI_PROD_EOH $ROOT/v2015-02/gmi.clim.EOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s EOH - 1 1 -* GMI_LOSS_ETO2 $ROOT/v2015-02/gmi.clim.ETO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ETO2 - 1 1 -* GMI_PROD_ETO2 $ROOT/v2015-02/gmi.clim.ETO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ETO2 - 1 1 -* GMI_LOSS_ETP $ROOT/v2015-02/gmi.clim.ETP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ETP - 1 1 -* GMI_PROD_ETP $ROOT/v2015-02/gmi.clim.ETP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ETP - 1 1 -* GMI_LOSS_GCO3 $ROOT/v2015-02/gmi.clim.GCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GCO3 - 1 1 -* GMI_PROD_GCO3 $ROOT/v2015-02/gmi.clim.GCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GCO3 - 1 1 -* GMI_LOSS_GLYC $ROOT/v2015-02/gmi.clim.GLYC.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GLYC - 1 1 -* GMI_PROD_GLYC $ROOT/v2015-02/gmi.clim.GLYC.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GLYC - 1 1 -* GMI_LOSS_GLYX $ROOT/v2015-02/gmi.clim.GLYX.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GLYX - 1 1 -* GMI_PROD_GLYX $ROOT/v2015-02/gmi.clim.GLYX.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GLYX - 1 1 -* GMI_LOSS_GP $ROOT/v2015-02/gmi.clim.GP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GP - 1 1 -* GMI_PROD_GP $ROOT/v2015-02/gmi.clim.GP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GP - 1 1 -* GMI_LOSS_GPAN $ROOT/v2015-02/gmi.clim.GPAN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GPAN - 1 1 -* GMI_PROD_GPAN $ROOT/v2015-02/gmi.clim.GPAN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GPAN - 1 1 -* GMI_LOSS_H $ROOT/v2015-02/gmi.clim.H.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H - 1 1 -* GMI_PROD_H $ROOT/v2015-02/gmi.clim.H.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H - 1 1 -* GMI_LOSS_H2 $ROOT/v2015-02/gmi.clim.H2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2 - 1 1 -* GMI_PROD_H2 $ROOT/v2015-02/gmi.clim.H2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2 - 1 1 -* GMI_LOSS_H2402 $ROOT/v2015-02/gmi.clim.H2402.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2402 - 1 1 -* GMI_PROD_H2402 $ROOT/v2015-02/gmi.clim.H2402.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2402 - 1 1 -* GMI_LOSS_H2O $ROOT/v2015-02/gmi.clim.H2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2O - 1 1 -* GMI_PROD_H2O $ROOT/v2015-02/gmi.clim.H2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2O - 1 1 -* GMI_LOSS_H2O2 $ROOT/v2015-02/gmi.clim.H2O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2O2 - 1 1 -* GMI_PROD_H2O2 $ROOT/v2015-02/gmi.clim.H2O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2O2 - 1 1 -* GMI_LOSS_HAC $ROOT/v2015-02/gmi.clim.HAC.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HAC - 1 1 -* GMI_PROD_HAC $ROOT/v2015-02/gmi.clim.HAC.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HAC - 1 1 -#* GMI_LOSS_HBr $ROOT/v2015-02/gmi.clim.HBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HBr - 1 1 -#* GMI_PROD_HBr $ROOT/v2015-02/gmi.clim.HBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HBr - 1 1 -* GMI_LOSS_HCFC141b $ROOT/v2015-02/gmi.clim.HCFC141b.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC141b - 1 1 -* GMI_PROD_HCFC141b $ROOT/v2015-02/gmi.clim.HCFC141b.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC141b - 1 1 -* GMI_LOSS_HCFC142b $ROOT/v2015-02/gmi.clim.HCFC142b.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC142b - 1 1 -* GMI_PROD_HCFC142b $ROOT/v2015-02/gmi.clim.HCFC142b.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC142b - 1 1 -* GMI_LOSS_HCFC22 $ROOT/v2015-02/gmi.clim.HCFC22.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC22 - 1 1 -* GMI_PROD_HCFC22 $ROOT/v2015-02/gmi.clim.HCFC22.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC22 - 1 1 -* GMI_LOSS_HCOOH $ROOT/v2015-02/gmi.clim.HCOOH.geos5.2x25.20170108.nc loss 2005/1-12/1/0 C xyz s-1 HCOOH - 1 1 -* GMI_PROD_HCOOH $ROOT/v2015-02/gmi.clim.HCOOH.geos5.2x25.20170108.nc prod 2005/1-12/1/0 C xyz v/v/s HCOOH - 1 1 -* GMI_LOSS_HCl $ROOT/v2015-02/gmi.clim.HCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCl - 1 1 -* GMI_PROD_HCl $ROOT/v2015-02/gmi.clim.HCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCl - 1 1 -* GMI_LOSS_HNO2 $ROOT/v2015-02/gmi.clim.HNO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO2 - 1 1 -* GMI_PROD_HNO2 $ROOT/v2015-02/gmi.clim.HNO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO2 - 1 1 -* GMI_LOSS_HNO3 $ROOT/v2015-02/gmi.clim.HNO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO3 - 1 1 -* GMI_PROD_HNO3 $ROOT/v2015-02/gmi.clim.HNO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO3 - 1 1 -* GMI_LOSS_HNO4 $ROOT/v2015-02/gmi.clim.HNO4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO4 - 1 1 -* GMI_PROD_HNO4 $ROOT/v2015-02/gmi.clim.HNO4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO4 - 1 1 -* GMI_LOSS_HO2 $ROOT/v2015-02/gmi.clim.HO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HO2 - 1 1 -* GMI_PROD_HO2 $ROOT/v2015-02/gmi.clim.HO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HO2 - 1 1 -#* GMI_LOSS_HOBr $ROOT/v2015-02/gmi.clim.HOBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HOBr - 1 1 -#* GMI_PROD_HOBr $ROOT/v2015-02/gmi.clim.HOBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HOBr - 1 1 -* GMI_LOSS_HOCl $ROOT/v2015-02/gmi.clim.HOCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HOCl - 1 1 -* GMI_PROD_HOCl $ROOT/v2015-02/gmi.clim.HOCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HOCl - 1 1 -* GMI_LOSS_IALD $ROOT/v2015-02/gmi.clim.IALD.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IALD - 1 1 -* GMI_PROD_IALD $ROOT/v2015-02/gmi.clim.IALD.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IALD - 1 1 -* GMI_LOSS_IAO2 $ROOT/v2015-02/gmi.clim.IAO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IAO2 - 1 1 -* GMI_PROD_IAO2 $ROOT/v2015-02/gmi.clim.IAO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IAO2 - 1 1 -* GMI_LOSS_IAP $ROOT/v2015-02/gmi.clim.IAP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IAP - 1 1 -* GMI_PROD_IAP $ROOT/v2015-02/gmi.clim.IAP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IAP - 1 1 -* GMI_LOSS_INO2 $ROOT/v2015-02/gmi.clim.INO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 INO2 - 1 1 -* GMI_PROD_INO2 $ROOT/v2015-02/gmi.clim.INO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s INO2 - 1 1 -* GMI_LOSS_INPN $ROOT/v2015-02/gmi.clim.INPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 INPN - 1 1 -* GMI_PROD_INPN $ROOT/v2015-02/gmi.clim.INPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s INPN - 1 1 -* GMI_LOSS_ISN1 $ROOT/v2015-02/gmi.clim.ISN1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISN1 - 1 1 -* GMI_PROD_ISN1 $ROOT/v2015-02/gmi.clim.ISN1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISN1 - 1 1 -* GMI_LOSS_ISNP $ROOT/v2015-02/gmi.clim.ISNP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISNP - 1 1 -* GMI_PROD_ISNP $ROOT/v2015-02/gmi.clim.ISNP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISNP - 1 1 -* GMI_LOSS_ISOP $ROOT/v2015-02/gmi.clim.ISOP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISOP - 1 1 -* GMI_PROD_ISOP $ROOT/v2015-02/gmi.clim.ISOP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISOP - 1 1 -* GMI_LOSS_KO2 $ROOT/v2015-02/gmi.clim.KO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 KO2 - 1 1 -* GMI_PROD_KO2 $ROOT/v2015-02/gmi.clim.KO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s KO2 - 1 1 -* GMI_LOSS_MACR $ROOT/v2015-02/gmi.clim.MACR.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MACR - 1 1 -* GMI_PROD_MACR $ROOT/v2015-02/gmi.clim.MACR.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MACR - 1 1 -* GMI_LOSS_MAN2 $ROOT/v2015-02/gmi.clim.MAN2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAN2 - 1 1 -* GMI_PROD_MAN2 $ROOT/v2015-02/gmi.clim.MAN2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAN2 - 1 1 -* GMI_LOSS_MAO3 $ROOT/v2015-02/gmi.clim.MAO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAO3 - 1 1 -* GMI_PROD_MAO3 $ROOT/v2015-02/gmi.clim.MAO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAO3 - 1 1 -* GMI_LOSS_MAOP $ROOT/v2015-02/gmi.clim.MAOP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAOP - 1 1 -* GMI_PROD_MAOP $ROOT/v2015-02/gmi.clim.MAOP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAOP - 1 1 -* GMI_LOSS_MAP $ROOT/v2015-02/gmi.clim.MAP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAP - 1 1 -* GMI_PROD_MAP $ROOT/v2015-02/gmi.clim.MAP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAP - 1 1 -* GMI_LOSS_MCO3 $ROOT/v2015-02/gmi.clim.MCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MCO3 - 1 1 -* GMI_PROD_MCO3 $ROOT/v2015-02/gmi.clim.MCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MCO3 - 1 1 -* GMI_LOSS_MEK $ROOT/v2015-02/gmi.clim.MEK.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MEK - 1 1 -* GMI_PROD_MEK $ROOT/v2015-02/gmi.clim.MEK.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MEK - 1 1 -* GMI_LOSS_MGLY $ROOT/v2015-02/gmi.clim.MGLY.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MGLY - 1 1 -* GMI_PROD_MGLY $ROOT/v2015-02/gmi.clim.MGLY.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MGLY - 1 1 -* GMI_LOSS_MO2 $ROOT/v2015-02/gmi.clim.MO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MO2 - 1 1 -* GMI_PROD_MO2 $ROOT/v2015-02/gmi.clim.MO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MO2 - 1 1 -* GMI_LOSS_MOH $ROOT/v2015-02/gmi.clim.MOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MOH - 1 1 -* GMI_PROD_MOH $ROOT/v2015-02/gmi.clim.MOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MOH - 1 1 -* GMI_LOSS_MP $ROOT/v2015-02/gmi.clim.MP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MP - 1 1 -* GMI_PROD_MP $ROOT/v2015-02/gmi.clim.MP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MP - 1 1 -* GMI_LOSS_MRO2 $ROOT/v2015-02/gmi.clim.MRO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MRO2 - 1 1 -* GMI_PROD_MRO2 $ROOT/v2015-02/gmi.clim.MRO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MRO2 - 1 1 -* GMI_LOSS_MRP $ROOT/v2015-02/gmi.clim.MRP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MRP - 1 1 -* GMI_PROD_MRP $ROOT/v2015-02/gmi.clim.MRP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MRP - 1 1 -* GMI_LOSS_MVK $ROOT/v2015-02/gmi.clim.MVK.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MVK - 1 1 -* GMI_PROD_MVK $ROOT/v2015-02/gmi.clim.MVK.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MVK - 1 1 -* GMI_LOSS_MVN2 $ROOT/v2015-02/gmi.clim.MVN2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MVN2 - 1 1 -* GMI_PROD_MVN2 $ROOT/v2015-02/gmi.clim.MVN2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MVN2 - 1 1 -* GMI_LOSS_N $ROOT/v2015-02/gmi.clim.N.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N - 1 1 -* GMI_PROD_N $ROOT/v2015-02/gmi.clim.N.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N - 1 1 -* GMI_LOSS_N2O $ROOT/v2015-02/gmi.clim.N2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N2O - 1 1 -* GMI_PROD_N2O $ROOT/v2015-02/gmi.clim.N2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N2O - 1 1 -* GMI_LOSS_N2O5 $ROOT/v2015-02/gmi.clim.N2O5.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N2O5 - 1 1 -* GMI_PROD_N2O5 $ROOT/v2015-02/gmi.clim.N2O5.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N2O5 - 1 1 -* GMI_LOSS_NO $ROOT/v2015-02/gmi.clim.NO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO - 1 1 -* GMI_PROD_NO $ROOT/v2015-02/gmi.clim.NO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO - 1 1 -* GMI_LOSS_NO2 $ROOT/v2015-02/gmi.clim.NO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO2 - 1 1 -* GMI_PROD_NO2 $ROOT/v2015-02/gmi.clim.NO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO2 - 1 1 -* GMI_LOSS_NO3 $ROOT/v2015-02/gmi.clim.NO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO3 - 1 1 -* GMI_PROD_NO3 $ROOT/v2015-02/gmi.clim.NO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO3 - 1 1 -* GMI_LOSS_NOx $ROOT/v2015-02/gmi.clim.NOx.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NOx - 1 1 -* GMI_PROD_NOx $ROOT/v2015-02/gmi.clim.NOx.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NOx - 1 1 -* GMI_LOSS_O $ROOT/v2015-02/gmi.clim.O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O - 1 1 -* GMI_PROD_O $ROOT/v2015-02/gmi.clim.O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O - 1 1 -* GMI_LOSS_O1D $ROOT/v2015-02/gmi.clim.O1D.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O1D - 1 1 -* GMI_PROD_O1D $ROOT/v2015-02/gmi.clim.O1D.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O1D - 1 1 -* GMI_LOSS_O3 $ROOT/v2015-02/gmi.clim.O3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O3 - 1 1 -* GMI_PROD_O3 $ROOT/v2015-02/gmi.clim.O3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O3 - 1 1 -* GMI_LOSS_OClO $ROOT/v2015-02/gmi.clim.OClO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 OClO - 1 1 -* GMI_PROD_OClO $ROOT/v2015-02/gmi.clim.OClO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s OClO - 1 1 -* GMI_LOSS_OH $ROOT/v2015-02/gmi.clim.OH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 OH - 1 1 -* GMI_PROD_OH $ROOT/v2015-02/gmi.clim.OH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s OH - 1 1 -* GMI_LOSS_Ox $ROOT/v2015-02/gmi.clim.Ox.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Ox - 1 1 -* GMI_PROD_Ox $ROOT/v2015-02/gmi.clim.Ox.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Ox - 1 1 -* GMI_LOSS_PAN $ROOT/v2015-02/gmi.clim.PAN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PAN - 1 1 -* GMI_PROD_PAN $ROOT/v2015-02/gmi.clim.PAN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PAN - 1 1 -* GMI_LOSS_NPMN $ROOT/v2015-02/gmi.clim.NPMN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NPMN - 1 1 -* GMI_PROD_NPMN $ROOT/v2015-02/gmi.clim.NPMN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NPMN - 1 1 -* GMI_LOSS_IPMN $ROOT/v2015-02/gmi.clim.IPMN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IPMN - 1 1 -* GMI_PROD_IPMN $ROOT/v2015-02/gmi.clim.IPMN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IPMN - 1 1 -* GMI_LOSS_PO2 $ROOT/v2015-02/gmi.clim.PO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PO2 - 1 1 -* GMI_PROD_PO2 $ROOT/v2015-02/gmi.clim.PO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PO2 - 1 1 -* GMI_LOSS_PP $ROOT/v2015-02/gmi.clim.PP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PP - 1 1 -* GMI_PROD_PP $ROOT/v2015-02/gmi.clim.PP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PP - 1 1 -* GMI_LOSS_PPN $ROOT/v2015-02/gmi.clim.PPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PPN - 1 1 -* GMI_PROD_PPN $ROOT/v2015-02/gmi.clim.PPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PPN - 1 1 -* GMI_LOSS_PRN1 $ROOT/v2015-02/gmi.clim.PRN1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRN1 - 1 1 -* GMI_PROD_PRN1 $ROOT/v2015-02/gmi.clim.PRN1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRN1 - 1 1 -* GMI_LOSS_PRPE $ROOT/v2015-02/gmi.clim.PRPE.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRPE - 1 1 -* GMI_PROD_PRPE $ROOT/v2015-02/gmi.clim.PRPE.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRPE - 1 1 -* GMI_LOSS_PRPN $ROOT/v2015-02/gmi.clim.PRPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRPN - 1 1 -* GMI_PROD_PRPN $ROOT/v2015-02/gmi.clim.PRPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRPN - 1 1 -* GMI_LOSS_R4N1 $ROOT/v2015-02/gmi.clim.R4N1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4N1 - 1 1 -* GMI_PROD_R4N1 $ROOT/v2015-02/gmi.clim.R4N1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4N1 - 1 1 -* GMI_LOSS_R4N2 $ROOT/v2015-02/gmi.clim.R4N2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4N2 - 1 1 -* GMI_PROD_R4N2 $ROOT/v2015-02/gmi.clim.R4N2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4N2 - 1 1 -* GMI_LOSS_R4O2 $ROOT/v2015-02/gmi.clim.R4O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4O2 - 1 1 -* GMI_PROD_R4O2 $ROOT/v2015-02/gmi.clim.R4O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4O2 - 1 1 -* GMI_LOSS_R4P $ROOT/v2015-02/gmi.clim.R4P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4P - 1 1 -* GMI_PROD_R4P $ROOT/v2015-02/gmi.clim.R4P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4P - 1 1 -* GMI_LOSS_RA3P $ROOT/v2015-02/gmi.clim.RA3P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RA3P - 1 1 -* GMI_PROD_RA3P $ROOT/v2015-02/gmi.clim.RA3P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RA3P - 1 1 -* GMI_LOSS_RB3P $ROOT/v2015-02/gmi.clim.RB3P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RB3P - 1 1 -* GMI_PROD_RB3P $ROOT/v2015-02/gmi.clim.RB3P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RB3P - 1 1 -* GMI_LOSS_RCHO $ROOT/v2015-02/gmi.clim.RCHO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCHO - 1 1 -* GMI_PROD_RCHO $ROOT/v2015-02/gmi.clim.RCHO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCHO - 1 1 -* GMI_LOSS_RCO3 $ROOT/v2015-02/gmi.clim.RCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCO3 - 1 1 -* GMI_PROD_RCO3 $ROOT/v2015-02/gmi.clim.RCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCO3 - 1 1 -* GMI_LOSS_RCOOH $ROOT/v2015-02/gmi.clim.RCOOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCOOH - 1 1 -* GMI_PROD_RCOOH $ROOT/v2015-02/gmi.clim.RCOOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCOOH - 1 1 -* GMI_LOSS_RIO1 $ROOT/v2015-02/gmi.clim.RIO1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIO1 - 1 1 -* GMI_PROD_RIO1 $ROOT/v2015-02/gmi.clim.RIO1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIO1 - 1 1 -* GMI_LOSS_RIPA $ROOT/v2015-02/gmi.clim.RIPA.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPA - 1 1 -* GMI_PROD_RIPA $ROOT/v2015-02/gmi.clim.RIPA.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPA - 1 1 -* GMI_LOSS_RIPB $ROOT/v2015-02/gmi.clim.RIPB.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPB - 1 1 -* GMI_PROD_RIPB $ROOT/v2015-02/gmi.clim.RIPB.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPB - 1 1 -* GMI_LOSS_RIPD $ROOT/v2015-02/gmi.clim.RIPD.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPD - 1 1 -* GMI_PROD_RIPD $ROOT/v2015-02/gmi.clim.RIPD.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPD - 1 1 -* GMI_LOSS_ROH $ROOT/v2015-02/gmi.clim.ROH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ROH - 1 1 -* GMI_PROD_ROH $ROOT/v2015-02/gmi.clim.ROH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ROH - 1 1 -* GMI_LOSS_RP $ROOT/v2015-02/gmi.clim.RP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RP - 1 1 -* GMI_PROD_RP $ROOT/v2015-02/gmi.clim.RP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RP - 1 1 -* GMI_LOSS_VRO2 $ROOT/v2015-02/gmi.clim.VRO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 VRO2 - 1 1 -* GMI_PROD_VRO2 $ROOT/v2015-02/gmi.clim.VRO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s VRO2 - 1 1 -* GMI_LOSS_VRP $ROOT/v2015-02/gmi.clim.VRP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 VRP - 1 1 -* GMI_PROD_VRP $ROOT/v2015-02/gmi.clim.VRP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s VRP - 1 1 +* GMI_LOSS_A3O2 $ROOT/GMI/v2015-02/gmi.clim.A3O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 A3O2 - 1 1 +* GMI_PROD_A3O2 $ROOT/GMI/v2015-02/gmi.clim.A3O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s A3O2 - 1 1 +* GMI_LOSS_ACET $ROOT/GMI/v2015-02/gmi.clim.ACET.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ACET - 1 1 +* GMI_PROD_ACET $ROOT/GMI/v2015-02/gmi.clim.ACET.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ACET - 1 1 +* GMI_LOSS_ACTA $ROOT/GMI/v2015-02/gmi.clim.ACTA.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ACTA - 1 1 +* GMI_PROD_ACTA $ROOT/GMI/v2015-02/gmi.clim.ACTA.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ACTA - 1 1 +* GMI_LOSS_ALD2 $ROOT/GMI/v2015-02/gmi.clim.ALD2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ALD2 - 1 1 +* GMI_PROD_ALD2 $ROOT/GMI/v2015-02/gmi.clim.ALD2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ALD2 - 1 1 +* GMI_LOSS_ALK4 $ROOT/GMI/v2015-02/gmi.clim.ALK4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ALK4 - 1 1 +* GMI_PROD_ALK4 $ROOT/GMI/v2015-02/gmi.clim.ALK4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ALK4 - 1 1 +* GMI_LOSS_ATO2 $ROOT/GMI/v2015-02/gmi.clim.ATO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ATO2 - 1 1 +* GMI_PROD_ATO2 $ROOT/GMI/v2015-02/gmi.clim.ATO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ATO2 - 1 1 +* GMI_LOSS_B3O2 $ROOT/GMI/v2015-02/gmi.clim.B3O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 B3O2 - 1 1 +* GMI_PROD_B3O2 $ROOT/GMI/v2015-02/gmi.clim.B3O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s B3O2 - 1 1 +#* GMI_LOSS_Br $ROOT/GMI/v2015-02/gmi.clim.Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Br - 1 1 +#* GMI_PROD_Br $ROOT/GMI/v2015-02/gmi.clim.Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Br - 1 1 +#* GMI_LOSS_BrCl $ROOT/GMI/v2015-02/gmi.clim.BrCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrCl - 1 1 +#* GMI_PROD_BrCl $ROOT/GMI/v2015-02/gmi.clim.BrCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrCl - 1 1 +#* GMI_LOSS_BrO $ROOT/GMI/v2015-02/gmi.clim.BrO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrO - 1 1 +#* GMI_PROD_BrO $ROOT/GMI/v2015-02/gmi.clim.BrO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrO - 1 1 +#* GMI_LOSS_BrNO3 $ROOT/GMI/v2015-02/gmi.clim.BrONO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 BrNO3 - 1 1 +#* GMI_PROD_BrNO3 $ROOT/GMI/v2015-02/gmi.clim.BrONO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s BrNO3 - 1 1 +* GMI_LOSS_C2H6 $ROOT/GMI/v2015-02/gmi.clim.C2H6.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 C2H6 - 1 1 +* GMI_PROD_C2H6 $ROOT/GMI/v2015-02/gmi.clim.C2H6.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s C2H6 - 1 1 +* GMI_LOSS_C3H8 $ROOT/GMI/v2015-02/gmi.clim.C3H8.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 C3H8 - 1 1 +* GMI_PROD_C3H8 $ROOT/GMI/v2015-02/gmi.clim.C3H8.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s C3H8 - 1 1 +* GMI_LOSS_CCl4 $ROOT/GMI/v2015-02/gmi.clim.CCl4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CCl4 - 1 1 +* GMI_PROD_CCl4 $ROOT/GMI/v2015-02/gmi.clim.CCl4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CCl4 - 1 1 +#* GMI_LOSS_H1202 $ROOT/GMI/v2015-02/gmi.clim.CF2Br2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1202 - 1 1 +#* GMI_PROD_H1202 $ROOT/GMI/v2015-02/gmi.clim.CF2Br2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1202 - 1 1 +* GMI_LOSS_CFC12 $ROOT/GMI/v2015-02/gmi.clim.CF2Cl2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC12 - 1 1 +* GMI_PROD_CFC12 $ROOT/GMI/v2015-02/gmi.clim.CF2Cl2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC12 - 1 1 +* GMI_LOSS_H1211 $ROOT/GMI/v2015-02/gmi.clim.CF2ClBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1211 - 1 1 +* GMI_PROD_H1211 $ROOT/GMI/v2015-02/gmi.clim.CF2ClBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1211 - 1 1 +#* GMI_LOSS_H1311 $ROOT/GMI/v2015-02/gmi.clim.CF3Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H1311 - 1 1 +#* GMI_PROD_H1311 $ROOT/GMI/v2015-02/gmi.clim.CF3Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H1311 - 1 1 +* GMI_LOSS_CFC113 $ROOT/GMI/v2015-02/gmi.clim.CFC113.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC113 - 1 1 +* GMI_PROD_CFC113 $ROOT/GMI/v2015-02/gmi.clim.CFC113.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC113 - 1 1 +* GMI_LOSS_CFC114 $ROOT/GMI/v2015-02/gmi.clim.CFC114.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC114 - 1 1 +* GMI_PROD_CFC114 $ROOT/GMI/v2015-02/gmi.clim.CFC114.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC114 - 1 1 +* GMI_LOSS_CFC115 $ROOT/GMI/v2015-02/gmi.clim.CFC115.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC115 - 1 1 +* GMI_PROD_CFC115 $ROOT/GMI/v2015-02/gmi.clim.CFC115.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC115 - 1 1 +* GMI_LOSS_CFC11 $ROOT/GMI/v2015-02/gmi.clim.CFCl3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CFC11 - 1 1 +* GMI_PROD_CFC11 $ROOT/GMI/v2015-02/gmi.clim.CFCl3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CFC11 - 1 1 +* GMI_LOSS_CH2O $ROOT/GMI/v2015-02/gmi.clim.CH2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH2O - 1 1 +* GMI_PROD_CH2O $ROOT/GMI/v2015-02/gmi.clim.CH2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH2O - 1 1 +#* GMI_LOSS_CH3Br $ROOT/GMI/v2015-02/gmi.clim.CH3Br.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3Br - 1 1 +#* GMI_PROD_CH3Br $ROOT/GMI/v2015-02/gmi.clim.CH3Br.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3Br - 1 1 +* GMI_LOSS_CH3CCl3 $ROOT/GMI/v2015-02/gmi.clim.CH3CCl3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3CCl3 - 1 1 +* GMI_PROD_CH3CCl3 $ROOT/GMI/v2015-02/gmi.clim.CH3CCl3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3CCl3 - 1 1 +* GMI_LOSS_CH3Cl $ROOT/GMI/v2015-02/gmi.clim.CH3Cl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH3Cl - 1 1 +* GMI_PROD_CH3Cl $ROOT/GMI/v2015-02/gmi.clim.CH3Cl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH3Cl - 1 1 +* GMI_LOSS_CH4 $ROOT/GMI/v2015-02/gmi.clim.CH4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CH4 - 1 1 +* GMI_PROD_CH4 $ROOT/GMI/v2015-02/gmi.clim.CH4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CH4 - 1 1 +* GMI_LOSS_CO $ROOT/GMI/v2015-02/gmi.clim.CO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 CO - 1 1 +* GMI_PROD_CO $ROOT/GMI/v2015-02/gmi.clim.CO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s CO - 1 1 +* GMI_LOSS_Cl $ROOT/GMI/v2015-02/gmi.clim.Cl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl - 1 1 +* GMI_PROD_Cl $ROOT/GMI/v2015-02/gmi.clim.Cl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl - 1 1 +* GMI_LOSS_Cl2 $ROOT/GMI/v2015-02/gmi.clim.Cl2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl2 - 1 1 +* GMI_PROD_Cl2 $ROOT/GMI/v2015-02/gmi.clim.Cl2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl2 - 1 1 +* GMI_LOSS_Cl2O2 $ROOT/GMI/v2015-02/gmi.clim.Cl2O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Cl2O2 - 1 1 +* GMI_PROD_Cl2O2 $ROOT/GMI/v2015-02/gmi.clim.Cl2O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Cl2O2 - 1 1 +* GMI_LOSS_ClO $ROOT/GMI/v2015-02/gmi.clim.ClO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ClO - 1 1 +* GMI_PROD_ClO $ROOT/GMI/v2015-02/gmi.clim.ClO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ClO - 1 1 +* GMI_LOSS_ClONO2 $ROOT/GMI/v2015-02/gmi.clim.ClONO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ClONO2 - 1 1 +* GMI_PROD_ClONO2 $ROOT/GMI/v2015-02/gmi.clim.ClONO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ClONO2 - 1 1 +* GMI_LOSS_EOH $ROOT/GMI/v2015-02/gmi.clim.EOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 EOH - 1 1 +* GMI_PROD_EOH $ROOT/GMI/v2015-02/gmi.clim.EOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s EOH - 1 1 +* GMI_LOSS_ETO2 $ROOT/GMI/v2015-02/gmi.clim.ETO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ETO2 - 1 1 +* GMI_PROD_ETO2 $ROOT/GMI/v2015-02/gmi.clim.ETO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ETO2 - 1 1 +* GMI_LOSS_ETP $ROOT/GMI/v2015-02/gmi.clim.ETP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ETP - 1 1 +* GMI_PROD_ETP $ROOT/GMI/v2015-02/gmi.clim.ETP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ETP - 1 1 +* GMI_LOSS_GCO3 $ROOT/GMI/v2015-02/gmi.clim.GCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GCO3 - 1 1 +* GMI_PROD_GCO3 $ROOT/GMI/v2015-02/gmi.clim.GCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GCO3 - 1 1 +* GMI_LOSS_GLYC $ROOT/GMI/v2015-02/gmi.clim.GLYC.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GLYC - 1 1 +* GMI_PROD_GLYC $ROOT/GMI/v2015-02/gmi.clim.GLYC.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GLYC - 1 1 +* GMI_LOSS_GLYX $ROOT/GMI/v2015-02/gmi.clim.GLYX.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GLYX - 1 1 +* GMI_PROD_GLYX $ROOT/GMI/v2015-02/gmi.clim.GLYX.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GLYX - 1 1 +* GMI_LOSS_GP $ROOT/GMI/v2015-02/gmi.clim.GP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GP - 1 1 +* GMI_PROD_GP $ROOT/GMI/v2015-02/gmi.clim.GP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GP - 1 1 +* GMI_LOSS_GPAN $ROOT/GMI/v2015-02/gmi.clim.GPAN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 GPAN - 1 1 +* GMI_PROD_GPAN $ROOT/GMI/v2015-02/gmi.clim.GPAN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s GPAN - 1 1 +* GMI_LOSS_H $ROOT/GMI/v2015-02/gmi.clim.H.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H - 1 1 +* GMI_PROD_H $ROOT/GMI/v2015-02/gmi.clim.H.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H - 1 1 +* GMI_LOSS_H2 $ROOT/GMI/v2015-02/gmi.clim.H2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2 - 1 1 +* GMI_PROD_H2 $ROOT/GMI/v2015-02/gmi.clim.H2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2 - 1 1 +* GMI_LOSS_H2402 $ROOT/GMI/v2015-02/gmi.clim.H2402.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2402 - 1 1 +* GMI_PROD_H2402 $ROOT/GMI/v2015-02/gmi.clim.H2402.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2402 - 1 1 +* GMI_LOSS_H2O $ROOT/GMI/v2015-02/gmi.clim.H2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2O - 1 1 +* GMI_PROD_H2O $ROOT/GMI/v2015-02/gmi.clim.H2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2O - 1 1 +* GMI_LOSS_H2O2 $ROOT/GMI/v2015-02/gmi.clim.H2O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 H2O2 - 1 1 +* GMI_PROD_H2O2 $ROOT/GMI/v2015-02/gmi.clim.H2O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s H2O2 - 1 1 +* GMI_LOSS_HAC $ROOT/GMI/v2015-02/gmi.clim.HAC.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HAC - 1 1 +* GMI_PROD_HAC $ROOT/GMI/v2015-02/gmi.clim.HAC.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HAC - 1 1 +#* GMI_LOSS_HBr $ROOT/GMI/v2015-02/gmi.clim.HBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HBr - 1 1 +#* GMI_PROD_HBr $ROOT/GMI/v2015-02/gmi.clim.HBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HBr - 1 1 +* GMI_LOSS_HCFC141b $ROOT/GMI/v2015-02/gmi.clim.HCFC141b.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC141b - 1 1 +* GMI_PROD_HCFC141b $ROOT/GMI/v2015-02/gmi.clim.HCFC141b.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC141b - 1 1 +* GMI_LOSS_HCFC142b $ROOT/GMI/v2015-02/gmi.clim.HCFC142b.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC142b - 1 1 +* GMI_PROD_HCFC142b $ROOT/GMI/v2015-02/gmi.clim.HCFC142b.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC142b - 1 1 +* GMI_LOSS_HCFC22 $ROOT/GMI/v2015-02/gmi.clim.HCFC22.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCFC22 - 1 1 +* GMI_PROD_HCFC22 $ROOT/GMI/v2015-02/gmi.clim.HCFC22.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCFC22 - 1 1 +* GMI_LOSS_HCOOH $ROOT/GMI/v2015-02/gmi.clim.HCOOH.geos5.2x25.20170108.nc loss 2005/1-12/1/0 C xyz s-1 HCOOH - 1 1 +* GMI_PROD_HCOOH $ROOT/GMI/v2015-02/gmi.clim.HCOOH.geos5.2x25.20170108.nc prod 2005/1-12/1/0 C xyz v/v/s HCOOH - 1 1 +* GMI_LOSS_HCl $ROOT/GMI/v2015-02/gmi.clim.HCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HCl - 1 1 +* GMI_PROD_HCl $ROOT/GMI/v2015-02/gmi.clim.HCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HCl - 1 1 +* GMI_LOSS_HNO2 $ROOT/GMI/v2015-02/gmi.clim.HNO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO2 - 1 1 +* GMI_PROD_HNO2 $ROOT/GMI/v2015-02/gmi.clim.HNO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO2 - 1 1 +* GMI_LOSS_HNO3 $ROOT/GMI/v2015-02/gmi.clim.HNO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO3 - 1 1 +* GMI_PROD_HNO3 $ROOT/GMI/v2015-02/gmi.clim.HNO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO3 - 1 1 +* GMI_LOSS_HNO4 $ROOT/GMI/v2015-02/gmi.clim.HNO4.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HNO4 - 1 1 +* GMI_PROD_HNO4 $ROOT/GMI/v2015-02/gmi.clim.HNO4.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HNO4 - 1 1 +* GMI_LOSS_HO2 $ROOT/GMI/v2015-02/gmi.clim.HO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HO2 - 1 1 +* GMI_PROD_HO2 $ROOT/GMI/v2015-02/gmi.clim.HO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HO2 - 1 1 +#* GMI_LOSS_HOBr $ROOT/GMI/v2015-02/gmi.clim.HOBr.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HOBr - 1 1 +#* GMI_PROD_HOBr $ROOT/GMI/v2015-02/gmi.clim.HOBr.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HOBr - 1 1 +* GMI_LOSS_HOCl $ROOT/GMI/v2015-02/gmi.clim.HOCl.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 HOCl - 1 1 +* GMI_PROD_HOCl $ROOT/GMI/v2015-02/gmi.clim.HOCl.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s HOCl - 1 1 +* GMI_LOSS_IALD $ROOT/GMI/v2015-02/gmi.clim.IALD.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IALD - 1 1 +* GMI_PROD_IALD $ROOT/GMI/v2015-02/gmi.clim.IALD.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IALD - 1 1 +* GMI_LOSS_IAO2 $ROOT/GMI/v2015-02/gmi.clim.IAO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IAO2 - 1 1 +* GMI_PROD_IAO2 $ROOT/GMI/v2015-02/gmi.clim.IAO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IAO2 - 1 1 +* GMI_LOSS_IAP $ROOT/GMI/v2015-02/gmi.clim.IAP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IAP - 1 1 +* GMI_PROD_IAP $ROOT/GMI/v2015-02/gmi.clim.IAP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IAP - 1 1 +* GMI_LOSS_INO2 $ROOT/GMI/v2015-02/gmi.clim.INO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 INO2 - 1 1 +* GMI_PROD_INO2 $ROOT/GMI/v2015-02/gmi.clim.INO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s INO2 - 1 1 +* GMI_LOSS_INPN $ROOT/GMI/v2015-02/gmi.clim.INPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 INPN - 1 1 +* GMI_PROD_INPN $ROOT/GMI/v2015-02/gmi.clim.INPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s INPN - 1 1 +* GMI_LOSS_ISN1 $ROOT/GMI/v2015-02/gmi.clim.ISN1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISN1 - 1 1 +* GMI_PROD_ISN1 $ROOT/GMI/v2015-02/gmi.clim.ISN1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISN1 - 1 1 +* GMI_LOSS_ISNP $ROOT/GMI/v2015-02/gmi.clim.ISNP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISNP - 1 1 +* GMI_PROD_ISNP $ROOT/GMI/v2015-02/gmi.clim.ISNP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISNP - 1 1 +* GMI_LOSS_ISOP $ROOT/GMI/v2015-02/gmi.clim.ISOP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ISOP - 1 1 +* GMI_PROD_ISOP $ROOT/GMI/v2015-02/gmi.clim.ISOP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ISOP - 1 1 +* GMI_LOSS_KO2 $ROOT/GMI/v2015-02/gmi.clim.KO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 KO2 - 1 1 +* GMI_PROD_KO2 $ROOT/GMI/v2015-02/gmi.clim.KO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s KO2 - 1 1 +* GMI_LOSS_MACR $ROOT/GMI/v2015-02/gmi.clim.MACR.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MACR - 1 1 +* GMI_PROD_MACR $ROOT/GMI/v2015-02/gmi.clim.MACR.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MACR - 1 1 +* GMI_LOSS_MAN2 $ROOT/GMI/v2015-02/gmi.clim.MAN2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAN2 - 1 1 +* GMI_PROD_MAN2 $ROOT/GMI/v2015-02/gmi.clim.MAN2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAN2 - 1 1 +* GMI_LOSS_MAO3 $ROOT/GMI/v2015-02/gmi.clim.MAO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAO3 - 1 1 +* GMI_PROD_MAO3 $ROOT/GMI/v2015-02/gmi.clim.MAO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAO3 - 1 1 +* GMI_LOSS_MAOP $ROOT/GMI/v2015-02/gmi.clim.MAOP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAOP - 1 1 +* GMI_PROD_MAOP $ROOT/GMI/v2015-02/gmi.clim.MAOP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAOP - 1 1 +* GMI_LOSS_MAP $ROOT/GMI/v2015-02/gmi.clim.MAP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MAP - 1 1 +* GMI_PROD_MAP $ROOT/GMI/v2015-02/gmi.clim.MAP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MAP - 1 1 +* GMI_LOSS_MCO3 $ROOT/GMI/v2015-02/gmi.clim.MCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MCO3 - 1 1 +* GMI_PROD_MCO3 $ROOT/GMI/v2015-02/gmi.clim.MCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MCO3 - 1 1 +* GMI_LOSS_MEK $ROOT/GMI/v2015-02/gmi.clim.MEK.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MEK - 1 1 +* GMI_PROD_MEK $ROOT/GMI/v2015-02/gmi.clim.MEK.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MEK - 1 1 +* GMI_LOSS_MGLY $ROOT/GMI/v2015-02/gmi.clim.MGLY.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MGLY - 1 1 +* GMI_PROD_MGLY $ROOT/GMI/v2015-02/gmi.clim.MGLY.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MGLY - 1 1 +* GMI_LOSS_MO2 $ROOT/GMI/v2015-02/gmi.clim.MO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MO2 - 1 1 +* GMI_PROD_MO2 $ROOT/GMI/v2015-02/gmi.clim.MO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MO2 - 1 1 +* GMI_LOSS_MOH $ROOT/GMI/v2015-02/gmi.clim.MOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MOH - 1 1 +* GMI_PROD_MOH $ROOT/GMI/v2015-02/gmi.clim.MOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MOH - 1 1 +* GMI_LOSS_MP $ROOT/GMI/v2015-02/gmi.clim.MP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MP - 1 1 +* GMI_PROD_MP $ROOT/GMI/v2015-02/gmi.clim.MP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MP - 1 1 +* GMI_LOSS_MRO2 $ROOT/GMI/v2015-02/gmi.clim.MRO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MRO2 - 1 1 +* GMI_PROD_MRO2 $ROOT/GMI/v2015-02/gmi.clim.MRO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MRO2 - 1 1 +* GMI_LOSS_MRP $ROOT/GMI/v2015-02/gmi.clim.MRP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MRP - 1 1 +* GMI_PROD_MRP $ROOT/GMI/v2015-02/gmi.clim.MRP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MRP - 1 1 +* GMI_LOSS_MVK $ROOT/GMI/v2015-02/gmi.clim.MVK.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MVK - 1 1 +* GMI_PROD_MVK $ROOT/GMI/v2015-02/gmi.clim.MVK.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MVK - 1 1 +* GMI_LOSS_MVN2 $ROOT/GMI/v2015-02/gmi.clim.MVN2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 MVN2 - 1 1 +* GMI_PROD_MVN2 $ROOT/GMI/v2015-02/gmi.clim.MVN2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s MVN2 - 1 1 +* GMI_LOSS_N $ROOT/GMI/v2015-02/gmi.clim.N.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N - 1 1 +* GMI_PROD_N $ROOT/GMI/v2015-02/gmi.clim.N.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N - 1 1 +* GMI_LOSS_N2O $ROOT/GMI/v2015-02/gmi.clim.N2O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N2O - 1 1 +* GMI_PROD_N2O $ROOT/GMI/v2015-02/gmi.clim.N2O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N2O - 1 1 +* GMI_LOSS_N2O5 $ROOT/GMI/v2015-02/gmi.clim.N2O5.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 N2O5 - 1 1 +* GMI_PROD_N2O5 $ROOT/GMI/v2015-02/gmi.clim.N2O5.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s N2O5 - 1 1 +* GMI_LOSS_NO $ROOT/GMI/v2015-02/gmi.clim.NO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO - 1 1 +* GMI_PROD_NO $ROOT/GMI/v2015-02/gmi.clim.NO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO - 1 1 +* GMI_LOSS_NO2 $ROOT/GMI/v2015-02/gmi.clim.NO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO2 - 1 1 +* GMI_PROD_NO2 $ROOT/GMI/v2015-02/gmi.clim.NO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO2 - 1 1 +* GMI_LOSS_NO3 $ROOT/GMI/v2015-02/gmi.clim.NO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NO3 - 1 1 +* GMI_PROD_NO3 $ROOT/GMI/v2015-02/gmi.clim.NO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NO3 - 1 1 +* GMI_LOSS_NOx $ROOT/GMI/v2015-02/gmi.clim.NOx.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NOx - 1 1 +* GMI_PROD_NOx $ROOT/GMI/v2015-02/gmi.clim.NOx.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NOx - 1 1 +* GMI_LOSS_O $ROOT/GMI/v2015-02/gmi.clim.O.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O - 1 1 +* GMI_PROD_O $ROOT/GMI/v2015-02/gmi.clim.O.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O - 1 1 +* GMI_LOSS_O1D $ROOT/GMI/v2015-02/gmi.clim.O1D.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O1D - 1 1 +* GMI_PROD_O1D $ROOT/GMI/v2015-02/gmi.clim.O1D.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O1D - 1 1 +* GMI_LOSS_O3 $ROOT/GMI/v2015-02/gmi.clim.O3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 O3 - 1 1 +* GMI_PROD_O3 $ROOT/GMI/v2015-02/gmi.clim.O3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s O3 - 1 1 +* GMI_LOSS_OClO $ROOT/GMI/v2015-02/gmi.clim.OClO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 OClO - 1 1 +* GMI_PROD_OClO $ROOT/GMI/v2015-02/gmi.clim.OClO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s OClO - 1 1 +* GMI_LOSS_OH $ROOT/GMI/v2015-02/gmi.clim.OH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 OH - 1 1 +* GMI_PROD_OH $ROOT/GMI/v2015-02/gmi.clim.OH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s OH - 1 1 +* GMI_LOSS_Ox $ROOT/GMI/v2015-02/gmi.clim.Ox.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 Ox - 1 1 +* GMI_PROD_Ox $ROOT/GMI/v2015-02/gmi.clim.Ox.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s Ox - 1 1 +* GMI_LOSS_PAN $ROOT/GMI/v2015-02/gmi.clim.PAN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PAN - 1 1 +* GMI_PROD_PAN $ROOT/GMI/v2015-02/gmi.clim.PAN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PAN - 1 1 +* GMI_LOSS_NPMN $ROOT/GMI/v2015-02/gmi.clim.NPMN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 NPMN - 1 1 +* GMI_PROD_NPMN $ROOT/GMI/v2015-02/gmi.clim.NPMN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s NPMN - 1 1 +* GMI_LOSS_IPMN $ROOT/GMI/v2015-02/gmi.clim.IPMN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 IPMN - 1 1 +* GMI_PROD_IPMN $ROOT/GMI/v2015-02/gmi.clim.IPMN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s IPMN - 1 1 +* GMI_LOSS_PO2 $ROOT/GMI/v2015-02/gmi.clim.PO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PO2 - 1 1 +* GMI_PROD_PO2 $ROOT/GMI/v2015-02/gmi.clim.PO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PO2 - 1 1 +* GMI_LOSS_PP $ROOT/GMI/v2015-02/gmi.clim.PP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PP - 1 1 +* GMI_PROD_PP $ROOT/GMI/v2015-02/gmi.clim.PP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PP - 1 1 +* GMI_LOSS_PPN $ROOT/GMI/v2015-02/gmi.clim.PPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PPN - 1 1 +* GMI_PROD_PPN $ROOT/GMI/v2015-02/gmi.clim.PPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PPN - 1 1 +* GMI_LOSS_PRN1 $ROOT/GMI/v2015-02/gmi.clim.PRN1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRN1 - 1 1 +* GMI_PROD_PRN1 $ROOT/GMI/v2015-02/gmi.clim.PRN1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRN1 - 1 1 +* GMI_LOSS_PRPE $ROOT/GMI/v2015-02/gmi.clim.PRPE.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRPE - 1 1 +* GMI_PROD_PRPE $ROOT/GMI/v2015-02/gmi.clim.PRPE.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRPE - 1 1 +* GMI_LOSS_PRPN $ROOT/GMI/v2015-02/gmi.clim.PRPN.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 PRPN - 1 1 +* GMI_PROD_PRPN $ROOT/GMI/v2015-02/gmi.clim.PRPN.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s PRPN - 1 1 +* GMI_LOSS_R4N1 $ROOT/GMI/v2015-02/gmi.clim.R4N1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4N1 - 1 1 +* GMI_PROD_R4N1 $ROOT/GMI/v2015-02/gmi.clim.R4N1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4N1 - 1 1 +* GMI_LOSS_R4N2 $ROOT/GMI/v2015-02/gmi.clim.R4N2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4N2 - 1 1 +* GMI_PROD_R4N2 $ROOT/GMI/v2015-02/gmi.clim.R4N2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4N2 - 1 1 +* GMI_LOSS_R4O2 $ROOT/GMI/v2015-02/gmi.clim.R4O2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4O2 - 1 1 +* GMI_PROD_R4O2 $ROOT/GMI/v2015-02/gmi.clim.R4O2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4O2 - 1 1 +* GMI_LOSS_R4P $ROOT/GMI/v2015-02/gmi.clim.R4P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 R4P - 1 1 +* GMI_PROD_R4P $ROOT/GMI/v2015-02/gmi.clim.R4P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s R4P - 1 1 +* GMI_LOSS_RA3P $ROOT/GMI/v2015-02/gmi.clim.RA3P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RA3P - 1 1 +* GMI_PROD_RA3P $ROOT/GMI/v2015-02/gmi.clim.RA3P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RA3P - 1 1 +* GMI_LOSS_RB3P $ROOT/GMI/v2015-02/gmi.clim.RB3P.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RB3P - 1 1 +* GMI_PROD_RB3P $ROOT/GMI/v2015-02/gmi.clim.RB3P.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RB3P - 1 1 +* GMI_LOSS_RCHO $ROOT/GMI/v2015-02/gmi.clim.RCHO.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCHO - 1 1 +* GMI_PROD_RCHO $ROOT/GMI/v2015-02/gmi.clim.RCHO.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCHO - 1 1 +* GMI_LOSS_RCO3 $ROOT/GMI/v2015-02/gmi.clim.RCO3.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCO3 - 1 1 +* GMI_PROD_RCO3 $ROOT/GMI/v2015-02/gmi.clim.RCO3.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCO3 - 1 1 +* GMI_LOSS_RCOOH $ROOT/GMI/v2015-02/gmi.clim.RCOOH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RCOOH - 1 1 +* GMI_PROD_RCOOH $ROOT/GMI/v2015-02/gmi.clim.RCOOH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RCOOH - 1 1 +* GMI_LOSS_RIO1 $ROOT/GMI/v2015-02/gmi.clim.RIO1.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIO1 - 1 1 +* GMI_PROD_RIO1 $ROOT/GMI/v2015-02/gmi.clim.RIO1.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIO1 - 1 1 +* GMI_LOSS_RIPA $ROOT/GMI/v2015-02/gmi.clim.RIPA.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPA - 1 1 +* GMI_PROD_RIPA $ROOT/GMI/v2015-02/gmi.clim.RIPA.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPA - 1 1 +* GMI_LOSS_RIPB $ROOT/GMI/v2015-02/gmi.clim.RIPB.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPB - 1 1 +* GMI_PROD_RIPB $ROOT/GMI/v2015-02/gmi.clim.RIPB.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPB - 1 1 +* GMI_LOSS_RIPD $ROOT/GMI/v2015-02/gmi.clim.RIPD.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RIPD - 1 1 +* GMI_PROD_RIPD $ROOT/GMI/v2015-02/gmi.clim.RIPD.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RIPD - 1 1 +* GMI_LOSS_ROH $ROOT/GMI/v2015-02/gmi.clim.ROH.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 ROH - 1 1 +* GMI_PROD_ROH $ROOT/GMI/v2015-02/gmi.clim.ROH.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s ROH - 1 1 +* GMI_LOSS_RP $ROOT/GMI/v2015-02/gmi.clim.RP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 RP - 1 1 +* GMI_PROD_RP $ROOT/GMI/v2015-02/gmi.clim.RP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s RP - 1 1 +* GMI_LOSS_VRO2 $ROOT/GMI/v2015-02/gmi.clim.VRO2.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 VRO2 - 1 1 +* GMI_PROD_VRO2 $ROOT/GMI/v2015-02/gmi.clim.VRO2.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s VRO2 - 1 1 +* GMI_LOSS_VRP $ROOT/GMI/v2015-02/gmi.clim.VRP.geos5.2x25.nc loss 2005/1-12/1/0 C xyz s-1 VRP - 1 1 +* GMI_PROD_VRP $ROOT/GMI/v2015-02/gmi.clim.VRP.geos5.2x25.nc prod 2005/1-12/1/0 C xyz v/v/s VRP - 1 1 )))GMI_PROD_LOSS #============================================================================== From bb993b2f352ac900b63b94239c26473e7da0a25c Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Fri, 15 Mar 2024 08:12:43 -0400 Subject: [PATCH 157/331] Fix typos in updated volcano emissions file path Even though the updated volcano emissions from GMAO are v202302, the degassing volcano file uses v202106 in its name. There is also a second set of lines in GCClassic/createRunDir.sh that needed to be updated for the volcano emissions. Signed-off-by: Melissa Sulprizio --- run/GCClassic/createRunDir.sh | 10 +++++----- run/GCHP/createRunDir.sh | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/run/GCClassic/createRunDir.sh b/run/GCClassic/createRunDir.sh index 84d6b020f..8d7dc3047 100755 --- a/run/GCClassic/createRunDir.sh +++ b/run/GCClassic/createRunDir.sh @@ -456,10 +456,10 @@ if [[ ${met} = "ModelE2.1" ]]; then # NOTE: Benchmark simulations always use the climatological emissions! if [[ "x${sim_name}" == "xfullchem" ]] || \ [[ "x${sim_name}" == "xaerosol" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202302.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" if [[ "x${sim_extra_option}" == "xbenchmark" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202302.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" else RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" fi @@ -478,12 +478,12 @@ else # NOTE: Benchmark simulations always use the climatological emissions! if [[ "x${sim_name}" == "xfullchem" ]] || \ [[ "x${sim_name}" == "xaerosol" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2021-09/so2_volcanic_emissions_CARN_v202005.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" if [[ "x${sim_extra_option}" == "xbenchmark" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2021-09/so2_volcanic_emissions_CARN_v202005.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" else - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2021-09/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" fi fi diff --git a/run/GCHP/createRunDir.sh b/run/GCHP/createRunDir.sh index 32de6fcbd..649c5706b 100755 --- a/run/GCHP/createRunDir.sh +++ b/run/GCHP/createRunDir.sh @@ -284,10 +284,10 @@ fi # NOTE: Fullchem benchmarks use the climatological volcano emissions! if [[ "x${sim_name}" == "xfullchem" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202202.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" if [[ "x${sim_extra_option}" == "xbenchmark" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202302.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" else RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" fi From 052d87b01e0967515fb3352bfc551ee068fcf451 Mon Sep 17 00:00:00 2001 From: Christopher Holmes Date: Mon, 18 Mar 2024 14:54:29 -0400 Subject: [PATCH 158/331] Fix uptake coefficients on stratospheric aerosol Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for a few species. The affected species are NO2, NO3, and VOC that experience heterogeneous loss on aerosol. The fix should increase heterogeneous losses of these species in the stratosphere. The overall impact on VOC should be small as there is little VOC in the stratosphere. The additional loss of NO2 and NO3 should also increase stratospheric HNO3. --- KPP/fullchem/fullchem_RateLawFuncs.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/KPP/fullchem/fullchem_RateLawFuncs.F90 b/KPP/fullchem/fullchem_RateLawFuncs.F90 index 2a5beb946..3940e465d 100644 --- a/KPP/fullchem/fullchem_RateLawFuncs.F90 +++ b/KPP/fullchem/fullchem_RateLawFuncs.F90 @@ -2972,7 +2972,7 @@ FUNCTION NO2uptk1stOrdAndCloud( H ) RESULT( k ) ! Uptake by stratospheric sulfate (aerosol type 13) ! and by irregular ice cloud (aerosol type 14) gamma = 1.0e-4_dp - k = k + H%xArea(SLA) * gamma + k = k + Ars_L1k( H%xArea(SLA), H%xRadi(SLA), gamma, srMw ) k = k + Ars_L1k( H%xArea(IIC), H%xRadi(IIC), gamma, srMw ) ! Uptake of NO2 in cloud (liquid branch only) @@ -3050,7 +3050,7 @@ FUNCTION NO3uptk1stOrdAndCloud( H ) RESULT( k ) ! Uptake by stratospheric sulfate liquid aerosol ! and by irregular ice cloud gamma = 0.1_dp - k = k + H%xArea(SLA) * gamma + k = k + Arw_L1k( H%xArea(SLA), H%xRadi(SLA), gamma, srMw ) k = k + Ars_L1k( H%xArea(IIC), H%xRadi(IIC), gamma, srMw ) ! Uptake of NO3 in cloud (liquid and ice branches) @@ -3451,7 +3451,7 @@ FUNCTION VOCuptk1stOrd( srMw, gamma, H ) RESULT( k ) k = k + Ars_L1k( H%xArea(ORC), H%xRadi(ORC), gamma, srMw ) k = k + Ars_L1k( H%xArea(SSA), H%xRadi(SSA), gamma, srMw ) k = k + Ars_L1k( H%xArea(SSC), H%xRadi(SSC), gamma, srMw ) - k = k + H%xArea(SLA) * gamma + k = k + Ars_L1k( H%xArea(SLA), H%xRadi(SLA), gamma, srMw ) k = k + Ars_L1k( H%xArea(IIC), H%xRadi(IIC), gamma, srMw ) ENDIF END FUNCTION VOCuptk1stOrd From febd7338f96e4ac0f5be0c1ae30f4d304d1ce05b Mon Sep 17 00:00:00 2001 From: Christopher Holmes Date: Mon, 18 Mar 2024 15:18:38 -0400 Subject: [PATCH 159/331] Fix units in comment --- KPP/fullchem/commonIncludeVars.H | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/KPP/fullchem/commonIncludeVars.H b/KPP/fullchem/commonIncludeVars.H index 3fdc5311a..b5f7cd5b3 100644 --- a/KPP/fullchem/commonIncludeVars.H +++ b/KPP/fullchem/commonIncludeVars.H @@ -192,8 +192,8 @@ REAL(dp) :: vAir ! Volume of air [cm3] REAL(dp) :: vIce ! Ice volume [cm3] REAL(dp) :: vLiq ! Liquid volume [cm3] - REAL(dp) :: wetArea(14) ! Aerosol specific wet sfc area [cm3/cm3] - REAL(dp) :: xArea(14) ! Aerosol specific sfc area [cm3/cm3] + REAL(dp) :: wetArea(14) ! Aerosol specific wet sfc area [cm2/cm3] + REAL(dp) :: xArea(14) ! Aerosol specific sfc area [cm2/cm3] REAL(dp) :: xH2O(14) ! Aerosol water content [cm3/cm3] REAL(dp) :: xRadi(14) ! Aerosol effective radius [cm] REAL(dp) :: xVol(14) ! Aerosol specific volume [cm3/cm3] From 3ce4dfbae49a9aacee229e4cce486f3e2564af66 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 19 Mar 2024 10:10:04 -0400 Subject: [PATCH 160/331] Updated the changelog for PR #2205 CHANGELOG.md - Added note about the bugfix for strat aerosol uptake applied in PR #2205 Signed-off-by: Bob Yantosca --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84e32cae9..0e0664346 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Added - Diel and day-of-week scale factors for CEDS global base emissions +### Fixed +- Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. + ### Changed - Switch from fixed to monthly timezones, which account for daylight savings time more accurately when computing emissions - Updated NOAA GMD surface CH4 boundary conditions through 2022 From ced31f7252191225d8dd77ed816ff67b8367ccb8 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 19 Mar 2024 10:47:07 -0400 Subject: [PATCH 161/331] PR #2205 post-merge fix: Fixed typo in fullchem_RateLawFuncs.F90 KPP/fullchem/fullchem_RateLawFuncs.F90 - Fixed typo: "Arw_L1K" -> "Ars_L1K" Signed-off-by: Bob Yantosca --- KPP/fullchem/fullchem_RateLawFuncs.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/KPP/fullchem/fullchem_RateLawFuncs.F90 b/KPP/fullchem/fullchem_RateLawFuncs.F90 index 3940e465d..246289eee 100644 --- a/KPP/fullchem/fullchem_RateLawFuncs.F90 +++ b/KPP/fullchem/fullchem_RateLawFuncs.F90 @@ -3050,7 +3050,7 @@ FUNCTION NO3uptk1stOrdAndCloud( H ) RESULT( k ) ! Uptake by stratospheric sulfate liquid aerosol ! and by irregular ice cloud gamma = 0.1_dp - k = k + Arw_L1k( H%xArea(SLA), H%xRadi(SLA), gamma, srMw ) + k = k + Ars_L1k( H%xArea(SLA), H%xRadi(SLA), gamma, srMw ) k = k + Ars_L1k( H%xArea(IIC), H%xRadi(IIC), gamma, srMw ) ! Uptake of NO3 in cloud (liquid and ice branches) From 560dd18840702034573f8094a078caf8af6e8a48 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 20 Mar 2024 13:36:48 -0400 Subject: [PATCH 162/331] PR #2078 post-merge update: Add changelog entry CHANGELOG.md - Added a blurb describing the change added in PR #2078 Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e0664346..3b27de610 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated NOAA GMD surface CH4 boundary conditions through 2022 - Rename `NITs_Jscale_JHNO3` to `NITs_Jscale` and `NIT_Jscale_JHNO2` to `NIT_Jscale` in `geoschem_config.yml` templates - Updated volcano emissions from GMAO v202005 product to v202302 which extends to the end of 2022 +- Use local scale height and level thickness to determine the PBL to determine the PBL top level and PBL pressure thickness ### Fixed - Use rate-law function `GCARR_ac` for rxns that have Arrhenius `B` parameters that are zero From 46526d15f6a3eb02f10cbaa04a1124b83d42dc32 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 20 Mar 2024 14:53:40 -0400 Subject: [PATCH 163/331] Fix bug in SLP and TROPP scaling for GCHP GEOS-IT pre-processed files SLP and TROPP are both converted from Pa to hPa during pre-processing and so do not need to be scaled in ExtData.rc to convert units. Signed-off-by: Lizzie Lundgren --- run/shared/settings/geosit/geosit.preprocessed_ll.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run/shared/settings/geosit/geosit.preprocessed_ll.txt b/run/shared/settings/geosit/geosit.preprocessed_ll.txt index c284df954..0111b927a 100644 --- a/run/shared/settings/geosit/geosit.preprocessed_ll.txt +++ b/run/shared/settings/geosit/geosit.preprocessed_ll.txt @@ -69,12 +69,12 @@ SEAICE60 1 N Y F0;003000 none none SEAICE60 ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A SEAICE70 1 N Y F0;003000 none none SEAICE70 ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc SEAICE80 1 N Y F0;003000 none none SEAICE80 ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc SEAICE90 1 N Y F0;003000 none none SEAICE90 ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc -SLP Pa N Y F0;003000 none 0.01 SLP ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc +SLP hPa N Y F0;003000 none none SLP ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc SNODP 1 N Y F0;003000 none none SNODP ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc SNOMAS 1 N Y F0;003000 none none SNOMAS ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc RADSWG 1 N Y F0;003000 none none SWGDN ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc TO3 dobson N Y F0;003000 none none TO3 ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc -TROPP Pa N Y F0;003000 none 0.01 TROPPT ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc +TROPP hPa N Y F0;003000 none none TROPPT ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc TSKIN 1 N Y F0;003000 none none TS ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc TS 1 N Y F0;003000 none none T2M ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc USTAR 1 N Y F0;003000 none none USTAR ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc From ef0cd1b26b78a3d1b3dee339464a71c5bbdd7691 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 20 Mar 2024 14:54:03 -0400 Subject: [PATCH 164/331] Minor format updates for character alignment in ExtData. Signed-off-by: Lizzie Lundgren --- run/shared/settings/geosit/geosit.preprocessed_ll.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/run/shared/settings/geosit/geosit.preprocessed_ll.txt b/run/shared/settings/geosit/geosit.preprocessed_ll.txt index 0111b927a..aa0722de9 100644 --- a/run/shared/settings/geosit/geosit.preprocessed_ll.txt +++ b/run/shared/settings/geosit/geosit.preprocessed_ll.txt @@ -70,9 +70,9 @@ SEAICE70 1 N Y F0;003000 none none SEAICE70 ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A SEAICE80 1 N Y F0;003000 none none SEAICE80 ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc SEAICE90 1 N Y F0;003000 none none SEAICE90 ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc SLP hPa N Y F0;003000 none none SLP ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc -SNODP 1 N Y F0;003000 none none SNODP ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc -SNOMAS 1 N Y F0;003000 none none SNOMAS ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc -RADSWG 1 N Y F0;003000 none none SWGDN ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc +SNODP 1 N Y F0;003000 none none SNODP ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc +SNOMAS 1 N Y F0;003000 none none SNOMAS ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc +RADSWG 1 N Y F0;003000 none none SWGDN ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc TO3 dobson N Y F0;003000 none none TO3 ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc TROPP hPa N Y F0;003000 none none TROPPT ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc TSKIN 1 N Y F0;003000 none none TS ./MetDir/%y4/%m2/GEOSIT.%y4%m2%d2.A1.05x0625.nc From dc5507072e180437e155ca524eccc7738d9de351 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 20 Mar 2024 14:54:52 -0400 Subject: [PATCH 165/331] Change ExtData.rc entry scaling from 1.0 to none for GEOS-FP template file This update causes no differences Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + run/shared/settings/geosfp/geosfp.preprocessed_ll.txt | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf63b1ff4..747b2f4fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Fixed GEOS-IT native lat-lon filenames used for clusters other than discover - Fixed offline emission paths set when using GEOS-IT meteorology - Fixed format issue in input_mod RRTMG print statement caught by some compilers +- Fixed GEOS-IT SLP and TROPP scaling in pre-processed files used in GCHP ### Removed - Removed MPI broadcasts in CESM-only photolysis code; will read on all cores diff --git a/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt b/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt index 7046beddd..170fdb484 100644 --- a/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt +++ b/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt @@ -57,7 +57,7 @@ SEAICE70 1 N Y F0;003000 none none SEAICE70 ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1 SEAICE80 1 N Y F0;003000 none none SEAICE80 ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc SEAICE90 1 N Y F0;003000 none none SEAICE90 ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc -SLP hPa N Y F0;003000 none 1.0 SLP ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc +SLP hPa N Y F0;003000 none none SLP ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc SNODP 1 N Y F0;003000 none none SNODP ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc SNOMAS 1 N Y F0;003000 none none SNOMAS ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc @@ -65,7 +65,7 @@ RADSWG 1 N Y F0;003000 none none SWGDN ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025 TO3 dobson N Y F0;003000 none none TO3 ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc -TROPP hPa N Y F0;003000 none 1.0 TROPPT ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc +TROPP hPa N Y F0;003000 none none TROPPT ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc TSKIN 1 N Y F0;003000 none none TS ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc TS 1 N Y F0;003000 none none T2M ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc @@ -77,8 +77,8 @@ V10M m_s-1 N Y F0;003000 none none V10M ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025 Z0 1 N Y F0;003000 none none Z0M ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.A1.025x03125.nc # --- Surface pressure, 3-hr instantaneous --- -PS1 hPa N Y 0 none 1.0 PS ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.I3.025x03125.nc -PS2 hPa N Y 0;001000 none 1.0 PS ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.I3.025x03125.nc +PS1 hPa N Y 0 none none PS ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.I3.025x03125.nc +PS2 hPa N Y 0;001000 none none PS ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.I3.025x03125.nc # --- 3D variables, 3-hr instantaneous --- SPHU1 kg_kg-1 N Y 0 none none QV ./MetDir/%y4/%m2/GEOSFP.%y4%m2%d2.I3.025x03125.nc From 720183a5c22fbd2e8acdb0997406a7ba14372b6a Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 20 Mar 2024 16:27:01 -0400 Subject: [PATCH 166/331] Add utility scripts to restart failed integration/parallel tests test/shared/commonFuncsForTests.sh - Added UTILS_DIR global variable test/shared/utils/cannon/integrationTest/README.md test/shared/utils/cannon/integrationTest/redoIntegrationTestCompile.sh test/shared/utils/cannon/integrationTest/redoIntegrationTestExecute.sh - Utility scripts (and README) to restart failed integration tests on Harvard Cannon test/shared/utils/cannon/parallelTest/README.md test/shared/utils/cannon/parallelTest/redoIntegrationTestCompile.sh test/shared/utils/cannon/parallelTest/redoIntegrationTestExecute.sh - Utility scripts (and README) to restart failed parallel tests on Harvard Cannon test/integration/GCClassic/integrationTestCreate.sh test/integration/GCHP/integrationTestCreate.sh - Add code to copy test/shared/utils/cannon/integrationTest directory to the "utils/" folder of the integration test root directory test/parallel/GCClassic/parallelTestCreate.sh - Add code to copy the test/shared/utils/cannon/parallelTest directory to the "utils/" folder of the parallel test root directory CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + .../GCClassic/integrationTestCreate.sh | 33 ++++++++++++--- .../integration/GCHP/integrationTestCreate.sh | 33 ++++++++++++--- test/parallel/GCClassic/parallelTestCreate.sh | 34 +++++++++++++--- test/shared/commonFunctionsForTests.sh | 1 + .../utils/cannon/integrationTest/README.md | 32 +++++++++++++++ .../redoIntegrationTestCompile.sh | 40 +++++++++++++++++++ .../redoIntegrationTestExecute.sh | 40 +++++++++++++++++++ .../utils/cannon/parallelTest/README.md | 32 +++++++++++++++ .../parallelTest/redoParallelTestCompile.sh | 40 +++++++++++++++++++ .../parallelTest/redoParallelTestExecute.sh | 40 +++++++++++++++++++ 11 files changed, 308 insertions(+), 18 deletions(-) create mode 100644 test/shared/utils/cannon/integrationTest/README.md create mode 100755 test/shared/utils/cannon/integrationTest/redoIntegrationTestCompile.sh create mode 100755 test/shared/utils/cannon/integrationTest/redoIntegrationTestExecute.sh create mode 100644 test/shared/utils/cannon/parallelTest/README.md create mode 100755 test/shared/utils/cannon/parallelTest/redoParallelTestCompile.sh create mode 100755 test/shared/utils/cannon/parallelTest/redoParallelTestExecute.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 2433243a9..1e5b472fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - GCC/GCHP integration tests will exit immediately if `scheduler` is omitted. - Don't create run directories for integration/parallel tests if invoked with `-t compile` - Refactor integration and parallel test scripts to reduce the number of input arguments +- Copy utility scripts that allow you to resubmit failed to integration and parallel test root directories ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index 3719a205a..8c27b64de 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -26,8 +26,11 @@ thisDir=$(pwd -P) cd "${thisDir}" +# Path to the test/shared folder in source code +sharedDir=$(realpath "${thisDir}/../../shared") + # Source the script containing utility functions and variables -commonFuncs="${thisDir}/../../shared/commonFunctionsForTests.sh" +commonFuncs="${sharedDir}/commonFunctionsForTests.sh" . "${commonFuncs}" #============================================================================= @@ -103,6 +106,7 @@ execDir="${itRoot}/${EXEC_DIR}" logsDir="${itRoot}/${LOGS_DIR}" scriptsDir="${itRoot}/${SCRIPTS_DIR}" rundirsDir="${itRoot}/${RUNDIRS_DIR}" +utilsDir="${itRoot}/${UTILS_DIR}" # Get absolute path of the environment file envFile=$(absolute_path "${envFile}") @@ -149,17 +153,32 @@ ln -s "${superProjectDir}" ${itRoot}/CodeDir # Copy files to the proper folders #============================================================================= -printf "\nCopying run scripts to: ${itRoot}/${SCRIPTS_DIR}\n" +printf "\nCopying run scripts to: ${scriptsDir}\n" cp -f ${thisDir}/integration*.sh ${scriptsDir} cp -f ${commonFuncs} ${scriptsDir} cp -f ${thisDir}/README.md ${scriptsDir} cp -f ${thisDir}/README.testroot.md ${itRoot}/README.md -# Only copy the environment file for Harvard Cannon -[[ "X${site}" == "XCANNON" ]] && cp -f ${envFile} ${envDir}/gcclassic.env +if [[ "X${site}" == "XCANNON" ]]; then + + # Copy Cannon environment file + cp -f ${envFile} ${envDir}/gcclassic.env + + # Copy Cannon utility scripts + printf "Copying utility scripts to ${utilsDir}\n" + cp -fR ${sharedDir}/utils/cannon/integrationTest ${utilsDir} -# This is necessary on Compute1 to make all scripts executable -chmod 755 -R ${scriptsDir} +elif [[ "X${site}" == "XCOMPUTE1" ]]; then + + # Copy Compute1 utility scripts + printf "Copying utility scripts to ${utilsDir}\n" + cp -fR ${sharedDir}/utils/compute1/integrationTest ${utilsDir} + + # Force scripts to be executable (Compute1 resets permissions) + chmod 755 -R ${scriptsDir} + chmod 755 -R ${utilsDir} + +fi # Log file with echoback from rundir creation log="${logsDir}/createIntegrationTests.log" @@ -293,7 +312,9 @@ unset logsDir unset rundirsDir unset superProjectDir unset scriptsDir +unset sharedDir unset thisDir +unset utilsDir # Free imported variables unset FILL diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index cf4d0ead0..0bd8a8b0e 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -26,8 +26,11 @@ thisDir=$(pwd -P) cd "${thisDir}" +# Path to the test/shared folder in source code +sharedDir=$(realpath "${thisDir}/../../shared") + # Source the script containing utility functions and variables -commonFuncs="${thisDir}/../../shared/commonFunctionsForTests.sh" +commonFuncs="${sharedDir}/commonFunctionsForTests.sh" . "${commonFuncs}" #============================================================================= @@ -103,6 +106,7 @@ execDir="${itRoot}/${EXEC_DIR}" logsDir="${itRoot}/${LOGS_DIR}" scriptsDir="${itRoot}/${SCRIPTS_DIR}" rundirsDir="${itRoot}/${RUNDIRS_DIR}" +utilsDir="${itRoot}/${UTILS_DIR}" # Get absolute path of the environment file envFile=$(absolute_path "${envFile}") @@ -149,17 +153,32 @@ ln -s "${superProjectDir}" ${itRoot}/CodeDir # Copy files to the proper folders #============================================================================= -printf "\nCopying run scripts to: ${itRoot}/${SCRIPTS_DIR}\n" +printf "\nCopying run scripts to: ${scriptsDir}\n" cp -f ${thisDir}/integration*.sh ${scriptsDir} cp -f ${commonFuncs} ${scriptsDir} cp -f ${thisDir}/README.md ${scriptsDir} cp -f ${thisDir}/README.testroot.md ${itRoot}/README.md -# Only copy the environment file for Harvard Cannon -[[ "X${site}" == "XCANNON" ]] && cp -f ${envFile} ${envDir}/gchp.env +if [[ "X${site}" == "XCANNON" ]]; then + + # Copy Cannon environment file + cp -f ${envFile} ${envDir}/gcclassic.env + + # Copy Cannon utility scripts + printf "Copying utility scripts to ${utilsDir}\n" + cp -fR ${sharedDir}/utils/cannon/integrationTest ${utilsDir} -# This is necessary on Compute1 to make all scripts executable -chmod 755 -R ${scriptsDir} +elif [[ "X${site}" == "XCOMPUTE1" ]]; then + + # Copy Compute1 utility scripts + printf "Copying utility scripts to ${utilsDir}\n" + cp -fR ${sharedDir}/utils/compute1/integrationTest ${utilsDir} + + # Force scripts to be executable (Compute1 resets permissions) + chmod 755 -R ${scriptsDir} + chmod 755 -R ${utilsDir} + +fi # Log file with echoback from rundir creation log="${logsDir}/createIntegrationTests.log" @@ -226,7 +245,9 @@ unset logsDir unset rundirsDir unset superProjectDir unset scriptsDir +unset sharedDir unset thisDir +unset utilsDir # Free imported variables unset FILL diff --git a/test/parallel/GCClassic/parallelTestCreate.sh b/test/parallel/GCClassic/parallelTestCreate.sh index 651ee336e..97f93e1d0 100755 --- a/test/parallel/GCClassic/parallelTestCreate.sh +++ b/test/parallel/GCClassic/parallelTestCreate.sh @@ -26,8 +26,11 @@ thisDir=$(pwd -P) cd "${thisDir}" +# Path to the test/shared folder in source code +sharedDir=$(realpath "${thisDir}/../../shared") + # Source the script containing utility functions and variables -commonFuncs="${thisDir}/../../shared/commonFunctionsForTests.sh" +commonFuncs="${sharedDir}/commonFunctionsForTests.sh" . "${commonFuncs}" #============================================================================= @@ -103,6 +106,7 @@ execDir="${ptRoot}/${EXEC_DIR}" logsDir="${ptRoot}/${LOGS_DIR}" scriptsDir="${ptRoot}/${SCRIPTS_DIR}" rundirsDir="${ptRoot}/${RUNDIRS_DIR}" +utilsDir="${ptRoot}/${UTILS_DIR}" # Remove everything in the parallelization test root folder cleanup_files "${ptRoot}" @@ -146,17 +150,32 @@ ln -s "${superProjectDir}" ${ptRoot}/CodeDir # Copy files to the proper folders #============================================================================= -printf "\nCopying run scripts to: ${ptRoot}\n" +printf "\nCopying run scripts to: ${ptRoot}\n" cp -f ${thisDir}/parallelTest*.sh ${scriptsDir} cp -f ${commonFuncs} ${scriptsDir} cp -f ${thisDir}/README.md ${scriptsDir} cp -f ${thisDir}/README.testroot.md ${ptRoot}/README.md -# Only copy the environment file for Harvard Cannon -[[ "X${site}" == "XCANNON" ]] && cp -f ${envFile} ${envDir}/gcclassic.env +if [[ "X${site}" == "XCANNON" ]]; then + + # Copy Cannon environment file + cp -f ${envFile} ${envDir}/gcclassic.env + + # Copy Cannon utility scripts + printf "Copying utility scripts to ${utilsDir}\n" + cp -fR ${sharedDir}/utils/cannon/parallelTest ${utilsDir} -# This is necessary on Compute1 to make all scripts executable -chmod 755 -R ${scriptsDir} +elif [[ "X${site}" == "XCOMPUTE1" ]]; then + + # Copy Compute1 utility scripts + printf "Copying utility scripts to ${utilsDir}\n" + cp -fR ${sharedDir}/utils/compute1/parallelTest ${utilsDir} + + # Force scripts to be executable (Compute1 resets permissions) + chmod 755 -R ${scriptsDir} + chmod 755 -R ${utilsDir} + +fi # Log file with echoback from rundir creation log="${logsDir}/createParallelTests.log" @@ -279,8 +298,11 @@ unset log unset logsDir unset ptRoot unset rundirsDir +unset scriptsDir +unset sharedDir unset superProjectDir unset thisDir +unset utilsDir # Free imported variables unset FILL diff --git a/test/shared/commonFunctionsForTests.sh b/test/shared/commonFunctionsForTests.sh index 3faf3dc71..bb3461342 100755 --- a/test/shared/commonFunctionsForTests.sh +++ b/test/shared/commonFunctionsForTests.sh @@ -58,6 +58,7 @@ ENV_DIR="env" LOGS_DIR="logs" RUNDIRS_DIR="rundirs" SCRIPTS_DIR="scripts" +UTILS_DIR="utils" function sed_ie() { diff --git a/test/shared/utils/cannon/integrationTest/README.md b/test/shared/utils/cannon/integrationTest/README.md new file mode 100644 index 000000000..e123f4185 --- /dev/null +++ b/test/shared/utils/cannon/integrationTest/README.md @@ -0,0 +1,32 @@ +# Integration test utility scripts + +This folder contains utility scripts that allow you to manually resubmit integration test jobs. This can be useful, for example, if an integration test job fails but you don't want to re-create the entire directory structure or recompile the code. + +## Scripts + +`redoIntegrationTestCompile.sh` + + - Script to manually resubmit the integration test compilation job + + +`redoIntegrationTestExecute.sh` + + - Script to manually resubmit the integration test execution job + + +## Examples + +1. Resubmit an integration test compilation job. + + ```console + $ cd /path/to/integration/test/root/utils + $ ./redoIntegrationTestCompile.sh + ``` + +2. Resubmit an integration test execution job. + + ```console + $ cd /path/to/integration/test/root/utils + $ ./redoIntegrationTestExecute.sh + ``` + diff --git a/test/shared/utils/cannon/integrationTest/redoIntegrationTestCompile.sh b/test/shared/utils/cannon/integrationTest/redoIntegrationTestCompile.sh new file mode 100755 index 000000000..bee328112 --- /dev/null +++ b/test/shared/utils/cannon/integrationTest/redoIntegrationTestCompile.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +#------------------------------------------------------------------------------ +# GEOS-Chem Global Chemical Transport Model ! +#------------------------------------------------------------------------------ +#BOP +# +# !MODULE: redoIntegrationTestCompile.sh +# +# !DESCRIPTION: Manually resubmits an integration test compilation job. +# Useful in case the original job died due to cluster issues, etc. +#\\ +#\\ +# !CALLING SEQUENCE: +# cd /path/to/int/test/root/utils +# ./redoIntegrationTestCompile.sh +#EOP +#------------------------------------------------------------------------------ +#BOC + +# Current directory +thisDir=$(realpath .) + +# Integration test root dir is one dir higher +itRoot=$(realpath "${thisDir}/..") + +# Change to the logs folder +cd "$itRoot/logs" + +# Script to execute +script="${itRoot}/scripts/integrationTestCompile.sh" + +# Make sure the script is found +if [[ ! -f "${script}" ]]; then + echo "${script} was not found! Exiting..." + exit 1 +fi + +# Resubmit the compilation job to the scheduler +sbatch "${script}" diff --git a/test/shared/utils/cannon/integrationTest/redoIntegrationTestExecute.sh b/test/shared/utils/cannon/integrationTest/redoIntegrationTestExecute.sh new file mode 100755 index 000000000..8f331bb69 --- /dev/null +++ b/test/shared/utils/cannon/integrationTest/redoIntegrationTestExecute.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +#------------------------------------------------------------------------------ +# GEOS-Chem Global Chemical Transport Model ! +#------------------------------------------------------------------------------ +#BOP +# +# !MODULE: redoIntegrationTestExecute.sh +# +# !DESCRIPTION: Manually resubmits an integration test execution job. +# Useful in case the original job died due to cluster issues, etc. +#\\ +#\\ +# !CALLING SEQUENCE: +# cd /path/to/int/test/root/utils +# ./redoIntegrationTestCompile.sh +#EOP +#------------------------------------------------------------------------------ +#BOC + +# Current directory +thisDir=$(realpath .) + +# Integration test root dir is one dir higher +itRoot=$(realpath "${thisDir}/..") + +# Change to the logs folder +cd "$itRoot/logs" + +# Script to execute +script="${itRoot}/scripts/integrationTestExecute.sh" + +# Make sure the script is found +if [[ ! -f "${script}" ]]; then + echo "${script} was not found! Exiting..." + exit 1 +fi + +# Resubmit the compilation job to the scheduler +sbatch "${script}" diff --git a/test/shared/utils/cannon/parallelTest/README.md b/test/shared/utils/cannon/parallelTest/README.md new file mode 100644 index 000000000..c4c564874 --- /dev/null +++ b/test/shared/utils/cannon/parallelTest/README.md @@ -0,0 +1,32 @@ +# Parallel test utility scripts + +This folder contains utility scripts that allow you to manually resubmit parallel test jobs. This can be useful, for example, if an parallel test job fails but you don't want to re-create the entire directory structure or recompile the code. + +## Scripts + +`redoParallelTestCompile.sh` + + - Script to manually resubmit the parallel test compilation job + + +`redoParallelTestExecute.sh` + + - Script to manually resubmit the parallel test execution job + + +## Examples + +1. Resubmit an parallel test compilation job. + + ```console + $ cd /path/to/parallel/test/root/utils + $ ./redoParallelTestCompile.sh + ``` + +2. Resubmit an parallel test execution job. + + ```console + $ cd /path/to/parallel/test/root/utils + $ ./redoParallelTestExecute.sh + ``` + diff --git a/test/shared/utils/cannon/parallelTest/redoParallelTestCompile.sh b/test/shared/utils/cannon/parallelTest/redoParallelTestCompile.sh new file mode 100755 index 000000000..19cc49f07 --- /dev/null +++ b/test/shared/utils/cannon/parallelTest/redoParallelTestCompile.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +#------------------------------------------------------------------------------ +# GEOS-Chem Global Chemical Transport Model ! +#------------------------------------------------------------------------------ +#BOP +# +# !MODULE: redoParallelTestCompile.sh +# +# !DESCRIPTION: Manually resubmits an parallel test compilation job. +# Useful in case the original job died due to cluster issues, etc. +#\\ +#\\ +# !CALLING SEQUENCE: +# cd /path/to/int/test/root/utils +# ./redoIntegrationTestCompile.sh +#EOP +#------------------------------------------------------------------------------ +#BOC + +# Current directory +thisDir=$(realpath .) + +# Integration test root dir is one dir higher +ptRoot=$(realpath "${thisDir}/..") + +# Change to the logs folder +cd "$itRoot/logs" + +# Script to execute +script="${ptRoot}/scripts/parallelTestCompile.sh" + +# Make sure the script is found +if [[ ! -f "${script}" ]]; then + echo "${script} was not found! Exiting..." + exit 1 +fi + +# Resubmit the compilation job to the scheduler +sbatch "${script}" diff --git a/test/shared/utils/cannon/parallelTest/redoParallelTestExecute.sh b/test/shared/utils/cannon/parallelTest/redoParallelTestExecute.sh new file mode 100755 index 000000000..ac8e455d5 --- /dev/null +++ b/test/shared/utils/cannon/parallelTest/redoParallelTestExecute.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +#------------------------------------------------------------------------------ +# GEOS-Chem Global Chemical Transport Model ! +#------------------------------------------------------------------------------ +#BOP +# +# !MODULE: redoParallelTestExecute.sh +# +# !DESCRIPTION: Manually resubmits an parallel test execution job. +# Useful in case the original job died due to cluster issues, etc. +#\\ +#\\ +# !CALLING SEQUENCE: +# cd /path/to/int/test/root/utils +# ./redoIntegrationTestCompile.sh +#EOP +#------------------------------------------------------------------------------ +#BOC + +# Current directory +thisDir=$(realpath .) + +# Integration test root dir is one dir higher +ptRoot=$(realpath "${thisDir}/..") + +# Change to the logs folder +cd "$ptRoot/logs" + +# Script to execute +script="${ptRoot}/scripts/parallelTestExecute.sh" + +# Make sure the script is found +if [[ ! -f "${script}" ]]; then + echo "${script} was not found! Exiting..." + exit 1 +fi + +# Resubmit the compilation job to the scheduler +sbatch "${script}" From c7ca3cb23cf6b8b9da96547c976345fe81ebe968 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 20 Mar 2024 16:41:08 -0400 Subject: [PATCH 167/331] Fix minor issues in integrationTestCreate.sh and parallelTestCreate.sh test/integration/GCHP/integrationTestCreate.sh - Remove ":" in message about copying run scripts - Bug fix: copy gchp.env, not gcclassic.env to ${envDir} test/parallel/GCClassic/parallelTestCreate.sh - Remove colon in message about copying run scripts, also remove extra space before printing the ${ptRoot} folder Signed-off-by: Bob Yantosca --- test/integration/GCHP/integrationTestCreate.sh | 4 ++-- test/parallel/GCClassic/parallelTestCreate.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index 0bd8a8b0e..8ad2abd3a 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -153,7 +153,7 @@ ln -s "${superProjectDir}" ${itRoot}/CodeDir # Copy files to the proper folders #============================================================================= -printf "\nCopying run scripts to: ${scriptsDir}\n" +printf "\nCopying run scripts to ${scriptsDir}\n" cp -f ${thisDir}/integration*.sh ${scriptsDir} cp -f ${commonFuncs} ${scriptsDir} cp -f ${thisDir}/README.md ${scriptsDir} @@ -162,7 +162,7 @@ cp -f ${thisDir}/README.testroot.md ${itRoot}/README.md if [[ "X${site}" == "XCANNON" ]]; then # Copy Cannon environment file - cp -f ${envFile} ${envDir}/gcclassic.env + cp -f ${envFile} ${envDir}/gchp.env # Copy Cannon utility scripts printf "Copying utility scripts to ${utilsDir}\n" diff --git a/test/parallel/GCClassic/parallelTestCreate.sh b/test/parallel/GCClassic/parallelTestCreate.sh index 97f93e1d0..1fba154d1 100755 --- a/test/parallel/GCClassic/parallelTestCreate.sh +++ b/test/parallel/GCClassic/parallelTestCreate.sh @@ -150,7 +150,7 @@ ln -s "${superProjectDir}" ${ptRoot}/CodeDir # Copy files to the proper folders #============================================================================= -printf "\nCopying run scripts to: ${ptRoot}\n" +printf "\nCopying run scripts to ${ptRoot}\n" cp -f ${thisDir}/parallelTest*.sh ${scriptsDir} cp -f ${commonFuncs} ${scriptsDir} cp -f ${thisDir}/README.md ${scriptsDir} From c00aa946385fa01d1a6ea383b6484df0774c0517 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Thu, 21 Mar 2024 09:09:50 -0400 Subject: [PATCH 168/331] Add tagged species capability for CFv2. This was initially developed, implemented and tested by Pam Wales for CFv1 (GEOS-Chem v12). --- GeosCore/fullchem_mod.F90 | 39 ++- Interfaces/GEOS/geos_TaggedSpecies.F90 | 405 +++++++++++++++++++++++++ 2 files changed, 442 insertions(+), 2 deletions(-) create mode 100644 Interfaces/GEOS/geos_TaggedSpecies.F90 diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index a63cf1df2..f72328c73 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -134,6 +134,9 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & USE TOMAS_MOD, ONLY : H2SO4_RATE #endif #endif +#ifdef MODEL_GEOS + USE GEOS_TaggedSpecies, ONLY : Run_TaggedSpecies +#endif ! ! !INPUT PARAMETERS: ! @@ -191,8 +194,8 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & REAL(dp) :: RCNTRL (20) REAL(dp) :: RSTATE (20) REAL(dp) :: C_before_integrate(NSPEC) - REAL(fp) :: Before(State_Grid%NX, State_Grid%NY, & - State_Grid%NZ, State_Chm%nAdvect ) +! REAL(fp) :: Before(State_Grid%NX, State_Grid%NY, & +! State_Grid%NZ, State_Chm%nAdvect ) ! For tagged CO saving REAL(fp) :: LCH4, PCO_TOT, PCO_CH4, PCO_NMVOC @@ -1333,6 +1336,14 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & State_Diag%KppTime(I,J,L) = TimeEnd - TimeStart ENDIF + !===================================================================== + ! Check for tagged tracers and adjust those before updating the + ! Species arrays + !===================================================================== +#if defined( MODEL_GEOS ) + CALL Run_TaggedSpecies( I, J, L, C, PRESS, TEMP, State_Chm, RC ) +#endif + !===================================================================== ! Check we have no negative values and copy the concentrations ! calculated from the C array back into State_Chm%Species%Conc @@ -2603,6 +2614,9 @@ SUBROUTINE Init_FullChem( Input_Opt, State_Chm, State_Diag, RC ) USE State_Chm_Mod, ONLY : ChmState USE State_Chm_Mod, ONLY : Ind_ USE State_Diag_Mod, ONLY : DgnState +#ifdef MODEL_GEOS + USE GEOS_TaggedSpecies, ONLY : Init_TaggedSpecies +#endif ! ! !INPUT PARAMETERS: ! @@ -2834,6 +2848,18 @@ SUBROUTINE Init_FullChem( Input_Opt, State_Chm, State_Diag, RC ) ENDIF ENDIF +#ifdef MODEL_GEOS + !-------------------------------------------------------------------- + ! Initialize tagged tracer chemistry + !-------------------------------------------------------------------- + CALL Init_TaggedSpecies( Input_Opt, State_Chm, State_Diag, RC ) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error encountered in "Init_TaggedSpecies"!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF +#endif + END SUBROUTINE Init_FullChem !EOC !------------------------------------------------------------------------------ @@ -2853,6 +2879,10 @@ SUBROUTINE Cleanup_FullChem( RC ) ! !USES: ! USE ErrCode_Mod +#ifdef MODEL_GEOS + USE GEOS_TaggedSpecies, ONLY : Finalize_TaggedSpecies +#endif + ! ! !OUTPUT PARAMETERS: ! @@ -2902,6 +2932,11 @@ SUBROUTINE Cleanup_FullChem( RC ) IF ( RC /= GC_SUCCESS ) RETURN ENDIF +#ifdef MODEL_GEOS + ! Clean up tagged species + CALL Finalize_TaggedSpecies( RC ) +#endif + END SUBROUTINE Cleanup_FullChem !EOC END MODULE FullChem_Mod diff --git a/Interfaces/GEOS/geos_TaggedSpecies.F90 b/Interfaces/GEOS/geos_TaggedSpecies.F90 new file mode 100644 index 000000000..145b61ed9 --- /dev/null +++ b/Interfaces/GEOS/geos_TaggedSpecies.F90 @@ -0,0 +1,405 @@ +#include "MAPL_Generic.h" +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !MODULE: geos_TaggedSpecies +! +! !DESCRIPTION: Module with routines and variables to handle tagged species. +! For now, this module only covers tagged NO(x). It can handle up to 100 +! individual tagged NO species. The number of tagged species is specified +! in the input file 'GEOSChem_TaggedNOx.rc'. If partner_tag is enabled, a +! tagged NO2 species is also used and tagging will be done as NOx (NO+NO2). + +! The tagged species names are hardcoded to 'NOTAG' and NO2TAG', +! respectively. To run with the tagged species, they need to be added to +! the list of advected species in geoschem_config.yaml. Also, for each +! tagged species, there needs to be corresponding entry in the species +! database file (species_database.yml), e.g.: +! +!NOTAG1: +! Background_VV: 1.0e-30 +! Formula: 'NO' +! FullName: Nitrogen oxide tag 1 +! Is_Advected: true +! Is_Gas: true +! Is_Photolysis: false +! MW_g: 30.01 +! +!NO2TAG1: +! Background_VV: 1.0e-30 +! DD_F0: 0.1 +! DD_Hstar: 1.0e-2 +! Formula: NO2 +! FullName: Nitrogen dioxide tag 1 +! Is_Advected: true +! Is_DryDep: true +! Is_Gas: true +! Is_Photolysis: false +! MW_g: 46.01 +! +! Chemistry prod/loss rates are inherited from the parent species (NO/NO2), +! all other processes are performed at the tagged species level. Emissions +! for each tagged species need to be assigned in the HEMCO configuration +! file. For example, to assign NO biomass burning emissions to tagged species +! #1 (NOTAG1): +!0 QFED_NO_TF_SFC $ROOT/QFED/v2014-09/$YYYY/$MM/qfed2.emis_no.006.$YYYY$MM$DD.nc4 biomass_tf 2000-2018/1-12/1-31/0 C xyL=1:PBL kg/m2/s NO 75/311/545/592 8 1 +!0 QFED_NOT1_TF_SFC - - - - - - NOTAG1 75/311/545/592 8 1 +! +!\\ +!\\ +! !INTERFACE: +! +MODULE GEOS_TaggedSpecies +! +! !USES: +! + ! MAPL/ESMF + USE ESMF + USE MAPL_Mod + ! GEOS-Chem stuff + USE Precision_Mod + USE ErrCode_Mod ! Error numbers + USE PHYSCONSTANTS + USE Input_Opt_Mod, ONLY : OptInput + USE State_Chm_Mod, ONLY : ChmState, Ind_ ! Chemistry State obj + USE State_Diag_Mod, ONLY : DgnState ! Diagnostics State obj + + IMPLICIT NONE + PRIVATE +! +! !PUBLIC MEMBER FUNCTIONS: +! + PUBLIC :: Init_TaggedSpecies + PUBLIC :: Run_TaggedSpecies + PUBLIC :: Finalize_TaggedSpecies +! +! !PRIVATE MEMBER FUNCTIONS: +! +! +! !PRIVATE TYPES: +! + ! Tagged tracers: + CHARACTER(LEN=128), PARAMETER :: TaggedConfigFile = 'GEOSChem_TaggedNOx.rc' + + INTEGER, PARAMETER :: MaxTag = 100 + INTEGER :: nTagged + INTEGER, ALLOCATABLE :: TagID(:) ! For Tagged NO + INTEGER, ALLOCATABLE :: ParentID_GCC(:) + INTEGER, ALLOCATABLE :: ParentID_KPP(:) + INTEGER, ALLOCATABLE :: TagIDb(:) ! For Tagged NO2 + INTEGER, ALLOCATABLE :: ParentIDb_GCC(:) + INTEGER, ALLOCATABLE :: ParentIDb_KPP(:) +! +! !REVISION HISTORY: +! 19 Mar 2024 - C. Keller / P. Wales - brought into GCv14 from v12 +! See https://github.com/geoschem/geos-chem for full history +!EOP +!------------------------------------------------------------------------------ +!BOC +CONTAINS +!EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: Init_TaggedSpecies +! +! !DESCRIPTION: Initialize tagged species chemistry by reading the information +! from GEOSChem_TaggedNOx.rc +!\\ +!\\ +! !INTERFACE: +! + SUBROUTINE Init_TaggedSpecies( Input_Opt, State_Chm, State_Diag, RC ) +! +! !USE: +! +! !INPUT/OUTPUT PARAMETERS: +! + TYPE(OptInput) :: Input_Opt + TYPE(ChmState) :: State_Chm + TYPE(DgnState) :: State_Diag + INTEGER, INTENT(INOUT) :: RC ! Success or failure? +! +! !REMARKS: +! +! !REVISION HISTORY: +! 19 Mar 2024 - C. Keller / P. Wales - brought into GCv14 from v12 +! See https://github.com/geoschem/geos-chem for history +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! LOCAL VARIABLES: +! + TYPE(ESMF_Config) :: tagCF ! ESMF Config obj + LOGICAL :: FileExists + CHARACTER(LEN=255) :: ParentName, ParentNameb + CHARACTER(LEN=64) :: TagName, TagNameb + INTEGER :: KppId, TagInd, N, PartnerTag + + __Iam__('Init_TaggedSpecies') + + !-------------------------------------------------------------------- + ! Initialize tagged tracer chemistry + !-------------------------------------------------------------------- + + ! Initialize + nTagged = 0 + + TagName = 'NaN' + ParentName = 'NO' ! eventually allow this to be read in as a list + TagNameb = 'NaN' + ParentNameb = 'NO2' ! chem that cycles with ParentName + + ! Check if file exists + INQUIRE( FILE=TRIM(TaggedConfigFile), EXIST=FileExists ) + + ! Do the following only if file exits + IF ( FileExists ) THEN + + ! Verbose + IF ( Input_Opt%amIRoot ) THEN + WRITE(*,*) 'Reading tagged NOx tracer information from '//TRIM(TaggedConfigFile) + ENDIF + + tagCF = ESMF_ConfigCreate( __RC__ ) + Call ESMF_ConfigLoadFile(tagCF, TRIM(TaggedConfigFile), __RC__ ) + + Call ESMF_ConfigGetAttribute(tagCF, PartnerTag, Label = 'partner_tag:', & + Default = 0, __RC__ ) + Call ESMF_ConfigGetAttribute(tagCF, nTagged, Label ='nchem_tag:', & + Default = 0, __RC__ ) + ASSERT_( nTagged <= MaxTag ) + + IF ( nTagged > 0) THEN + + ! Now that we know ntagged, can allocate vector arrays + ALLOCATE(TagID(nTagged), ParentID_GCC(nTagged), ParentID_KPP(nTagged), & + TagIDb(nTagged), ParentIDb_GCC(nTagged), ParentIDb_KPP(nTagged)) + + ! Get GEOS-Chem and KPP index of the parent species. This is currently hardcoded + ! to be NO everywhere, so can do it outside of the nTagged loop below + ParentID_GCC(:) = Ind_(TRIM(ParentName)) + ASSERT_(ParentID_GCC(1)>0) + + DO KppID = 1, State_Chm%nKppSpc + IF ( State_Chm%Map_KppSpc(KppId) == ParentID_GCC(1) ) THEN + ParentID_KPP(:) = KppID + EXIT + ENDIF + ENDDO + ! Make sure that KPP parent ID is valid + ASSERT_(ParentID_KPP(1)>0) + + ! Get GEOS-Chem and KPP index of the parent species for the partner tag. + ! This is currently hardcoded to be NO2 everywhere, so can do it outside + ! of the nTagged loop below + IF ( PartnerTag > 0) THEN + ParentIDb_GCC(:) = Ind_(TRIM(ParentNameb)) + ASSERT_(ParentIDb_GCC(1)>0) + + DO KppID = 1, State_Chm%nKppSpc + IF ( State_Chm%Map_KppSpc(KppId) == ParentIDb_GCC(1) ) THEN + ParentIDb_KPP(:) = KppID + EXIT + ENDIF + ENDDO + ASSERT_(ParentIDb_KPP(1)>0) + ENDIF + + ! Loop over all tagged species and assign species IDs + DO TagInd = 1, nTagged + + ! Species names are currently hardcoded to NO_TAG1, NO_TAG2, etc. + WRITE(TagName,"(A5,I0)") "NOTAG", TagInd + N = Ind_(TRIM(TagName)) + IF ( N > 0 ) THEN + TagID(TagInd) = N + IF ( Input_Opt%amIRoot ) THEN + WRITE(*,*) 'Tagged species: will apply chem P/L rates of '//TRIM(ParentName)//' to '//TRIM(TagName) + ENDIF + + ! Check for partner tag, hardcoded to NO2_TAG1, NO2_TAG2, etc. + IF (PartnerTag > 0) THEN + WRITE(TagNameb,"(A6,I0)") "NO2TAG", TagInd + TagIDb(TagInd) = Ind_(TRIM(TagNameb)) + IF ( Input_Opt%amIRoot ) THEN + WRITE(*,*) 'Tagged species: will use partner species '//TRIM(TagNameb)//' for '//TRIM(TagName) + ENDIF + ENDIF + ENDIF + ENDDO + ENDIF ! nTagged>0 + ENDIF ! FileExists + + ! All done + RETURN_(ESMF_SUCCESS) + + END SUBROUTINE Init_TaggedSpecies +!EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: Run_TaggedSpecies +! +! !DESCRIPTION: Run tagged species chemistry. +!\\ +!\\ +! !INTERFACE: +! + SUBROUTINE Run_TaggedSpecies( I, J, L, C, PRESS, TEMP, State_Chm, RC ) +! +! !USE: +! + USE GcKpp_Parameters + USE ERROR_MOD +! +! !INPUT/OUTPUT PARAMETERS: +! + INTEGER, INTENT(IN) :: I,J,L + REAL(dp), INTENT(IN) :: C(NSPEC) + REAL(dp), INTENT(IN) :: PRESS + REAL(dp), INTENT(IN) :: TEMP + TYPE(ChmState) :: State_Chm + INTEGER, INTENT(INOUT) :: RC ! Success or failure? +! +! !REMARKS: +! +! !REVISION HISTORY: +! 19 Mar 2024 - C. Keller / P. Wales - brought into GCv14 from v12 +! See https://github.com/geoschem/geos-chem for history +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! LOCAL VARIABLES: +! + INTEGER :: N, itagID, SpcID, KppID, iTagIDb, SpcIDb, KppIDb + REAL(fp) :: Tag0, Tag1, Parent0, Parent1, Prat, TagThres, NOxrat + + __Iam__('Run_TaggedSpecies') + + !-------------------------------------------------------------------- + ! Run tagged tracer chemistry + !-------------------------------------------------------------------- + + !===================================================================== + ! Check for tagged tracers and adjust those before updating the + ! Species arrays + !===================================================================== + IF ( nTagged > 0 ) THEN + + ! Threshold is 1.E-14 mol/mol, convert to molecular density + ! density at STP * 298 K / 1013 hPa = 7.24E4 + TagThres = 7.24e4_fp * PRESS / TEMP + + DO N = 1, nTagged + iTagID = TagID(N) + SpcID = ParentID_GCC(N) + KppID = ParentID_KPP(N) + iTagIDb = TagIDb(N) + SpcIDb = ParentIDb_GCC(N) + KppIDb = ParentIDb_KPP(N) + + !!! If there is a partner compound for iTagID + IF ( iTagIDb > 0) THEN + Tag0 = State_Chm%Species(iTagID)%Conc(I,J,L) + & + State_Chm%Species(iTagIDb)%Conc(I,J,L) + Parent0 = State_Chm%Species(SpcID)%Conc(I,J,L) + & + State_Chm%Species(SpcIDb)%Conc(I,J,L) + + IF ( Tag0 > TagThres .and. Parent0 > TagThres) THEN + Prat = SAFE_DIV( Tag0, Parent0, 1.0_fp, 1.0_fp, 0.0_fp ) + Prat = MAX(MIN(Prat,1.0),0.0) + + Parent1 = REAL(MAX(C(KppID),0.0_dp) + MAX(C(KppIDb),0.0_dp),kind=fp) + NOxrat = SAFE_DIV(MAX(C(KppID),0.0_dp), Parent1, 1.0_fp, & + 1.0_fp, 0.0_fp ) + NOxrat = MAX(MIN(NOxrat,1.0),0.0) + + Tag1 = REAL(Tag0 + ( Parent1 - Parent0 ) * Prat, kind=fp) + State_Chm%Species(iTagID)%Conc(I,J,L) = MAX(Tag1 * NOxrat, 0.0_fp) + State_Chm%Species(iTagIDb)%Conc(I,J,L) = MAX(Tag1 * (1.0_fp - NOxrat), & + 0.0_fp) + ELSE + State_Chm%Species(iTagID)%Conc(I,J,L) = 0.0_fp + State_Chm%Species(iTagIDb)%Conc(I,J,L) = 0.0_fp + ENDIF + + ! only scale iTagID + ELSE + Tag0 = State_Chm%Species(iTagID)%Conc(I,J,L) + Parent0 = State_Chm%Species(SpcID)%Conc(I,J,L) + + IF ( Tag0 > TagThres .and. Parent0 > TagThres) THEN + Prat = SAFE_DIV( Tag0, Parent0, 1.0_fp, 1.0_fp, 0.0_fp ) + Prat = MAX(MIN(Prat,1.0),0.0) + Parent1 = REAL(MAX(C(KppID),0.0_dp),kind=fp) + + State_Chm%Species(iTagID)%Conc(I,J,L) = Tag0 + ( Parent1 - Parent0 ) * Prat + State_Chm%Species(iTagID)%Conc(I,J,L) = MAX(State_Chm%Species(iTagID)%Conc(I,J,L), & + 0.0_fp) + ELSE + State_Chm%Species(iTagID)%Conc(I,J,L) = 0.0_fp + ENDIF + ENDIF + ENDDO + ENDIF + + ! All done + RETURN_(ESMF_SUCCESS) + + END SUBROUTINE Run_TaggedSpecies +!EOC +!------------------------------------------------------------------------------ +! GEOS-Chem Global Chemical Model ! +!------------------------------------------------------------------------------ +!BOP +! +! !IROUTINE: Finalize_TaggedSpecies +! +! !DESCRIPTION: Finalize tagged species arrays. +!\\ +!\\ +! !INTERFACE: +! + SUBROUTINE Finalize_TaggedSpecies( RC ) +! +! !USE: +! +! !INPUT/OUTPUT PARAMETERS: +! + INTEGER, INTENT(INOUT) :: RC ! Success or failure? +! +! !REMARKS: +! +! !REVISION HISTORY: +! 19 Mar 2024 - C. Keller / P. Wales - brought into GCv14 from v12 +! See https://github.com/geoschem/geos-chem for history +!EOP +!------------------------------------------------------------------------------ +!BOC +! +! LOCAL VARIABLES: +! + __Iam__('Finalize_TaggedSpecies') + + IF ( ALLOCATED(TagID ) ) DEALLOCATE(TagID) + IF ( ALLOCATED(ParentID_GCC ) ) DEALLOCATE(ParentID_GCC) + IF ( ALLOCATED(ParentID_KPP ) ) DEALLOCATE(ParentID_KPP) + IF ( ALLOCATED(TagIDb ) ) DEALLOCATE(TagIDb) + IF ( ALLOCATED(ParentIDb_GCC) ) DEALLOCATE(ParentIDb_GCC) + IF ( ALLOCATED(ParentIDb_KPP) ) DEALLOCATE(ParentIDb_KPP) + + ! All done + RETURN_(ESMF_SUCCESS) + + END SUBROUTINE Finalize_TaggedSpecies +!EOC +END MODULE GEOS_TaggedSpecies From 920b062cb64b054d4fdded12c1896320644d1c6f Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 21 Mar 2024 14:47:22 -0400 Subject: [PATCH 169/331] Update Harvard Cannon operational example environment files We have added/updated sample environment files for the Harvard Cannon cluster, for modules built with GCC 10.2.0 and GCC 12.2.0: In run/GCClassic/runScriptSamples/operational_examples/harvard_cannon: - Added gcclassic.gcc10_cannon_rocky.env - Added gcclassic.gcc12_cannon_rocky.env In run/GCHP/runScriptSamples/operational_examples/harvard_cannon: - Removed gchp.gcc_openmpi4_cannon_centos.env, it's obsolete - Added gchp.gcc12_openmpi4_cannon_rocky.env - Renamed gchp.gcc10_openmpi4_cannon_rocky_minimal.env to gchp_gcc10_openmpi4_cannon.rocky.env Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 + .../gcclassic.gcc10_cannon_rocky.env | 118 +++++++++++++++++ .../gcclassic.gcc12_cannon_rocky.env | 119 ++++++++++++++++++ .../gchp.gcc10_openmpi4_cannon_centos.env | 71 ----------- .../gchp.gcc10_openmpi4_cannon_rocky.env | 70 +++-------- ...v => gchp.gcc12_openmpi4_cannon_rocky.env} | 54 ++++---- 6 files changed, 281 insertions(+), 153 deletions(-) create mode 100755 run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/gcclassic.gcc10_cannon_rocky.env create mode 100755 run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/gcclassic.gcc12_cannon_rocky.env delete mode 100755 run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_centos.env rename run/GCHP/runScriptSamples/operational_examples/harvard_cannon/{gchp.gcc10_openmpi4_cannon_rocky_minimal.env => gchp.gcc12_openmpi4_cannon_rocky.env} (72%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e5b472fa..d8827119a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Added GEOS-IT processed lat-lon fields as a valid option when creating GCHP run directories - Functions `charArr2str` and `str2CharArr` in `Headers/charpak_mod.F90` - Field `State_Diag%Obspack_CharArray` as a 2-D character array +- Add GCClassic operational example environment files for Harvard Cannon ### Changed - Updated Harvard Cannon operational run scripts to use `huce_cascade` instead of `huce_intel`; also added `sapphire` @@ -24,6 +25,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Don't create run directories for integration/parallel tests if invoked with `-t compile` - Refactor integration and parallel test scripts to reduce the number of input arguments - Copy utility scripts that allow you to resubmit failed to integration and parallel test root directories +- Update GCHP operational example environment files for Harvard Cannon ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/gcclassic.gcc10_cannon_rocky.env b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/gcclassic.gcc10_cannon_rocky.env new file mode 100755 index 000000000..031b9c2ac --- /dev/null +++ b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/gcclassic.gcc10_cannon_rocky.env @@ -0,0 +1,118 @@ +############################################################################### +# gcclassic.rocky+gnu10.minimal.env +# +# Environment file for GCClassic + Rocky Linux + GNU Compiler Collection 10.2.0 +# +# Does not include any Spack-built modules, only FASRC-built modules. +# Useful for running in the Cannon queues, or to start fresh Spack builds. +############################################################################### + +# Display message (if we are in a terminal window) +if [[ $- = *i* ]] ; then + echo "Loading modules for GEOS-Chem Classic, please wait ..." +fi + +#============================================================================== +# Unload all previously-unloaded software +#============================================================================== + +# Unload packages loaded with "module load" +module purge + +# Unload packages loaded with "spack load" +if [[ "x${SPACK_ROOT}" != "x" ]]; then + which spack &> /dev/null || spack unload --all +fi + +#============================================================================== +# Load FASRC-built software packages for Rocky Linux and GNU 10.2.0 +#============================================================================== +if [[ $- = *i* ]] ; then + echo "... Loading FASRC-built software, please wait ..." +fi + +# Load FASRC-built modules +module load gcc/10.2.0-fasrc01 # gcc / g++ / gfortran +module load openmpi/4.1.0-fasrc01 # MPI +module load netcdf-c/4.8.0-fasrc01 # netcdf-c +module load netcdf-fortran/4.5.3-fasrc01 # netcdf-fortran +module load flex/2.6.4-fasrc01 # Flex lexer (needed for KPP) +module load cmake/3.25.2-fasrc01 # CMake (needed to compile) + +# Additional FASRC-built modules +# Uncomment if you need to use these +#module load IDL/8.7.2-fasrc01 # IDL language (needed for GAMAP) +##module load R/4.2.2-fasrc01 # R language +##module load matlab/R2022b-fasrc01 # matlab language + +#============================================================================== +# Environment variables and related settings +# (NOTE: Lmod will define _HOME variables for each loaded module +#============================================================================== + +# Make all files world-readable by default +umask 022 + +# Set number of threads for OpenMP. If running in a SLURM environment, +# use the number of requested cores. Otherwise use 8 cores for OpenMP. +if [[ "x${SLURM_CPUS_PER_TASK}" == "x" ]]; then + export OMP_NUM_THREADS=8 +else + export OMP_NUM_THREADS="${SLURM_CPUS_PER_TASK}" +fi + +# Max out the stacksize memory limit +export OMP_STACKSIZE="500m" + +# Compilers +export CC="gcc" +export CXX="g++" +export FC="gfortran" +export F77="${FC}" + +# netCDF +if [[ "x${NETCDF_HOME}" == "x" ]]; then + export NETCDF_HOME="${NETCDF_C_HOME}" +fi +export NETCDF_C_ROOT="${NETCDF_HOME}" +export NETCDF_FORTRAN_ROOT="${NETCDF_FORTRAN_HOME}" + +# KPP 3.0.0+ +export KPP_FLEX_LIB_DIR="${FLEX_HOME}/lib64" + +# If you are using GEOS-Chem 12.6.0 or earlier, +# uncomment these lines and source this file again. +#export GC_INCLUDE=$NETCDF_INCLUDE +#export GC_BIN=$NETCDF_HOME/bin +#export GC_LIB=$NETCDF_LIB +#export GC_F_INCLUDE=$NETCDF_FORTRAN_INCLUDE +#export GC_F_LIB=$NETCDF_FORTRAN_LIB +#export GC_F_BIN=$NETCDF_FORTRAN_HOME/bin + +#============================================================================== +# Set limits +#============================================================================== + +ulimit -c unlimited # coredumpsize +ulimit -u 50000 # maxproc +ulimit -v unlimited # vmemoryuse +ulimit -s unlimited # stacksize + +#============================================================================== +# Print information +#============================================================================== + +module list + +echo "" +echo "Environment:" +echo "" +echo "CC : ${CC}" +echo "CXX : ${CXX}" +echo "FC : ${FC}" +echo "KPP_FLEX_LIB_DIR : ${KPP_FLEX_LIB_DIR}" +echo "NETCDF_HOME : ${NETCDF_HOME}" +echo "NETCDF_FORTRAN_HOME : ${NETCDF_FORTRAN_HOME}" +echo "OMP_NUM_THREADS : ${OMP_NUM_THREADS}" +echo "" +echo "Done sourcing ${BASH_SOURCE[0]}" diff --git a/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/gcclassic.gcc12_cannon_rocky.env b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/gcclassic.gcc12_cannon_rocky.env new file mode 100755 index 000000000..7f3d7606c --- /dev/null +++ b/run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/gcclassic.gcc12_cannon_rocky.env @@ -0,0 +1,119 @@ +############################################################################### +# gcclassic.rocky+gnu12.minimal.env +# +# Environment file for GCClassic + Rocky Linux + GNU Compiler Collection 12.2.0 +# +# Does not include any Spack-built modules, only FASRC-built modules. +# Useful for running in the Cannon queues, or to start fresh Spack builds. +############################################################################### + +# Display message (if we are in a terminal window) +if [[ $- = *i* ]] ; then + echo "Loading modules for GEOS-Chem Classic, please wait ..." +fi + +#============================================================================== +# Unload all previously-unloaded software +#============================================================================== + +# Unload packages loaded with "module load" +module purge + +# Unload packages loaded with "spack load" +if [[ "x${SPACK_ROOT}" != "x" ]]; then + which spack &> /dev/null || spack unload --all +fi + +#============================================================================== +# Load FASRC-built software packages for Rocky Linux and GNU 12.2.0 +#============================================================================== +if [[ $- = *i* ]] ; then + echo "... Loading FASRC-built software, please wait ..." +fi + +# FASRC-built modules needed for GEOS-Chem +module load gcc/12.2.0-fasrc01 # gcc / g++ / gfortran +module load openmpi/4.1.4-fasrc01 # MPI +module load netcdf-c/4.9.2-fasrc01 # netcdf-c +module load netcdf-fortran/4.6.0-fasrc02 # netcdf-fortran +module load flex/2.6.4-fasrc01 # Flex lexer (needed for KPP) +module load cmake/3.25.2-fasrc01 # CMake (needed to compile) + +# Additional FASRC-built modules +# Uncomment if you need to use these +#module load IDL/8.7.2-fasrc01 # IDL language (needed for GAMAP) +#module load R/4.2.2-fasrc01 # R language +#module load matlab/R2022b-fasrc01 # matlab language + +#============================================================================== +# Environment variables and related settings +# (NOTE: Lmod will define _HOME variables for each loaded module) +#============================================================================== + +# Make all files world-readable by default +umask 022 + +# Set number of threads for OpenMP. If running in a SLURM environment, +# use the number of requested cores. Otherwise use 8 cores for OpenMP. +if [[ "x${SLURM_CPUS_PER_TASK}" == "x" ]]; then + export OMP_NUM_THREADS=8 +else + export OMP_NUM_THREADS="${SLURM_CPUS_PER_TASK}" +fi + +# Max out the stacksize memory limit +export OMP_STACKSIZE="500m" + +# Compilers +export CC="gcc" +export CXX="g++" +export FC="gfortran" +export F77="${FC}" + +# netCDF +if [[ "x${NETCDF_HOME}" == "x" ]]; then + export NETCDF_HOME="${NETCDF_C_HOME}" +fi +export NETCDF_C_ROOT="${NETCDF_HOME}" +export NETCDF_FORTRAN_ROOT=${NETCDF_FORTRAN_HOME} + +# KPP 3.0.0+ +export KPP_FLEX_LIB_DIR=${FLEX_HOME}/lib64 + +# If you are using GEOS-Chem 12.6.0 or earlier, +# uncomment these lines and source this file again. +#export GC_INCLUDE=$NETCDF_INCLUDE +#export GC_BIN=$NETCDF_HOME/bin +#export GC_LIB=$NETCDF_LIB +#export GC_F_INCLUDE=$NETCDF_FORTRAN_INCLUDE +#export GC_F_LIB=$NETCDF_FORTRAN_LIB +#export GC_F_BIN=$NETCDF_FORTRAN_HOME/bin + +#============================================================================== +# Set limits +#============================================================================== + +ulimit -c unlimited # coredumpsize +ulimit -u 50000 # maxproc +ulimit -v unlimited # vmemoryuse +ulimit -s unlimited # stacksize + +#============================================================================== +# Print information +#============================================================================== + +module list + +echo "" +echo "Environment:" +echo "" +echo "CC : ${CC}" +echo "CXX : ${CXX}" +echo "FC : ${FC}" +echo "KPP_FLEX_LIB_DIR : ${KPP_FLEX_LIB_DIR}" +echo "MPI_HOME : ${MPI_HOME}" +echo "NETCDF_HOME : ${NETCDF_HOME}" +echo "NETCDF_FORTRAN_HOME : ${NETCDF_FORTRAN_HOME}" +echo "OMP_NUM_THREADS : ${OMP_NUM_THREADS}" +echo "" +echo "Done sourcing ${BASH_SOURCE[0]}" diff --git a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_centos.env b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_centos.env deleted file mode 100755 index 33497e009..000000000 --- a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_centos.env +++ /dev/null @@ -1,71 +0,0 @@ -if [[ $- = *i* ]] ; then - echo "Loading modules, please wait ..." -fi - -#============================================================================== -# Load modules -#============================================================================== - -module purge -module load git/2.17.0-fasrc01 -module load gcc/10.2.0-fasrc01 -module load openmpi/4.1.0-fasrc01 -module load netcdf-fortran/4.5.3-fasrc03 -module load cmake/3.16.1-fasrc01 - -#============================================================================== -# Environment variables -#============================================================================== - -# Make all files world-readable by default -umask 022 - -# Specify compilers -export CC=gcc -export CXX=g++ -export FC=gfortran - -# MPI -export MPI_ROOT=${MPI_HOME} - -# For ESMF -export ESMF_COMPILER=gfortran -export ESMF_COMM=openmpi -#export ESMF_DIR=/n/jacob_lab/Lab/seasfs01/Lab/ESMF/ESMF_8_0_1 -export ESMF_DIR=/n/jacob_lab/Lab/seasfs01/Lab/ESMF/ESMF_8_1_0 -export ESMF_INSTALL_PREFIX=${ESMF_DIR}/INSTALL_gfortran10_openmpi4 - -# For GCHP -export ESMF_ROOT=${ESMF_INSTALL_PREFIX} - -#============================================================================== -# Set limits -#============================================================================== - -#ulimit -c 0 # coredumpsize -ulimit -l unlimited # memorylocked -ulimit -u 50000 # maxproc -ulimit -v unlimited # vmemoryuse -ulimit -s unlimited # stacksize - -#============================================================================== -# Print information -#============================================================================== - -module list -echo "" -echo "Environment:" -echo "" -echo "CC: ${CC}" -echo "CXX: ${CXX}" -echo "FC: ${FC}" -echo "ESMF_COMM: ${ESMF_COMM}" -echo "ESMF_COMPILER: ${ESMF_COMPILER}" -echo "ESMF_DIR: ${ESMF_DIR}" -echo "ESMF_INSTALL_PREFIX: ${ESMF_INSTALL_PREFIX}" -echo "ESMF_ROOT: ${ESMF_ROOT}" -echo "MPI_HOME: ${MPI_HOME}" -echo "NetCDF C: $(nc-config --prefix)" -#echo "NetCDF Fortran: $(nf-config --prefix)" -echo "" -echo "Done sourcing ${BASH_SOURCE[0]}" \ No newline at end of file diff --git a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_rocky.env b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_rocky.env index 26cd82c42..7532a432c 100755 --- a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_rocky.env +++ b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_rocky.env @@ -1,7 +1,10 @@ ############################################################################### -# gchp.rocky+gnu10.env +# gchp.rocky+gnu10.minimal.env # # Environment file for GCHP + Rocky Linux + GNU Compiler Collection 10.2.0 +# +# Does not include any Spack-built modules, only FASRC-built modules. +# Useful for running in the Cannon queues, or to start fresh Spack builds. ############################################################################### # Display message (if we are in a terminal window) @@ -9,36 +12,17 @@ if [[ $- = *i* ]] ; then echo "Loading modules for GCHP, please wait ..." fi -#============================================================================== -# Setup the Spack environment if it has not been done yet -#============================================================================== -if [[ "x${SPACK_ROOT}" == "x" ]]; then - if [[ $- = *i* ]] ; then - echo "... Initializing Spack (one-time only), please wait ..." - fi - . /n/jacob_lab/Lab/seasfs01/Lab/RockyLinux/spack/share/spack/setup-env.sh -fi - -#============================================================================== -# Also update the MODULEPATH if we have not done it yet -# This is so Lmod can find Spack-generated modulefiles -#============================================================================== -if [[ ! "spack" =~ "${MODULEPATH}" ]]; then - if [[ $- = *i* ]] ; then - echo "... Updating module paths, please wait ..." - fi - export SPACK_MODULE_ROOT="${SPACK_ROOT}/share/spack/lmod/linux-rocky8-x86_64" - export MODULEPATH+=":${SPACK_MODULE_ROOT}/gcc/10.2.0" - export MODULEPATH+=":${SPACK_MODULE_ROOT}/openmpi/4.1.0-62i34f7/gcc/10.2.0" - export MODULEPATH+=":${SPACK_MODULE_ROOT}/gcc/12.2.0" - export MODULEPATH+=":${SPACK_MODULE_ROOT}/openmpi/4.1.4-6yi53gp/gcc/12.2.0" -fi - #============================================================================== # Unload all previously-unloaded software #============================================================================== + +# Unload packages loaded with "module load" module purge -spack unload --all + +# Unload packages loaded with "spack load" +if [[ "x${SPACK_ROOT}" != "x" ]]; then + which spack &> /dev/null || spack unload --all +fi #============================================================================== # Load FASRC-built software packages for Rocky Linux and GNU 10.2.0 @@ -52,7 +36,7 @@ module load gcc/10.2.0-fasrc01 # gcc / g++ / gfortran module load openmpi/4.1.0-fasrc01 # MPI module load netcdf-c/4.8.0-fasrc01 # netcdf-c module load netcdf-fortran/4.5.3-fasrc01 # netcdf-fortran -module load flex/2.6.4-fasrc01 # Fle x lexer (needed for KPP) +module load flex/2.6.4-fasrc01 # Flex lexer (needed for KPP) module load cmake/3.25.2-fasrc01 # CMake (needed to compile) # Additional FASRC-built modules @@ -61,29 +45,6 @@ module load cmake/3.25.2-fasrc01 # CMake (needed to compile) ##module load R/4.2.2-fasrc01 # R language ##module load matlab/R2022b-fasrc01 # matlab language -#============================================================================== -# Load Spack-built software packages for Rocky Linux and GNU 10.2.0 -#============================================================================== -if [[ $- = *i* ]] ; then - echo "... Loading Spack-built software, please wait ..." -fi -module load colordiff/1.0.21-gcc-10.2.0 # Colorizes diff output -module load readline/8.2-gcc-10.2.0 # Dependency for cgdb -module load ncurses/6.4-gcc-10.2.0 # Dependency for cdgb & ncview -module load gdb/8.2.19-gcc-10.2.0 # Gnu debugger -module load cgdb/0.7.1-gcc-10.2.0 # User-friendly front-end for GDB -module load bison/3.8.2-gcc-10.2.0 # Bison parser (needed for KPP) -module load nco/5.1.4-gcc-10.2.0 # netCDF Operators -module load ncview/2.1.8-gcc-10.2.0 # ncview (netCDF file viewer) -module load openjdk/11.0.17_8-gcc-10.2.0 # Java runtime -# -# Using "module load" on these packages will deactivate the -# netcdf-fortran/4.5.3-fasrc01 module because Lmod thinks that -# it is loading a different MPI library. For now use "spack load" -# to get around this. -# -spack load cdo@2.1.0%gcc@12.2.0 # Climate Data Operators - #============================================================================== # Environment variables # NOTE: _HOME env vars are defined for each loaded @@ -92,9 +53,6 @@ spack load cdo@2.1.0%gcc@12.2.0 # Climate Data Operators # Make all files world-readable by default umask 022 -# Root to RockyLinux libraries -export ROCKY_ROOT="/net/holy-nfsisilon/ifs/rc_labs/jacob_lab/Lab/seasfs01/Lab/RockyLinux" - # Compilers export CC="gcc" export CXX="g++" @@ -114,8 +72,8 @@ export NETCDF_FORTRAN_ROOT="${NETCDF_FORTRAN_HOME}" # ESMF export ESMF_COMPILER="gfortran" export ESMF_COMM="openmpi" -export ESMF_DIR="/n/jacob_lab/Lab/seasfs01/Lab/RockyLinux/ESMF/ESMF_8_1_1" -export ESMF_INSTALL_PREFIX="${ESMF_DIR}/INSTALL_gfortran10_openmpi4" +export ESMF_DIR="/n/jacob_lab/Lab/RockyLinux/ESMF/ESMF_8_4_2" +export ESMF_INSTALL_PREFIX="${ESMF_DIR}/INSTALL_gnu10_openmpi4" export ESMF_ROOT="${ESMF_INSTALL_PREFIX}" #--------------------------------------------------------------------------- # ESMF does not build with GCC10 without the following work-around diff --git a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_rocky_minimal.env b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc12_openmpi4_cannon_rocky.env similarity index 72% rename from run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_rocky_minimal.env rename to run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc12_openmpi4_cannon_rocky.env index 7c69aee99..38c7f12e7 100755 --- a/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_rocky_minimal.env +++ b/run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc12_openmpi4_cannon_rocky.env @@ -1,7 +1,7 @@ -############################################################################### -# gchp.rocky+gnu10.minimal.env +################################################################################ +# gchp.rocky+gnu12.minimal.env # -# Environment file for GCHP + Rocky Linux + GNU Compiler Collection 10.2.0 +# Environment file for GCHP + Rocky Linux + GNU Compiler Collection 12.2.0 # # Does not include any Spack-built modules, only FASRC-built modules. # Useful for running in the Cannon queues, or to start fresh Spack builds. @@ -15,41 +15,45 @@ fi #============================================================================== # Unload all previously-unloaded software #============================================================================== + +# Unload packages loaded with "module load" module purge +# Unload packages loaded with "spack load" +if [[ "x${SPACK_ROOT}" != "x" ]]; then + which spack &> /dev/null || spack unload --all +fi + #============================================================================== -# Load FASRC-built software packages for Rocky Linux and GNU 10.2.0 +# Load FASRC-built software packages for Rocky Linux and GNU 12.2.0 #============================================================================== if [[ $- = *i* ]] ; then - echo "... Loading FASRC-built software, please wait..." + echo "... Loading FASRC-built software, please wait ..." fi -# Load FASRC-built modules -module load gcc/10.2.0-fasrc01 # gcc / g++ / gfortran -module load openmpi/4.1.0-fasrc01 # MPI -module load netcdf-c/4.8.0-fasrc01 # netcdf-c -module load netcdf-fortran/4.5.3-fasrc01 # netcdf-fortran -module load flex/2.6.4-fasrc01 # Fle x lexer (needed for KPP) +# FASRC-built modules needed for GEOS-Chem +module load gcc/12.2.0-fasrc01 # gcc / g++ / gfortran +module load openmpi/4.1.4-fasrc01 # MPI +module load netcdf-c/4.9.2-fasrc01 # netcdf-c +module load netcdf-fortran/4.6.0-fasrc02 # netcdf-fortran +module load flex/2.6.4-fasrc01 # Flex lexer (needed for KPP) module load cmake/3.25.2-fasrc01 # CMake (needed to compile) # Additional FASRC-built modules # Uncomment if you need to use these -##module load IDL/8.7.2-fasrc01 # IDL language (needed for GAMAP) -##module load R/4.2.2-fasrc01 # R language -##module load matlab/R2022b-fasrc01 # matlab language +#module load IDL/8.7.2-fasrc01 # IDL language (needed for GAMAP) +#module load R/4.2.2-fasrc01 # R language +#module load matlab/R2022b-fasrc01 # matlab language #============================================================================== -# Environment variables +# Environment variables and related settings # NOTE: _HOME env vars are defined for each loaded #============================================================================== # Make all files world-readable by default umask 022 -# Root to RockyLinux libraries -export ROCKY_ROOT="/net/holy-nfsisilon/ifs/rc_labs/jacob_lab/Lab/seasfs01/Lab/RockyLinux" - -# Compilers +# Specify compilers export CC="gcc" export CXX="g++" export FC="gfortran" @@ -62,20 +66,19 @@ export MPI_ROOT="${MPI_HOME}" if [[ "x${NETCDF_HOME}" == "x" ]]; then export NETCDF_HOME="${NETCDF_C_HOME}" fi -export NETCDF_ROOT="${NETCDF_HOME}" export NETCDF_FORTRAN_ROOT="${NETCDF_FORTRAN_HOME}" # ESMF export ESMF_COMPILER="gfortran" export ESMF_COMM="openmpi" -export ESMF_DIR="/n/jacob_lab/Lab/seasfs01/Lab/RockyLinux/ESMF/ESMF_8_1_1" -export ESMF_INSTALL_PREFIX="${ESMF_DIR}/INSTALL_gfortran10_openmpi4" +export ESMF_DIR="/n/jacob_lab/Lab/RockyLinux/ESMF/ESMF_8_4_2" +export ESMF_INSTALL_PREFIX="${ESMF_DIR}/INSTALL_gnu12_openmpi4" export ESMF_ROOT="${ESMF_INSTALL_PREFIX}" -#--------------------------------------------------------------------------- -# ESMF does not build with GCC10 without the following work-around +#---------------------------------------------------------------------------- +# ESMF does not build with GCC12 without the following work-around # for a type mismatch error (https://trac.macports.org/ticket/60954) export ESMF_F90COMPILEOPTS="-fallow-argument-mismatch -fallow-invalid-boz" -#--------------------------------------------------------------------------- +#---------------------------------------------------------------------------- # KPP 3.0.0+ export KPP_FLEX_LIB_DIR="${FLEX_HOME}/lib64" @@ -110,6 +113,5 @@ echo "KPP_FLEX_LIB_DIR : ${KPP_FLEX_LIB_DIR}" echo "MPI_HOME : ${MPI_HOME}" echo "NETCDF_HOME : ${NETCDF_HOME}" echo "NETCDF_FORTRAN_HOME : ${NETCDF_FORTRAN_HOME}" -echo "ROCKY_ROOT : ${ROCKY_ROOT}" echo "" echo "Done sourcing ${BASH_SOURCE[0]}" From 2ea36ea8425237606cc69011473af7277d9412b9 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 21 Mar 2024 14:52:00 -0400 Subject: [PATCH 170/331] Fix minor issues for PR #2187 (updated integration tests) test/integration/GCHP/README.md - Fixed typos: "GEOS-Chem Classic" -> "GCHP" test/shared/commonFunctionsForTests.sh - Function get_default_gcc_env_file now returns the GCC 10 env file from run/GCClassic/runScriptSamples/operational_examples/harvard_cannon - Function get_default_gchp_env_file now returns the GCC 10 env file from run/GCHP/runScriptSamples/operational_examples/harvard_cannon Signed-off-by: Bob Yantosca --- test/integration/GCHP/README.md | 8 ++++---- test/shared/commonFunctionsForTests.sh | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/test/integration/GCHP/README.md b/test/integration/GCHP/README.md index e85c349f5..0864e969e 100644 --- a/test/integration/GCHP/README.md +++ b/test/integration/GCHP/README.md @@ -17,13 +17,13 @@ Integration tests are short GCHP simulations. Executables are compiled with all ### Integration Test Scripts - `integrationTest.sh` - - Driver script to run GEOS-Chem Classic integration tests + - Driver script to run GCHP integration tests - `integrationTestCreate.sh` - - Script to create GEOS-Chem Classic run directories for integration tests + - Script to create GCHP run directories for integration tests - `integrationTestCompile.sh` - - Script to compile GEOS-Chem Classic executables + - Script to compile GCHP executables - `integrationTestExecute.sh` - - Script to run GEOS-Chem Classic integration test simulations + - Script to run GCHP integration test simulations ### Shared Scripts diff --git a/test/shared/commonFunctionsForTests.sh b/test/shared/commonFunctionsForTests.sh index bb3461342..043b7444c 100755 --- a/test/shared/commonFunctionsForTests.sh +++ b/test/shared/commonFunctionsForTests.sh @@ -767,7 +767,8 @@ function get_default_gcc_env_file() { #======================================================================== # Returns the default environment file for GEOS-Chem Classic #======================================================================== - echo "/n/home09/ryantosca/repos/cannon-env/envs/gnu10/gcclassic.rocky+gnu10.minimal.env" + envFile=$(realpath "../../../run/GCClassic/runScriptSamples/operational_examples/harvard_cannon/gcclassic.gcc10_cannon_rocky.env") + echo "$envFile" return 0 } @@ -776,6 +777,7 @@ function get_default_gchp_env_file() { #======================================================================== # Returns the default environment file for GCHP #======================================================================== - echo "/n/home09/ryantosca/repos/cannon-env/envs/gnu10/gchp.rocky+gnu10.minimal.env" + envFile=$(realpath "../../../run/GCHP/runScriptSamples/operational_examples/harvard_cannon/gchp.gcc10_openmpi4_cannon_rocky.env") + echo "$envFile" return 0 } From 17a44f8dac9ab3b21a86fc019f1e40a40caf83c7 Mon Sep 17 00:00:00 2001 From: Christopher Holmes Date: Thu, 21 Mar 2024 20:37:01 -0400 Subject: [PATCH 171/331] Initialize PBL variables Selected PBL variables must be reset to zero each time PBL height is computed. --- GeosCore/pbl_mix_mod.F90 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/GeosCore/pbl_mix_mod.F90 b/GeosCore/pbl_mix_mod.F90 index d3bba422b..5bb6d48ff 100644 --- a/GeosCore/pbl_mix_mod.F90 +++ b/GeosCore/pbl_mix_mod.F90 @@ -291,9 +291,11 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) !================================================================= ! Initialize - RC = GC_SUCCESS - Bad_Sum = .FALSE. - State_Met%InPbl = .FALSE. + RC = GC_SUCCESS + Bad_Sum = .FALSE. + State_Met%InPbl = .FALSE. + State_Met%F_of_PBL = 0.0_fp + State_Met%F_Under_PBLTop = 0.0_fp !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED ) & @@ -363,7 +365,7 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) ! Error check IF ( ABS( SUM( State_Met%F_OF_PBL(I,J,:) ) - 1.0_fp) > 1.0e-3_fp) THEN !$OMP CRITICAL - PRINT*, 'bad sum at: ', I, J + PRINT*, 'bad sum at: ', I, J, SUM( State_Met%F_OF_PBL(I,J,:) ) Bad_Sum = .TRUE. !$OMP END CRITICAL ENDIF From 35c9f6d528199f9c80e402ceaa7eabbb60a1f619 Mon Sep 17 00:00:00 2001 From: nicholasbalasus Date: Thu, 21 Mar 2024 18:39:15 -0400 Subject: [PATCH 172/331] Change NEI 2D emissions to xy dimension changelog --- CHANGELOG.md | 1 + run/CESM/HEMCO_Config.rc | 846 +++++++++--------- .../HEMCO_Config.rc.aerosol | 846 +++++++++--------- .../HEMCO_Config.rc.carbon | 22 +- .../HEMCO_Config.rc.fullchem | 846 +++++++++--------- .../HEMCO_Config.rc.tagCO | 22 +- .../HEMCO_Config.rc.carbon | 22 +- .../HEMCO_Config.rc.fullchem | 846 +++++++++--------- run/WRF/fullchem/HEMCO_Config.rc | 846 +++++++++--------- 9 files changed, 2149 insertions(+), 2148 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 747b2f4fd..c8d703fee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Fixed offline emission paths set when using GEOS-IT meteorology - Fixed format issue in input_mod RRTMG print statement caught by some compilers - Fixed GEOS-IT SLP and TROPP scaling in pre-processed files used in GCHP +- Fixed reading of NEI emissions through HEMCO ### Removed - Removed MPI broadcasts in CESM-only photolysis code; will read on all cores diff --git a/run/CESM/HEMCO_Config.rc b/run/CESM/HEMCO_Config.rc index 94c7e6f07..2988dfe0a 100644 --- a/run/CESM/HEMCO_Config.rc +++ b/run/CESM/HEMCO_Config.rc @@ -293,322 +293,322 @@ VerboseOnCores: root # Accepted values: root all # aren't included in the Tier 1 CAPS file/ #============================================================================== (((NEI2016_MONMEAN -0 EPA16_BCPI__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__afdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__afdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__afdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_BCPI__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__afdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__afdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__afdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__afdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__afdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__afdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__agACET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__agALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__agALDX $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__agBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_C2H4__agETH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__agETHA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__agETOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__agFORM $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_PRPE__agIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__agKET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__agMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__agNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_PRPE__agOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__agPAR $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_C3H8__agPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_TOLU__agTOL $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__agXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__airportsACET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__airportsACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__airportsALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__airportsALDX $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__airportsBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__afdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__agACET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__agALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__agALDX $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__agBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_C2H4__agETH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__agETHA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__agETOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__agFORM $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_PRPE__agIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__agKET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__agMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__agNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_PRPE__agOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__agPAR $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_C3H8__agPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_TOLU__agTOL $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__agXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__airportsACET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__airportsACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__airportsALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__airportsALDX $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__airportsBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__airportsSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__airportsETH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__airportsETHA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__airportsETOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__airportsFORM $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__airportsHONO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__airportsIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__airportsKET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__airportsMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NO__airportsNO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__airportsNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__airportsOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__airportsPAR $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__airportsPNA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__airportsPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__airportsPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__airportsETH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__airportsETHA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__airportsETOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__airportsFORM $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__airportsHONO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__airportsIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__airportsKET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__airportsMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NO__airportsNO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__airportsNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__airportsOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__airportsPAR $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__airportsPNA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__airportsPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__airportsPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__airportsPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__airportsPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__airportsPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__airportsPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__airportsSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__airportsPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__airportsPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__airportsSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__airportspFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__airportsSULF $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__airportsTOL $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__airportsXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__nonptACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__nonptACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__nonptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__nonptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__nonptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__nonptCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__airportsSULF $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__airportsTOL $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__airportsXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__nonptACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__nonptACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__nonptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__nonptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__nonptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__nonptCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__nonptSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__nonptETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__nonptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__nonptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__nonptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HCl__nonptHCL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HCL 2016/1-12/1/0 R xyz kg/m2/s HCl 1007 1 50 -0 EPA16_HNO2__nonptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__nonptKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__nonptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__nonptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__nonptNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__nonptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__nonptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__nonptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__nonptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__nonptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__nonptETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__nonptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__nonptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__nonptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HCl__nonptHCL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HCL 2016/1-12/1/0 R xy kg/m2/s HCl 1007 1 50 +0 EPA16_HNO2__nonptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__nonptKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__nonptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__nonptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__nonptNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__nonptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__nonptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__nonptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__nonptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__nonptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__nonptPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__nonptPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__nonptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__nonptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__nonptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__nonptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__nonptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__nonptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__nonptpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__nonptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__nonptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__nonptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__nonroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__nonroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__nonroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__nonroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__nonroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__nonptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__nonptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__nonptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__nonroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__nonroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__nonroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__nonroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__nonroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__nonroadSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__nonroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__nonroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__nonroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__nonroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__nonroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__nonroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__nonroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__nonroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__nonroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__nonroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__nonroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__nonroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__nonroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__nonroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__nonroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__nonroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__nonroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__nonroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__nonroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__nonroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__nonroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__nonroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__nonroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__nonroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__nonroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__nonroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__nonroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__nonroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__nonroadPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__nonroadPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__nonroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__nonroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__nonroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__nonroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__nonroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__nonroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__nonroadspFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__nonroadSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__nonroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__nonroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__npogACET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__npogACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__npogALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__npogALDX $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__npogBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__npogCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__nonroadSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__nonroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__nonroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__npogACET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__npogACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__npogALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__npogALDX $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__npogBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__npogCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__npogSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__npogETH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__npogETHA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__npogETOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__npogFORM $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__npogHONO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__npogIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__npogKET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__npogMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__npogNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__npogNO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__npogNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__npogOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__npogPAR $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__npogPNA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__npogPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__npogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__npogETH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__npogETHA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__npogETOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__npogFORM $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__npogHONO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__npogIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__npogKET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__npogMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__npogNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__npogNO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__npogNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__npogOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__npogPAR $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__npogPNA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__npogPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__npogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__npogPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__npogPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__npogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__npogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__npogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__npogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__npogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__npogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__npogpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__npogSULF $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__npogTOL $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__npogXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__npogSULF $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__npogTOL $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__npogXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroadSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroadPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroadPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroadpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_TOLU__onroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_caACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroad_caACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_caALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_caALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_caBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_TOLU__onroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroad_caACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroad_caACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_caALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_caALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_caBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP_onroad__caSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_caETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_caETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_caETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_caFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_caHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_caIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_caKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_caMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_caNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_caNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_caNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_caOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_caPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_caPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_caPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_caPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_caETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_caETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_caETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_caFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_caHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_caIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_caKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_caMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_caNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_caNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_caNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_caOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_caPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_caPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_caPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_caPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_caPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_caPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_caPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_caPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_caSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_caPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_caPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_caSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_capFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_TOLU__onroad_caTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_caXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__railACET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__railACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__railALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__railALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__railBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_TOLU__onroad_caTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_caXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__railACET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__railACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__railALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__railALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__railBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__railSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__railETH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__railETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__railETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__railFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__railHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__railIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__railKET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__railMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__railNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__railNO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__railNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__railOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__railPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__railPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__railPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__railPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__railETH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__railETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__railETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__railFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__railHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__railIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__railKET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__railMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__railNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__railNO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__railNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__railOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__railPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__railPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__railPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__railPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__railPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__railPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__railPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__railPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__railSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__railPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__railPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__railSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__railpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__railSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__railTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__railXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__rwcACET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__rwcACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__rwcALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__rwcALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__rwcBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__rwcCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__rwcCO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__railSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__railTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__railXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__rwcACET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__rwcACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__rwcALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__rwcALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__rwcBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__rwcCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__rwcCO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__rwcSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__rwcETH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__rwcETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__rwcETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__rwcFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__rwcHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__rwcIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__rwcKET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__rwcMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__rwcNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__rwcNO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__rwcNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__rwcOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__rwcPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__rwcPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__rwcPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__rwcPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__rwcETH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__rwcETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__rwcETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__rwcFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__rwcHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__rwcIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__rwcKET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__rwcMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__rwcNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__rwcNO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__rwcNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__rwcOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__rwcPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__rwcPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__rwcPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__rwcPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__rwcPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__rwcPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__rwcPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__rwcPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__rwcSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__rwcPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__rwcPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__rwcSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__rwcpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__rwcSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__rwcTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__rwcXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_SO4__rwcSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__rwcTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__rwcXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 0 EPA16_ACET__c1c2ACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 0 EPA16_ALD2__c1c2ALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 0 EPA16_RCHO__c1c2ALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 @@ -793,167 +793,167 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_SO4__ptnonipmSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_TOLU__ptnonipmTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 0 EPA16_XYLE__ptnonipmXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_canACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_canALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_canALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_canBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_ACET__onroad_canACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_canALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_canALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_canBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroad_canSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_canETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_canETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_canETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_canFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_canHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_canIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_canKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_canMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_canNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_canNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_canNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_canOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_canPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_canPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_canPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_canPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_canETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_canETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_canETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_canFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_canHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_canIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_canKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_canMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_canNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_canNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_canNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_canOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_canPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_canPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_canPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_canPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_canPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_canPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_canPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_canPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_canSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_canPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_canPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_canSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_canpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__onroad_canSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__onroad_canTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_canXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_mexACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroad_mexACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_mexALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_mexALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_mexBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__onroad_canSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__onroad_canTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_canXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroad_mexACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroad_mexACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_mexALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_mexALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_mexBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroad_mexSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_mexETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_mexETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_mexETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_mexFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_mexHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_mexIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_mexKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_mexMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_mexNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_mexNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_mexNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_mexOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_mexPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_mexPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_mexPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_mexPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_mexETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_mexETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_mexETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_mexFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_mexHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_mexIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_mexKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_mexMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_mexNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_mexNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_mexNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_mexOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_mexPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_mexPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_mexPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_mexPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_mexPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_mexPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_mexPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_mexPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_mexSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_mexPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_mexPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_mexSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_mexpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__onroad_mexSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__onroad_mexTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_mexXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_BCPI__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othafdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othafdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othafdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_SO4__onroad_mexSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__onroad_mexTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_mexXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_BCPI__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othafdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othafdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othafdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othafdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othafdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__othafdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__otharACET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__otharALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__otharALDX $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__otharBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__othafdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__otharACET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__otharALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__otharALDX $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__otharBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__otharSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__otharETH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__otharETHA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__otharETOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__otharFORM $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__otharHONO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__otharIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__otharKET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__otharMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__otharNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__otharNO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__otharNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__otharOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__otharPAR $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__otharPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__otharPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__otharPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__otharETH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__otharETHA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__otharETOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__otharFORM $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__otharHONO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__otharIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__otharKET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__otharMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__otharNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__otharNO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__otharNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__otharOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__otharPAR $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__otharPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__otharPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__otharPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__otharPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__otharPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__otharPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__otharPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__otharSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__otharPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__otharPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__otharSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__otharpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__otharSULF $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__otharTOL $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__otharXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_BCPI__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othptdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othptdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othptdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_SO4__otharSULF $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__otharTOL $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__otharXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_BCPI__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othptdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othptdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othptdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othptdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othptdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__othptdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__othptACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__othptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__othptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__othptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__othptdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__othptACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__othptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__othptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__othptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__othptSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__othptETH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__othptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__othptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__othptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__othptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__othptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__othptKET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__othptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__othptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__othptNO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__othptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__othptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__othptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__othptETH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__othptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__othptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__othptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__othptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__othptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__othptKET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__othptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__othptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__othptNO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__othptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__othptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__othptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othptPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othptPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__othptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__othptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__othptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__othptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__othptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__othptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__othptpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__othptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__othptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__othptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_SO4__othptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__othptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__othptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 )))NEI2016_MONMEAN #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol index 2ae17232f..d8c677d54 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol @@ -249,304 +249,304 @@ VerboseOnCores: root # Accepted values: root all # aren't included in the Tier 1 CAPS file/ #============================================================================== (((NEI2016_MONMEAN -0 EPA16_BCPI__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__afdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__afdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__afdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_SO4__afdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__agACET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__agALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__agALDX $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__agBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_C2H4__agETH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__agETHA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__agETOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__agFORM $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_PRPE__agIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__agKET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__agMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__agNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_PRPE__agOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__agPAR $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_C3H8__agPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_TOLU__agTOL $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__agXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__airportsACET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__airportsACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__airportsALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__airportsALDX $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__airportsBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_BCPI__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__afdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__afdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__afdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_SO4__afdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__agACET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__agALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__agALDX $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__agBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_C2H4__agETH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__agETHA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__agETOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__agFORM $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_PRPE__agIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__agKET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__agMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__agNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_PRPE__agOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__agPAR $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_C3H8__agPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_TOLU__agTOL $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__agXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__airportsACET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__airportsACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__airportsALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__airportsALDX $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__airportsBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__airportsSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__airportsETH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__airportsETHA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__airportsETOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__airportsFORM $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__airportsHONO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__airportsIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__airportsKET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__airportsMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NO__airportsNO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__airportsNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__airportsOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__airportsPAR $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__airportsPNA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__airportsPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__airportsPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__airportsPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__airportsPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__airportsSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__airportsETH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__airportsETHA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__airportsETOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__airportsFORM $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__airportsHONO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__airportsIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__airportsKET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__airportsMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NO__airportsNO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__airportsNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__airportsOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__airportsPAR $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__airportsPNA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__airportsPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__airportsPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__airportsPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__airportsPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__airportsSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__airportspFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__airportsSULF $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__airportsTOL $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__airportsXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__nonptACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__nonptACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__nonptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__nonptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__nonptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__nonptCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__airportsSULF $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__airportsTOL $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__airportsXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__nonptACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__nonptACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__nonptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__nonptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__nonptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__nonptCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__nonptSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__nonptETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__nonptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__nonptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__nonptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HCl__nonptHCL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HCL 2016/1-12/1/0 R xyz kg/m2/s HCl 1007 1 50 -0 EPA16_HNO2__nonptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__nonptKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__nonptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__nonptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__nonptNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__nonptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__nonptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__nonptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__nonptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__nonptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__nonptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__nonptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__nonptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__nonptETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__nonptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__nonptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__nonptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HCl__nonptHCL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HCL 2016/1-12/1/0 R xy kg/m2/s HCl 1007 1 50 +0 EPA16_HNO2__nonptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__nonptKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__nonptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__nonptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__nonptNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__nonptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__nonptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__nonptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__nonptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__nonptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__nonptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__nonptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__nonptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__nonptpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__nonptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__nonptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__nonptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__nonroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__nonroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__nonroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__nonroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__nonroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__nonptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__nonptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__nonptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__nonroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__nonroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__nonroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__nonroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__nonroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__nonroadSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__nonroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__nonroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__nonroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__nonroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__nonroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__nonroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__nonroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__nonroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__nonroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__nonroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__nonroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__nonroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__nonroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__nonroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__nonroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__nonroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__nonroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__nonroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__nonroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__nonroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__nonroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__nonroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__nonroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__nonroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__nonroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__nonroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__nonroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__nonroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__nonroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__nonroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__nonroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__nonroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__nonroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__nonroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__nonroadspFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__nonroadSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__nonroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__nonroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__npogACET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__npogACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__npogALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__npogALDX $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__npogBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__npogCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__nonroadSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__nonroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__nonroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__npogACET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__npogACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__npogALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__npogALDX $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__npogBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__npogCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__npogSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__npogETH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__npogETHA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__npogETOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__npogFORM $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__npogHONO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__npogIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__npogKET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__npogMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__npogNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__npogNO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__npogNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__npogOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__npogPAR $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__npogPNA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__npogPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__npogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__npogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__npogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__npogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__npogETH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__npogETHA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__npogETOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__npogFORM $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__npogHONO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__npogIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__npogKET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__npogMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__npogNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__npogNO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__npogNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__npogOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__npogPAR $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__npogPNA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__npogPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__npogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__npogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__npogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__npogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__npogpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__npogSULF $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__npogTOL $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__npogXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__npogSULF $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__npogTOL $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__npogXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroadSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__onroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__onroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__onroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroadpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_TOLU__onroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_caACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroad_caACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_caALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_caALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_caBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_TOLU__onroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroad_caACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroad_caACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_caALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_caALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_caBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP_onroad__caSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_caETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_caETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_caETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_caFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_caHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_caIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_caKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_caMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_caNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_caNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_caNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_caOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_caPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_caPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_caPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_caPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__onroad_caPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_caPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_caSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__onroad_caETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_caETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_caETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_caFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_caHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_caIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_caKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_caMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_caNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_caNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_caNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_caOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_caPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_caPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_caPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_caPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__onroad_caPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_caPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_caSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_capFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_TOLU__onroad_caTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_caXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__railACET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__railACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__railALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__railALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__railBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_TOLU__onroad_caTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_caXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__railACET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__railACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__railALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__railALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__railBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__railSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__railETH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__railETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__railETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__railFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__railHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__railIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__railKET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__railMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__railNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__railNO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__railNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__railOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__railPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__railPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__railPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__railPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__railPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__railPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__railSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__railETH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__railETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__railETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__railFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__railHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__railIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__railKET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__railMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__railNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__railNO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__railNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__railOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__railPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__railPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__railPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__railPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__railPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__railPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__railSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__railpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__railSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__railTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__railXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__rwcACET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__rwcACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__rwcALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__rwcALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__rwcBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__rwcCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__rwcCO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__railSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__railTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__railXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__rwcACET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__rwcACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__rwcALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__rwcALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__rwcBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__rwcCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__rwcCO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__rwcSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__rwcETH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__rwcETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__rwcETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__rwcFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__rwcHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__rwcIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__rwcKET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__rwcMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__rwcNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__rwcNO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__rwcNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__rwcOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__rwcPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__rwcPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__rwcPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__rwcPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__rwcPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__rwcPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__rwcSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__rwcETH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__rwcETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__rwcETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__rwcFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__rwcHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__rwcIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__rwcKET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__rwcMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__rwcNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__rwcNO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__rwcNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__rwcOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__rwcPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__rwcPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__rwcPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__rwcPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__rwcPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__rwcPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__rwcSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__rwcpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__rwcSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__rwcTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__rwcXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_SO4__rwcSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__rwcTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__rwcXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 0 EPA16_ACET__c1c2ACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 0 EPA16_ALD2__c1c2ALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 0 EPA16_RCHO__c1c2ALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 @@ -721,155 +721,155 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_SO4__ptnonipmSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_TOLU__ptnonipmTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 0 EPA16_XYLE__ptnonipmXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_canACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_canALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_canALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_canBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_ACET__onroad_canACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_canALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_canALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_canBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroad_canSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_canETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_canETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_canETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_canFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_canHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_canIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_canKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_canMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_canNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_canNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_canNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_canOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_canPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_canPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_canPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_canPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__onroad_canPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_canPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_canSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__onroad_canETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_canETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_canETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_canFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_canHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_canIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_canKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_canMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_canNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_canNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_canNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_canOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_canPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_canPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_canPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_canPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__onroad_canPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_canPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_canSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_canpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__onroad_canSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__onroad_canTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_canXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_mexACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroad_mexACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_mexALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_mexALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_mexBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__onroad_canSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__onroad_canTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_canXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroad_mexACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroad_mexACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_mexALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_mexALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_mexBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroad_mexSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_mexETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_mexETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_mexETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_mexFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_mexHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_mexIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_mexKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_mexMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_mexNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_mexNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_mexNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_mexOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_mexPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_mexPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_mexPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_mexPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__onroad_mexPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_mexPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_mexSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__onroad_mexETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_mexETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_mexETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_mexFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_mexHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_mexIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_mexKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_mexMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_mexNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_mexNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_mexNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_mexOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_mexPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_mexPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_mexPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_mexPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__onroad_mexPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_mexPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_mexSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_mexpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__onroad_mexSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__onroad_mexTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_mexXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_BCPI__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othafdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othafdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othafdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_SO4__othafdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__otharACET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__otharALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__otharALDX $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__otharBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__onroad_mexSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__onroad_mexTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_mexXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_BCPI__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othafdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othafdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othafdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_SO4__othafdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__otharACET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__otharALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__otharALDX $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__otharBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__otharSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__otharETH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__otharETHA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__otharETOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__otharFORM $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__otharHONO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__otharIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__otharKET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__otharMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__otharNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__otharNO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__otharNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__otharOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__otharPAR $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__otharPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__otharPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__otharPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__otharPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__otharPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__otharSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__otharETH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__otharETHA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__otharETOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__otharFORM $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__otharHONO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__otharIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__otharKET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__otharMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__otharNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__otharNO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__otharNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__otharOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__otharPAR $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__otharPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__otharPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__otharPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__otharPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__otharPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__otharSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__otharpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__otharSULF $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__otharTOL $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__otharXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_BCPI__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othptdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othptdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othptdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_SO4__othptdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__othptACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__othptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__othptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__othptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__otharSULF $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__otharTOL $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__otharXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_BCPI__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othptdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othptdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othptdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_SO4__othptdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__othptACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__othptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__othptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__othptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__othptSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__othptETH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__othptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__othptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__othptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__othptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__othptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__othptKET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__othptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__othptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__othptNO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__othptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__othptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__othptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 -0 EPA16_C3H8__othptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__othptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__othptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C2H4__othptETH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__othptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__othptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__othptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__othptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__othptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__othptKET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__othptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__othptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__othptNO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__othptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__othptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__othptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C3H8__othptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__othptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__othptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__othptpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__othptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__othptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__othptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_SO4__othptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__othptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__othptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 )))NEI2016_MONMEAN #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index d30c299fb..2aaa25728 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -610,22 +610,22 @@ Mask fractions: false # aren't included in the Tier 1 CAPS file/ #============================================================================== (((NEI2016_MONMEAN -0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 0 EPA16_CO__c1c2CO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 0 EPA16_CO__c3CO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c3_12_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 0 EPA16_CO__pteguCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptegu_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 0 EPA16_CO__ptogCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_pt_oilgas_allinln_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 0 EPA16_CO__ptnonipmCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 )))NEI2016_MONMEAN #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 0dcee3693..eee594e08 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -292,322 +292,322 @@ VerboseOnCores: root # Accepted values: root all # aren't included in the Tier 1 CAPS file/ #============================================================================== (((NEI2016_MONMEAN -0 EPA16_BCPI__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__afdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__afdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__afdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_BCPI__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__afdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__afdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__afdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__afdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__afdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__afdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__agACET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__agALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__agALDX $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__agBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_C2H4__agETH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__agETHA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__agETOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__agFORM $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_PRPE__agIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__agKET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__agMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__agNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_PRPE__agOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__agPAR $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_C3H8__agPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_TOLU__agTOL $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__agXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__airportsACET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__airportsACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__airportsALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__airportsALDX $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__airportsBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__afdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__agACET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__agALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__agALDX $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__agBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_C2H4__agETH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__agETHA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__agETOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__agFORM $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_PRPE__agIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__agKET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__agMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__agNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_PRPE__agOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__agPAR $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_C3H8__agPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_TOLU__agTOL $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__agXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__airportsACET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__airportsACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__airportsALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__airportsALDX $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__airportsBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__airportsSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__airportsETH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__airportsETHA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__airportsETOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__airportsFORM $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__airportsHONO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__airportsIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__airportsKET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__airportsMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NO__airportsNO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__airportsNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__airportsOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__airportsPAR $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__airportsPNA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__airportsPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__airportsPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__airportsETH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__airportsETHA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__airportsETOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__airportsFORM $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__airportsHONO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__airportsIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__airportsKET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__airportsMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NO__airportsNO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__airportsNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__airportsOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__airportsPAR $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__airportsPNA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__airportsPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__airportsPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__airportsPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__airportsPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__airportsPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__airportsPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__airportsSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__airportsPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__airportsPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__airportsSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__airportspFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__airportsSULF $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__airportsTOL $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__airportsXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__nonptACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__nonptACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__nonptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__nonptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__nonptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__nonptCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__airportsSULF $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__airportsTOL $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__airportsXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__nonptACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__nonptACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__nonptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__nonptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__nonptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__nonptCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__nonptSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__nonptETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__nonptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__nonptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__nonptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HCl__nonptHCL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HCL 2016/1-12/1/0 R xyz kg/m2/s HCl 1007 1 50 -0 EPA16_HNO2__nonptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__nonptKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__nonptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__nonptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__nonptNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__nonptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__nonptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__nonptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__nonptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__nonptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__nonptETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__nonptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__nonptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__nonptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HCl__nonptHCL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HCL 2016/1-12/1/0 R xy kg/m2/s HCl 1007 1 50 +0 EPA16_HNO2__nonptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__nonptKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__nonptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__nonptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__nonptNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__nonptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__nonptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__nonptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__nonptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__nonptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__nonptPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__nonptPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__nonptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__nonptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__nonptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__nonptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__nonptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__nonptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__nonptpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__nonptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__nonptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__nonptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__nonroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__nonroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__nonroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__nonroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__nonroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__nonptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__nonptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__nonptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__nonroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__nonroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__nonroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__nonroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__nonroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__nonroadSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__nonroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__nonroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__nonroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__nonroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__nonroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__nonroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__nonroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__nonroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__nonroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__nonroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__nonroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__nonroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__nonroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__nonroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__nonroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__nonroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__nonroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__nonroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__nonroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__nonroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__nonroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__nonroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__nonroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__nonroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__nonroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__nonroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__nonroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__nonroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__nonroadPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__nonroadPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__nonroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__nonroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__nonroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__nonroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__nonroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__nonroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__nonroadspFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__nonroadSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__nonroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__nonroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__npogACET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__npogACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__npogALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__npogALDX $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__npogBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__npogCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__nonroadSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__nonroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__nonroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__npogACET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__npogACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__npogALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__npogALDX $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__npogBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__npogCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__npogSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__npogETH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__npogETHA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__npogETOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__npogFORM $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__npogHONO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__npogIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__npogKET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__npogMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__npogNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__npogNO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__npogNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__npogOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__npogPAR $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__npogPNA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__npogPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__npogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__npogETH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__npogETHA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__npogETOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__npogFORM $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__npogHONO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__npogIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__npogKET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__npogMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__npogNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__npogNO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__npogNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__npogOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__npogPAR $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__npogPNA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__npogPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__npogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__npogPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__npogPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__npogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__npogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__npogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__npogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__npogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__npogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__npogpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__npogSULF $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__npogTOL $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__npogXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__npogSULF $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__npogTOL $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__npogXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroadSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroadPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroadPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroadpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_TOLU__onroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_caACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroad_caACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_caALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_caALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_caBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_TOLU__onroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroad_caACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroad_caACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_caALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_caALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_caBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP_onroad__caSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_caETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_caETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_caETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_caFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_caHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_caIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_caKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_caMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_caNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_caNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_caNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_caOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_caPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_caPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_caPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_caPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_caETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_caETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_caETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_caFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_caHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_caIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_caKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_caMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_caNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_caNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_caNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_caOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_caPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_caPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_caPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_caPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_caPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_caPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_caPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_caPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_caSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_caPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_caPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_caSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_capFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_TOLU__onroad_caTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_caXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__railACET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__railACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__railALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__railALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__railBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_TOLU__onroad_caTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_caXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__railACET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__railACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__railALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__railALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__railBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__railSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__railETH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__railETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__railETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__railFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__railHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__railIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__railKET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__railMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__railNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__railNO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__railNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__railOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__railPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__railPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__railPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__railPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__railETH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__railETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__railETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__railFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__railHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__railIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__railKET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__railMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__railNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__railNO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__railNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__railOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__railPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__railPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__railPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__railPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__railPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__railPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__railPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__railPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__railSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__railPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__railPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__railSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__railpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__railSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__railTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__railXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__rwcACET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__rwcACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__rwcALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__rwcALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__rwcBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__rwcCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__rwcCO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__railSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__railTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__railXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__rwcACET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__rwcACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__rwcALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__rwcALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__rwcBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__rwcCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__rwcCO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__rwcSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__rwcETH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__rwcETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__rwcETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__rwcFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__rwcHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__rwcIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__rwcKET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__rwcMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__rwcNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__rwcNO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__rwcNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__rwcOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__rwcPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__rwcPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__rwcPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__rwcPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__rwcETH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__rwcETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__rwcETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__rwcFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__rwcHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__rwcIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__rwcKET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__rwcMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__rwcNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__rwcNO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__rwcNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__rwcOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__rwcPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__rwcPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__rwcPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__rwcPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__rwcPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__rwcPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__rwcPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__rwcPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__rwcSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__rwcPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__rwcPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__rwcSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__rwcpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__rwcSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__rwcTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__rwcXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_SO4__rwcSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__rwcTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__rwcXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 0 EPA16_ACET__c1c2ACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 0 EPA16_ALD2__c1c2ALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 0 EPA16_RCHO__c1c2ALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 @@ -792,167 +792,167 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_SO4__ptnonipmSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_TOLU__ptnonipmTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 0 EPA16_XYLE__ptnonipmXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_canACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_canALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_canALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_canBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_ACET__onroad_canACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_canALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_canALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_canBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroad_canSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_canETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_canETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_canETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_canFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_canHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_canIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_canKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_canMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_canNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_canNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_canNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_canOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_canPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_canPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_canPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_canPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_canETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_canETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_canETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_canFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_canHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_canIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_canKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_canMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_canNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_canNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_canNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_canOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_canPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_canPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_canPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_canPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_canPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_canPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_canPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_canPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_canSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_canPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_canPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_canSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_canpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__onroad_canSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__onroad_canTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_canXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_mexACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroad_mexACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_mexALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_mexALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_mexBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__onroad_canSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__onroad_canTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_canXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroad_mexACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroad_mexACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_mexALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_mexALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_mexBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroad_mexSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_mexETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_mexETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_mexETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_mexFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_mexHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_mexIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_mexKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_mexMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_mexNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_mexNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_mexNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_mexOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_mexPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_mexPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_mexPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_mexPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_mexETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_mexETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_mexETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_mexFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_mexHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_mexIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_mexKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_mexMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_mexNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_mexNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_mexNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_mexOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_mexPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_mexPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_mexPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_mexPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_mexPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_mexPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_mexPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_mexPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_mexSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_mexPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_mexPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_mexSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_mexpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__onroad_mexSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__onroad_mexTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_mexXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_BCPI__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othafdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othafdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othafdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_SO4__onroad_mexSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__onroad_mexTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_mexXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_BCPI__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othafdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othafdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othafdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othafdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othafdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__othafdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__otharACET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__otharALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__otharALDX $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__otharBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__othafdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__otharACET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__otharALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__otharALDX $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__otharBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__otharSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__otharETH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__otharETHA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__otharETOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__otharFORM $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__otharHONO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__otharIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__otharKET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__otharMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__otharNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__otharNO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__otharNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__otharOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__otharPAR $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__otharPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__otharPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__otharPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__otharETH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__otharETHA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__otharETOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__otharFORM $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__otharHONO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__otharIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__otharKET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__otharMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__otharNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__otharNO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__otharNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__otharOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__otharPAR $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__otharPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__otharPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__otharPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__otharPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__otharPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__otharPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__otharPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__otharSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__otharPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__otharPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__otharSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__otharpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__otharSULF $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__otharTOL $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__otharXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_BCPI__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othptdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othptdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othptdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_SO4__otharSULF $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__otharTOL $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__otharXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_BCPI__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othptdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othptdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othptdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othptdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othptdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__othptdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__othptACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__othptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__othptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__othptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__othptdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__othptACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__othptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__othptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__othptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__othptSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__othptETH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__othptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__othptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__othptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__othptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__othptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__othptKET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__othptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__othptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__othptNO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__othptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__othptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__othptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__othptETH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__othptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__othptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__othptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__othptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__othptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__othptKET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__othptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__othptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__othptNO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__othptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__othptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__othptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othptPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othptPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__othptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__othptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__othptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__othptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__othptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__othptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__othptpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__othptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__othptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__othptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_SO4__othptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__othptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__othptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 )))NEI2016_MONMEAN #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO index 1c68d9c72..5805e11fe 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCO @@ -178,25 +178,25 @@ Mask fractions: false # aren't included in the Tier 1 CAPS file/ #============================================================================== (((NEI2016_MONMEAN -0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__airportsCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__airportsCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 -0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__nonptCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__nonptCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 -0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__nonroadCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__nonroadCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 -0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__npogCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__npogCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 -0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__onroadCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__onroadCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 -0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__onroad_caCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__onroad_caCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 -0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__railCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__railCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 0 EPA16_CO__c1c2CO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 @@ -214,16 +214,16 @@ Mask fractions: false 0 EPA16_CO__ptnonipmCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__ptnonipmCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__ptnonipmCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 -0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__onroad_canCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__onroad_canCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 -0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__onroad_mexCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__onroad_mexCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 -0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__otharCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__otharCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 -0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_CO__othptCOus - - - - - - COus 26/211/252/1007/1100 1 50 0 EPA16_CO__othptCOoth - - - - - - COoth 26/211/252/1007/1103 1 50 )))NEI2016_MONMEAN diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 9dc36cfbd..8b883e8bb 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -610,22 +610,22 @@ Mask fractions: false # aren't included in the Tier 1 CAPS file/ #============================================================================== (((NEI2016_MONMEAN -0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 0 EPA16_CO__c1c2CO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 0 EPA16_CO__c3CO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c3_12_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 0 EPA16_CO__pteguCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptegu_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 0 EPA16_CO__ptogCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_pt_oilgas_allinln_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 0 EPA16_CO__ptnonipmCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 -0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 +0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/2007 1 50 )))NEI2016_MONMEAN #============================================================================== diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 8d814c058..6e95652ee 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -291,322 +291,322 @@ VerboseOnCores: root # Accepted values: root all # aren't included in the Tier 1 CAPS file/ #============================================================================== (((NEI2016_MONMEAN -0 EPA16_BCPI__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__afdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__afdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__afdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_BCPI__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__afdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__afdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__afdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__afdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__afdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__afdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__agACET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__agALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__agALDX $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__agBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_C2H4__agETH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__agETHA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__agETOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__agFORM $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_PRPE__agIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__agKET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__agMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__agNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_PRPE__agOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__agPAR $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_C3H8__agPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_TOLU__agTOL $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__agXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__airportsACET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__airportsACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__airportsALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__airportsALDX $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__airportsBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__afdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__agACET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__agALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__agALDX $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__agBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_C2H4__agETH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__agETHA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__agETOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__agFORM $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_PRPE__agIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__agKET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__agMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__agNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_PRPE__agOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__agPAR $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_C3H8__agPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_TOLU__agTOL $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__agXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__airportsACET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__airportsACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__airportsALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__airportsALDX $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__airportsBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__airportsSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__airportsETH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__airportsETHA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__airportsETOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__airportsFORM $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__airportsHONO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__airportsIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__airportsKET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__airportsMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NO__airportsNO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__airportsNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__airportsOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__airportsPAR $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__airportsPNA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__airportsPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__airportsPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__airportsETH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__airportsETHA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__airportsETOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__airportsFORM $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__airportsHONO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__airportsIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__airportsKET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__airportsMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NO__airportsNO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__airportsNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__airportsOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__airportsPAR $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__airportsPNA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__airportsPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__airportsPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__airportsPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__airportsPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__airportsPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__airportsPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__airportsSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__airportsPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__airportsPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__airportsSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__airportspFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__airportsSULF $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__airportsTOL $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__airportsXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__nonptACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__nonptACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__nonptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__nonptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__nonptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__nonptCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__airportsSULF $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__airportsTOL $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__airportsXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__nonptACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__nonptACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__nonptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__nonptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__nonptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__nonptCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__nonptSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__nonptETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__nonptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__nonptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__nonptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HCl__nonptHCL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HCL 2016/1-12/1/0 R xyz kg/m2/s HCl 1007 1 50 -0 EPA16_HNO2__nonptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__nonptKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__nonptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__nonptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__nonptNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__nonptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__nonptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__nonptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__nonptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__nonptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__nonptETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__nonptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__nonptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__nonptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HCl__nonptHCL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HCL 2016/1-12/1/0 R xy kg/m2/s HCl 1007 1 50 +0 EPA16_HNO2__nonptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__nonptKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__nonptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__nonptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__nonptNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__nonptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__nonptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__nonptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__nonptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__nonptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__nonptPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__nonptPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__nonptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__nonptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__nonptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__nonptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__nonptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__nonptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__nonptpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__nonptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__nonptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__nonptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__nonroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__nonroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__nonroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__nonroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__nonroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__nonptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__nonptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__nonptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__nonroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__nonroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__nonroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__nonroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__nonroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__nonroadSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__nonroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__nonroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__nonroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__nonroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__nonroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__nonroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__nonroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__nonroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__nonroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__nonroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__nonroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__nonroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__nonroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__nonroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__nonroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__nonroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__nonroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__nonroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__nonroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__nonroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__nonroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__nonroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__nonroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__nonroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__nonroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__nonroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__nonroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__nonroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__nonroadPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__nonroadPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__nonroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__nonroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__nonroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__nonroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__nonroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__nonroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__nonroadspFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__nonroadSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__nonroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__nonroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__npogACET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__npogACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__npogALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__npogALDX $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__npogBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__npogCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__nonroadSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__nonroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__nonroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__npogACET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__npogACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__npogALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__npogALDX $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__npogBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__npogCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__npogSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__npogETH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__npogETHA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__npogETOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__npogFORM $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__npogHONO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__npogIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__npogKET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__npogMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__npogNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__npogNO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__npogNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__npogOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__npogPAR $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__npogPNA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__npogPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__npogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__npogETH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__npogETHA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__npogETOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__npogFORM $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__npogHONO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__npogIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__npogKET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__npogMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__npogNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__npogNO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__npogNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__npogOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__npogPAR $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__npogPNA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__npogPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__npogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__npogPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__npogPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__npogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__npogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__npogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__npogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__npogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__npogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__npogpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__npogSULF $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__npogTOL $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__npogXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__npogSULF $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__npogTOL $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__npogXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroadSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroadPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroadPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroadpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_TOLU__onroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_caACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroad_caACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_caALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_caALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_caBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_TOLU__onroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroad_caACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroad_caACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_caALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_caALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_caBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP_onroad__caSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_caETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_caETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_caETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_caFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_caHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_caIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_caKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_caMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_caNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_caNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_caNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_caOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_caPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_caPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_caPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_caPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_caETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_caETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_caETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_caFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_caHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_caIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_caKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_caMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_caNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_caNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_caNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_caOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_caPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_caPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_caPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_caPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_caPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_caPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_caPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_caPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_caSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_caPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_caPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_caSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_capFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_TOLU__onroad_caTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_caXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__railACET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__railACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__railALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__railALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__railBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_TOLU__onroad_caTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_caXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__railACET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__railACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__railALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__railALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__railBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__railSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__railETH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__railETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__railETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__railFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__railHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__railIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__railKET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__railMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__railNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__railNO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__railNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__railOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__railPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__railPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__railPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__railPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__railETH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__railETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__railETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__railFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__railHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__railIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__railKET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__railMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__railNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__railNO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__railNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__railOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__railPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__railPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__railPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__railPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__railPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__railPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__railPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__railPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__railSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__railPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__railPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__railSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__railpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__railSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__railTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__railXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__rwcACET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__rwcACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__rwcALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__rwcALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__rwcBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__rwcCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__rwcCO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__railSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__railTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__railXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__rwcACET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__rwcACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__rwcALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__rwcALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__rwcBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__rwcCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__rwcCO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__rwcSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__rwcETH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__rwcETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__rwcETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__rwcFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__rwcHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__rwcIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__rwcKET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__rwcMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__rwcNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__rwcNO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__rwcNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__rwcOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__rwcPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__rwcPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__rwcPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__rwcPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__rwcETH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__rwcETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__rwcETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__rwcFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__rwcHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__rwcIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__rwcKET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__rwcMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__rwcNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__rwcNO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__rwcNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__rwcOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__rwcPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__rwcPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__rwcPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__rwcPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__rwcPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__rwcPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__rwcPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__rwcPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__rwcSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__rwcPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__rwcPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__rwcSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__rwcpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__rwcSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__rwcTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__rwcXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_SO4__rwcSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__rwcTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__rwcXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 0 EPA16_ACET__c1c2ACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 0 EPA16_ALD2__c1c2ALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 0 EPA16_RCHO__c1c2ALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 @@ -791,167 +791,167 @@ VerboseOnCores: root # Accepted values: root all 0 EPA16_SO4__ptnonipmSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_TOLU__ptnonipmTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 0 EPA16_XYLE__ptnonipmXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_canACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_canALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_canALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_canBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_ACET__onroad_canACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_canALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_canALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_canBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroad_canSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_canETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_canETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_canETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_canFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_canHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_canIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_canKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_canMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_canNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_canNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_canNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_canOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_canPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_canPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_canPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_canPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_canETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_canETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_canETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_canFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_canHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_canIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_canKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_canMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_canNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_canNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_canNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_canOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_canPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_canPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_canPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_canPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_canPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_canPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_canPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_canPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_canSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_canPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_canPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_canSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_canpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__onroad_canSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__onroad_canTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_canXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_mexACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroad_mexACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_mexALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_mexALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_mexBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__onroad_canSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__onroad_canTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_canXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroad_mexACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroad_mexACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_mexALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_mexALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_mexBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroad_mexSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_mexETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_mexETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_mexETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_mexFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_mexHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_mexIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_mexKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_mexMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_mexNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_mexNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_mexNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_mexOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_mexPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_mexPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_mexPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_mexPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_mexETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_mexETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_mexETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_mexFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_mexHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_mexIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_mexKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_mexMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_mexNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_mexNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_mexNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_mexOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_mexPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_mexPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_mexPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_mexPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_mexPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_mexPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_mexPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_mexPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_mexSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_mexPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_mexPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_mexSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_mexpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__onroad_mexSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__onroad_mexTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_mexXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_BCPI__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othafdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othafdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othafdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_SO4__onroad_mexSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__onroad_mexTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_mexXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_BCPI__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othafdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othafdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othafdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othafdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othafdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__othafdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__otharACET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__otharALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__otharALDX $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__otharBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__othafdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__otharACET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__otharALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__otharALDX $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__otharBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__otharSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__otharETH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__otharETHA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__otharETOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__otharFORM $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__otharHONO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__otharIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__otharKET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__otharMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__otharNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__otharNO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__otharNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__otharOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__otharPAR $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__otharPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__otharPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__otharPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__otharETH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__otharETHA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__otharETOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__otharFORM $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__otharHONO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__otharIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__otharKET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__otharMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__otharNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__otharNO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__otharNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__otharOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__otharPAR $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__otharPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__otharPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__otharPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__otharPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__otharPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__otharPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__otharPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__otharSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__otharPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__otharPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__otharSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__otharpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__otharSULF $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__otharTOL $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__otharXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_BCPI__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othptdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othptdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othptdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_SO4__otharSULF $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__otharTOL $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__otharXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_BCPI__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othptdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othptdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othptdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othptdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othptdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__othptdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__othptACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__othptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__othptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__othptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__othptdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__othptACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__othptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__othptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__othptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__othptSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__othptETH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__othptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__othptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__othptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__othptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__othptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__othptKET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__othptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__othptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__othptNO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__othptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__othptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__othptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__othptETH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__othptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__othptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__othptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__othptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__othptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__othptKET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__othptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__othptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__othptNO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__othptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__othptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__othptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othptPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othptPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__othptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__othptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__othptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__othptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__othptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__othptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__othptpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__othptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__othptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__othptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_SO4__othptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__othptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__othptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 )))NEI2016_MONMEAN #============================================================================== diff --git a/run/WRF/fullchem/HEMCO_Config.rc b/run/WRF/fullchem/HEMCO_Config.rc index 79406226b..e95b0472d 100644 --- a/run/WRF/fullchem/HEMCO_Config.rc +++ b/run/WRF/fullchem/HEMCO_Config.rc @@ -284,322 +284,322 @@ Warnings: 1 # aren't included in the Tier 1 CAPS file/ #============================================================================== (((NEI2016_MONMEAN -0 EPA16_BCPI__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__afdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__afdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__afdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_BCPI__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__afdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__afdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__afdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__afdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__afdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__afdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__afdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__afdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__agACET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__agALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__agALDX $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__agBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_C2H4__agETH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__agETHA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__agETOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__agFORM $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_PRPE__agIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__agKET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__agMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__agNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_PRPE__agOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__agPAR $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_C3H8__agPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_TOLU__agTOL $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__agXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__airportsACET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__airportsACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__airportsALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__airportsALDX $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__airportsBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__afdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_afdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__agACET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__agALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__agALDX $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__agBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_C2H4__agETH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__agETHA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__agETOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__agFORM $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_PRPE__agIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__agKET $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__agMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__agNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_PRPE__agOLE $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__agPAR $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_C3H8__agPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_TOLU__agTOL $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__agXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_ag_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__airportsACET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__airportsACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__airportsALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__airportsALDX $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__airportsBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__airportsCO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__airportsSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__airportsETH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__airportsETHA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__airportsETOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__airportsFORM $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__airportsHONO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__airportsIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__airportsKET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__airportsMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NO__airportsNO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__airportsNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__airportsOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__airportsPAR $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__airportsPNA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__airportsPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__airportsPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__airportsETH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__airportsETHA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__airportsETOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__airportsFORM $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__airportsHONO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__airportsIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__airportsKET $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__airportsMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NO__airportsNO $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__airportsNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__airportsOLE $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__airportsPAR $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__airportsPEC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__airportsPNA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__airportsPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__airportsPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__airportsPOC $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__airportsPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__airportsPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__airportsPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__airportsPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__airportsSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__airportsPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__airportsPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__airportsSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__airportspFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__airportsSULF $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__airportsTOL $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__airportsXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__nonptACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__nonptACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__nonptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__nonptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__nonptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__nonptCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__airportsSULF $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__airportsTOL $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__airportsXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_airports_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__nonptACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__nonptACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__nonptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__nonptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__nonptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__nonptCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__nonptCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__nonptSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__nonptETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__nonptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__nonptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__nonptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HCl__nonptHCL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HCL 2016/1-12/1/0 R xyz kg/m2/s HCl 1007 1 50 -0 EPA16_HNO2__nonptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__nonptKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__nonptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__nonptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__nonptNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__nonptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__nonptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__nonptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__nonptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__nonptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__nonptETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__nonptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__nonptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__nonptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HCl__nonptHCL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HCL 2016/1-12/1/0 R xy kg/m2/s HCl 1007 1 50 +0 EPA16_HNO2__nonptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__nonptKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__nonptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__nonptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__nonptNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__nonptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__nonptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__nonptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__nonptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__nonptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__nonptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__nonptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__nonptPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__nonptPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__nonptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__nonptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__nonptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__nonptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__nonptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__nonptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__nonptpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__nonptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__nonptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__nonptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__nonroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__nonroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__nonroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__nonroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__nonroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__nonptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__nonptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__nonptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__nonroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__nonroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__nonroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__nonroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__nonroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__nonroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__nonroadSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__nonroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__nonroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__nonroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__nonroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__nonroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__nonroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__nonroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__nonroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__nonroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__nonroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__nonroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__nonroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__nonroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__nonroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__nonroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__nonroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__nonroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__nonroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__nonroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__nonroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__nonroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__nonroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__nonroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__nonroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__nonroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__nonroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__nonroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__nonroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__nonroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__nonroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__nonroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__nonroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__nonroadPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__nonroadPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__nonroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__nonroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__nonroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__nonroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__nonroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__nonroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__nonroadspFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__nonroadSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__nonroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__nonroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__npogACET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__npogACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__npogALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__npogALDX $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__npogBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__npogCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__nonroadSULF $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__nonroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__nonroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_nonroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__npogACET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__npogACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__npogALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__npogALDX $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__npogBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__npogCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__npogCO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__npogSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__npogETH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__npogETHA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__npogETOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__npogFORM $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__npogHONO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__npogIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__npogKET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__npogMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__npogNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__npogNO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__npogNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__npogOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__npogPAR $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__npogPNA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__npogPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__npogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__npogETH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__npogETHA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__npogETOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__npogFORM $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__npogHONO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__npogIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__npogKET $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__npogMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__npogNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__npogNO $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__npogNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__npogOLE $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__npogPAR $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__npogPEC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__npogPNA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__npogPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__npogPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__npogPOC $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__npogPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__npogPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__npogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__npogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__npogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__npogPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__npogPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__npogSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__npogpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__npogSULF $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__npogTOL $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__npogXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__npogSULF $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__npogTOL $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__npogXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_np_oilgas_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroadACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroadACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroadALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroadALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroadBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroadCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroadSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroadETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroadETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroadETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroadFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroadHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroadIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroadKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroadMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroadNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroadNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroadNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroadOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroadPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroadPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroadPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroadPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroadPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroadPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroadPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroadPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroadPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroadPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroadSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroadpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_TOLU__onroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_caACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroad_caACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_caALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_caALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_caBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_TOLU__onroadTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroadXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroad_caACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroad_caACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_caALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_caALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_caBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_caCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP_onroad__caSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_caETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_caETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_caETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_caFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_caHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_caIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_caKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_caMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_caNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_caNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_caNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_caOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_caPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_caPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_caPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_caPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_caETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_caETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_caETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_caFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_caHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_caIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_caKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_caMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_caNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_caNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_caNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_caOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_caPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_caPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_caPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_caPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_caPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_caPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_caPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_caPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_caPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_caPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_caSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_caPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_caPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_caSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_capFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_TOLU__onroad_caTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_caXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__railACET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__railACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__railALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__railALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__railBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_TOLU__onroad_caTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_caXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_ca_adj_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__railACET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__railACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__railALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__railALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__railBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__railCO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__railSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__railETH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__railETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__railETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__railFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__railHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__railIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__railKET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__railMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__railNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__railNO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__railNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__railOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__railPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__railPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__railPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__railPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__railETH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__railETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__railETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__railFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__railHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__railIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__railKET $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__railMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__railNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__railNO $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__railNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__railOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__railPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__railPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__railPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__railPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__railPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__railPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__railPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__railPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__railPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__railPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__railSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__railPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__railPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__railSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__railpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__railSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__railTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__railXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__rwcACET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__rwcACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__rwcALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__rwcALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__rwcBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_Cl2__rwcCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xyz kg/m2/s Cl2 1007 1 50 -0 EPA16_CO__rwcCO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__railSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__railTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__railXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rail_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__rwcACET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__rwcACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__rwcALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__rwcALDX $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__rwcBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_Cl2__rwcCL2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CL2 2016/1-12/1/0 R xy kg/m2/s Cl2 1007 1 50 +0 EPA16_CO__rwcCO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__rwcSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__rwcETH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__rwcETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__rwcETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__rwcFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__rwcHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__rwcIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__rwcKET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__rwcMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__rwcNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__rwcNO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__rwcNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__rwcOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__rwcPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__rwcPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__rwcPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__rwcPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__rwcETH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__rwcETHA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__rwcETOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__rwcFORM $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__rwcHONO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__rwcIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__rwcKET $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__rwcMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__rwcNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__rwcNO $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__rwcNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__rwcOLE $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__rwcPAR $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__rwcPEC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__rwcPNA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__rwcPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__rwcPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__rwcPOC $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__rwcPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__rwcPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__rwcPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__rwcPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__rwcSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__rwcPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__rwcPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__rwcSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__rwcpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__rwcSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__rwcTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__rwcXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_SO4__rwcSULF $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__rwcTOL $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__rwcXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_rwc_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 0 EPA16_ACET__c1c2ACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 0 EPA16_ALD2__c1c2ALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 0 EPA16_RCHO__c1c2ALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_cmv_c1c2_12_0pt1degree_3D_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 @@ -784,167 +784,167 @@ Warnings: 1 0 EPA16_SO4__ptnonipmSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 0 EPA16_TOLU__ptnonipmTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 0 EPA16_XYLE__ptnonipmXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_ptnonipm_allinln_0pt1degree_3D_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_canACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_canALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_canALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_canBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_ACET__onroad_canACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_canALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_canALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_canBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_canCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroad_canSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_canETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_canETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_canETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_canFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_canHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_canIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_canKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_canMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_canNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_canNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_canNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_canOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_canPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_canPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_canPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_canPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_canETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_canETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_canETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_canFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_canHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_canIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_canKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_canMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_canNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_canNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_canNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_canOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_canPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_canPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_canPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_canPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_canPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_canPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_canPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_canPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_canPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_canPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_canSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_canPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_canPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_canSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_canpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__onroad_canSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__onroad_canTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_canXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_ACET__onroad_mexACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_MACR__onroad_mexACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xyz kg/m2/s MACR 26/213/254/1007 1 50 -0 EPA16_ALD2__onroad_mexALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__onroad_mexALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__onroad_mexBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__onroad_canSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__onroad_canTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_canXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_can_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_ACET__onroad_mexACET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_MACR__onroad_mexACROLEIN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ACROLEIN 2002-2020/1-12/1/0 RF xy kg/m2/s MACR 26/213/254/1007 1 50 +0 EPA16_ALD2__onroad_mexALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__onroad_mexALDX $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__onroad_mexBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__onroad_mexCO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__onroad_mexSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__onroad_mexETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__onroad_mexETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__onroad_mexETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__onroad_mexFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__onroad_mexHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_mexIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__onroad_mexKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__onroad_mexMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__onroad_mexNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__onroad_mexNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__onroad_mexNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__onroad_mexOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__onroad_mexPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__onroad_mexPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__onroad_mexPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__onroad_mexPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__onroad_mexETH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__onroad_mexETHA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__onroad_mexETOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__onroad_mexFORM $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__onroad_mexHONO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_mexIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__onroad_mexKET $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__onroad_mexMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__onroad_mexNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__onroad_mexNO $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__onroad_mexNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__onroad_mexOLE $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__onroad_mexPAR $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__onroad_mexPEC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__onroad_mexPNA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__onroad_mexPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__onroad_mexPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__onroad_mexPOC $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__onroad_mexPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__onroad_mexPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__onroad_mexPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__onroad_mexPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__onroad_mexSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__onroad_mexPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__onroad_mexPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__onroad_mexSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__onroad_mexpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__onroad_mexSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__onroad_mexTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__onroad_mexXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_BCPI__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othafdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othafdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othafdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_SO4__onroad_mexSULF $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__onroad_mexTOL $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__onroad_mexXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_onroad_mex_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_BCPI__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othafdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othafdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othafdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othafdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othafdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othafdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othafdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__othafdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__otharACET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__otharALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__otharALDX $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__otharBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__othafdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othafdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__otharACET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__otharALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__otharALDX $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__otharBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__otharCO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__otharSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__otharETH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__otharETHA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__otharETOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__otharFORM $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__otharHONO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__otharIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__otharKET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__otharMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__otharNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__otharNO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__otharNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__otharOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__otharPAR $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__otharPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__otharPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__otharPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__otharETH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__otharETHA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__otharETOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__otharFORM $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__otharHONO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__otharIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__otharKET $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__otharMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__otharNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__otharNO $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__otharNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__otharOLE $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__otharPAR $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__otharPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__otharPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__otharPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__otharPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__otharPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__otharPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__otharPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__otharPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__otharPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__otharSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__otharPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__otharPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__otharSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__otharpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__otharSULF $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__otharTOL $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__otharXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 -0 EPA16_BCPI__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othptdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othptdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othptdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_SO4__otharSULF $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__otharTOL $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__otharXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_othar_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_BCPI__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othptdustPEC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othptdustPNA $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othptdustPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othptdustPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othptdustPOC $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othptdustPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othptdustPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_SO4__othptdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_ACET__othptACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xyz kg/m2/s ACET 26/213/254/1007 1 50 -0 EPA16_ALD2__othptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xyz kg/m2/s ALD2 26/213/254/1007 1 50 -0 EPA16_RCHO__othptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xyz kg/m2/s RCHO 26/213/254/1007 1 50 -0 EPA16_BENZ__othptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xyz kg/m2/s BENZ 26/213/254/1007 1 50 -0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xyz kg/m2/s CO 26/211/252/1007 1 50 +0 EPA16_SO4__othptdustPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_othptdust_adj_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_ACET__othptACET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ACET 2002-2020/1-12/1/0 RF xy kg/m2/s ACET 26/213/254/1007 1 50 +0 EPA16_ALD2__othptALD2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALD2 2002-2020/1-12/1/0 RF xy kg/m2/s ALD2 26/213/254/1007 1 50 +0 EPA16_RCHO__othptALDX $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ALDX 2002-2020/1-12/1/0 RF xy kg/m2/s RCHO 26/213/254/1007 1 50 +0 EPA16_BENZ__othptBENZ $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf BENZ 2002-2020/1-12/1/0 RF xy kg/m2/s BENZ 26/213/254/1007 1 50 +0 EPA16_CO__othptCO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf CO 2002-2020/1-12/1/0 RF xy kg/m2/s CO 26/211/252/1007 1 50 0 EPA16_SOAP__othptSOAP - - - - - - SOAP 26/211/252/1007/280 1 50 -0 EPA16_C2H4__othptETH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H4 26/213/254/1007 1 50 -0 EPA16_C2H6__othptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xyz kg/m2/s C2H6 26/217/254/1007 1 50 -0 EPA16_EOH__othptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xyz kg/m2/s EOH 26/213/254/1007 1 50 -0 EPA16_CH2O__othptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xyz kg/m2/s CH2O 26/213/254/1007 1 50 -0 EPA16_HNO2__othptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO2 25/210/251/1007 1 50 -0 EPA16_PRPE__othptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_MEK__othptKET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xyz kg/m2/s MEK 26/214/254/1007 1 50 -0 EPA16_MOH__othptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xyz kg/m2/s MOH 26/213/254/1007 1 50 -0 EPA16_NH3__othptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xyz kg/m2/s NH3 26/213/253/1007 1 50 -0 EPA16_NO__othptNO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xyz kg/m2/s NO 115/25/210/251/1007 1 50 -0 EPA16_NO2__othptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xyz kg/m2/s NO2 25/210/251/1007 1 50 -0 EPA16_PRPE__othptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xyz kg/m2/s PRPE 26/215/254/1007 1 50 -0 EPA16_ALK4__othptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xyz kg/m2/s ALK4 26/212/254/1007 1 50 -0 EPA16_BCPI__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPI 26/221/256/1007/70 1 50 -0 EPA16_BCPO__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xyz kg/m2/s BCPO 26/221/256/1007/71 1 50 -0 EPA16_HNO4__othptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xyz kg/m2/s HNO4 26/213/251/1007 1 50 -0 EPA16_NH4__othptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xyz kg/m2/s NH4 26/218/255/1007 1 50 -0 EPA16_NIT__othptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xyz kg/m2/s NIT 26/218/255/1007 1 50 -0 EPA16_OCPI__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPI 26/222/256/1007/72 1 50 -0 EPA16_OCPO__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xyz kg/m2/s OCPO 26/222/256/1007/73 1 50 +0 EPA16_C2H4__othptETH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETH 2002-2020/1-12/1/0 RF xy kg/m2/s C2H4 26/213/254/1007 1 50 +0 EPA16_C2H6__othptETHA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETHA 2002-2020/1-12/1/0 RF xy kg/m2/s C2H6 26/217/254/1007 1 50 +0 EPA16_EOH__othptETOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf ETOH 2002-2020/1-12/1/0 RF xy kg/m2/s EOH 26/213/254/1007 1 50 +0 EPA16_CH2O__othptFORM $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf FORM 2002-2020/1-12/1/0 RF xy kg/m2/s CH2O 26/213/254/1007 1 50 +0 EPA16_HNO2__othptHONO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf HONO 2002-2020/1-12/1/0 RF xy kg/m2/s HNO2 25/210/251/1007 1 50 +0 EPA16_PRPE__othptIOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf IOLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_MEK__othptKET $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf KET 2002-2020/1-12/1/0 RF xy kg/m2/s MEK 26/214/254/1007 1 50 +0 EPA16_MOH__othptMEOH $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf MEOH 2002-2020/1-12/1/0 RF xy kg/m2/s MOH 26/213/254/1007 1 50 +0 EPA16_NH3__othptNH3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NH3 2002-2020/1-12/1/0 RF xy kg/m2/s NH3 26/213/253/1007 1 50 +0 EPA16_NO__othptNO $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO 2002-2020/1-12/1/0 RF xy kg/m2/s NO 115/25/210/251/1007 1 50 +0 EPA16_NO2__othptNO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf NO2 2002-2020/1-12/1/0 RF xy kg/m2/s NO2 25/210/251/1007 1 50 +0 EPA16_PRPE__othptOLE $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf OLE 2002-2020/1-12/1/0 RF xy kg/m2/s PRPE 26/215/254/1007 1 50 +0 EPA16_ALK4__othptPAR $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PAR 2002-2020/1-12/1/0 RF xy kg/m2/s ALK4 26/212/254/1007 1 50 +0 EPA16_BCPI__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPI 26/221/256/1007/70 1 50 +0 EPA16_BCPO__othptPEC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PEC 2002-2020/1-12/1/0 RF xy kg/m2/s BCPO 26/221/256/1007/71 1 50 +0 EPA16_HNO4__othptPNA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNA 2002-2020/1-12/1/0 RF xy kg/m2/s HNO4 26/213/251/1007 1 50 +0 EPA16_NH4__othptPNH4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNH4 2002-2020/1-12/1/0 RF xy kg/m2/s NH4 26/218/255/1007 1 50 +0 EPA16_NIT__othptPNO3 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PNO3 2002-2020/1-12/1/0 RF xy kg/m2/s NIT 26/218/255/1007 1 50 +0 EPA16_OCPI__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPI 26/222/256/1007/72 1 50 +0 EPA16_OCPO__othptPOC $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf POC 2002-2020/1-12/1/0 RF xy kg/m2/s OCPO 26/222/256/1007/73 1 50 0 EPA16_POG1__othptPOC - - - - - - POG1 26/222/256/1007/74/76 1 50 0 EPA16_POG2__othptPOC - - - - - - POG2 26/222/256/1007/74/77 1 50 -0 EPA16_C3H8__othptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xyz kg/m2/s C3H8 26/216/254/1007 1 50 -0 EPA16_SO4__othptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_SO2__othptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xyz kg/m2/s SO2 26/218/255/1007 1 50 +0 EPA16_C3H8__othptPRPA $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PRPA 2002-2020/1-12/1/0 RF xy kg/m2/s C3H8 26/216/254/1007 1 50 +0 EPA16_SO4__othptPSO4 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf PSO4 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_SO2__othptSO2 $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SO2 2002-2020/1-12/1/0 RF xy kg/m2/s SO2 26/218/255/1007 1 50 0 EPA16_pFe__othptpFe - - - - - - pFe 26/218/255/1007/69 1 50 -0 EPA16_SO4__othptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xyz kg/m2/s SO4 26/219/255/1007 1 50 -0 EPA16_TOLU__othptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xyz kg/m2/s TOLU 26/213/254/1007 1 50 -0 EPA16_XYLE__othptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xyz kg/m2/s XYLE 26/213/254/1007 1 50 +0 EPA16_SO4__othptSULF $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf SULF 2002-2020/1-12/1/0 RF xy kg/m2/s SO4 26/219/255/1007 1 50 +0 EPA16_TOLU__othptTOL $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf TOL 2002-2020/1-12/1/0 RF xy kg/m2/s TOLU 26/213/254/1007 1 50 +0 EPA16_XYLE__othptXYLMN $ROOT/NEI2016/v2021-06/2016fh_16j_emln_othpt_0pt1degree_month_$MM.ncf XYLMN 2002-2020/1-12/1/0 RF xy kg/m2/s XYLE 26/213/254/1007 1 50 )))NEI2016_MONMEAN #============================================================================== From 7e78f41c2d35269f70cfb9a0b6229707b5c31340 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Fri, 22 Mar 2024 10:59:41 -0400 Subject: [PATCH 173/331] Update HISTORY.rc files for carbon and CH4 simulations 1. Deactivate saving SpeciesConcMND_* fields by default. This will reduce output file size. 2. Define the metrics diagnostic in GCHP's HISTORY.rc.carbon. That collection was listed at the top of the file but never defined below. Signed-off-by: Melissa Sulprizio --- .../HISTORY.rc.templates/HISTORY.rc.CH4 | 2 +- .../HISTORY.rc.templates/HISTORY.rc.carbon | 2 +- .../HISTORY.rc.templates/HISTORY.rc.carbon | 47 ++++++++++++------- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 index 9cbe2df53..449fe91b6 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 @@ -101,7 +101,7 @@ COLLECTIONS: 'Restart', SpeciesConc.duration: ${RUNDIR_HIST_TIME_AVG_DUR} SpeciesConc.mode: 'time-averaged' SpeciesConc.fields: 'SpeciesConcVV_?ALL? ', - 'SpeciesConcMND_?ALL? ', + ##'SpeciesConcMND_?ALL? ', :: #============================================================================== # %%%%% THE Budget COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon index db19ba89b..c5e6855b9 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon @@ -101,7 +101,7 @@ COLLECTIONS: 'Restart', SpeciesConc.duration: ${RUNDIR_HIST_TIME_AVG_DUR} SpeciesConc.mode: 'time-averaged' SpeciesConc.fields: 'SpeciesConcVV_?ADV? ', - 'SpeciesConcMND_?ADV? ', + ##'SpeciesConcMND_?ADV? ', :: #============================================================================== # %%%%% THE Budget COLLECTION %%%%% diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon index 690b02fea..67c7abb42 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon @@ -142,6 +142,36 @@ COLLECTIONS: 'Emissions', 'EmisCO2_CO2SurfCorr ', 'GCHPchem', 'EmisCO2_BiomassBurn ', 'GCHPchem', :: +#============================================================================== + Metrics.template: '%y4%m2%d2_%h2%n2z.nc4', + Metrics.frequency: 'End', + Metrics.duration: 'End', + Metrics.mode: 'time-averaged' + Metrics.fields: 'AirMassColumnFull ', + 'CH4emission ', + 'CH4massColumnFull ', + 'CH4massColumnTrop ', + 'LossOHbyCH4columnTrop ', + 'LossOHbyMCFcolumnTrop ', + 'OHwgtByAirMassColumnFull ', +:: +#============================================================================== + SpeciesConc.template: '%y4%m2%d2_%h2%n2z.nc4', + SpeciesConc.format: 'CFIO', + SpeciesConc.timestampStart: .true. + SpeciesConc.monthly: 1 + SpeciesConc.frequency: 010000 + SpeciesConc.duration: 240000 + SpeciesConc.mode: 'time-averaged' + SpeciesConc.fields: 'SpeciesConcVV_CH4', 'GCHPchem', + 'SpeciesConcVV_CO ', 'GCHPchem', + 'SpeciesConcVV_CO2', 'GCHPchem', + 'SpeciesConcVV_OCS', 'GCHPchem', + ##'SpeciesConcMND_CH4', 'GCHPchem', + ##'SpeciesConcMND_CO ', 'GCHPchem', + ##'SpeciesConcMND_CO2', 'GCHPchem', + ##'SpeciesConcMND_OCS', 'GCHPchem', +:: #============================================================================== # Budget defined as species kg/s in the column (full, troposphere, or PBL) # due to a single component (e.g. chemistry); default = ozone only; add more @@ -246,23 +276,6 @@ COLLECTIONS: 'Emissions', 'Met_PFLCU ', 'GCHPchem', 'Met_PFLLSAN ', 'GCHPchem', :: -#============================================================================== - SpeciesConc.template: '%y4%m2%d2_%h2%n2z.nc4', - SpeciesConc.format: 'CFIO', - SpeciesConc.timestampStart: .true. - SpeciesConc.monthly: 1 - SpeciesConc.frequency: 010000 - SpeciesConc.duration: 240000 - SpeciesConc.mode: 'time-averaged' - SpeciesConc.fields: 'SpeciesConcVV_CH4', 'GCHPchem', - 'SpeciesConcVV_CO ', 'GCHPchem', - 'SpeciesConcVV_CO2', 'GCHPchem', - 'SpeciesConcVV_OCS', 'GCHPchem', - 'SpeciesConcMND_CH4', 'GCHPchem', - 'SpeciesConcMND_CO ', 'GCHPchem', - 'SpeciesConcMND_CO2', 'GCHPchem', - 'SpeciesConcMND_OCS', 'GCHPchem', -:: #============================================================================== StateMet.template: '%y4%m2%d2_%h2%n2z.nc4', StateMet.format: 'CFIO', From 4279f837e3e3a9d777108d15b13b056a923b0c72 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 22 Mar 2024 11:00:50 -0400 Subject: [PATCH 174/331] Further updates in Compute_Pbl_Height for clarity & performance In routine Compute_Pbl_Height (in module GeosCore/pbl_mix_mod.F90): - Vectorize the parallel loop with !$OMP COLLAPSE( 2 ) - Add !$OMP SCHEDULE( DYNAMIC, 8 ) for better load balancing - Zero LTOP for each (I,J) column - Updated comments - Fit code into 80 columns for clarity, plus other cosmetic changes - Remove ELSE block (it's not needed, since we exit the inner loop when the IF block is true. This should improve performance. Signed-off-by: Bob Yantosca --- GeosCore/pbl_mix_mod.F90 | 98 ++++++++++++++++++++++++---------------- 1 file changed, 59 insertions(+), 39 deletions(-) diff --git a/GeosCore/pbl_mix_mod.F90 b/GeosCore/pbl_mix_mod.F90 index f519ba9ee..fc00791dc 100644 --- a/GeosCore/pbl_mix_mod.F90 +++ b/GeosCore/pbl_mix_mod.F90 @@ -301,76 +301,96 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) !================================================================= ! Initialize - RC = GC_SUCCESS - Bad_Sum = .FALSE. + RC = GC_SUCCESS + Bad_Sum = .FALSE. State_Met%InPbl = .FALSE. State_Met%F_of_PBL = 0.0_fp State_Met%F_Under_PBLTop = 0.0_fp - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, P, LTOP, Lower_Edge_Height ) + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J, L, LTOP, Lower_Edge_Height )& + !$OMP COLLAPSE( 2 )& + !$OMP SCHEDULE( DYNAMIC, 8 ) DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - ! PBL height above surface, m - State_Met%PBL_Top_m(I,J) = State_Met%PBLH(I,J) - - ! Height of lower edge above surface, m - Lower_Edge_Height = 0.0_fp + ! Initialize variables + State_Met%PBL_Top_m(I,J) = State_Met%PBLH(I,J) ! Pbl ht [m] above sfc + LTOP = 0 ! Level w/ PBL top + Lower_Edge_Height = 0.0_fp ! Lower edge height + ! above sfc [m] ! Find PBL top level (L) and pressure (hPa) - Do L=1, State_Grid%NZ + DO L = 1, State_Grid%NZ - If ( Lower_Edge_Height + State_Met%BXHEIGHT(I,J,L) >= State_Met%PBLH(I,J) ) then + !------------------------------------------------------------------- + ! The PBL top occurs in this level if the condition is true + !------------------------------------------------------------------- + IF ( Lower_Edge_Height + State_Met%BXHEIGHT(I,J,L) >= & + State_Met%PBLH(I,J) ) THEN ! PBL top is in this level LTOP = L ! Pressure at the PBL top altitude, hPa - ! Use pressure lapse equation: p(PBLH) = p(z1) * exp( -(PBLH-z1) / Scale_Height ) - ! p(z1) = State_Met%PEDGE(I,J,L) = Pressure at the lower level edge - ! PBLH - z1 = (State_Met%PBLH(I,J,L) - Lower_Edge_Height) = Height above the lower level edge + ! Use pressure lapse equation: + ! p(PBLH) = p(z1) * exp( -(PBLH-z1) / Scale_Height ) + ! + ! p(z1) = State_Met%PEDGE(I,J,L) = Pressure @ lower level edge + ! + ! PBLH - z1 = (State_Met%PBLH(I,J,L) - Lower_Edge_Height) = + ! Height above the lower level edge + ! ! Scale_Height = Rd * Tv / g0 - State_Met%PBL_Top_hPa(I,J) = State_Met%PEdge(I,J,L) * & - EXP( -(State_Met%PBLH(I,J) - Lower_Edge_Height) * g0 / ( Rd * State_Met%Tv(I,J,L) ) ) + State_Met%PBL_Top_hPa(I,J) = State_Met%PEdge(I,J,L) * & + EXP( -( State_Met%PBLH(I,J) - Lower_Edge_Height ) * & + g0 / ( Rd * State_Met%TV(I,J,L) ) ) ! Fraction of PBL mass in layer L, will be normalized below - State_Met%F_of_PBL(I,J,L) = State_Met%PEdge(I,J,L) - State_Met%PBL_Top_hPa(I,J) + State_Met%F_of_PBL(I,J,L) = State_Met%PEdge(I,J,L) & + - State_Met%PBL_Top_hPa(I,J) ! Fraction of the grid cell mass under PBL top - State_Met%F_Under_PBLTop(I,J,L) = State_Met%F_of_PBL(I,J,L) / & - ( State_Met%PEdge(I,J,L) - State_Met%PEdge(I,J,L+1) ) + State_Met%F_Under_PBLTop(I,J,L) = State_Met%F_of_PBL(I,J,L) / & + ( State_Met%PEdge(I,J,L) - State_Met%PEdge(I,J,L+1) ) - ! Model level of PBL top (integer+fraction). The top is within level CEILING(PBL_Top_L) - State_Met%PBL_Top_L(I,J) = (LTOP-1) + State_Met%F_Under_PBLTop(I,J,L) + ! Model level of PBL top (integer+fraction). + ! The top is within level CEILING(PBL_Top_L) + State_Met%PBL_Top_L(I,J) = ( LTOP - 1 ) & + + State_Met%F_Under_PBLTop(I,J,L) ! PBL Thickness from surface to top, hPa - State_Met%PBL_Thick(I,J) = State_Met%PEdge(I,J,1) - State_Met%PBL_Top_hPa(I,J) + State_Met%PBL_Thick(I,J) = State_Met%PEdge(I,J,1) & + - State_Met%PBL_Top_hPa(I,J) - !! Exit Do loop after we found PBL top level - Exit + ! Exit Do loop after we found PBL top level + EXIT + ENDIF - Else + !------------------------------------------------------------------- + ! The PBL top does not occur in this level. + ! Update variables and go to next level. + !------------------------------------------------------------------- - ! Grid cell fully within PBL - State_Met%inPBL(I,J,L) = .True. + ! Grid cell fully within PBL + State_Met%inPBL(I,J,L) = .True. - ! Fraction of the grid cell mass under PBL top - State_Met%F_Under_PBLTop(I,J,L) = 1.0_fp + ! Fraction of the grid cell mass under PBL top + State_Met%F_Under_PBLTop(I,J,L) = 1.0_fp - ! Fraction of PBL mass in layer L, will be normalized below - State_Met%F_of_PBL(I,J,L) = State_Met%PEdge(I,J,L) - State_Met%PEdge(I,J,L+1) + ! Fraction of PBL mass in layer L, will be normalized below + State_Met%F_of_PBL(I,J,L) = State_Met%PEdge(I,J,L) & + - State_Met%PEdge(I,J,L+1) - ! Update lower edge height, m - Lower_Edge_Height = Lower_Edge_Height + State_Met%BXHeight(I,J,L) + ! Update lower edge height, m + Lower_Edge_Height = Lower_Edge_Height + State_Met%BXHeight(I,J,L) - EndIf - - EndDo + ENDDO ! Fraction of PBL mass in layer L, now normalize to sum of 1 - State_Met%F_of_PBL(I,J,:) = State_Met%F_of_PBL(I,J,:) / State_Met%PBL_Thick(I,J) + State_Met%F_of_PBL(I,J,:) = State_Met%F_of_PBL(I,J,:) & + / State_Met%PBL_Thick(I,J) ! Error check IF ( ABS( SUM( State_Met%F_OF_PBL(I,J,:) ) - 1.0_fp) > 1.0e-3_fp) THEN @@ -392,7 +412,7 @@ SUBROUTINE Compute_Pbl_Height( Input_Opt, State_Grid, State_Met, RC ) ENDIF ! Model level where PBL top occurs - State_Met%PBL_MAX_L = MAXVAL( ceiling( State_Met%PBL_Top_L ) ) + State_Met%PBL_MAX_L = MAXVAL( CEILING( State_Met%PBL_Top_L ) ) END SUBROUTINE Compute_Pbl_Height !EOC From 85ccfb9e6ebffb573ffdf0e1cc37d5b66f9a0ae9 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 22 Mar 2024 14:41:58 -0400 Subject: [PATCH 175/331] Don't run GCClassic compile-only int test jobs in the background test/integration/GCClassic.sh - Remove the "&" after the command to run compile-only integration tests. This will facilitate running compile-only tests via GitHub actions. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + test/integration/GCClassic/integrationTest.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6e5ad07a..9cdadfecd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Refactor integration and parallel test scripts to reduce the number of input arguments - Copy utility scripts that allow you to resubmit failed to integration and parallel test root directories - Update GCHP operational example environment files for Harvard Cannon +- Do not run GCClassic integration test compile jobs in the background ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/test/integration/GCClassic/integrationTest.sh b/test/integration/GCClassic/integrationTest.sh index 9fbea8255..a7772ad7f 100755 --- a/test/integration/GCClassic/integrationTest.sh +++ b/test/integration/GCClassic/integrationTest.sh @@ -203,7 +203,7 @@ if [[ "X${testsToRun}" == "XCOMPILE" ]]; then #------------------------------------------------------------------------- echo "" echo "Compiliation tests are running..." - ${scriptsDir}/integrationTestCompile.sh & + ${scriptsDir}/integrationTestCompile.sh elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCANNON" ]]; then From 239d8af2ef0cddcdf149db05eb517585e3bfb061 Mon Sep 17 00:00:00 2001 From: Christoph Keller Date: Fri, 22 Mar 2024 16:26:41 -0400 Subject: [PATCH 176/331] Add example config file for tagged NOx feature --- run/GEOS/GEOSChem_TaggedNOx.rc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 run/GEOS/GEOSChem_TaggedNOx.rc diff --git a/run/GEOS/GEOSChem_TaggedNOx.rc b/run/GEOS/GEOSChem_TaggedNOx.rc new file mode 100644 index 000000000..d30988847 --- /dev/null +++ b/run/GEOS/GEOSChem_TaggedNOx.rc @@ -0,0 +1,21 @@ +# Resource file for NOx Tagged tracers. Used by geos_TaggedSpecies.F90 +# Added by Pam Wales on Sept 18, 2023 +# Modified for GCv14 by Christph Keller on Mar 21, 2024 + +# The number of NO(x) tagged tracers to include. +# Will be included as NOTAG1, NOTAG2 and NO2TAG1, NO2TAG2, etc. +# If set to 0 (default), no tagged NOx tracers will be used +# If set to higher than 0, the corresponding number of tagged +# NOx tracer need to be present in geoschem_config.yaml and +# species_database.yaml. +nchem_tag: 0 + +# If partner_tag is true (> 0), scale NOx as NO + NO2 +partner_tag: 1 + +# tag names (currently not used - names are hardcoded) +tag_names: NOTAG1 + +# partner names (currently not used - names are hardcoded) +partner_names: NO2TAG1 + From cb778507801eec25ed7f2df9d05f32a77260f09c Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 14 Mar 2024 13:44:19 -0400 Subject: [PATCH 177/331] Add new GCHP history collections for exports in non-GEOS-Chem grid comps Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 | 43 +++++++++++++++++++ .../HISTORY.rc.TransportTracers | 43 +++++++++++++++++++ .../HISTORY.rc.templates/HISTORY.rc.fullchem | 43 +++++++++++++++++++ run/GCHP/setCommonRunSettings.sh.template | 3 ++ 5 files changed, 133 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cdadfecd..fbefbc50e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Field `State_Diag%Obspack_CharArray` as a 2-D character array - Added util folder in run/CESM to include .cdl file used to generate CESM NetCDF input file for deposition - Add GCClassic operational example environment files for Harvard Cannon +- Added new GCHP history collections for advection diagnostics ### Changed - Updated Harvard Cannon operational run scripts to use `huce_cascade` instead of `huce_intel`; also added `sapphire` diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 index 59d4271a2..e2d06b54e 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 @@ -55,6 +55,9 @@ GRID_LABELS: #PE24x144-CF COLLECTIONS: 'Emissions', 'Budget', 'CloudConvFlux', + #'FV3Dynamics', + #'GCHPctmEnvLevCenter', + #'GCHPctmEnvLevEdge', 'LevelEdgeDiags', 'SpeciesConc_avg', 'SpeciesConc_inst', @@ -184,6 +187,46 @@ COLLECTIONS: 'Emissions', CloudConvFlux.fields: 'CloudConvFlux_CO2 ', 'GCHPchem', 'CloudConvFlux_PassiveTracer ', 'GCHPchem', :: +#============================================================================== + FV3Dynamics.template: '%y4%m2%d2_%h2%n2z.nc4', + FV3Dynamics.format: 'CFIO', + FV3Dynamics.timestampStart: .true. + FV3Dynamics.monthly: 1 + FV3Dynamics.frequency: 010000 + FV3Dynamics.duration: 010000 + FV3Dynamics.mode: 'time-averaged' + FV3Dynamics.fields: 'PLE ', 'DYNAMICS', + 'DryPLE ', 'DYNAMICS', + 'PLEadv ', 'DYNAMICS', +:: +#============================================================================== + GCHPctmEnvLevEdge.template: '%y4%m2%d2_%h2%n2z.nc4', + GCHPctmEnvLevEdge.format: 'CFIO', + GCHPctmEnvLevEdge.timestampStart: .true. + GCHPctmEnvLevEdge.monthly: 1 + GCHPctmEnvLevEdge.frequency: 010000 + GCHPctmEnvLevEdge.duration: 010000 + GCHPctmEnvLevEdge.mode: 'time-averaged' + GCHPctmEnvLevEdge.fields: 'UpwardsMassFlux ', 'GCHPctmEnv', + 'PLE0 ', 'GCHPctmEnv', + 'PLE1 ', 'GCHPctmEnv', + 'DryPLE0 ', 'GCHPctmEnv', + 'DryPLE1 ', 'GCHPctmEnv', +:: +#============================================================================== + GCHPctmEnvLevCenter.template: '%y4%m2%d2_%h2%n2z.nc4', + GCHPctmEnvLevCenter.format: 'CFIO', + GCHPctmEnvLevCenter.timestampStart: .true. + GCHPctmEnvLevCenter.monthly: 1 + GCHPctmEnvLevCenter.frequency: 010000 + GCHPctmEnvLevCenter.duration: 010000 + GCHPctmEnvLevCenter.mode: 'time-averaged' + GCHPctmEnvLevCenter.fields: 'SPHU0 ', 'GCHPctmEnv', + 'CX ', 'GCHPctmEnv', + 'CY ', 'GCHPctmEnv', + 'MFX ', 'GCHPctmEnv', + 'MFY ', 'GCHPctmEnv', +:: #============================================================================== LevelEdgeDiags.template: '%y4%m2%d2_%h2%n2z.nc4', LevelEdgeDiags.format: 'CFIO', diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers index a72db0d26..e37263466 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers @@ -58,6 +58,9 @@ COLLECTIONS: 'Emissions', #'Budget', 'CloudConvFlux', 'DryDep', + #'FV3Dynamics', + #'GCHPctmEnvLevCenter', + #'GCHPctmEnvLevEdge', 'LevelEdgeDiags', 'RadioNuclide', 'SpeciesConc', @@ -521,6 +524,46 @@ COLLECTIONS: 'Emissions', 'DryDepVel_Be10 ', 'GCHPchem', 'DryDepVel_Be10s ', 'GCHPchem', :: +#============================================================================== + FV3Dynamics.template: '%y4%m2%d2_%h2%n2z.nc4', + FV3Dynamics.format: 'CFIO', + FV3Dynamics.timestampStart: .true. + FV3Dynamics.monthly: 1 + FV3Dynamics.frequency: 010000 + FV3Dynamics.duration: 010000 + FV3Dynamics.mode: 'time-averaged' + FV3Dynamics.fields: 'PLE ', 'DYNAMICS', + 'DryPLE ', 'DYNAMICS', + 'PLEadv ', 'DYNAMICS', +:: +#============================================================================== + GCHPctmEnvLevEdge.template: '%y4%m2%d2_%h2%n2z.nc4', + GCHPctmEnvLevEdge.format: 'CFIO', + GCHPctmEnvLevEdge.timestampStart: .true. + GCHPctmEnvLevEdge.monthly: 1 + GCHPctmEnvLevEdge.frequency: 010000 + GCHPctmEnvLevEdge.duration: 010000 + GCHPctmEnvLevEdge.mode: 'time-averaged' + GCHPctmEnvLevEdge.fields: 'UpwardsMassFlux ', 'GCHPctmEnv', + 'PLE0 ', 'GCHPctmEnv', + 'PLE1 ', 'GCHPctmEnv', + 'DryPLE0 ', 'GCHPctmEnv', + 'DryPLE1 ', 'GCHPctmEnv', +:: +#============================================================================== + GCHPctmEnvLevCenter.template: '%y4%m2%d2_%h2%n2z.nc4', + GCHPctmEnvLevCenter.format: 'CFIO', + GCHPctmEnvLevCenter.timestampStart: .true. + GCHPctmEnvLevCenter.monthly: 1 + GCHPctmEnvLevCenter.frequency: 010000 + GCHPctmEnvLevCenter.duration: 010000 + GCHPctmEnvLevCenter.mode: 'time-averaged' + GCHPctmEnvLevCenter.fields: 'SPHU0 ', 'GCHPctmEnv', + 'CX ', 'GCHPctmEnv', + 'CY ', 'GCHPctmEnv', + 'MFX ', 'GCHPctmEnv', + 'MFY ', 'GCHPctmEnv', +:: #============================================================================== LevelEdgeDiags.template: '%y4%m2%d2_%h2%n2z.nc4', LevelEdgeDiags.format: 'CFIO', diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem index 35b301fe3..a35274364 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem @@ -67,6 +67,9 @@ COLLECTIONS: @#'DefaultCollection', @#'ConcAfterChem', @#'DryDep', #'Emissions', + #'FV3Dynamics', + #'GCHPctmEnvLevCenter', + #'GCHPctmEnvLevEdge', #'JValues', #'Metrics', @#'KppDiags', @@ -567,6 +570,46 @@ COLLECTIONS: @#'DefaultCollection', #'InvIODINE_HOI ', 'GCHPchem', #'InvIODINE_I2 ', 'GCHPchem', :: +#============================================================================== + FV3Dynamics.template: '%y4%m2%d2_%h2%n2z.nc4', + FV3Dynamics.format: 'CFIO', + FV3Dynamics.timestampStart: .true. + FV3Dynamics.monthly: 1 + FV3Dynamics.frequency: 010000 + FV3Dynamics.duration: 010000 + FV3Dynamics.mode: 'time-averaged' + FV3Dynamics.fields: 'PLE ', 'DYNAMICS', + 'DryPLE ', 'DYNAMICS', + 'PLEadv ', 'DYNAMICS', +:: +#============================================================================== + GCHPctmEnvLevEdge.template: '%y4%m2%d2_%h2%n2z.nc4', + GCHPctmEnvLevEdge.format: 'CFIO', + GCHPctmEnvLevEdge.timestampStart: .true. + GCHPctmEnvLevEdge.monthly: 1 + GCHPctmEnvLevEdge.frequency: 010000 + GCHPctmEnvLevEdge.duration: 010000 + GCHPctmEnvLevEdge.mode: 'time-averaged' + GCHPctmEnvLevEdge.fields: 'UpwardsMassFlux ', 'GCHPctmEnv', + 'PLE0 ', 'GCHPctmEnv', + 'PLE1 ', 'GCHPctmEnv', + 'DryPLE0 ', 'GCHPctmEnv', + 'DryPLE1 ', 'GCHPctmEnv', +:: +#============================================================================== + GCHPctmEnvLevCenter.template: '%y4%m2%d2_%h2%n2z.nc4', + GCHPctmEnvLevCenter.format: 'CFIO', + GCHPctmEnvLevCenter.timestampStart: .true. + GCHPctmEnvLevCenter.monthly: 1 + GCHPctmEnvLevCenter.frequency: 010000 + GCHPctmEnvLevCenter.duration: 010000 + GCHPctmEnvLevCenter.mode: 'time-averaged' + GCHPctmEnvLevCenter.fields: 'SPHU0 ', 'GCHPctmEnv', + 'CX ', 'GCHPctmEnv', + 'CY ', 'GCHPctmEnv', + 'MFX ', 'GCHPctmEnv', + 'MFY ', 'GCHPctmEnv', +:: #============================================================================== # %%%%% THE AerosolMass COLLECTION %%%%% # diff --git a/run/GCHP/setCommonRunSettings.sh.template b/run/GCHP/setCommonRunSettings.sh.template index f8ee47271..011a952fa 100644 --- a/run/GCHP/setCommonRunSettings.sh.template +++ b/run/GCHP/setCommonRunSettings.sh.template @@ -81,6 +81,9 @@ Diag_Collections=(SpeciesConc \ DryDep \ DefaultCollection \ Emissions \ + FV3Dynamics \ + GCHPctmEnvLevCenter \ + GCHPctmEnvLevEdge \ JValues \ KppDiags \ KppARDiags \ From 96eabd7ac9755b6ab7b156c5635d883a4c3ca656 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Tue, 26 Mar 2024 11:30:20 -0400 Subject: [PATCH 178/331] Activate carbon and CH4 integration tests for GCHP Run directories for carbon and CH4 simulations are now created for GCHP integration tests. Additionally, minor changes have been made to script integrationTestCreate.sh for both GCClassic and GCHP to make the two versions consistent. Finally, GCHP's createRunDir.sh script has been updated to name run directories in a consistent manner as in GCClassic. That is, we now name GCHP run directories with gchp_met_sim-name (rather than gchp_sim-name_met. This way, sim-extra-option strings are appended immediately after sim-name strings. Signed-off-by: Melissa Sulprizio --- run/GCHP/createRunDir.sh | 4 ++-- test/integration/GCClassic/integrationTestCreate.sh | 8 +++----- test/integration/GCHP/integrationTestCreate.sh | 11 ++++++----- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/run/GCHP/createRunDir.sh b/run/GCHP/createRunDir.sh index 11c666db3..d3d66fe95 100755 --- a/run/GCHP/createRunDir.sh +++ b/run/GCHP/createRunDir.sh @@ -16,7 +16,7 @@ # !REMARKS: # If optional run directory name argument is not passed then the user # will be prompted to enter a name interactively, or choose to use the -# default name gchp_{grid_display}_{met}_{sim_name}_{sim_extra_option}. +# default name gchp_{met}_{sim_name}_{sim_extra_option}. # # !REVISION HISTORY: # Initial version: E. Lundgren,10/5/2018 @@ -557,7 +557,7 @@ if [ -z "$1" ]; then printf "NOTE: This will be a subfolder of the path you entered above.${thinline}" read -e -p "${USER_PROMPT}" rundir_name if [[ -z "${rundir_name}" ]]; then - rundir_name=gchp_${sim_name}_${met} + rundir_name=gchp_${met}_${sim_name} if [[ "${sim_extra_option}" != "none" ]]; then rundir_name=${rundir_name}_${sim_extra_option} fi diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index 39f168d4f..b8b2fe4e1 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -12,8 +12,7 @@ #\\ #\\ # !CALLING SEQUENCE: -# ./integrationTestCreate.sh /path/to/int/test/root /path/to/env-file -# ./integrationTestCreate.sh /path/to/int/test/root /path/to/env-file quick=1 +# ./integrationTestCreate.sh /path/to/int/test/root /path/to/env-file [yes|no] #EOP #------------------------------------------------------------------------------ #BOC @@ -49,7 +48,7 @@ quick="${3}" # Current directory thisDir=$(pwd -P) -cd "${thisDir}" +cd ${thisDir} # GCClassic superproject directory (absolute paths) cd ../../../../../ @@ -172,8 +171,7 @@ create_rundir "2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" create_rundir "12\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 carbon CH4 only -dir="gc_4x5_merra2_carbon_CH4only" -create_rundir "12\n2\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" +create_rundir "12\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 fullchem create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index 39fab9412..b1fdfcd4b 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -12,8 +12,7 @@ #\\ #\\ # !CALLING SEQUENCE: -# ./integrationTestCreate.sh /path/to/int/test/root /path/to/env-file -# ./integrationTestCreate.sh /path/to/int/test/root /path/to/env-file quick=1 +# ./integrationTestCreate.sh /path/to/int/test/root /path/to/env-file [yes|no] #EOP #------------------------------------------------------------------------------ #BOC @@ -35,7 +34,7 @@ if [[ "x${envFile}" == "x" ]]; then echo "ERROR: The enviroment file (w/ module loads) has not been specified!" exit 1 fi -if [[ ! -f "${envFile}" ]]; then +if [[ ! -f ${envFile} ]]; then echo "ERROR: The enviroment file is not a valid file!" exit 1 fi @@ -165,9 +164,11 @@ create_rundir "2\n1\n${rundirsDir}\n\nn\n" "${log}" # c24 merra2 fullchem tagO3 create_rundir "4\n1\n${rundirsDir}\n\nn\n" "${log}" -# Placeholder for carbon simulation # c24 merra2 carbon -#create_rundir "12\n1\n${rundirsDir}\n\nn\n" "${log}" +create_rundir "5\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + +# c24 merra2 carbon CH4 only +create_rundir "5\n2\n1\n${rundirsDir}\n\nn\n" "${log}" # DEBUG: Exit after creating a couple of rundirs if $quick is "yes" if [[ "x${quick}" == "xyes" ]]; then From d7831eee3e3e57b2073b635872cc110ab99ceadd Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Wed, 27 Mar 2024 08:35:47 -0400 Subject: [PATCH 179/331] Update integration tests to pass quick option to compile scripts The quick option included in the integration tests generates and runs a subset of simulations. However, with this option activated, executables were still being created for all possible compile options. We now pass the quick argument to integrationTestCompile.sh so that only the necessary executables are built. This will further speed up the quick integration tests. Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 1 + .../GCClassic/integrationTestCompile.sh | 18 +++++++++++++++-- .../GCClassic/integrationTestCreate.sh | 2 +- test/integration/GCHP/integrationTest.sh | 2 +- .../GCHP/integrationTestCompile.sh | 20 +++++++++++++++++-- .../integration/GCHP/integrationTestCreate.sh | 2 +- 6 files changed, 38 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cdadfecd..4c7ed7a29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Copy utility scripts that allow you to resubmit failed to integration and parallel test root directories - Update GCHP operational example environment files for Harvard Cannon - Do not run GCClassic integration test compile jobs in the background +- Updated integration tests to pass quick option to compile scripts ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/test/integration/GCClassic/integrationTestCompile.sh b/test/integration/GCClassic/integrationTestCompile.sh index 97edbf507..a49976960 100755 --- a/test/integration/GCClassic/integrationTestCompile.sh +++ b/test/integration/GCClassic/integrationTestCompile.sh @@ -32,6 +32,13 @@ #------------------------------------------------------------------------------ #BOC +#============================================================================= +# Arguments +#============================================================================= + +# Run a short integration test? +quick="${1}" + #============================================================================ # Global variable and function definitions #============================================================================ @@ -104,8 +111,15 @@ fi # Sanity check: Max out the OMP_STACKSIZE if it is not set [[ "X${OMP_STACKSIZE}" == "X" ]] && export OMP_STACKSIZE=500m +# Only create necessary executables if $quick is "yes" +if [[ "x${quick}" == "xyes" ]]; then + EXE_LIST=("default" "carbon") +else + EXE_LIST=$EXE_GCC_BUILD_LIST +fi + # Count the number of tests to be done -numTests=${#EXE_GCC_BUILD_LIST[@]} +numTests=${#EXE_LIST[@]} #============================================================================ # Initialize results logfile @@ -151,7 +165,7 @@ let failed=0 let remain=${numTests} # Loop over build directories -for dir in ${EXE_GCC_BUILD_LIST[@]}; do +for dir in ${EXE_LIST[@]}; do # Define build directory thisBuildDir="${buildDir}/${dir}" diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index 8c27b64de..8677dafea 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -215,7 +215,7 @@ if [[ "X${testsToRun}" == "XALL" ]]; then # 4x5 merra2 fullchem create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" - # DEBUG: Exit after creating a couple of rundirsDirs if $quick is "yes" + # Exit after creating a couple of rundirsDirs if $quick is "yes" if [[ "X${quick}" == "XYES" ]]; then cd ${thisDir} exit 0 diff --git a/test/integration/GCHP/integrationTest.sh b/test/integration/GCHP/integrationTest.sh index 5a740d033..3de8da09e 100755 --- a/test/integration/GCHP/integrationTest.sh +++ b/test/integration/GCHP/integrationTest.sh @@ -236,7 +236,7 @@ elif [[ "x${testsToRun}" == "xALL" && "x${site}" == "xCANNON" ]]; then sed_ie "${sedPartitionCmd}" "${scriptsDir}/integrationTestExecute.sh" # Submit compilation tests script - output=$(sbatch ${scriptsDir}/integrationTestCompile.sh) + output=$(sbatch ${scriptsDir}/integrationTestCompile.sh ${quick}) output=($output) cmpId=${output[3]} diff --git a/test/integration/GCHP/integrationTestCompile.sh b/test/integration/GCHP/integrationTestCompile.sh index 6efc716f7..41ed1471a 100755 --- a/test/integration/GCHP/integrationTestCompile.sh +++ b/test/integration/GCHP/integrationTestCompile.sh @@ -32,6 +32,13 @@ #------------------------------------------------------------------------------ #BOC +#============================================================================= +# Arguments +#============================================================================= + +# Run a short integration test? +quick="${1}" + #============================================================================ # Global variable and function definitions #============================================================================ @@ -106,8 +113,15 @@ fi # Sanity check: Max out the OMP_STACKSIZE if it is not set [[ "x${OMP_STACKSIZE}" == "x" ]] && export OMP_STACKSIZE=500m +# Only create necessary executables if $quick is "yes" +if [[ "x${quick}" == "xyes" ]]; then + EXE_LIST=("default" "carbon") +else + EXE_LIST=$EXE_GCHP_BUILD_LIST +fi + # Count the number of tests to be done -numTests=${#EXE_GCHP_BUILD_LIST[@]} +numTests=${#EXE_LIST[@]} #============================================================================ # Initialize results logfile @@ -151,8 +165,10 @@ let passed=0 let failed=0 let remain=${numTests} + + # Loop over build directories -for dir in ${EXE_GCHP_BUILD_LIST[@]}; do +for dir in ${EXE_LIST[@]}; do # Define build directory thisBuildDir="${buildDir}/${dir}" diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index 8ad2abd3a..a8964a1f4 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -206,7 +206,7 @@ if [[ "X${testsToRun}" == "XALL" ]]; then # c24 merra2 carbon #create_rundir "12\n1\n${rundirsDir}\n\nn\n" "${log}" - # DEBUG: Exit after creating a couple of rundirs if $quick is "yes" + # Exit after creating a couple of rundirs if $quick is "yes" if [[ "X${quick}" == "XYES" ]]; then cd ${thisDir} exit 0 From d2195c90a1c6c8085f07d829651df4d1013996bd Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 27 Mar 2024 11:16:59 -0400 Subject: [PATCH 180/331] Bug fix: test if quick is in uppercase in int test compile scripts test/integration/GCClassic/integrationTest.sh test/integration/GCHP/integrationTest.sh - Pass "${quick}" (in quotes) to integrationTestCompile.sh everywhere. The quotes will make sure the argument gets passed as a string. test/integration/GCClassic/integrationTestCompile.sh test/integration/GCHP/integration/TestCompile.sh - Test if $quick is equal to "YES", not "yes". Signed-off-by: Bob Yantosca --- test/integration/GCClassic/integrationTest.sh | 6 +++--- test/integration/GCClassic/integrationTestCompile.sh | 2 +- test/integration/GCHP/integrationTest.sh | 6 +++--- test/integration/GCHP/integrationTestCompile.sh | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/integration/GCClassic/integrationTest.sh b/test/integration/GCClassic/integrationTest.sh index a7772ad7f..bc276d911 100755 --- a/test/integration/GCClassic/integrationTest.sh +++ b/test/integration/GCClassic/integrationTest.sh @@ -203,7 +203,7 @@ if [[ "X${testsToRun}" == "XCOMPILE" ]]; then #------------------------------------------------------------------------- echo "" echo "Compiliation tests are running..." - ${scriptsDir}/integrationTestCompile.sh + ${scriptsDir}/integrationTestCompile.sh "${quick}" elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCANNON" ]]; then @@ -238,7 +238,7 @@ elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCANNON" ]]; then sed_ie "${sedPartitionCmd}" "${scriptsDir}/integrationTestExecute.sh" # Submit compilation tests script - output=$(sbatch ${scriptsDir}/integrationTestCompile.sh) + output=$(sbatch ${scriptsDir}/integrationTestCompile.sh "${quick}") output=($output) cmpId=${output[3]} @@ -278,7 +278,7 @@ elif [[ "X${testsToRun}" == "XALL" && "X${site}" == "XCOMPUTE1" ]]; then sed_ie "${sedPartitionCmd}" "${scriptsDir}/integrationTestExecute.sh" # Submit compilation tests script - output=$(bsub ${scriptsDir}/integrationTestCompile.sh) + output=$(bsub ${scriptsDir}/integrationTestCompile.sh "${quick}") output=($output) cmpId=${output[1]} cmpId=${cmpId/<} diff --git a/test/integration/GCClassic/integrationTestCompile.sh b/test/integration/GCClassic/integrationTestCompile.sh index a49976960..7747b33a4 100755 --- a/test/integration/GCClassic/integrationTestCompile.sh +++ b/test/integration/GCClassic/integrationTestCompile.sh @@ -112,7 +112,7 @@ fi [[ "X${OMP_STACKSIZE}" == "X" ]] && export OMP_STACKSIZE=500m # Only create necessary executables if $quick is "yes" -if [[ "x${quick}" == "xyes" ]]; then +if [[ "X${quick}" == "XYES" ]]; then EXE_LIST=("default" "carbon") else EXE_LIST=$EXE_GCC_BUILD_LIST diff --git a/test/integration/GCHP/integrationTest.sh b/test/integration/GCHP/integrationTest.sh index 3de8da09e..f19666be5 100755 --- a/test/integration/GCHP/integrationTest.sh +++ b/test/integration/GCHP/integrationTest.sh @@ -201,7 +201,7 @@ if [[ "x${testsToRun}" == "xCOMPILE" ]]; then #------------------------------------------------------------------------- echo "" echo "Compiliation tests are running..." - ${scriptsDir}/integrationTestCompile.sh & + ${scriptsDir}/integrationTestCompile.sh "${quick}" elif [[ "x${testsToRun}" == "xALL" && "x${site}" == "xCANNON" ]]; then @@ -236,7 +236,7 @@ elif [[ "x${testsToRun}" == "xALL" && "x${site}" == "xCANNON" ]]; then sed_ie "${sedPartitionCmd}" "${scriptsDir}/integrationTestExecute.sh" # Submit compilation tests script - output=$(sbatch ${scriptsDir}/integrationTestCompile.sh ${quick}) + output=$(sbatch ${scriptsDir}/integrationTestCompile.sh "${quick}") output=($output) cmpId=${output[3]} @@ -276,7 +276,7 @@ elif [[ "x${testsToRun}" == "xALL" && "x${site}" == "xCOMPUTE1" ]]; then sed_ie "${sedPartitionCmd}" "${scriptsDir}/integrationTestExecute.sh" # Submit compilation tests script - output=$(bsub ${scriptsDir}/integrationTestCompile.sh) + output=$(bsub ${scriptsDir}/integrationTestCompile.sh "${quick}") output=($output) cmpId=${output[1]} cmpId=${cmpId/<} diff --git a/test/integration/GCHP/integrationTestCompile.sh b/test/integration/GCHP/integrationTestCompile.sh index 41ed1471a..94cd0521e 100755 --- a/test/integration/GCHP/integrationTestCompile.sh +++ b/test/integration/GCHP/integrationTestCompile.sh @@ -114,7 +114,7 @@ fi [[ "x${OMP_STACKSIZE}" == "x" ]] && export OMP_STACKSIZE=500m # Only create necessary executables if $quick is "yes" -if [[ "x${quick}" == "xyes" ]]; then +if [[ "X${quick}" == "XYES" ]]; then EXE_LIST=("default" "carbon") else EXE_LIST=$EXE_GCHP_BUILD_LIST From ef182052498e4cf3a84f5fc8ac8b547ccbb6be02 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 27 Mar 2024 11:46:35 -0400 Subject: [PATCH 181/331] Now use proper bash array copy statement for EXE_LIST test/integration/GCClassic/integrationTestCompile.sh - Use proper array copy: EXE_LIST=("${EXE_GCC_BUILD_LIST[@]}") test/integration/GCHP/integrationTestCompile.sh - Use proper array copy: EXE_LIST=("${EXE_GCHP_BUILD_LIST[@]}") Signed-off-by: Bob Yantosca --- test/integration/GCClassic/integrationTestCompile.sh | 2 +- test/integration/GCHP/integrationTestCompile.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/integration/GCClassic/integrationTestCompile.sh b/test/integration/GCClassic/integrationTestCompile.sh index 7747b33a4..5fa7ca434 100755 --- a/test/integration/GCClassic/integrationTestCompile.sh +++ b/test/integration/GCClassic/integrationTestCompile.sh @@ -115,7 +115,7 @@ fi if [[ "X${quick}" == "XYES" ]]; then EXE_LIST=("default" "carbon") else - EXE_LIST=$EXE_GCC_BUILD_LIST + EXE_LIST=("${EXE_GCC_BUILD_LIST[@]}") fi # Count the number of tests to be done diff --git a/test/integration/GCHP/integrationTestCompile.sh b/test/integration/GCHP/integrationTestCompile.sh index 94cd0521e..b0bf58406 100755 --- a/test/integration/GCHP/integrationTestCompile.sh +++ b/test/integration/GCHP/integrationTestCompile.sh @@ -117,7 +117,7 @@ fi if [[ "X${quick}" == "XYES" ]]; then EXE_LIST=("default" "carbon") else - EXE_LIST=$EXE_GCHP_BUILD_LIST + EXE_LIST=("${EXE_GCHP_BUILD_LIST[@]}") fi # Count the number of tests to be done From 75a886bb47b7500522570c09df352f44c2d46c37 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Wed, 27 Mar 2024 13:44:38 -0400 Subject: [PATCH 182/331] Fix typo in CHANGELOG.md for CH4 updates Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b3cc0661..dd6ccf251 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,7 +32,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Copy utility scripts that allow you to resubmit failed to integration and parallel test root directories - Update GCHP operational example environment files for Harvard Cannon - Do not run GCClassic integration test compile jobs in the background -- Removed emissions handling from `global_ch4_mod.F90` and `carbon_mod.F90` and instead apply scale factors to emissions directly in `HEMCO_Config.rc` +- Removed emissions handling from `global_ch4_mod.F90` and `carbon_gases_mod.F90` and instead apply scale factors to emissions directly in `HEMCO_Config.rc` - Loop over advected species CH4 chemistry routines to allow for multiple CH4 tracers within analytical inversion framework ### Fixed From 56e3bb61b01c168a7cc31e1e2b5d8e7b5efeb7ac Mon Sep 17 00:00:00 2001 From: Christopher Holmes Date: Wed, 27 Mar 2024 15:43:56 -0400 Subject: [PATCH 183/331] Fix geopotential height units in netCDF file The units of geopotential height are 'm', as updated here. Signed-off-by: Christopher Holmes --- Headers/state_met_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Headers/state_met_mod.F90 b/Headers/state_met_mod.F90 index 034ec318d..467cfb922 100644 --- a/Headers/state_met_mod.F90 +++ b/Headers/state_met_mod.F90 @@ -4709,7 +4709,7 @@ SUBROUTINE Get_Metadata_State_Met( am_I_Root, metadataID, Found, RC, & CASE ( 'PHIS' ) IF ( isDesc ) Desc = 'Surface geopotential height' - IF ( isUnits ) Units = 'm2 s-1' + IF ( isUnits ) Units = 'm' IF ( isRank ) Rank = 2 CASE ( 'PRECANV' ) From 200a564442699f04b245370faa272097cf88ea15 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 27 Mar 2024 16:22:30 -0400 Subject: [PATCH 184/331] Updated changelog for PR #2224 CHANGELOG.md - Added note about fixing incorrect metadata for State_Met%PHIS Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c7ed7a29..f4bf6c922 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Fixed format issue in input_mod RRTMG print statement caught by some compilers - Fixed GEOS-IT SLP and TROPP scaling in pre-processed files used in GCHP - Fixed reading of NEI emissions through HEMCO +- Fixed incorrect units metadata for `State_Met%PHIS` ### Removed - Removed MPI broadcasts in CESM-only photolysis code; will read on all cores From c8e856980ae5c0af3780a272491e8703f4131cd8 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 27 Mar 2024 16:44:37 -0400 Subject: [PATCH 185/331] Add new GCHP diagnostic collection to HISTORY.rc of carbon simulation Signed-off-by: Lizzie Lundgren --- .../HISTORY.rc.templates/HISTORY.rc.carbon | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon index 9e93bbef0..e7759f8a4 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon @@ -59,6 +59,9 @@ COLLECTIONS: 'Emissions', #'Carbon', #'CloudConvFlux', #'ConcAfterChem', + #'FV3Dynamics', + #'GCHPctmEnvLevCenter', + #'GCHPctmEnvLevEdge', #'LevelEdgeDiags', 'StateMet', :: @@ -252,6 +255,46 @@ COLLECTIONS: 'Emissions', ConcAfterChem.mode: 'time-averaged' ConcAfterChem.fields: 'OHconcAfterChem', 'GCHPchem', :: +#============================================================================== + FV3Dynamics.template: '%y4%m2%d2_%h2%n2z.nc4', + FV3Dynamics.format: 'CFIO', + FV3Dynamics.timestampStart: .true. + FV3Dynamics.monthly: 1 + FV3Dynamics.frequency: 010000 + FV3Dynamics.duration: 010000 + FV3Dynamics.mode: 'time-averaged' + FV3Dynamics.fields: 'PLE ', 'DYNAMICS', + 'DryPLE ', 'DYNAMICS', + 'PLEadv ', 'DYNAMICS', +:: +#============================================================================== + GCHPctmEnvLevEdge.template: '%y4%m2%d2_%h2%n2z.nc4', + GCHPctmEnvLevEdge.format: 'CFIO', + GCHPctmEnvLevEdge.timestampStart: .true. + GCHPctmEnvLevEdge.monthly: 1 + GCHPctmEnvLevEdge.frequency: 010000 + GCHPctmEnvLevEdge.duration: 010000 + GCHPctmEnvLevEdge.mode: 'time-averaged' + GCHPctmEnvLevEdge.fields: 'UpwardsMassFlux ', 'GCHPctmEnv', + 'PLE0 ', 'GCHPctmEnv', + 'PLE1 ', 'GCHPctmEnv', + 'DryPLE0 ', 'GCHPctmEnv', + 'DryPLE1 ', 'GCHPctmEnv', +:: +#============================================================================== + GCHPctmEnvLevCenter.template: '%y4%m2%d2_%h2%n2z.nc4', + GCHPctmEnvLevCenter.format: 'CFIO', + GCHPctmEnvLevCenter.timestampStart: .true. + GCHPctmEnvLevCenter.monthly: 1 + GCHPctmEnvLevCenter.frequency: 010000 + GCHPctmEnvLevCenter.duration: 010000 + GCHPctmEnvLevCenter.mode: 'time-averaged' + GCHPctmEnvLevCenter.fields: 'SPHU0 ', 'GCHPctmEnv', + 'CX ', 'GCHPctmEnv', + 'CY ', 'GCHPctmEnv', + 'MFX ', 'GCHPctmEnv', + 'MFY ', 'GCHPctmEnv', +:: #============================================================================== # Diagnostics on level edges LevelEdgeDiags.template: '%y4%m2%d2_%h2%n2z.nc4', From cc251a8725e76e312b9d602c466999c83f856181 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 27 Mar 2024 16:47:57 -0400 Subject: [PATCH 186/331] Turn on GCHP advection diagnostics by default for Transport Tracer sim Signed-off-by: Lizzie Lundgren --- run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers index e37263466..be57c3106 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers @@ -58,9 +58,9 @@ COLLECTIONS: 'Emissions', #'Budget', 'CloudConvFlux', 'DryDep', - #'FV3Dynamics', - #'GCHPctmEnvLevCenter', - #'GCHPctmEnvLevEdge', + 'FV3Dynamics', + 'GCHPctmEnvLevCenter', + 'GCHPctmEnvLevEdge', 'LevelEdgeDiags', 'RadioNuclide', 'SpeciesConc', From df50721029032514a79249a70a9a392257e3b536 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Wed, 27 Mar 2024 15:27:24 -0600 Subject: [PATCH 187/331] Add slash before files read in photolysis_mod to avoid requirement in path Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + GeosCore/photolysis_mod.F90 | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4bf6c922..db6be6956 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Field `State_Diag%Obspack_CharArray` as a 2-D character array - Added util folder in run/CESM to include .cdl file used to generate CESM NetCDF input file for deposition - Add GCClassic operational example environment files for Harvard Cannon +- Added slash in front of names of LUT files read into photolysis_mod to avoid needing it in path ### Changed - Updated Harvard Cannon operational run scripts to use `huce_cascade` instead of `huce_intel`; also added `sapphire` diff --git a/GeosCore/photolysis_mod.F90 b/GeosCore/photolysis_mod.F90 index 025ec6052..d8684e555 100644 --- a/GeosCore/photolysis_mod.F90 +++ b/GeosCore/photolysis_mod.F90 @@ -938,7 +938,7 @@ SUBROUTINE RD_AOD( Input_Opt, State_Chm, RC ) ! Choose different set of input files for standard (trop+strat chenm) ! and tropchem (trop-only chem) simulations - THISFILE = TRIM( DATA_DIR ) // TRIM( SPECFIL(k) ) + THISFILE = TRIM( DATA_DIR ) // '/' // TRIM( SPECFIL(k) ) !-------------------------------------------------------------- ! In dry-run mode, print file path to dryrun log and cycle. @@ -1572,7 +1572,7 @@ SUBROUTINE RD_PROF_NC( Input_Opt, State_Chm, RC ) TREF => State_Chm%Phot%TREF ! Directory and file names - nc_dir = TRIM( Input_Opt%CHEM_INPUTS_DIR ) // 'FastJ_201204/' + nc_dir = TRIM( Input_Opt%CHEM_INPUTS_DIR ) // '/' // 'FastJ_201204' // '/' nc_file = 'fastj.jv_atms_dat.nc' nc_path = TRIM( nc_dir ) // TRIM( nc_file ) From e927528f7fe1f7c7b40768fd3c05626c0b822749 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Wed, 27 Mar 2024 13:20:26 -0400 Subject: [PATCH 188/331] Fix typos in HEMCO_Config.rc for CH4 and tagCH4 simulations 1. HEMCO_Config.rc.CH4 contained an erroneous logical for USE_CH4_DATA that likely came in when syncing with the HEMCO_Config.rc.carbon file. 2. The date string in the CAN_MASK_MIRROR entry was incorrect in HEMCO_Config.rc.tagCH4 (v20 should be v2024-01). Also increased memory requested in GCHP integration test to avoid out-of- memory errors. Signed-off-by: Melissa Sulprizio --- run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 | 1 - run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 | 2 +- test/integration/GCHP/integrationTestExecute.sh | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index d00500593..0f58689e0 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -898,7 +898,6 @@ ${RUNDIR_GLOBAL_Cl} #============================================================================== # --- Seasonal scaling factors ---- #============================================================================== -(((USE_CH4_DATA #------------------------------------------------------------------------------ # --- GHGI monthly scaling factors --- diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index 232b7b0eb..548da4cb8 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -1199,7 +1199,7 @@ ${RUNDIR_GLOBAL_Cl} # Use updated files (v2024-01); these are COARDS-compliant. (((Scarpelli_Canada 1002 CANADA_MASK $ROOT/MASKS/v2024-01/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v20/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-01/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))Scarpelli_Canada (((GHGI_v2.or.GHGI_v2_Express_Ext diff --git a/test/integration/GCHP/integrationTestExecute.sh b/test/integration/GCHP/integrationTestExecute.sh index 17083b558..b69d2190b 100755 --- a/test/integration/GCHP/integrationTestExecute.sh +++ b/test/integration/GCHP/integrationTestExecute.sh @@ -4,7 +4,7 @@ #SBATCH -N 1 #SBATCH -t 0-5:00 #SBATCH -p REQUESTED_PARTITION -#SBATCH --mem=90000 +#SBATCH --mem=150000 #SBATCH --mail-type=END #BSUB -q REQUESTED_PARTITION #BSUB -n 24 From ee89d3786e3a242af3bdf94d8daf86da817c427d Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 28 Mar 2024 12:16:31 -0400 Subject: [PATCH 189/331] Fix bug in tracer ST80 mask criteria in which mask could never be zero Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + GeosCore/tracer_mod.F90 | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff0ab92a8..20105b685 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Fixed GEOS-IT SLP and TROPP scaling in pre-processed files used in GCHP - Fixed reading of NEI emissions through HEMCO - Fixed incorrect units metadata for `State_Met%PHIS` +- Fixed bug in transport tracer ST80 mask criteria which prevented mask from ever being zero ### Removed - Removed MPI broadcasts in CESM-only photolysis code; will read on all cores diff --git a/GeosCore/tracer_mod.F90 b/GeosCore/tracer_mod.F90 index 2a4006731..73e988a36 100644 --- a/GeosCore/tracer_mod.F90 +++ b/GeosCore/tracer_mod.F90 @@ -268,8 +268,8 @@ SUBROUTINE Tracer_Source_Phase( Input_Opt, State_Chm, State_Grid, & DO I = 1, State_Grid%NX ! Set mask to zero outside of pressure levels - IF ( State_Met%PEDGE(I,J,L+1) < SpcInfo%Src_PresMin .and. & - State_Met%PEDGE(I,J,L) > SpcInfo%Src_PresMax ) THEN + IF ( .not. ( State_Met%PMID(I,J,L) >= SpcInfo%Src_PresMin .and. & + State_Met%PMID(I,J,L) <= SpcInfo%Src_PresMax ) ) THEN Mask(I,J,L) = 0.0_fp ENDIF From e837aba3ec9d112b4ab4cc501707e621e43db042 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Thu, 28 Mar 2024 13:29:47 -0400 Subject: [PATCH 190/331] Make minor comment changes following carbon simulation fixes 1. Added additional updates to CHANGELOG.md 2. Added comment in carbon_gases_mod.F90 to explain difference between id_* and id_*_adv values. 3. Removed unused reference to Ind_ in carbon_gases_mod.F90 4. Clean up comments in ExtData.rc.carbon Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 2 + GeosCore/carbon_gases_mod.F90 | 4 +- .../ExtData.rc.templates/ExtData.rc.carbon | 191 +----------------- 3 files changed, 10 insertions(+), 187 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40b7d20d7..3717ad1c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,10 +24,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Now get density of BCPI species from the species database in `ucx_mod.F90` - Fix issues that prevented single-species carbon simulations from running - Update `HEMCO_Config.rc.carbon` and `ExtData.rc.carbon` templates for consistency +- Updated several emissions files for CO and CH4 for COARDS and MAPL compliance ### Removed - Legacy binary punch diagnostic code contained within `#ifdef BPCH_DIAG` blocks - `IU_BPCH` logical file unit (in `GeosUtil/file_mod.F90`) +- Removed tagged CH4 and CO species handling from `carbon_gases_mod.F90` ## [14.3.0] - 2024-02-07 ### Added diff --git a/GeosCore/carbon_gases_mod.F90 b/GeosCore/carbon_gases_mod.F90 index 284ab069e..f50225538 100644 --- a/GeosCore/carbon_gases_mod.F90 +++ b/GeosCore/carbon_gases_mod.F90 @@ -370,7 +370,7 @@ SUBROUTINE Chem_Carbon_Gases( Input_Opt, State_Met, State_Chm, & USE rateLawUtilFuncs, ONLY : SafeDiv USE Species_Mod, ONLY : SpcConc USE State_Grid_Mod, ONLY : GrdState - USE State_Chm_Mod, ONLY : ChmState, Ind_ + USE State_Chm_Mod, ONLY : ChmState USE State_Diag_Mod, ONLY : DgnState USE State_Met_Mod, ONLY : MetState USE Time_Mod, ONLY : Get_Ts_Chem @@ -1035,6 +1035,8 @@ SUBROUTINE Init_Carbon_Gases( Input_Opt, State_Chm, State_Diag, & !======================================================================== ! Define GEOS-Chem species indices + ! + ! Also denote which species are advected to facilitate single-tracer runs !======================================================================== id_CH4 = Ind_( 'CH4' ) id_CH4_adv = Ind_( 'CH4', 'A' ) diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index 8a0f4a14f..ce27e9bd7 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -135,14 +135,10 @@ XLAIMULTI cm2_cm-2 N Y %y4-%m2-%d2T00:00:00 none none XLAIMULTI ./HcoDir/Yuan_XL #============================================================================== # %%%%% CH4 emissions %%%%% -# -# Comment all entries in this section when -# "--> USE_CH4_DATA : false" is in HEMCO_Config.rc. #============================================================================== -# --- CH4: Gridded GHGI v2 Express Extension (Maasakkers et al., submitted to ES&T, 2023) --- +# --- Gridded GHGI v2 Express Extension (Maasakkers et al., ES&T, 2023) --- # -# Comment these lines when "GHGI_v2_Express_Ext: false" is in HEMCO_Config.rc. GHGI_EE_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc @@ -198,8 +194,6 @@ GHGI_EE_COAST_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Ab # --- Scarpelli Mexico --- -# -# Comment these when "--> Scarpelli_Mexico : false" is in HEMCO_Config.rc. MEX_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc MEX_GAS kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc MEX_COAL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc @@ -221,9 +215,6 @@ MEX_OTHER_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v20 # --- Scarpelli Canada --- -# -# Comment these when "--> Scarpelli_Canada : false" is in HEMCO_Config.rc -# CAN_OIL_GAS_COMBUSTION kg/m2/s N Y - none none oil_gas_combustion_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc CAN_OIL_GAS_LEAKAGE kg/m2/s N Y - none none oil_gas_leakage_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc CAN_OIL_GAS_VENT_FLARE kg/m2/s N Y - none none oil_gas_vent_flare_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc @@ -243,18 +234,12 @@ CAN_OTHER_COAST kg/m2/s N Y - none none other_minor_sources_total # --- GFEI --- -# -# Comment these when "--> GFEIv2 : false" is in HEMCO_Config.rc GFEI_CH4_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Oil_All.nc GFEI_CH4_GAS kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Gas_All.nc GFEI_CH4_COAL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Coal.nc # --- EDGAR v7.0 --- -# -# Use updated files (v2024-01); these are COARDS-compliant. -# -# Comment these when "--> EDGARv7 : false" is in HEMCO_Config.rc EDGAR7_CH4_OILGASCOAL__1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_PRO.0.1x0.1.nc EDGAR7_CH4_OTHER__1A1_1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_REF_TRF.0.1x0.1.nc EDGAR7_CH4_LIVESTOCK__4A kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENF.0.1x0.1.nc @@ -278,87 +263,40 @@ EDGAR7_CH4_OTHER__6C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi # --- JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- -# -# Use updated files (v2024-01); these are COARDS-compliant. -# -# Comment this when "--> JPL_WETCHARTS: false" is in HEMCO_Config.rc. JPLW_CH4 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc # --- Geological seeps --- -# -# Comment this when "--> SEEPS : false" is in HEMCO_Config.rc. CH4_SEEPS kg/m2/s N Y - none none emi_ch4 ./HcoDir/CH4/v2020-04/Seeps/Etiope_CH4GeologicalEmis_ScaledToHmiel.1x1.nc # --- Emissions from reservoirs (Delwich et al 2022) --- -# -# Use updated files (v2024-01); these are COARDS-compliant. -# -# Comment these when "--> RESERVOIRS : false" is in HEMCO_Config.rc. CH4_RES_DAM kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4_RES_SFC kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2024-01/ResME/ResME_Surface_Emissions.0.1x0.1.nc # --- Emissions from termites (Fung et al 1991) --- -# -# Comment this when "--> FUNG_TERMITES : false" is in HEMCO_Config.rc. CH4_TERMITES kg/m2/s N Y - none none CH4 ./HcoDir/CH4/v2022-11/4x5/termites.geos.4x5.nc # --- Soil absorption fro MeMo model (Murguia-Flores et al. 2018, GMD) --- # -# Note; Use climatology by default -# Comment this when "--> MeMo_SOIL_ABSORPTION : false" is in HEMCO_Config.rc. +# Note: Use climatology by default CH4_SOILABSORB kg/m2/s 2009 Y F%y4-%m2-01T00:00:00 none none CH4uptake ./HcoDir/CH4/v2019-10/MeMo_SoilAbs/MeMo_CH4uptake_Climatology.nc # # Annual emissions are disabled by default #CH4_SOILABSORB kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CH4uptake ./HcoDir/CH4/v2019-10/MeMo_SoilAbs/MeMo_CH4uptake_1990-2009.nc -# --- BBMIPs --- -# Add entries here - -# --- CEDS (historical) or Shared Socioeconomic Pathways (future) --- -# Add entries here - -# --- EDGAR v6.0 --- -# Add entries here - -# --- Gridded GHGI emissions --- -# Add entries here - -# --- QFED v2.4r8 --- -# Add entries here - -# --- Emissions from lakes (Maasakkers et al 2019) --- -# Add entries here - -# --- Soil absoprtion (Fung et al 1991) --- -# Add entries here - -# --- RCP future emission scenarios --- -# Add entries here - - #============================================================================== # %%%%% CO emissions %%%%% -# -# Comment all entries in this section when -# "--> USE_CO_DATA : false" is in HEMCO_Config.rc. #============================================================================== # --- AEIC 2019 aircraft (AEIC) --- -# -# Comment this when "--> AEIC2019_MONMEAN : false" is in HEMCO_Config.rc. AEIC19_MONMEAN_CO kg/m2/s Y Y F2019-%m2-01T00:00:00 none none CO ./HcoDir/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019%m2.0.5x0.625.36L.nc # -# Comment this when "--> AEIC2019_DAILY : false" is in HEMCO_Config.rc. ##AEIC19_DAILY_CO kg/m2/s 2019 Y F%y4-%m2-%d2T00:00:00 none none CO ./HcoDir/AEIC2019/v2022-03/2019/%m2/AEIC_2019%m2%d2.0.5x0.625.36L.nc - # --- CEDSv2 emissions --- -# -# Comment these when "--> CEDSv2 : false" is in HEMCO_Config.rc. CEDS_CO_AGR kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_agr ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc CEDS_CO_ENE kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_ene ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc CEDS_CO_IND kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_ind ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc @@ -367,98 +305,31 @@ CEDS_CO_RCO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_rco ./HcoDir/CEDS/v2 CEDS_CO_SLV kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_slv ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc CEDS_CO_WST kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_wst ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc # -# Comment this when "--> CEDSv2_SHIP : false" is in HEMCO_Config.rc. CEDS_CO_SHP kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_shp ./HcoDir/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc - -# --- APEI (Canada) --- -# Add entries here - -# --- BB4MIPs --- -# Add entries here - -# --- CEDS GBD-MAPS --- -# Add entries here - -# --- CMIP6 --- -# Add entries here - -# --- DICE-Africa --- -# Add entries here - -# --- GFAS biomass burning --- -# Add entries here - -# --- HTAP --- -# Add entries here - -# --- NEI2016_MONMEAN (USA) --- -# Add entries here - -# --- QFED2 biomass burning --- -# Add entries here - -# --- RCP future emissions scenarios --- -# Add entries here - - #============================================================================== # --- CO2 emissions --- -# -# Comment all entries in this section when -# "--> USE_CO2_DATA : false" is in HEMCO_Config.rc. #============================================================================== # --- CO2 Fossil Fuel --- -# -# Comment this when "--> FOSSIL_CDIAC : false" is in HEMCO_Config.rc. -##FOSSILCO2_CDIAC kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO2 ./HcoDir/CO2/v2014-09/FOSSIL/CDIAC_v2014.monthly.generic.1x1.nc -# -# Comment this when "--> FOSSIL_ODIAC : false" is in HEMCO_Config.rc. FOSSILCO2_ODIAC kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO2 ./HcoDir/CO2/v2022-11/FOSSIL/ODIAC_CO2.monthly.generic.1x1.nc - # --- CO2 Ocean Exchange --- -# -# Comment this when "--> OCEAN_EXCH_TAKA09 : false" is in HEMCO_Config.rc. -##OCEANCO2_TAKA_ANNUAL kg/m2/s N Y - none none CO2 ./HcoDir/CO2/v2022-11/OCEAN/Taka2009_CO2_Annual.nc -# -# Comment this when "--> OCEAN_EXCH_SCALED : false" is in HEMCO_Config.rc. OCEANCO2_TAKA_MONTHLY kg/m2/s 2000 Y F%y4-%m2-01T00:00:00 none none CO2 ./HcoDir/CO2/v2022-11/OCEAN/Taka2009_CO2_Monthly.nc - # --- Balanced biosphere exchange --- -# -# Comment this when "--> BBIO_DIURNAL : false" is in HEMCO_Config.rc. -##BBIOCO2_DIURNAL kg/m2/s N Y F%y4-%m2-%d2T%h2-01-01 none none CO2 ./HcoDir/CO2/v2014-09/BBIO/BBIO_diurnal_CO2.nc -# -# Comment this when "--> BBIO_SIB3 : false" is in HEMCO_Config.rc. SIB_BBIO_CO2 kg/m2/s N Y F%y4-%m2-%d2T%h2-01-01 none none CO2 ./HcoDir/CO2/v2022-11/BIO/SiB3_3hr_NEP.nc - # --- Net Terrestrial Exchange --- -# -# Comment this when "--> NET_TERR_EXCH : false" is in HEMCO_Config.rc. CO2_NET_TERRESTRIAL kg/m2/s N Y - none none CO2 ./HcoDir/CO2/v2022-11/BIO/Net_terrestrial_exch_5.29Pg.generic.1x1.nc - # --- CO2 Ship Emissions --- -# -# Comment this when "--> CEDS_v2_SHIP : false" is in HEMCO_Config.rc. CEDS_CO2_SHP kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO2_shp ./HcoDir/CEDS/v2021-06/%y4/CO2-em-anthro_CMIP_CEDS_%y4.nc - # --- CO2: AEIC 2019 aircraft emissions --- -## Comment this when "--> AEIC2019_DAILY : false" is in HEMCO_Config.rc. -##AEIC19_DAILY_CO2 kg/m2/s 2019 Y F%y4-%m2-%d2T00:00:00 none none FUELBURN ./HcoDir/AEIC2019/v2022-03/2019/%m2/AEIC_2019%m2%d2.0.5x0.625.36L.nc -# -# Comment this when "--> AEIC2019_MONMEAN : false" is in HEMCO_Config.rc. AEIC19_MONMEAN_CO2 kg/m2/s 2019 Y F%y4-%m2-%d2T00:00:00 none none FUELBURN ./HcoDir/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019%m2.0.5x0.625.36L.nc - # --- CO2: Surface correction for CO oxidation --- -# -# Comment these when "--> CO2CORR : false" is in HEMCO_Config.rc. FOSSILCO2_MONTHLY kg/m/s N Y F%y4-%m2-01T01:00:00 none none CO2 ./HcoDir/CO2/v2022-11/FOSSIL/ODIAC_CO2.monthly.generic.1x1.nc CO2_LIVESTOCK kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none CH4_004 ./HcoDir/CO2/v2022-11/CHEM/CH4_source.geos.2x25.nc CO2_WASTE kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none CH4_005 ./HcoDir/CO2/v2022-11/CHEM/CH4_source.geos.2x25.nc @@ -468,19 +339,11 @@ CO2_NATURAL kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none CH4_012 ./HcoDir/ CO2_ISOPRENE kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none ISOP ./HcoDir/CO2/v2022-11/CHEM/Isoprene-2004.geos.2x25.nc CO2_MONOTERP kg/m/s 2004 Y F%y4-%m2-01T01:00:00 none none MONOT ./HcoDir/CO2/v2022-11/CHEM/Monoterpene-2004.geos.2x25.nc - # --- CO2 production from CO --- -# -# Use updated files (v2024-01); these are COARDS-compliant. -# -# Comment this when "--> CO2_COPROD : false" is in HEMCO_Config.rc. CO2_COPROD kgC/m3/s N Y F%y2-%m2-01T00:00:00 none none LCO ./HcoDir/CO2/v2024-01/CHEM/CO2_prod_rates.GEOS5.2x25.72L.nc #============================================================================== # --- OCS emission fluxes --- -# -# If USE_OCS_DATA is set to "false" in HEMCO_Config.rc, -# then you must comment out all of these entries. #============================================================================== OCS_ANTHRO kgS/km2/s N Y F%y4-%m2-01T00:00:00 none none COS_Flux ./HcoDir/OCS_FLUX/v2022-11/anthro_v3/v3_anthro/%y4/%m2.nc OCS_BIOMASS kgS/km2/s N Y F%y4-%m2-01T00:00:00 none none COS_Flux ./HcoDir/OCS_FLUX/v2022-11/Biomassburn/CMSV2-CO2-GFED3-ZC/%y4/%m2.nc @@ -494,23 +357,17 @@ OCS_OCEAN kgS/km2/s N Y F%y4-%m2-01T00:00:00 none none COS_Flux ./HcoDir ############################################################################### # --- GFED4 (Extension 111)--- -# -# Comment these when "111 GFEE : off" in HEMCO_Config.rc. GFED_TEMP kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_TEMP ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc GFED_AGRI kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_AGRI ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc GFED_DEFO kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_DEFO ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc GFED_BORF kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_BORF ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc GFED_PEAT kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_PEAT ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc GFED_SAVA kgDM/m2/s N Y F%y4-%m2-01T00:00:00 none none DM_SAVA ./HcoDir/GFED4/v2023-03/%y4/GFED4_gen.025x025.%y4%m2.nc -# + # --- GFED_daily scale factors --- -# -# Comment this when "--> GFED_daily : false" is in HEMCO_Config.rc. GFED_FRAC_DAY 1 N Y %y4-%m2-%d2T00:00:00 none none GFED_FRACDAY ./HcoDir/GFED4/v2023-03/%y4/GFED4_dailyfrac_gen.025x025.%y4%m2.nc -# + # --- GFED_3hourly -- -# -# Comment this when "--> GFED_hourly : false" is in HEMCO_Config.rc. #GFED_FRAC_3HOUR 1 N Y %y4-%m2-01T%h2:00:00 none none GFED_FRAC3HR ./HcoDir/GFED4/v2023-03/%y4/GFED4_3hrfrac_gen.025x025.%y4%m2.nc @@ -523,34 +380,19 @@ GFED_FRAC_DAY 1 N Y %y4-%m2-%d2T00:00:00 none none GFED_FRACDAY ./HcoDir/GFED4/v # --- Time zones (offset to UTC) --- TIMEZONES count Y V 2017-%m2-01T00:00:00 none none UTC_OFFSET ./HcoDir/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc - # --- OH from the latest 10-year benchmark --- -# -# Comment this if "--> GLOBAL_OH_GC14 : false" is in HEMCO_Config.rc ##GLOBAL_OH kg/m3 N N %y4-%m2-01T00:00:00 none none SpeciesConc_OH ./HcoDir/GCClassic_Output/14.0.0/%y4/GEOSChem.SpeciesConc.%y4%m201_0000z.nc4 - -# --- OH from GEOS-Chem v5-07-08 --- -# --- NOTE: Use this for CH4/IMI --- -# -# Comment this if "--> GLOBAL_OH_GCv5 : false" is in HEMCO_Config.rc +# --- OH from GEOS-Chem v5-07-08 (used for CH4/IMI) --- GLOBAL_OH kg/m3 1985 Y F%y4-%m2-01T00:00:00 none none OH ./HcoDir/OH/v2022-11/v5-07-08/OH_3Dglobal.geos5.72L.4x5.nc - # --- Global Cl concentrations --- -# -# Use updated files (v2024-01); these are COARDS-compliant. GLOBAL_Cl mol/mol N Y F%y4-%m2-01T00:00:00 none none SpeciesConc_Cl ./HcoDir/CH4/v2024-01/GCC_14_Output/%y4/GEOSChem.SpeciesConc.%y4%m201_0000z.nc4 - # --- Stratospheric L(CO) from GMI --- -# -# Use updated files (v2024-01); these are COARDS-compliant. CH4_LOSS s-1 1985 Y F%y4-%m2-01T00:00:00 none none CH4loss ./HcoDir/CH4/v2024-01/GC_CH4_LOSS/GCC14_72LM.ch4loss.4x5.nc4 # --- P(CO) from CH4 and NMVOC from the last 10-yr benchmark --- -# -# Use updated files (v2024-01); these are COARDS-compliant. PCO_CH4 molec/cm3/s N Y F%y4-%m2-01T00:00:00 none none ProdCOfromCH4 ./HcoDir/CH4/v2024-01/GCC_14_Output/%y4/GEOSChem.ProdLoss.%y4%m201_0000z.nc4 PCO_NMVOC molec/cm3/s N Y F%y4-%m2-01T00:00:00 none none ProdCOfromNMVOC ./HcoDir/CH4/v2024-01/GCC_14_Output/%y4/GEOSChem.ProdLoss.%y4%m201_0000z.nc4 @@ -566,14 +408,9 @@ GMI_PROD_CO v/v/s 2005 Y F%y4-%m2-01T00:00:00 none none prod ./HcoDir/GMI/v2022 #============================================================================== # %%%%% Scale factors for CH4 emissions %%%%% -# -# Comment out all entries in this section if the USE_CH4_DATA switch -# is set to "false" in HEMCO_Config.rc. #============================================================================== # --- GHGI seasonal scale factors --- -# -# Comment these if "--> GHGI_v2_Express_Ext : false" is in HEMCO_Config.rc, GHGI_OTH_STA_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc GHGI_OIL_EXP_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc GHGI_OIL_PRD_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc @@ -585,17 +422,11 @@ GHGI_LIV_MAN_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3B_M GHGI_RIC_CUL_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc GHGI_OTH_BUR_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc - # --- Scarpelli_Mexico manure and rice scale factors --- -# -# Comment these if "--> Scarpelli_Mexico : false" is in HEMCO_Config.rc, MANURE_SF 1 N Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2017-10/Seasonal_SF/EMICH4_Manure_ScalingFactors.WithClimatology.nc RICE_SF 1 2012 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc - # --- Monthly scale factors for EDGARv7 --- -# -# Comment these if "--> EDGARv7 : false" is in HEMCO_Config.rc, EDGAR_SEASONAL_SF_AGS 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc EDGAR_SEASONAL_SF_AWB 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AWB.0.1x0.1.nc EDGAR_SEASONAL_SF_CHE 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_CHE.0.1x0.1.nc @@ -620,14 +451,8 @@ EDGAR_SEASONAL_SF_WWT 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./Hc #============================================================================== # %%%%% Scale factors for CO emissions %%%%% -# -# If USE_CO_DATA is set to "false" in HEMCO_Config.rc, -# then you must comment out all of these entries below. #============================================================================== -# --- HTAP annual scale factors --- -# Add entries here - # --- CEDS vertical partitioning --- ENERGY_LEVS 1 N Y - none none g_energy ./HcoDir/VerticalScaleFactors/v2021-05/gc_layers.nc INDUSTRY_LEVS 1 N Y - none none g_industry ./HcoDir/VerticalScaleFactors/v2021-05/gc_layers.nc @@ -635,9 +460,6 @@ SHIP_LEVS 1 N Y - none none cmv_c3 ./HcoDir/VerticalScaleFactors/v2021-0 #============================================================================== # %%%%% Scale factors for CO2 emissions %%%%% -# -# If USE_CO2_DATA is set to "false" in HEMCO_Config.rc, -# then you must comment out all of these entries below. #============================================================================== # --- National fossil fuel CO2 scale factors (Nassar et al, 2013) --- @@ -654,16 +476,13 @@ OCEANCO2_SCALED_MONTHLY kg/m2/s N Y F%y2-%m2-01T00:00:00 none none CO2 ./HcoD ### ############################################################################### -# Use updated files (v2024-01); these are COARDS-compliant. MEX_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Mexico_Mask.001x001.nc MEX_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Mexico_Mask_Mirror.001x001.nc CAN_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Canada_Mask.001x001.nc CAN_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Canada_Mask_Mirror.001x001.nc -# CHINA_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/China_mask.generic.1x1.nc CONUS_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/CONUS_Mask.001x001.nc CONUS_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/CONUS_Mask_Mirror.001x001.nc -# %% DerivedExports%% From 23dedaefe74cc5006da9f17b9a0abd033ee2ecac Mon Sep 17 00:00:00 2001 From: Yanshun Li Date: Thu, 28 Mar 2024 23:05:23 -0500 Subject: [PATCH 191/331] Added description and initialization for VTS variables & used Ind_ function for species comparisons --- GeosCore/drydep_mod.F90 | 61 ++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/GeosCore/drydep_mod.F90 b/GeosCore/drydep_mod.F90 index ba7ddceb1..bc0d83007 100644 --- a/GeosCore/drydep_mod.F90 +++ b/GeosCore/drydep_mod.F90 @@ -1006,6 +1006,7 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & USE Input_Opt_Mod, ONLY : OptInput USE Species_Mod, ONLY : Species USE State_Chm_Mod, ONLY : ChmState + USE State_Chm_Mod, ONLY : Ind_ USE State_Diag_Mod, ONLY : DgnState USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState @@ -1225,9 +1226,9 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Small number REAL(fp), PARAMETER :: SMALL = 1.0e-10_f8 - ! VTS - REAL(f8) :: VTSoutput - REAL(f8) :: VTSoutput_ (NUMDEP,NTYPE) + ! Gravitational Settling velocity (yli, 3/28/2024) + REAL(f8) :: VTSoutput ! Used in AERO_SFCRSII, ADUST_SFCRSII and DUST_SFCRSII for a specific aerosol species and a specific land type + REAL(f8) :: VTSoutput_ (NUMDEP,NTYPE) ! For all deposited aerosol species and all land types !================================================================= ! DEPVEL begins here! @@ -1356,6 +1357,8 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & DUMMY2_Alt = 0.0_f8 DUMMY4_Alt = 0.0_f8 RA_Alt = 0.0_f8 + VTSoutput = 0.0_fp + VTSoutput_ = 0.0_fp !** CZ is Altitude (m) at which deposition velocity is computed CZ = CZ1(I,J) @@ -1718,31 +1721,31 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Particle diameter, convert [m] -> [um] DIAM = A_RADI(K) * 2.e+0_f8 - IF ((SpcInfo%Name .EQ. 'DST1') .OR. & - (SpcInfo%Name .EQ. 'DSTAL1') .OR. & - (SpcInfo%Name .EQ. 'NITD1') .OR. & - (SpcInfo%Name .EQ. 'SO4D1')) THEN + IF ((Ind_(SpcInfo%Name) .EQ. Ind_('DST1')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('DSTAL1')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('NITD1')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('SO4D1'))) THEN DIAM = 0.66895E-6 ENDIF - IF ((SpcInfo%Name .EQ. 'DST2') .OR. & - (SpcInfo%Name .EQ. 'DSTAL2') .OR. & - (SpcInfo%Name .EQ. 'NITD2') .OR. & - (SpcInfo%Name .EQ. 'SO4D2')) THEN + IF ((Ind_(SpcInfo%Name) .EQ. Ind_('DST2')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('DSTAL2')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('NITD2')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('SO4D2'))) THEN DIAM = 2.4907E-6 ENDIF - IF ((SpcInfo%Name .EQ. 'DST3') .OR. & - (SpcInfo%Name .EQ. 'DSTAL3') .OR. & - (SpcInfo%Name .EQ. 'NITD3') .OR. & - (SpcInfo%Name .EQ. 'SO4D3')) THEN + IF ((Ind_(SpcInfo%Name) .EQ. Ind_('DST3')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('DSTAL3')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('NITD3')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('SO4D3'))) THEN DIAM = 4.164E-6 ENDIF - IF ((SpcInfo%Name .EQ. 'DST4') .OR. & - (SpcInfo%Name .EQ. 'DSTAL4') .OR. & - (SpcInfo%Name .EQ. 'NITD4') .OR. & - (SpcInfo%Name .EQ. 'SO4D4')) THEN + IF ((Ind_(SpcInfo%Name) .EQ. Ind_('DST4')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('DSTAL4')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('NITD4')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('SO4D4'))) THEN DIAM = 6.677E-6 ENDIF @@ -3144,6 +3147,7 @@ FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, VTSout, Input_Opt, S USE Input_Opt_Mod, ONLY : OptInput USE Species_Mod, ONLY : Species USE State_Chm_Mod, ONLY : ChmState + USE State_Chm_Mod, ONLY : Ind_ ! ! !INPUT PARAMETERS: ! @@ -3430,14 +3434,14 @@ FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, VTSout, Input_Opt, S drydepRadius = A_RADI(K) ! Coarse seasalt - IF ((SpcInfo%Name .EQ. 'NITS') .OR. (SpcInfo%Name .EQ. 'SALC') & - .OR. (SpcInfo%Name .EQ. 'SO4S') .OR. (SpcInfo%Name .EQ. 'BRSALC') & - .OR. (SpcInfo%Name .EQ. 'ISALC')) THEN + IF ((Ind_(SpcInfo%Name) .EQ. Ind_('NITS')) .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('SALC')) & + .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('SO4S')) .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('BRSALC')) & + .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('ISALC'))) THEN drydepRadius = 0.74025E-6 ENDIF - IF ((SpcInfo%Name .EQ. 'SALA') .OR. (SpcInfo%Name .EQ. 'BRSALA') & - .OR. (SpcInfo%Name .EQ. 'ISALA')) THEN + IF ((Ind_(SpcInfo%Name) .EQ. Ind_('SALA')) .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('BRSALA')) & + .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('ISALA'))) THEN drydepRadius = 0.114945E-6 ENDIF @@ -3939,6 +3943,7 @@ FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR, & ! USE Species_Mod, ONLY : Species USE State_Chm_Mod, ONLY : ChmState + USE State_Chm_Mod, ONLY : Ind_ ! ! !INPUT PARAMETERS: @@ -4157,8 +4162,8 @@ FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR, & SpcInfo => State_Chm%SpcData(SpcId)%Info ! SIA - IF ((SpcInfo%Name .EQ. 'NIT') .OR. (SpcInfo%Name .EQ. 'NH4') & - .OR. (SpcInfo%Name .EQ. 'SO4')) THEN + IF ((Ind_(SpcInfo%Name) .EQ. Ind_('NIT')) .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('NH4')) & + .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('SO4'))) THEN ! Efflorescence transtions IF (RHBL .LT. 0.35) THEN DIAM = DIAM * 1.0 @@ -4174,8 +4179,8 @@ FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR, & ENDIF !BC - ELSE IF ((SpcInfo%Name .EQ. 'BCPI') .OR. & - (SpcInfo%Name .EQ. 'BCPO')) THEN + ELSE IF ((Ind_(SpcInfo%Name) .EQ. Ind_('BCPI')) .OR. & + (Ind_(SpcInfo%Name) .EQ. Ind_('BCPO'))) THEN DIAM = DIAM * 1.0 !OA From 41c867674526d3d05f2a48c420069ec06e3e29d9 Mon Sep 17 00:00:00 2001 From: nicholasbalasus Date: Thu, 28 Mar 2024 18:34:57 -0400 Subject: [PATCH 192/331] Update CH4 emissions from EDGARv7 to EDGARv8 Address comments --- CHANGELOG.md | 1 + .../HEMCO_Config.rc.CH4 | 131 +++--------- .../HEMCO_Config.rc.carbon | 114 +++------- .../HEMCO_Config.rc.tagCH4 | 195 +++++------------- .../ExtData.rc.templates/ExtData.rc.carbon | 72 +++---- .../HEMCO_Config.rc.carbon | 114 +++------- 6 files changed, 151 insertions(+), 476 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6232ff8e..cea05d1b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated integration tests to pass quick option to compile scripts - Removed emissions handling from `global_ch4_mod.F90` and `carbon_gases_mod.F90` and instead apply scale factors to emissions directly in `HEMCO_Config.rc` - Loop over advected species CH4 chemistry routines to allow for multiple CH4 tracers within analytical inversion framework +- Updated CH4 global anthropogenic emission inventory from EDGARv7 to EDGARv8 ### Fixed - Fixed unit conversions in GEOS-only code diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index 74d6de020..1414aee20 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -63,8 +63,7 @@ VerboseOnCores: root # Accepted values: root all --> Scarpelli_Mexico : true # 2015 # ----- GLOBAL INVENTORIES ---------------------------------------------------- --> GFEIv2 : true # 2019 - --> EDGARv6 : false # 2000-2018 - --> EDGARv7 : true # 2010-2021 + --> EDGARv8 : true # 2010-2022 --> QFED2 : false # 2009-2015 --> JPL_WETCHARTS : true # 2009-2017 --> SEEPS : true # 2012 @@ -206,7 +205,7 @@ VerboseOnCores: root # Accepted values: root all 0 GHGI_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 0 GHGI_COAST_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 6 1 0 GHGI_COAST_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 6 1 -0 GHGI_COAST_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1009 7 1 +0 GHGI_COAST_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1009 7 1 0 GHGI_COAST_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 0 GHGI_COAST_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1009 8 1 0 GHGI_COAST_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 @@ -366,96 +365,47 @@ VerboseOnCores: root # Accepted values: root all )))GFEIv2 #============================================================================== -# --- EDGAR v6.0 emissions --- +# --- EDGAR v8.0 emissions --- #============================================================================== -(((EDGARv6 -(((.not.EDGARv7 +(((EDGARv8 ### Oil ### -0 EDGAR6_CH4_OIL__1B2a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 1 1 -0 EDGAR6_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 1 1 +0 EDGAR8_CH4_PRO_OIL $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_OIL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 1 1 +0 EDGAR8_CH4_REF_TRF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_REF_TRF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 1 1 ### Gas ### -0 EDGAR6_CH4_OIL__1B2c $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 2 1 +0 EDGAR8_CH4_PRO_GAS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_GAS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 2 1 ### Coal ### -0 EDGAR6_CH4_COAL__1B1a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 3 1 +0 EDGAR8_CH4_PRO_COAL $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_COAL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 3 1 ### Livestock ### -0 EDGAR6_CH4_LIVESTOCK__4A $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 4 1 -0 EDGAR6_CH4_LIVESTOCK__4B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 4 1 +0 EDGAR8_CH4_ENF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 4 1 +0 EDGAR8_CH4_MNM $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_MNM_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 4 1 ### Landfills ### -0 EDGAR6_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 5 1 +0 EDGAR8_CH4_SWD_LDF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_LDF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 5 1 ### Wastewater ### -0 EDGAR6_CH4_WASTEWATER__6B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 6 1 +0 EDGAR8_CH4_WWT $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_WWT_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 6 1 ### Rice ### -0 EDGAR6_CH4_RICE__4C_4D $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 7 1 +0 EDGAR8_CH4_AGS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AGS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 7 1 ### Other Anthro ### -0 EDGAR6_CH4_OTHER__1A1a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3b $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A4 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__2B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__2C $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__4F $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__6C $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -))).not.EDGARv7 -)))EDGARv6 - -#============================================================================== -# --- EDGAR v7.0 emissions --- -# -# NOTES: -# - These are annual emissions. Seasonality is applied via scale factors -# computed from EDGARv6.0 monthly emissions. -#============================================================================== -(((EDGARv7 -### Oil ### -0 EDGAR7_CH4_OIL__1B2a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 32 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 34 1 1 - -### Gas ### -0 EDGAR7_CH4_OIL__1B2c $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 31 2 1 - -### Coal ### -0 EDGAR7_CH4_COAL__1B1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 30 3 1 - -### Livestock ### -0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 24 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 28 4 1 - -### Landfills ### -0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 36 5 1 - -### Wastewater ### -0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 43 6 1 - -### Rice ### -0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 20 7 1 - -### Other Anthro ### -0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 23 8 1 -0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 26 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 37 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 38 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 39 8 1 -0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 42 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 40 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 41 8 1 -0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 33 8 1 -0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 22 8 1 -0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 27 8 1 -0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 21 8 1 -0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 35 8 1 -)))EDGARv7 +0 EDGAR8_CH4_ENE $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_IND $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IND_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_CDS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CDS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_CRS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CRS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_LTO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_LTO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TRO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Other $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Other_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Ship $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Ship_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_RCO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_RCO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_CHE $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_CHE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_IRO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_AWB $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AWB_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_SWD_INC $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_INC_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +)))EDGARv8 #============================================================================== # CEDS (historical) or Shared Socioeconomic Pathways (future) @@ -945,33 +895,6 @@ ${RUNDIR_GLOBAL_Cl} 11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 )))Scarpelli_Mexico.or.Scarpelli_Canada -(((EDGARv7 -20 EDGAR_SEASONAL_SF_AGS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -21 EDGAR_SEASONAL_SF_AWB $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AWB.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -22 EDGAR_SEASONAL_SF_CHE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_CHE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -23 EDGAR_SEASONAL_SF_ENE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -24 EDGAR_SEASONAL_SF_ENF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -25 EDGAR_SEASONAL_SF_FFF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_FFF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -26 EDGAR_SEASONAL_SF_IND $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IND.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -27 EDGAR_SEASONAL_SF_IRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -28 EDGAR_SEASONAL_SF_MNM $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_MNM.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -29 EDGAR_SEASONAL_SF_PRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -30 EDGAR_SEASONAL_SF_PRO_COAL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -31 EDGAR_SEASONAL_SF_PRO_GAS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -32 EDGAR_SEASONAL_SF_PRO_OIL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -33 EDGAR_SEASONAL_SF_RCO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_RCO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -34 EDGAR_SEASONAL_SF_REF_TRF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_REF_TRF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -35 EDGAR_SEASONAL_SF_SWD_INC $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_INC.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -36 EDGAR_SEASONAL_SF_SWD_LDF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_LDF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -37 EDGAR_SEASONAL_SF_TNR_AV_CDS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CDS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -38 EDGAR_SEASONAL_SF_TNR_AV_CRS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CRS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -39 EDGAR_SEASONAL_SF_TNR_AV_LTO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_LTO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -40 EDGAR_SEASONAL_SF_TNR_Other $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Other.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -41 EDGAR_SEASONAL_SF_TNR_SHIP $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Ship.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -42 EDGAR_SEASONAL_SF_TRO_noRes $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TRO_noRES.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -43 EDGAR_SEASONAL_SF_WWT $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_WWT.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -)))EDGARv7 - #============================================================================== # --- QFED2 diurnal scale factors --- # diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index a4eea8355..b5a2ff2b9 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -70,8 +70,7 @@ Mask fractions: false --> Scarpelli_Mexico : true # 2015 # ..... Global Inventories ........... --> GFEIv2 : true # 2019 - --> EDGARv6 : false # 2000-2018 - --> EDGARv7 : true # 2010-2021 + --> EDGARv8 : true # 2010-2022 --> QFED2 : false # 2009-2015 --> JPL_WETCHARTS : true # 2009-2017 --> SEEPS : true # 2012 @@ -408,81 +407,47 @@ Mask fractions: false )))GFEIv2 #============================================================================== -# --- CH4: EDGAR v6.0 emissions --- -#============================================================================== -(((EDGARv6 -(((.not.EDGARv7 -0 EDGAR6_CH4_OIL__1B2a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 1 1 -0 EDGAR6_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 1 1 -0 EDGAR6_CH4_OIL__1B2c $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 2 1 -0 EDGAR6_CH4_COAL__1B1a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 3 1 -0 EDGAR6_CH4_LIVESTOCK__4A $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 4 1 -0 EDGAR6_CH4_LIVESTOCK__4B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 4 1 -0 EDGAR6_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 5 1 -0 EDGAR6_CH4_WASTEWATER__6B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 6 1 -0 EDGAR6_CH4_RICE__4C_4D $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 7 1 -0 EDGAR6_CH4_OTHER__1A1a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3b $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A4 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__2B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__2C $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__4F $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__6C $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -))).not.EDGARv7 -)))EDGARv6 - -#============================================================================== -# --- EDGAR v7.0 emissions --- -# -# NOTES: -# - These are annual emissions. Seasonality is applied via scale factors -# computed from EDGARv6.0 monthly emissions. +# --- CH4: EDGAR v8.0 emissions --- #============================================================================== -(((EDGARv7 +(((EDGARv8 ### Oil ### -0 EDGAR7_CH4_OIL__1B2a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 732 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 734 1 1 +0 EDGAR8_CH4_PRO_OIL $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_OIL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 1 1 +0 EDGAR8_CH4_REF_TRF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_REF_TRF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 1 1 ### Gas ### -0 EDGAR7_CH4_OIL__1B2c $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 731 2 1 +0 EDGAR8_CH4_PRO_GAS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_GAS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 2 1 ### Coal ### -0 EDGAR7_CH4_COAL__1B1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 730 3 1 +0 EDGAR8_CH4_PRO_COAL $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_COAL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 3 1 ### Livestock ### -0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 724 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 728 4 1 +0 EDGAR8_CH4_ENF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 4 1 +0 EDGAR8_CH4_MNM $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_MNM_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 4 1 ### Landfills ### -0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 736 5 1 +0 EDGAR8_CH4_SWD_LDF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_LDF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 5 1 ### Wastewater ### -0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 743 6 1 +0 EDGAR8_CH4_WWT $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_WWT_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 6 1 ### Rice ### -0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 720 7 1 +0 EDGAR8_CH4_AGS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AGS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 7 1 ### Other Anthro ### -0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 723 8 1 -0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 726 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 737 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 738 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 739 8 1 -0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 742 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 740 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 741 8 1 -0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 733 8 1 -0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 722 8 1 -0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 727 8 1 -0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 721 8 1 -0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 735 8 1 -)))EDGARv7 +0 EDGAR8_CH4_ENE $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_IND $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IND_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_CDS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CDS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_CRS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CRS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_LTO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_LTO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TRO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Other $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Other_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Ship $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Ship_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_RCO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_RCO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_CHE $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_CHE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_IRO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_AWB $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AWB_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_SWD_INC $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_INC_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +)))EDGARv8 #============================================================================== # --- CH4: CEDS (historical) or Shared Socioeconomic Pathways (future) --- @@ -1442,33 +1407,6 @@ ${RUNDIR_CO2_COPROD} 11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 )))Scarpelli_Mexico.or.Scarpelli_Canada -(((EDGARv7 -720 EDGAR_SEASONAL_SF_AGS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -721 EDGAR_SEASONAL_SF_AWB $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AWB.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -722 EDGAR_SEASONAL_SF_CHE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_CHE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -723 EDGAR_SEASONAL_SF_ENE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -724 EDGAR_SEASONAL_SF_ENF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -725 EDGAR_SEASONAL_SF_FFF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_FFF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -726 EDGAR_SEASONAL_SF_IND $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IND.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -727 EDGAR_SEASONAL_SF_IRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -728 EDGAR_SEASONAL_SF_MNM $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_MNM.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -729 EDGAR_SEASONAL_SF_PRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -730 EDGAR_SEASONAL_SF_PRO_COAL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -731 EDGAR_SEASONAL_SF_PRO_GAS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -732 EDGAR_SEASONAL_SF_PRO_OIL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -733 EDGAR_SEASONAL_SF_RCO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_RCO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -734 EDGAR_SEASONAL_SF_REF_TRF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_REF_TRF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -735 EDGAR_SEASONAL_SF_SWD_INC $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_INC.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -736 EDGAR_SEASONAL_SF_SWD_LDF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_LDF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -737 EDGAR_SEASONAL_SF_TNR_AV_CDS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CDS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -738 EDGAR_SEASONAL_SF_TNR_AV_CRS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CRS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -739 EDGAR_SEASONAL_SF_TNR_AV_LTO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_LTO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -740 EDGAR_SEASONAL_SF_TNR_Other $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Other.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -741 EDGAR_SEASONAL_SF_TNR_SHIP $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Ship.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -742 EDGAR_SEASONAL_SF_TRO_noRes $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TRO_noRES.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -743 EDGAR_SEASONAL_SF_WWT $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_WWT.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -)))EDGARv7 - #============================================================================== # --- Diurnal scale factors --- #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index d72b36a9f..cb4b680bb 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -70,8 +70,7 @@ VerboseOnCores: root # Accepted values: root all --> Scarpelli_Mexico : true # 2015 # ----- GLOBAL INVENTORIES ---------------------------------------------------- --> GFEIv2 : true # 2019 - --> EDGARv6 : false # 2000-2018 - --> EDGARv7 : true # 2010-2021 + --> EDGARv8 : true # 2010-2022 --> QFED2 : false # 2009-2015 --> JPL_WETCHARTS : true # 2009-2017 --> SEEPS : true # 2012 @@ -514,140 +513,69 @@ VerboseOnCores: root # Accepted values: root all )))GFEIv2 #============================================================================== -# --- EDGAR v6.0 emissions --- +# --- EDGAR v8.0 emissions --- #============================================================================== -(((EDGARv6 -(((.not.EDGARv7 +(((EDGARv8 ### Oil ### -0 EDGAR6_CH4_OIL__1B2a_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OIL - 1 1 -0 EDGAR6_CH4_OIL__1B2a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 1 1 -0 EDGAR6_CH4_OTHER__1A1_1B1_1B2_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 1 1 -0 EDGAR6_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 1 1 +0 EDGAR8_CH4_PRO_OIL $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_OIL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OIL - 1 1 +0 EDGAR8_CH4_PRO_OIL_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_OIL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 1 1 +0 EDGAR8_CH4_REF_TRF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_REF_TRF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OIL - 1 1 +0 EDGAR8_CH4_REF_TRF_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_REF_TRF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 1 1 ### Gas ### -0 EDGAR6_CH4_OIL__1B2c_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_GAS - 2 1 -0 EDGAR6_CH4_OIL__1B2c $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 2 1 +0 EDGAR8_CH4_PRO_GAS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_GAS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_GAS - 2 1 +0 EDGAR8_CH4_PRO_GAS_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_GAS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 2 1 ### Coal ### -0 EDGAR6_CH4_COAL__1B1a_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_COL - 3 1 -0 EDGAR6_CH4_COAL__1B1a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 3 1 +0 EDGAR8_CH4_PRO_COAL $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_COAL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_COL - 3 1 +0 EDGAR8_CH4_PRO_COAL_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_COAL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 3 1 ### Livestock ### -0 EDGAR6_CH4_LIVESTOCK__4A_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_LIV - 4 1 -0 EDGAR6_CH4_LIVESTOCK__4A $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 4 1 -0 EDGAR6_CH4_LIVESTOCK__4B_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_LIV - 4 1 -0 EDGAR6_CH4_LIVESTOCK__4B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 4 1 +0 EDGAR8_CH4_ENF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_LIV - 4 1 +0 EDGAR8_CH4_ENF_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 4 1 +0 EDGAR8_CH4_MNM $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_MNM_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_LIV - 4 1 +0 EDGAR8_CH4_MNM_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_MNM_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 4 1 ### Landfills ### -0 EDGAR6_CH4_LANDFILLS__6A_6D_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_LDF - 5 1 -0 EDGAR6_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 5 1 +0 EDGAR8_CH4_SWD_LDF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_LDF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_LDF - 5 1 +0 EDGAR8_CH4_SWD_LDF_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_LDF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 5 1 ### Wastewater ### -0 EDGAR6_CH4_WASTEWATER__6B_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_WST - 6 1 -0 EDGAR6_CH4_WASTEWATER__6B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 6 1 +0 EDGAR8_CH4_WWT $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_WWT_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_WST - 6 1 +0 EDGAR8_CH4_WWT_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_WWT_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 6 1 ### Rice ### -0 EDGAR6_CH4_RICE__4C_4D_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_RIC - 7 1 -0 EDGAR6_CH4_RICE__4C_4D $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 7 1 +0 EDGAR8_CH4_AGS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AGS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_RIC - 7 1 +0 EDGAR8_CH4_AGS_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AGS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 7 1 ### Other Anthro ### -0 EDGAR6_CH4_OTHER__1A1a_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__1A1a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A2_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__1A2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_CDS_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_CRS_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_LTO_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3b_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__1A3b $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3c_1A3e_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3d_1C2_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A4_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__1A4 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__2B_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__2B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__2C_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__2C $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__4F_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__4F $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__6C_T $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR6_CH4_OTHER__6C $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -))).not.EDGARv7 -)))EDGARv6 - -#============================================================================== -# --- EDGAR v7.0 emissions --- -# -# NOTES: -# - These are annual emissions. Seasonality is applied via scale factors -# computed from EDGARv6.0 monthly emissions. -#============================================================================== -(((EDGARv7 -### Oil ### -0 EDGAR7_CH4_OIL__1B2a_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OIL 32 1 1 -0 EDGAR7_CH4_OIL__1B2a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 32 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 34 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 34 1 1 - -### Gas ### -0 EDGAR7_CH4_OIL__1B2c_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_GAS 31 2 1 -0 EDGAR7_CH4_OIL__1B2c $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 31 2 1 - -### Coal ### -0 EDGAR7_CH4_COAL__1B1a_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_COL 30 3 1 -0 EDGAR7_CH4_COAL__1B1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 30 3 1 - -### Livestock ### -0 EDGAR7_CH4_LIVESTOCK__4A_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_LIV 24 4 1 -0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 24 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_LIV 28 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 28 4 1 - -### Landfills ### -0 EDGAR7_CH4_LANDFILLS__6A_6D_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_LDF 36 5 1 -0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 36 5 1 - -### Wastewater ### -0 EDGAR7_CH4_WASTEWATER__6B_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_WST 43 6 1 -0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 43 6 1 - -### Rice ### -0 EDGAR7_CH4_RICE__4C_4D_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_RIC 20 7 1 -0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 20 7 1 - -### Other Anthro ### -0 EDGAR7_CH4_OTHER__1A1a_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 23 8 1 -0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 23 8 1 -0 EDGAR7_CH4_OTHER__1A2_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 26 8 1 -0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 26 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 37 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 37 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 38 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 38 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 39 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 39 8 1 -0 EDGAR7_CH4_OTHER__1A3b_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 42 8 1 -0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 42 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 40 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 40 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 41 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 41 8 1 -0 EDGAR7_CH4_OTHER__1A4_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 33 8 1 -0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 33 8 1 -0 EDGAR7_CH4_OTHER__2B_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 22 8 1 -0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 22 8 1 -0 EDGAR7_CH4_OTHER__2C_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 27 8 1 -0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 27 8 1 -0 EDGAR7_CH4_OTHER__4F_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 21 8 1 -0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 21 8 1 -0 EDGAR7_CH4_OTHER__6C_T $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4_OTA 35 8 1 -0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 35 8 1 -)))EDGARv7 +0 EDGAR8_CH4_ENE $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_ENE_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_IND $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IND_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_IND_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IND_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_CDS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CDS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_TNR_Aviation_CDS_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CDS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_CRS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CRS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_TNR_Aviation_CRS_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CRS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_LTO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_LTO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_TNR_Aviation_LTO_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_LTO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TRO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_TRO_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Other $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Other_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_TNR_Other_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Other_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Ship $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Ship_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_TNR_Ship_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Ship_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_RCO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_RCO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_RCO_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_RCO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_CHE $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_CHE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_CHE_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_CHE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_IRO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_IRO_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_AWB $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AWB_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_AWB_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AWB_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_SWD_INC $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_INC_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 +0 EDGAR8_CH4_SWD_INC_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_INC_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +)))EDGARv8 #============================================================================== # CEDS (historical) or Shared Socioeconomic Pathways (future) @@ -1156,33 +1084,6 @@ ${RUNDIR_GLOBAL_Cl} 11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 )))Scarpelli_Mexico.or.Scarpelli_Canada -(((EDGARv7 -20 EDGAR_SEASONAL_SF_AGS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -21 EDGAR_SEASONAL_SF_AWB $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AWB.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -22 EDGAR_SEASONAL_SF_CHE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_CHE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -23 EDGAR_SEASONAL_SF_ENE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -24 EDGAR_SEASONAL_SF_ENF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -25 EDGAR_SEASONAL_SF_FFF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_FFF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -26 EDGAR_SEASONAL_SF_IND $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IND.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -27 EDGAR_SEASONAL_SF_IRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -28 EDGAR_SEASONAL_SF_MNM $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_MNM.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -29 EDGAR_SEASONAL_SF_PRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -30 EDGAR_SEASONAL_SF_PRO_COAL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -31 EDGAR_SEASONAL_SF_PRO_GAS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -32 EDGAR_SEASONAL_SF_PRO_OIL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -33 EDGAR_SEASONAL_SF_RCO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_RCO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -34 EDGAR_SEASONAL_SF_REF_TRF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_REF_TRF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -35 EDGAR_SEASONAL_SF_SWD_INC $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_INC.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -36 EDGAR_SEASONAL_SF_SWD_LDF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_LDF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -37 EDGAR_SEASONAL_SF_TNR_AV_CDS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CDS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -38 EDGAR_SEASONAL_SF_TNR_AV_CRS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CRS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -39 EDGAR_SEASONAL_SF_TNR_AV_LTO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_LTO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -40 EDGAR_SEASONAL_SF_TNR_Other $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Other.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -41 EDGAR_SEASONAL_SF_TNR_SHIP $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Ship.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -42 EDGAR_SEASONAL_SF_TRO_noRes $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TRO_noRES.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -43 EDGAR_SEASONAL_SF_WWT $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_WWT.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -)))EDGARv7 - #============================================================================== # --- QFED2 diurnal scale factors --- # diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index 6ec3b4e6e..d87452fb1 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -234,29 +234,29 @@ GFEI_CH4_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Gl GFEI_CH4_GAS kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Gas_All.nc GFEI_CH4_COAL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Coal.nc -# --- EDGAR v7.0 --- -EDGAR7_CH4_OIL__1B2a kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_PRO_OIL.0.1x0.1.nc -EDGAR7_CH4_OIL__1B2c kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_PRO_GAS.0.1x0.1.nc -EDGAR7_CH4_COAL__1B1a kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_PRO_COAL.0.1x0.1.nc -EDGAR7_CH4_LIVESTOCK__4A kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENF.0.1x0.1.nc -EDGAR7_CH4_LIVESTOCK__4B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_MNM.0.1x0.1.nc -EDGAR7_CH4_LANDFILLS__6A_6D kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_SWD_LDF.0.1x0.1.nc -EDGAR7_CH4_WASTEWATER__6B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_WWT.0.1x0.1.nc -EDGAR7_CH4_RICE__4C_4D kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_AGS.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A1_1B1_1B2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_REF_TRF.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A1a kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_ENE.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_IND.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3a_CDS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_CDS.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3a_CRS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_CRS.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3a_LTO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Aviation_LTO.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3b kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TRO_noRES.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3c_1A3e kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Other.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A3d_1C2 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_TNR_Ship.0.1x0.1.nc -EDGAR7_CH4_OTHER__1A4 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_RCO.0.1x0.1.nc -EDGAR7_CH4_OTHER__2B kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_CHE.0.1x0.1.nc -EDGAR7_CH4_OTHER__2C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_IRO.0.1x0.1.nc -EDGAR7_CH4_OTHER__4F kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_AWB.0.1x0.1.nc -EDGAR7_CH4_OTHER__6C kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2023-04/EDGARv7/%y4/v7.0_FT2021_CH4_%y4_SWD_INC.0.1x0.1.nc +# --- EDGAR v8.0 --- +EDGAR8_CH4_PRO_OIL kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_PRO_OIL_flx.nc +EDGAR8_CH4_REF_TRF kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_REF_TRF_flx.nc +EDGAR8_CH4_PRO_GAS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_PRO_GAS_flx.nc +EDGAR8_CH4_PRO_COAL kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_PRO_COAL_flx.nc +EDGAR8_CH4_ENF kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_ENF_flx.nc +EDGAR8_CH4_MNM kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_MNM_flx.nc +EDGAR8_CH4_SWD_LDF kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_SWD_LDF_flx.nc +EDGAR8_CH4_WWT kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_WWT_flx.nc +EDGAR8_CH4_AGS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_AGS_flx.nc +EDGAR8_CH4_ENE kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_ENE_flx.nc +EDGAR8_CH4_IND kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_IND_flx.nc +EDGAR8_CH4_TNR_Aviation_CDS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_TNR_Aviation_CDS_flx.nc +EDGAR8_CH4_TNR_Aviation_CRS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_TNR_Aviation_CRS_flx.nc +EDGAR8_CH4_TNR_Aviation_LTO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_TNR_Aviation_LTO_flx.nc +EDGAR8_CH4_TRO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_TRO_flx.nc +EDGAR8_CH4_TNR_Other kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_TNR_Other_flx.nc +EDGAR8_CH4_TNR_Ship kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_TNR_Ship_flx.nc +EDGAR8_CH4_RCO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_RCO_flx.nc +EDGAR8_CH4_CHE kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_CHE_flx.nc +EDGAR8_CH4_IRO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_IRO_flx.nc +EDGAR8_CH4_AWB kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_AWB_flx.nc +EDGAR8_CH4_SWD_INC kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-02/EDGARv8/%y4/v8.0_FT2022_GHG_CH4_%y4_SWD_INC_flx.nc # --- CH4: CEDS (historical) or Shared Socioeconomic Pathways (future) --- # --- NOTE: This is only for GCAP2 meteorology, so we can comment out --- @@ -503,32 +503,6 @@ CO2_WEEKLY 1 2006 Y F%y4-%m2-%d2T00:00:00 none none weekly_scale_factors ./Hc MANURE_SF 1 N Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2017-10/Seasonal_SF/EMICH4_Manure_ScalingFactors.WithClimatology.nc RICE_SF 1 2012 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc -# --- Seasonal scale factors for EDGARv7 --- -EDGAR_SEASONAL_SF_AGS 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc -EDGAR_SEASONAL_SF_AWB 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AWB.0.1x0.1.nc -EDGAR_SEASONAL_SF_CHE 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_CHE.0.1x0.1.nc -EDGAR_SEASONAL_SF_ENE 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENE.0.1x0.1.nc -EDGAR_SEASONAL_SF_ENF 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENF.0.1x0.1.nc -EDGAR_SEASONAL_SF_FFF 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_FFF.0.1x0.1.nc -EDGAR_SEASONAL_SF_IND 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IND.0.1x0.1.nc -EDGAR_SEASONAL_SF_IRO 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IRO.0.1x0.1.nc -EDGAR_SEASONAL_SF_MNM 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_MNM.0.1x0.1.nc -EDGAR_SEASONAL_SF_PRO 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO.0.1x0.1.nc -EDGAR_SEASONAL_SF_PRO_COAL 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc -EDGAR_SEASONAL_SF_PRO_GAS 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc -EDGAR_SEASONAL_SF_PRO_OIL 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc -EDGAR_SEASONAL_SF_RCO 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_RCO.0.1x0.1.nc -EDGAR_SEASONAL_SF_REF_TRF 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_REF_TRF.0.1x0.1.nc -EDGAR_SEASONAL_SF_SWD_INC 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_INC.0.1x0.1.nc -EDGAR_SEASONAL_SF_SWD_LDF 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_LDF.0.1x0.1.nc -EDGAR_SEASONAL_SF_TNR_AV_CDS 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CDS.0.1x0.1.nc -EDGAR_SEASONAL_SF_TNR_AV_CRS 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CRS.0.1x0.1.nc -EDGAR_SEASONAL_SF_TNR_AV_LTO 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_LTO.0.1x0.1.nc -EDGAR_SEASONAL_SF_TNR_Other 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Other.0.1x0.1.nc -EDGAR_SEASONAL_SF_TNR_SHIP 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Ship.0.1x0.1.nc -EDGAR_SEASONAL_SF_TRO_noRes 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TRO_noRES.0.1x0.1.nc -EDGAR_SEASONAL_SF_WWT 1 2018 Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_WWT.0.1x0.1.nc - #--- annual scale factors --- ## Need DC0360xPC0181_CFnnnnx6C.bin #LIQFUEL_THISYR 1 N Y F%y4-01-01T00:00:00 none none COscalar ./HcoDir/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 7c5ca7378..208f8861d 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -70,8 +70,7 @@ Mask fractions: false --> Scarpelli_Mexico : true # 2015 # ..... Global Inventories ........... --> GFEIv2 : true # 2019 - --> EDGARv6 : false # 2000-2018 - --> EDGARv7 : true # 2010-2021 + --> EDGARv8 : true # 2010-2022 --> QFED2 : false # 2009-2015 --> JPL_WETCHARTS : true # 2009-2017 --> SEEPS : true # 2012 @@ -408,81 +407,47 @@ Mask fractions: false )))GFEIv2 #============================================================================== -# --- CH4: EDGAR v6.0 emissions --- -#============================================================================== -(((EDGARv6 -(((.not.EDGARv7 -0 EDGAR6_CH4_OIL__1B2a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 1 1 -0 EDGAR6_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 1 1 -0 EDGAR6_CH4_OIL__1B2c $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 2 1 -0 EDGAR6_CH4_COAL__1B1a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 3 1 -0 EDGAR6_CH4_LIVESTOCK__4A $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 4 1 -0 EDGAR6_CH4_LIVESTOCK__4B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 4 1 -0 EDGAR6_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 5 1 -0 EDGAR6_CH4_WASTEWATER__6B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 6 1 -0 EDGAR6_CH4_RICE__4C_4D $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 7 1 -0 EDGAR6_CH4_OTHER__1A1a $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3b $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__1A4 $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__2B $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__2C $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__4F $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR6_CH4_OTHER__6C $ROOT/CH4/v2022-11/EDGARv6/$YYYY/v6.0_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2000-2018/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -))).not.EDGARv7 -)))EDGARv6 - -#============================================================================== -# --- EDGAR v7.0 emissions --- -# -# NOTES: -# - These are annual emissions. Seasonality is applied via scale factors -# computed from EDGARv6.0 monthly emissions. +# --- CH4: EDGAR v8.0 emissions --- #============================================================================== -(((EDGARv7 +(((EDGARv8 ### Oil ### -0 EDGAR7_CH4_OIL__1B2a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_OIL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 732 1 1 -0 EDGAR7_CH4_OTHER__1A1_1B1_1B2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_REF_TRF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 734 1 1 +0 EDGAR8_CH4_PRO_OIL $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_OIL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 1 1 +0 EDGAR8_CH4_REF_TRF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_REF_TRF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 1 1 ### Gas ### -0 EDGAR7_CH4_OIL__1B2c $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_GAS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 731 2 1 +0 EDGAR8_CH4_PRO_GAS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_GAS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 2 1 ### Coal ### -0 EDGAR7_CH4_COAL__1B1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_PRO_COAL.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 730 3 1 +0 EDGAR8_CH4_PRO_COAL $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_COAL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 3 1 ### Livestock ### -0 EDGAR7_CH4_LIVESTOCK__4A $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 724 4 1 -0 EDGAR7_CH4_LIVESTOCK__4B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_MNM.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 728 4 1 +0 EDGAR8_CH4_ENF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 4 1 +0 EDGAR8_CH4_MNM $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_MNM_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 4 1 ### Landfills ### -0 EDGAR7_CH4_LANDFILLS__6A_6D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_LDF.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 736 5 1 +0 EDGAR8_CH4_SWD_LDF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_LDF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 5 1 ### Wastewater ### -0 EDGAR7_CH4_WASTEWATER__6B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_WWT.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 743 6 1 +0 EDGAR8_CH4_WWT $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_WWT_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 6 1 ### Rice ### -0 EDGAR7_CH4_RICE__4C_4D $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AGS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 720 7 1 +0 EDGAR8_CH4_AGS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AGS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 7 1 ### Other Anthro ### -0 EDGAR7_CH4_OTHER__1A1a $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_ENE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 723 8 1 -0 EDGAR7_CH4_OTHER__1A2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IND.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 726 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CDS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CDS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 737 8 1 -0 EDGAR7_CH4_OTHER__1A3a_CRS $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_CRS.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 738 8 1 -0 EDGAR7_CH4_OTHER__1A3a_LTO $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Aviation_LTO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 739 8 1 -0 EDGAR7_CH4_OTHER__1A3b $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TRO_noRES.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 742 8 1 -0 EDGAR7_CH4_OTHER__1A3c_1A3e $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Other.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 740 8 1 -0 EDGAR7_CH4_OTHER__1A3d_1C2 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_TNR_Ship.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 741 8 1 -0 EDGAR7_CH4_OTHER__1A4 $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_RCO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 733 8 1 -0 EDGAR7_CH4_OTHER__2B $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_CHE.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 722 8 1 -0 EDGAR7_CH4_OTHER__2C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_IRO.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 727 8 1 -0 EDGAR7_CH4_OTHER__4F $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_AWB.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 721 8 1 -0 EDGAR7_CH4_OTHER__6C $ROOT/CH4/v2023-04/EDGARv7/$YYYY/v7.0_FT2021_CH4_$YYYY_SWD_INC.0.1x0.1.nc emi_ch4 2010-2021/1-12/1/0 C xy kg/m2/s CH4 735 8 1 -)))EDGARv7 +0 EDGAR8_CH4_ENE $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_IND $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IND_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_CDS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CDS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_CRS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CRS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Aviation_LTO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_LTO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TRO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Other $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Other_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_TNR_Ship $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Ship_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_RCO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_RCO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_CHE $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_CHE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_IRO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_AWB $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AWB_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +0 EDGAR8_CH4_SWD_INC $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_INC_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 +)))EDGARv8 #============================================================================== # --- CH4: CEDS (historical) or Shared Socioeconomic Pathways (future) --- @@ -1442,33 +1407,6 @@ ${RUNDIR_CO2_COPROD} 11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 )))Scarpelli_Mexico.or.Scarpelli_Canada -(((EDGARv7 -720 EDGAR_SEASONAL_SF_AGS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AGS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -721 EDGAR_SEASONAL_SF_AWB $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_AWB.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -722 EDGAR_SEASONAL_SF_CHE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_CHE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -723 EDGAR_SEASONAL_SF_ENE $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENE.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -724 EDGAR_SEASONAL_SF_ENF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_ENF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -725 EDGAR_SEASONAL_SF_FFF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_FFF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -726 EDGAR_SEASONAL_SF_IND $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IND.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -727 EDGAR_SEASONAL_SF_IRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_IRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -728 EDGAR_SEASONAL_SF_MNM $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_MNM.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -729 EDGAR_SEASONAL_SF_PRO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -730 EDGAR_SEASONAL_SF_PRO_COAL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_COAL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -731 EDGAR_SEASONAL_SF_PRO_GAS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_GAS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -732 EDGAR_SEASONAL_SF_PRO_OIL $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_PRO_OIL.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -733 EDGAR_SEASONAL_SF_RCO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_RCO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -734 EDGAR_SEASONAL_SF_REF_TRF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_REF_TRF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -735 EDGAR_SEASONAL_SF_SWD_INC $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_INC.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -736 EDGAR_SEASONAL_SF_SWD_LDF $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_SWD_LDF.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -737 EDGAR_SEASONAL_SF_TNR_AV_CDS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CDS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -738 EDGAR_SEASONAL_SF_TNR_AV_CRS $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_CRS.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -739 EDGAR_SEASONAL_SF_TNR_AV_LTO $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Aviation_LTO.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -740 EDGAR_SEASONAL_SF_TNR_Other $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Other.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -741 EDGAR_SEASONAL_SF_TNR_SHIP $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TNR_Ship.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -742 EDGAR_SEASONAL_SF_TRO_noRes $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_TRO_noRES.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -743 EDGAR_SEASONAL_SF_WWT $ROOT/CH4/v2023-04/EDGARv6_SF/EDGARv6_CH4_MonthlyScaleFactors_WWT.0.1x0.1.nc sf_ch4 2018/1-12/1/0 C xy 1 1 -)))EDGARv7 - #============================================================================== # --- Diurnal scale factors --- #============================================================================== From 20e2402baf56c682cc04af74adb139efdb6ca000 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Tue, 2 Apr 2024 11:15:43 -0400 Subject: [PATCH 193/331] Update CHANGELOG.md for 14.3.1 release Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cea05d1b1..d0fbcf5be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] - TBD +## [14.3.1] - 2024-04-02 ### Added - Added operational run scripts for the Imperial College London (ICL) cluster - Added new vertical region option to budget diagnostic for fixed bottom and top levels From 670059d776ff6d409ff40d957577a14d52302075 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Thu, 4 Apr 2024 15:11:03 -0400 Subject: [PATCH 194/331] Added CO2, CO, and OCS single-tracer carbon simulations to the integration tests The carbon simulation will soon replace the existing CO2, CH4, and tagCO specialty simulations. We now add single-tracer carbon simulations for CO2, CO, and OCS (CH4 was added previously) to the GCClassic and GCHP integration tests. Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 1 + test/integration/GCClassic/integrationTestCreate.sh | 12 ++++++++++-- test/integration/GCHP/integrationTestCreate.sh | 9 +++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 697a8c638..c7d3bb8f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] - TBD ### Added - Diel and day-of-week scale factors for CEDS global base emissions +- Added CO2, CO, and OCS single-tracer carbon simulations to the integration tests ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index 226091db0..f9a381096 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -208,8 +208,16 @@ if [[ "X${testsToRun}" == "XALL" ]]; then create_rundir "12\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 carbon CH4 only - dir="gc_4x5_merra2_carbon_CH4only" - create_rundir "12\n2\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" + create_rundir "12\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + + # 4x5 merra2 carbon CO2 only + create_rundir "12\n3\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + + # 4x5 merra2 carbon CO only + create_rundir "12\n4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + + # 4x5 merra2 carbon OCS only + create_rundir "12\n5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 fullchem create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" diff --git a/test/integration/GCHP/integrationTestCreate.sh b/test/integration/GCHP/integrationTestCreate.sh index c23ff75db..b5609f8de 100755 --- a/test/integration/GCHP/integrationTestCreate.sh +++ b/test/integration/GCHP/integrationTestCreate.sh @@ -208,6 +208,15 @@ if [[ "X${testsToRun}" == "XALL" ]]; then # c24 merra2 carbon CH4 only create_rundir "5\n2\n1\n${rundirsDir}\n\nn\n" "${log}" + # c24 merra2 carbon CO2 only + create_rundir "5\n3\n1\n${rundirsDir}\n\nn\n" "${log}" + + # c24 merra2 carbon CO only + create_rundir "5\n4\n1\n${rundirsDir}\n\nn\n" "${log}" + + # c24 merra2 carbon OCS only + create_rundir "5\n5\n1\n${rundirsDir}\n\nn\n" "${log}" + # Exit after creating a couple of rundirs if $quick is "yes" if [[ "X${quick}" == "XYES" ]]; then cd ${thisDir} From 74e1da29e73c158c353be1847e313009e5a9d8eb Mon Sep 17 00:00:00 2001 From: Hannah Nesser Date: Thu, 4 Apr 2024 14:24:53 -0700 Subject: [PATCH 195/331] Removing superfluous variables unused by the simulation --- GeosCore/co2_mod.F90 | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/GeosCore/co2_mod.F90 b/GeosCore/co2_mod.F90 index 229b9dd8b..f6006bfc1 100644 --- a/GeosCore/co2_mod.F90 +++ b/GeosCore/co2_mod.F90 @@ -959,16 +959,8 @@ SUBROUTINE INIT_CO2( Input_Opt, State_Grid, RC ) INTEGER :: AS ! For values from Input_Opt - LOGICAL :: LFOSSIL LOGICAL :: LCHEMCO2 - LOGICAL :: LBIODIURNAL - LOGICAL :: LBIONETCLIM - LOGICAL :: LOCEAN - LOGICAL :: LSHIP - LOGICAL :: LPLANE - LOGICAL :: LFFBKGRD - LOGICAL :: LBIOSPHTAG, LFOSSILTAG, LSHIPTAG - LOGICAL :: LPLANETAG + LOGICAL :: LBIOSPHTAG, LFOSSILTAG !================================================================= ! INIT_CO2 begins here! @@ -982,18 +974,9 @@ SUBROUTINE INIT_CO2( Input_Opt, State_Grid, RC ) IF ( IS_INIT .or. Input_Opt%DryRun ) RETURN ! Copy values from Input_Opt - LFOSSIL = Input_Opt%LFOSSIL LCHEMCO2 = Input_Opt%LCHEMCO2 - LBIODIURNAL = Input_Opt%LBIODIURNAL - LBIONETCLIM = Input_Opt%LBIONETCLIM - LOCEAN = Input_Opt%LOCEAN - LSHIP = Input_Opt%LSHIP - LPLANE = Input_Opt%LPLANE - LFFBKGRD = Input_Opt%LFFBKGRD LBIOSPHTAG = Input_Opt%LBIOSPHTAG LFOSSILTAG = Input_Opt%LFOSSILTAG - LSHIPTAG = Input_Opt%LSHIPTAG - LPLANETAG = Input_Opt%LPLANETAG ! Array for Fossil Fuel regions ALLOCATE( FOSSIL_REGION( State_Grid%NX, State_Grid%NY ), STAT=AS ) From 4af00edac2270df5580001c251b5b3ffba2dedd5 Mon Sep 17 00:00:00 2001 From: Hannah Nesser Date: Thu, 4 Apr 2024 14:35:09 -0700 Subject: [PATCH 196/331] Simplified the CO2 simulation options in geoschem_config by removing all fields that were unused by the simulation Removed the following menu options: - fossil_fuel_emissions - ocean_exchange - balanced_biosphere_exchange - net_terrestrial_exchange - ship_emissions - aviation_emissions - save_fossil_fuel_in_background - tag_global_ship_CO2 - tag_global_aircraft_CO2 These are now handled in HEMCO, I believe, with the exception of the tag options. All of these options were not used anywhere in GEOS-Chem, other than to assign the variables. --- GeosCore/input_mod.F90 | 126 ------------------ Headers/input_opt_mod.F90 | 19 --- .../geoschem_config.yml.CO2 | 9 -- .../geoschem_config.yml.carbon | 9 -- .../geoschem_config.yml.carbon | 9 -- run/WRF/co2/geoschem_config.yml | 9 -- run/shared/singleCarbonSpecies.sh | 13 +- 7 files changed, 2 insertions(+), 192 deletions(-) diff --git a/GeosCore/input_mod.F90 b/GeosCore/input_mod.F90 index 3190aa6dd..b5c955e18 100644 --- a/GeosCore/input_mod.F90 +++ b/GeosCore/input_mod.F90 @@ -2173,84 +2173,6 @@ SUBROUTINE Config_CO2( Config, Input_Opt, RC ) errMsg = '' thisLoc = ' -> at Config_CO2 (in module GeosCore/input_mod.F90)' - !------------------------------------------------------------------------ - ! Use Fossil Fuel emissions? - !------------------------------------------------------------------------ - key = "CO2_simulation_options%sources%fossil_fuel_emissions" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LFOSSIL = v_bool - - !------------------------------------------------------------------------ - ! Use Ocean Exchange? - !------------------------------------------------------------------------ - key = "CO2_simulation_options%sources%ocean_exchange" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LOCEAN = v_bool - - !------------------------------------------------------------------------ - ! Turn on (balanced) biosphere with diurnal cycle? - !------------------------------------------------------------------------ - key = "CO2_simulation_options%sources%balanced_biosphere_exchange" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LBIODIURNAL = v_bool - - !------------------------------------------------------------------------ - ! Use Net Terrestrial Exchange Climatology? - !------------------------------------------------------------------------ - key = "CO2_simulation_options%sources%net_terrestrial_exchange" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LBIONETCLIM = v_bool - - !------------------------------------------------------------------------ - ! Turn on Ship emissions? - !------------------------------------------------------------------------ - key = "CO2_simulation_options%sources%ship_emissions" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LSHIP = v_bool - - !------------------------------------------------------------------------ - ! Turn on Aviation emissions? - !------------------------------------------------------------------------ - key = "CO2_simulation_options%sources%aviation_emissions" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LPLANE = v_bool - !------------------------------------------------------------------------ ! Turn on CO2 3D chemical source and surface correction? !------------------------------------------------------------------------ @@ -2264,19 +2186,6 @@ SUBROUTINE Config_CO2( Config, Input_Opt, RC ) ENDIF Input_Opt%LCHEMCO2 = v_bool - !------------------------------------------------------------------------ - ! Background CO2 (no emissions or exchange) for Tagged-CO2 runs - !------------------------------------------------------------------------ - key = "CO2_simulation_options%tagged_species%save_fossil_fuel_in_background" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LFFBKGRD = v_bool - !------------------------------------------------------------------------ ! Turn on biosphere and ocean exchange region tagged species? !------------------------------------------------------------------------ @@ -2303,32 +2212,6 @@ SUBROUTINE Config_CO2( Config, Input_Opt, RC ) ENDIF Input_Opt%LFOSSILTAG = v_bool - !------------------------------------------------------------------------ - ! Turn on global ship emissions tagged species? - !------------------------------------------------------------------------ - key = "CO2_simulation_options%tagged_species%tag_global_ship_CO2" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LSHIPTAG = v_bool - - !------------------------------------------------------------------------ - ! Turn on global aircraft emissions tagged species? - !------------------------------------------------------------------------ - key = "CO2_simulation_options%tagged_species%tag_global_aircraft_CO2" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, key, v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LPLANETAG = v_bool - !================================================================= ! Print to screen !================================================================= @@ -2336,19 +2219,10 @@ SUBROUTINE Config_CO2( Config, Input_Opt, RC ) WRITE( 6,90 ) 'CO2 SIMULATION SETTINGS' WRITE( 6,95 ) '(overwrites any other settings related to CO2)' WRITE( 6,95 ) '----------------------------------------------' - WRITE( 6,100 ) 'National Fossil Fuel Emission :', Input_Opt%LFOSSIL - WRITE( 6,100 ) 'Ocean CO2 Uptake/Emission :', Input_Opt%LOCEAN - WRITE( 6,100 ) 'Biosphere seas/diurnal cycle :', Input_Opt%LBIODIURNAL - WRITE( 6,100 ) 'Net Terr Exch - Climatology :', Input_Opt%LBIONETCLIM - WRITE( 6,100 ) 'Intl/Domestic Ship emissions :', Input_Opt%LSHIP - WRITE( 6,100 ) 'Intl/Domestic Aviation emiss :', Input_Opt%LPLANE WRITE( 6,100 ) 'CO2 from oxidation (CO,CH4,..):', Input_Opt%LCHEMCO2 WRITE( 6, 95 ) 'Tagged CO2 settings' - WRITE( 6,100 ) ' Save Fossil CO2 in Bckgrnd :', Input_Opt%LFFBKGRD WRITE( 6,100 ) ' Tag Biosphere/Ocean CO2 :', Input_Opt%LBIOSPHTAG WRITE( 6,100 ) ' Tag Fossil Fuel CO2 :', Input_Opt%LFOSSILTAG - WRITE( 6,100 ) ' Tag Global Ship CO2 :', Input_Opt%LSHIPTAG - WRITE( 6,100 ) ' Tag Global Aviation CO2 :', Input_Opt%LPLANETAG ENDIF ! FORMAT statements diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index 9bf7dd01c..06024780a 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -159,18 +159,9 @@ MODULE Input_Opt_Mod !---------------------------------------- ! CO2 MENU fields !---------------------------------------- - LOGICAL :: LFOSSIL LOGICAL :: LCHEMCO2 - LOGICAL :: LBIODIURNAL - LOGICAL :: LBIONETCLIM - LOGICAL :: LOCEAN - LOGICAL :: LSHIP - LOGICAL :: LPLANE - LOGICAL :: LFFBKGRD LOGICAL :: LBIOSPHTAG LOGICAL :: LFOSSILTAG - LOGICAL :: LSHIPTAG - LOGICAL :: LPLANETAG !---------------------------------------- ! CHEMISTRY MENU fields @@ -682,19 +673,9 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) !---------------------------------------- ! CO2 MENU fields !---------------------------------------- - Input_Opt%LFOSSIL = .FALSE. Input_Opt%LCHEMCO2 = .FALSE. - Input_Opt%LBIOFUEL = .FALSE. - Input_Opt%LBIODIURNAL = .FALSE. - Input_Opt%LBIONETCLIM = .FALSE. - Input_Opt%LOCEAN = .FALSE. - Input_Opt%LSHIP = .FALSE. - Input_Opt%LPLANE = .FALSE. - Input_Opt%LFFBKGRD = .FALSE. Input_Opt%LBIOSPHTAG = .FALSE. Input_Opt%LFOSSILTAG = .FALSE. - Input_Opt%LSHIPTAG = .FALSE. - Input_Opt%LPLANETAG = .FALSE. !---------------------------------------- ! CHEMISTRY MENU fields diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CO2 b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CO2 index 3a125a074..115bca3a6 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CO2 +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CO2 @@ -73,20 +73,11 @@ operations: CO2_simulation_options: sources: - fossil_fuel_emissions: true - ocean_exchange: true - balanced_biosphere_exchange: true - net_terrestrial_exchange: true - ship_emissions: true - aviation_emissions: true 3D_chemical_oxidation_source: true tagged_species: - save_fossil_fuel_in_background: false tag_bio_and_ocean_CO2: false tag_land_fossil_fuel_CO2: - tag_global_ship_CO2: false - tag_global_aircraft_CO2: false #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon index 3eb7e5dad..108550d45 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon @@ -96,20 +96,11 @@ CO_simulation_options: CO2_simulation_options: sources: - fossil_fuel_emissions: true - ocean_exchange: true - balanced_biosphere_exchange: true - net_terrestrial_exchange: true - ship_emissions: true - aviation_emissions: true 3D_chemical_oxidation_source: true tagged_species: - save_fossil_fuel_in_background: false tag_bio_and_ocean_CO2: false tag_land_fossil_fuel_CO2: - tag_global_ship_CO2: false - tag_global_aircraft_CO2: false #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) diff --git a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.carbon b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.carbon index f19df07c6..cc96503d3 100644 --- a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.carbon +++ b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.carbon @@ -71,20 +71,11 @@ CO_simulation_options: CO2_simulation_options: sources: - fossil_fuel_emissions: true - ocean_exchange: true - balanced_biosphere_exchange: true - net_terrestrial_exchange: true - ship_emissions: true - aviation_emissions: true 3D_chemical_oxidation_source: true tagged_species: - save_fossil_fuel_in_background: false tag_bio_and_ocean_CO2: false tag_land_fossil_fuel_CO2: - tag_global_ship_CO2: false - tag_global_aircraft_CO2: false #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) diff --git a/run/WRF/co2/geoschem_config.yml b/run/WRF/co2/geoschem_config.yml index b8a5df3c4..1b9c89f9d 100644 --- a/run/WRF/co2/geoschem_config.yml +++ b/run/WRF/co2/geoschem_config.yml @@ -52,20 +52,11 @@ operations: CO2_simulation_options: sources: - fossil_fuel_emissions: true - ocean_exchange: true - balanced_biosphere_exchange: true - net_terrestrial_exchange: true - ship_emissions: true - aviation_emissions: true 3D_chemical_oxidation_source: true tagged_species: - save_fossil_fuel_in_background: false tag_bio_and_ocean_CO2: false tag_land_fossil_fuel_CO2: - tag_global_ship_CO2: false - tag_global_aircraft_CO2: false #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) diff --git a/run/shared/singleCarbonSpecies.sh b/run/shared/singleCarbonSpecies.sh index 775a11574..b9647968b 100755 --- a/run/shared/singleCarbonSpecies.sh +++ b/run/shared/singleCarbonSpecies.sh @@ -116,18 +116,9 @@ function updateGeosChemConfig() { # If CO2 is in the exclude list, turn off CO2 options isItemInList "CO2" "${1}" if [[ $? == 0 ]]; then - keys=("fossil_fuel_emissions" \ - "ocean_exchange" \ - "balanced_biosphere_exchange" \ - "net_terrestrial_exchange" \ - "ship_emissions" \ - "aviation_emissions" \ - "3D_chemical_oxidation_source" \ - "save_fossil_fuel_in_background" \ + keys=("3D_chemical_oxidation_source" \ "tag_bio_and_ocean_CO2" \ - "tag_land_fossil_fuel_CO2" \ - "tag_global_ship_CO2" \ - "tag_global_aircraft_CO2" ) + "tag_land_fossil_fuel_CO2" ) for key in ${keys[@]}; do keyValueUpdate "${key}" "true" "false" "${file}" done From a4f64790f8717a3e27872e2f5a9fa9767e360b7e Mon Sep 17 00:00:00 2001 From: Hannah Nesser Date: Thu, 4 Apr 2024 14:49:31 -0700 Subject: [PATCH 197/331] Added default false option for tagged fossil fuel simulation, which was previously left blank --- .../geoschem_config.yml.templates/geoschem_config.yml.CO2 | 2 +- .../geoschem_config.yml.templates/geoschem_config.yml.carbon | 2 +- .../geoschem_config.yml.templates/geoschem_config.yml.carbon | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CO2 b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CO2 index 115bca3a6..dd43be87f 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CO2 +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.CO2 @@ -77,7 +77,7 @@ CO2_simulation_options: tagged_species: tag_bio_and_ocean_CO2: false - tag_land_fossil_fuel_CO2: + tag_land_fossil_fuel_CO2: false #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon index 108550d45..0a2125d2f 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.carbon @@ -100,7 +100,7 @@ CO2_simulation_options: tagged_species: tag_bio_and_ocean_CO2: false - tag_land_fossil_fuel_CO2: + tag_land_fossil_fuel_CO2: false #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) diff --git a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.carbon b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.carbon index cc96503d3..323f4f2d8 100644 --- a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.carbon +++ b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.carbon @@ -75,7 +75,7 @@ CO2_simulation_options: tagged_species: tag_bio_and_ocean_CO2: false - tag_land_fossil_fuel_CO2: + tag_land_fossil_fuel_CO2: false #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) From 77b89f594354d6159657b672c17dc893412ddd0e Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 5 Apr 2024 11:52:36 -0400 Subject: [PATCH 198/331] Fix logic in the updateHistory function in singleCarbonSpecies.sh run/shared/singleCarbonSpecies.sh - Now also remove lines from HISTORY.rc with a space after the species name (such as '_CO ') - Disable the Emissions collection for OCS-only simulations (as we do not yet have OCS emissions). This is only relevant for GCHP. Signed-off-by: Bob Yantosca --- run/shared/singleCarbonSpecies.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/run/shared/singleCarbonSpecies.sh b/run/shared/singleCarbonSpecies.sh index fdcdc11a3..0ed2568e0 100755 --- a/run/shared/singleCarbonSpecies.sh +++ b/run/shared/singleCarbonSpecies.sh @@ -220,9 +220,17 @@ function updateHistory() { # For GCHP: remove entries for species to be excluded for spc in ${1}; do - sed -i "/\_${spc}/d" "${file}" - sed -i "/Emis${spc}/d" "${file}" + sed -i "/\_${spc}'/d" "${file}" + sed -i "/\_${spc} '/d" "${file}" + sed -i "/Emis${spc}_/d" "${file}" done + + # Also disable emissions for OCS-only simulations + # (as we currently do not have any) + isItemInList "OCS" "${1}" + if [[ $? == 1 ]]; then + sed -i -e "s/'Emissions/#'Emissions/" "${file}" + fi } From a6914fed5c48e7cfa9d4402c21a23457a8bd2d95 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 5 Apr 2024 12:46:10 -0400 Subject: [PATCH 199/331] Bug fix: add comma after DEPvw in parallel loop (drydep_mod.F90) GeosCore/drydep_mod.F90 - Added a comma following DEPVw in the !$OMP PRIVATE clause. This caused a syntax error in compilation. Signed-off-by: Bob Yantosca --- GeosCore/drydep_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeosCore/drydep_mod.F90 b/GeosCore/drydep_mod.F90 index f47d701ee..1d9694211 100644 --- a/GeosCore/drydep_mod.F90 +++ b/GeosCore/drydep_mod.F90 @@ -1344,7 +1344,7 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & !$OMP PRIVATE( DUMMY1, DUMMY2, DUMMY3, DUMMY4, DAIR, RB )& !$OMP PRIVATE( C1X, VK, I, J, IW )& !$OMP PRIVATE( DIAM, DEN, XLAI_FP, SUNCOS_FP, CFRAC_FP )& - !$OMP PRIVATE( N_SPC, alpha, DEPVw VTSoutput, VTSoutput_ )& + !$OMP PRIVATE( N_SPC, alpha, DEPVw, VTSoutput, VTSoutput_ )& #ifdef TOMAS !$OMP PRIVATE( BIN )& #endif From a2db197a10de6458a2e25311697905d8c12deff2 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 5 Apr 2024 13:25:03 -0400 Subject: [PATCH 200/331] Bug fix: Use [ \t]* in regexp in singleCarbonSpecies.sh run/shared/singleCarbonSpecies.sh - Now use the regexp "[ \t]*" to remove an arbitrary number of tabs and spaces when removing lines from the HISTORY.rc file. Signed-off-by: Bob Yantosca --- run/shared/singleCarbonSpecies.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/run/shared/singleCarbonSpecies.sh b/run/shared/singleCarbonSpecies.sh index 0ed2568e0..da4f88fc9 100755 --- a/run/shared/singleCarbonSpecies.sh +++ b/run/shared/singleCarbonSpecies.sh @@ -220,9 +220,8 @@ function updateHistory() { # For GCHP: remove entries for species to be excluded for spc in ${1}; do - sed -i "/\_${spc}'/d" "${file}" - sed -i "/\_${spc} '/d" "${file}" - sed -i "/Emis${spc}_/d" "${file}" + sed -i "/\_${spc}[ \t]*'/d" "${file}" + sed -i "/Emis${spc}_/d" "${file}" done # Also disable emissions for OCS-only simulations From 371c8e3f895dc6dc1fa38025dd94b9cacd69863b Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 5 Apr 2024 15:41:48 -0400 Subject: [PATCH 201/331] Bug fix: Remove EDGAR8 in ExtData.rc for single carbon rundirs run/shared/singleCarbonSpecies.sh - Bug fix: Remove lines beginning with EDGAR8 from ExtData.rc for carbon simulations that do not include CH4. This is now necessary since EDGARv8 replaces EDGARv7 in carbon simulations. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + run/shared/singleCarbonSpecies.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7d3bb8f1..d3d94f5cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Fix issues that prevented single-species carbon simulations from running - Update `HEMCO_Config.rc.carbon` and `ExtData.rc.carbon` templates for consistency - Updated several emissions files for CO and CH4 for COARDS and MAPL compliance +- Fixed several issues in GCHP single-species carbon simulation setup scripts ### Removed - Legacy binary punch diagnostic code contained within `#ifdef BPCH_DIAG` blocks diff --git a/run/shared/singleCarbonSpecies.sh b/run/shared/singleCarbonSpecies.sh index da4f88fc9..79f39ae21 100755 --- a/run/shared/singleCarbonSpecies.sh +++ b/run/shared/singleCarbonSpecies.sh @@ -256,7 +256,7 @@ function updateExtData() { sed -i "/^MEX_/d" "${file}" sed -i "/^CAN_/d" "${file}" sed -i "/^GFEI_/d" "${file}" - sed -i "/^EDGAR7_CH4_/d" "${file}" + sed -i "/^EDGAR8_CH4_/d" "${file}" sed -i "/CMIP6_CH4_/d" "${file}" sed -i "/CMIP6_BB_CH4/d" "${file}" sed -i "/^UPDATED_GFED4_CH4/d" "${file}" From 39a103c67503f81cb0675e1a0d987489596e7f0f Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 5 Apr 2024 17:31:31 -0400 Subject: [PATCH 202/331] Fix issues in run/GCHP/HISTORY.rc.carbon run/GCHP/HISTORY.rc.carbon - Add ", 'GCHPchem"," column to each of the fields in the Metrics collection. This causes an issue in parsing the file. - Removed "#" separators in the Budget collection Signed-off-by: Bob Yantosca --- .../HISTORY.rc.templates/HISTORY.rc.carbon | 25 ++++++------------- 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon index caaae2a48..0ffb98d3f 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon @@ -150,13 +150,13 @@ COLLECTIONS: 'Emissions', Metrics.frequency: 'End', Metrics.duration: 'End', Metrics.mode: 'time-averaged' - Metrics.fields: 'AirMassColumnFull ', - 'CH4emission ', - 'CH4massColumnFull ', - 'CH4massColumnTrop ', - 'LossOHbyCH4columnTrop ', - 'LossOHbyMCFcolumnTrop ', - 'OHwgtByAirMassColumnFull ', + Metrics.fields: 'AirMassColumnFull ', 'GCHPchem', + 'CH4emission ', 'GCHPchem', + 'CH4massColumnFull ', 'GCHPchem', + 'CH4massColumnTrop ', 'GCHPchem', + 'LossOHbyCH4columnTrop ', 'GCHPchem', + 'LossOHbyMCFcolumnTrop ', 'GCHPchem', + 'OHwgtByAirMassColumnFull ', 'GCHPchem', :: #============================================================================== SpeciesConc.template: '%y4%m2%d2_%h2%n2z.nc4', @@ -190,57 +190,46 @@ COLLECTIONS: 'Emissions', 'BudgetEmisDryDepTrop_CH4 ', 'GCHPchem', 'BudgetEmisDryDepPBL_CH4 ', 'GCHPchem', 'BudgetEmisDryDepLevs1to35_CH4 ', 'GCHPchem', - # 'BudgetMixingFull_CH4 ', 'GCHPchem', 'BudgetMixingTrop_CH4 ', 'GCHPchem', 'BudgetMixingPBL_CH4 ', 'GCHPchem', 'BudgetMixingLevs1to35_CH4 ', 'GCHPchem', - # 'BudgetConvectionFull_CH4 ', 'GCHPchem', 'BudgetConvectionTrop_CH4 ', 'GCHPchem', 'BudgetConvectionPBL_CH4 ', 'GCHPchem', 'BudgetConvectionLevs1to35_CH4 ', 'GCHPchem', - # 'BudgetEmisDryDepFull_CO ', 'GCHPchem', 'BudgetEmisDryDepTrop_CO ', 'GCHPchem', 'BudgetEmisDryDepPBL_CO ', 'GCHPchem', 'BudgetEmisDryDepLevs1to35_CO ', 'GCHPchem', - # 'BudgetMixingFull_CO ', 'GCHPchem', 'BudgetMixingTrop_CO ', 'GCHPchem', 'BudgetMixingPBL_CO ', 'GCHPchem', 'BudgetMixingLevs1to35_CO ', 'GCHPchem', - # 'BudgetConvectionFull_CO ', 'GCHPchem', 'BudgetConvectionTrop_CO ', 'GCHPchem', 'BudgetConvectionPBL_CO ', 'GCHPchem', 'BudgetConvectionLevs1to35_CO ', 'GCHPchem', - # 'BudgetEmisDryDepFull_CO2 ', 'GCHPchem', 'BudgetEmisDryDepTrop_CO2 ', 'GCHPchem', 'BudgetEmisDryDepPBL_CO2 ', 'GCHPchem', 'BudgetEmisDryDepLevs1to35_CO2 ', 'GCHPchem', - # 'BudgetMixingFull_CO2 ', 'GCHPchem', 'BudgetMixingTrop_CO2 ', 'GCHPchem', 'BudgetMixingPBL_CO2 ', 'GCHPchem', 'BudgetMixingLevs1to35_CO2 ', 'GCHPchem', - # 'BudgetConvectionFull_CO2 ', 'GCHPchem', 'BudgetConvectionTrop_CO2 ', 'GCHPchem', 'BudgetConvectionPBL_CO2 ', 'GCHPchem', 'BudgetConvectionLevs1to35_CO2 ', 'GCHPchem', - # 'BudgetEmisDryDepFull_OCS ', 'GCHPchem', 'BudgetEmisDryDepTrop_OCS ', 'GCHPchem', 'BudgetEmisDryDepPBL_OCS ', 'GCHPchem', 'BudgetEmisDryDepLevs1to35_OCS ', 'GCHPchem', - # 'BudgetMixingFull_OCS ', 'GCHPchem', 'BudgetMixingTrop_OCS ', 'GCHPchem', 'BudgetMixingPBL_OCS ', 'GCHPchem', 'BudgetMixingLevs1to35_OCS ', 'GCHPchem', - # 'BudgetConvectionFull_OCS ', 'GCHPchem', 'BudgetConvectionTrop_OCS ', 'GCHPchem', 'BudgetConvectionPBL_OCS ', 'GCHPchem', From 58aeb1ad7cebf52a694dccb1ab126add4f6c70d1 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 5 Apr 2024 17:34:07 -0400 Subject: [PATCH 203/331] Avoid removing CH4_LOSS from ExtData.rc for single species carbon sims run/shared/singleCarbonSpecies.sh - Add sed commands to remove CH4_SEEPS, CH4_RES_DAM, CH4_RES_SFC, CH4_TERMITES, and CH4_SOILABSORB individually. The previous command to remove anything starting with "CH4_" was removing the CH4_LOSS entry of ExtData.rc, which is needed as an input to the chemistry mechanism. Signed-off-by: Bob Yantosca --- run/shared/singleCarbonSpecies.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/run/shared/singleCarbonSpecies.sh b/run/shared/singleCarbonSpecies.sh index 79f39ae21..d53f41d3b 100755 --- a/run/shared/singleCarbonSpecies.sh +++ b/run/shared/singleCarbonSpecies.sh @@ -261,7 +261,11 @@ function updateExtData() { sed -i "/CMIP6_BB_CH4/d" "${file}" sed -i "/^UPDATED_GFED4_CH4/d" "${file}" sed -i "/^JPLW_CH4/d" "${file}" - sed -i "/^CH4_/d" "${file}" + sed -i "/^CH4_SEEPS/d" "${file}" + sed -i "/^CH4_RES_DAM/d" "${file}" + sed -i "/^CH4_RES_SFC/d" "${file}" + sed -i "/^CH4_TERMITES/d" "${file}" + sed -i "/^CH4_SOILABSORB/d" "${file}" sed -i "/^\#CH4_/d" "${file}" sed -i "/RCP3PD_CH4/d" "${file}" sed -i "/RCP45_CH4/d" "${file}" From 03dee968ea015e20b9064fbbeb352f070a957ab4 Mon Sep 17 00:00:00 2001 From: Haihui Zhu Date: Sat, 6 Apr 2024 17:41:37 -0500 Subject: [PATCH 204/331] 1. add a new variable PDER (paremeterized dry effective radius) in AOD calculation. Five files are edited. 2. Relevant optical properties are all updated with an additional aerosol size dimention. --- GeosCore/aerosol_mod.F90 | 185 +++++++++++++----- GeosCore/diagnostics_mod.F90 | 10 + GeosCore/dust_mod.F90 | 18 +- GeosCore/fast_jx_mod.F90 | 36 ++-- GeosCore/photolysis_mod.F90 | 48 +++-- Headers/aermass_container_mod.F90 | 53 +++++ Headers/phot_container_mod.F90 | 60 +++--- Headers/state_diag_mod.F90 | 44 +++++ .../HISTORY.rc.templates/HISTORY.rc.fullchem | 1 + 9 files changed, 338 insertions(+), 117 deletions(-) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 268e85bd0..2c37f92e5 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -96,6 +96,9 @@ MODULE AEROSOL_MOD ! a new hygroscopic species) requires manual update of this mapping ! (ewl, 1/23/17) INTEGER :: Map_NRHAER(5) + + ! (hzhu Apr. 2024) + INTEGER :: g CONTAINS !EOC @@ -178,7 +181,7 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & ! Pointers TYPE(SpcConc), POINTER :: Spc(:) - REAL*8, POINTER :: REAA(:,:) + REAL*8, POINTER :: REAA(:,:,:) REAL(fp), POINTER :: AIRVOL(:,:,:) REAL(fp), POINTER :: PMID(:,:,:) REAL(fp), POINTER :: T(:,:,:) @@ -305,9 +308,9 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & Rho_wet = 1000e+0_fp ! Growth factor for SO4 + NIT + NH4 - Rad_dry = REAA(1,k_SO4) - Rad_wet = REAA(1,k_SO4) + 35e+0_fp * & - ( REAA(2,k_SO4) - REAA(1,k_SO4) ) / 50e+0_fp + Rad_dry = REAA(1,k_SO4,State_Chm%Phot%DRg) ! DRg = 6. choice of dry size doesn't affect volume growth ratio (hzhu) + Rad_wet = REAA(1,k_SO4,State_Chm%Phot%DRg) + 35e+0_fp * & + ( REAA(2,k_SO4,State_Chm%Phot%DRg) - REAA(1,k_SO4,State_Chm%Phot%DRg) ) / 50e+0_fp Rho_dry = State_Chm%SpcData(id_SO4)%Info%Density SIA_GROWTH = 1 + ( ( ( Rad_wet / Rad_dry ) ** 3 - 1 ) * & ( Rho_wet / Rho_dry ) ) @@ -316,9 +319,9 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & SIA_GROWTH = 1.1_fp ! Growth factor for OCPI + SOA - Rad_dry = REAA(1,k_ORG) - Rad_wet = REAA(1,k_ORG) + 35e+0_fp * & - ( REAA(2,k_ORG) - REAA(1,k_ORG) ) / 50e+0_fp + Rad_dry = REAA(1,k_ORG,State_Chm%Phot%DRg) + Rad_wet = REAA(1,k_ORG,State_Chm%Phot%DRg) + 35e+0_fp * & + ( REAA(2,k_ORG,State_Chm%Phot%DRg) - REAA(1,k_ORG,State_Chm%Phot%DRg) ) / 50e+0_fp IF ( IS_POA ) THEN Rho_dry = State_Chm%SpcData(id_POA1)%Info%Density ELSE IF ( IS_OCPI ) THEN @@ -328,9 +331,9 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & ( Rho_wet / Rho_dry ) ) ! Growth factor for SALA - Rad_dry = REAA(1,k_SSA) - Rad_wet = REAA(1,k_SSA) + 35e+0_fp * & - ( REAA(2,k_SSA) - REAA(1,k_SSA) ) / 50e+0_fp + Rad_dry = REAA(1,k_SSA,State_Chm%Phot%DRg) + Rad_wet = REAA(1,k_SSA,State_Chm%Phot%DRg) + 35e+0_fp * & + ( REAA(2,k_SSA,State_Chm%Phot%DRg) - REAA(1,k_SSA,State_Chm%Phot%DRg) ) / 50e+0_fp Rho_dry = State_Chm%SpcData(id_SALA)%Info%Density SSA_GROWTH = 1 + ( ( ( Rad_wet / Rad_dry ) ** 3 - 1 ) * & ( Rho_wet / Rho_dry ) ) @@ -858,6 +861,41 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & State_Chm%AerMass%PM10(I,J,L) = State_Chm%AerMass%PM10(I,J,L) * ( 1013.25_fp / PMID(I,J,L) ) * & ( T(I,J,L) / 298.0_fp ) + + !=========================================================== + ! PDER [um] ! (hzhu, 04/05/2024) + ! Parameterized dry effective radius for SNA and OM + !=========================================================== + IF ( State_Chm%AerMass%SO4_NH4_NIT(I,J,L) > 0e+0_fp ) THEN + IF ( Is_SimpleSOA ) THEN + ! dry SNA and OM mass, in unit of ug/m3 + State_Chm%AerMass%SNAOM(I,J,L) = ( State_Chm%AerMass%SO4_NH4_NIT(I,J,L) + State_Chm%AerMass%OCPO(I,J,L) + State_Chm%AerMass%OCPI(I,J,L) + State_Chm%AerMass%SOAS(I,J,L) )*1.0e+9_fp + ! ratio between OM and SNA, unitless + State_Chm%AerMass%R_OMSNA(I,J,L) = (State_Chm%AerMass%OCPO(I,J,L) + State_Chm%AerMass%OCPI(I,J,L) + State_Chm%AerMass%SOAS(I,J,L)) / State_Chm%AerMass%SO4_NH4_NIT(I,J,L) + + ELSE IF ( Is_ComplexSOA ) THEN + ! dry SNA and OM mass, in unit of ug/m3 + State_Chm%AerMass%SNAOM(I,J,L) = ( State_Chm%AerMass%SO4_NH4_NIT(I,J,L) + State_Chm%AerMass%OCPO(I,J,L) + State_Chm%AerMass%OCPI(I,J,L) + State_Chm%AerMass%TSOA(I,J,L) + State_Chm%AerMass%ASOA(I,J,L) + State_Chm%AerMass%ISOAAQ(I,J,L) ) * 1.0e+9_fp + ! ratio between OM and SNA, unitless + State_Chm%AerMass%R_OMSNA(I,J,L) = (State_Chm%AerMass%OCPO(I,J,L) + State_Chm%AerMass%OCPI(I,J,L) + State_Chm%AerMass%TSOA(I,J,L) + State_Chm%AerMass%ASOA(I,J,L) + State_Chm%AerMass%ISOAAQ(I,J,L) )/ State_Chm%AerMass%SO4_NH4_NIT(I,J,L) + + ENDIF + ! Parameterized dry effective radius, in unit of um + State_Chm%AerMass%PDER(I,J,L) = (exp( 4.36_fp + 0.20_fp*log(State_Chm%AerMass%SNAOM(I,J,L)) + 0.065_fp*log(State_Chm%AerMass%R_OMSNA(I,J,L)) ) *0.001_fp )/0.9_fp ; + + IF (State_Chm%AerMass%PDER(I,J,L) == 0.0_fp) THEN + State_Chm%AerMass%PDER(I,J,L) = 0.005_fp ! give it a small value to avoid divided by 0 + ENDIF + + ELSE + State_Chm%AerMass%SNAOM(I,J,L) = 0.0_fp; + State_Chm%AerMass%R_OMSNA(I,J,L) = 0.0_fp; + State_Chm%AerMass%PDER(I,J,L) = 0.005_fp; + + ENDIF + !=========================================================== + + #ifdef MODEL_GEOS ! PM2.5 sulfates IF ( State_Diag%Archive_PM25su ) THEN @@ -1109,11 +1147,11 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & INTEGER, POINTER :: IRHARR (:,:,:) REAL*8, POINTER :: ACOEF_WV (:) REAL*8, POINTER :: BCOEF_WV (:) - REAL*8, POINTER :: REAA (:,:) - REAL*8, POINTER :: QQAA (:,:,:) - REAL*8, POINTER :: ALPHAA (:,:,:) - REAL*8, POINTER :: SSAA (:,:,:) - REAL*8, POINTER :: ASYMAA (:,:,:) + REAL*8, POINTER :: REAA (:,:,:) + REAL*8, POINTER :: QQAA (:,:,:,:) + REAL*8, POINTER :: ALPHAA (:,:,:,:) + REAL*8, POINTER :: SSAA (:,:,:,:) + REAL*8, POINTER :: ASYMAA (:,:,:,:) REAL*8, POINTER :: ISOPOD (:,:,:,:) REAL*8, POINTER :: ODAER (:,:,:,:,:) #ifdef RRTMG @@ -1468,20 +1506,6 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & ! if RRTMG is on then IWV will be 30 wavelengths + AOD wavs, ! otherwise IWV will be at user input specified wavelengths - ! Loop over relative humidity bins - DO R = 1, NRH - - ! Wet radius in aerosol LUT files - RW(R) = REAA(R,N) - - ! Extinction efficiency for Q for each RH bin - QW(R) = QQAA(IWV,R,N) - AW(R) = ALPHAA(IWV,R,N) - SSW(R) = SSAA(IWV,R,N) - ASYW(R) = ASYMAA(IWV,R,N) - - ENDDO - ! Loop over grid boxes !$OMP PARALLEL DO & !$OMP PRIVATE( I, J, L, IRH ) & @@ -1499,6 +1523,64 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX + ! Loop over relative humidity bins + IF (N == 1 .or. N == 3) THEN ! (hzhu, 08/2023) + ! For SNA or Organics + g = 1 + DO WHILE (State_Chm%AerMass%PDER(I,J,L) > REAA(1,N,g) .and. g < State_Chm%Phot%NDRg) + ! REAA(1,N,g) is the upper limit of REFF + g = g + 1 + END DO + + IF (g == 1) THEN + DO R = 1, NRH + ! Wet radius in aerosol LUT files + RW(R) = REAA(R,N,g) + + ! Extinction efficiency for Q for each RH bin + QW(R) = QQAA(IWV,R,N,g) + AW(R) = ALPHAA(IWV,R,N,g) + SSW(R) = SSAA(IWV,R,N,g) + ASYW(R) = ASYMAA(IWV,R,N,g) + ENDDO + + ELSE + FRAC = (State_Chm%AerMass%PDER(I,J,L) - REAA(1,N,g-1))/ & + (REAA(1,N,g) - REAA(1,N,g-1)) + IF ( FRAC > 1.0d0 ) FRAC = 1.0d0 + DO R = 1, NRH + RW(R) = FRAC*REAA(R,N,g) + & + (1.d0-FRAC)*REAA(R,N,g-1) + + QW(R) = FRAC*QQAA(IWV,R,N,g) + & + (1.d0-FRAC)*QQAA(IWV,R,N,g-1) + + AW(R) = FRAC*ALPHAA(IWV,R,N,g)+ & + (1.d0-FRAC)*ALPHAA(IWV,R,N,g-1) + + SSW(R) = FRAC*SSAA(IWV,R,N,g) + & + (1.d0-FRAC)*SSAA(IWV,R,N,g-1) + + ASYW(R)= FRAC*ASYMAA(IWV,R,N,g)+ & + (1.d0-FRAC)*ASYMAA(IWV,R,N,g-1) + END DO + END IF + + ELSE + ! For other species + DO R = 1, NRH + ! Wet radius in aerosol LUT files + RW(R) = REAA(R,N,State_Chm%Phot%DRg) + + ! Extinction efficiency for Q for each RH bin + QW(R) = QQAA(IWV,R,N,State_Chm%Phot%DRg) + AW(R) = ALPHAA(IWV,R,N,State_Chm%Phot%DRg) + SSW(R) = SSAA(IWV,R,N,State_Chm%Phot%DRg) + ASYW(R) = ASYMAA(IWV,R,N,State_Chm%Phot%DRg) + ENDDO + + ENDIF + ! Skip non-chemistry boxes IF ( .not. State_Met%InChemGrid(I,J,L) ) CYCLE @@ -1579,6 +1661,7 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & SCALER = REFF / RW(1) SCALEOD = SCALEQ * SCALER * SCALER + IF ( N.LE.NRHAER ) THEN !-------------------------------------------------------- @@ -1588,35 +1671,35 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & !calculate optics for hyrdophillic aerosol here !However MDENS in LUT was in g/cm3 not kg/m3 so x1e3 ODAER(I,J,L,IWV,N) = SCALEOD * BXHEIGHT(I,J,L) * 0.75d0 * & - State_Chm%AerMass%WAERSL(I,J,L,N) * QQAA(IWV,1,N) / & - ( MSDENS(N) * REAA(1,N) * 1.0D-6 ) + State_Chm%AerMass%WAERSL(I,J,L,N) * QW(1) / & + ( MSDENS(N) * RW(1) * 1.0D-6 ) !Include BC absorption enhancement (xnw, 8/24/15) IF (N.eq.2) THEN IF (LBCAE) THEN - BCSCAT_AE = ODAER(I,J,L,IWV,N)*SCALESSA*SSAA(IWV,1,N) + BCSCAT_AE = ODAER(I,J,L,IWV,N)*SCALESSA*SSAA(IWV,1,N,State_Chm%Phot%DRg) ODAER(I,J,L,IWV,N) = ODAER(I,J,L,IWV,N) * & - ( BCAE_1 + SCALESSA*SSAA(IWV,1,N) - & - SCALESSA*SSAA(IWV,1,N)*BCAE_1 ) + ( BCAE_1 + SCALESSA*SSAA(IWV,1,N,State_Chm%Phot%DRg) - & + SCALESSA*SSAA(IWV,1,N,State_Chm%Phot%DRg)*BCAE_1 ) !now combine with hydrophilic OD as before - BCSCAT_AE = BCSCAT_AE + SSAA(IWV,1,N) * & + BCSCAT_AE = BCSCAT_AE + SSAA(IWV,1,N,State_Chm%Phot%DRg) * & 0.75d0 * BXHEIGHT(I,J,L) * & - State_Chm%AerMass%DAERSL(I,J,L,N-1) * QQAA(IWV,1,N) / & - ( MSDENS(N) * REAA(1,N) * 1.0D-6 ) + State_Chm%AerMass%DAERSL(I,J,L,N-1) * QW(1) / & + ( MSDENS(N) * REAA(1,N,State_Chm%Phot%DRg) * 1.0D-6 ) ODAER(I,J,L,IWV,N)= ODAER(I,J,L,IWV,N) + & - (BCAE_2+SSAA(IWV,1,N) - SSAA(IWV,1,N)*BCAE_2) * & + (BCAE_2+SSAA(IWV,1,N,State_Chm%Phot%DRg) - SSAA(IWV,1,N,State_Chm%Phot%DRg)*BCAE_2) * & 0.75d0 * BXHEIGHT(I,J,L) * & - State_Chm%AerMass%DAERSL(I,J,L,N-1) * QQAA(IWV,1,N) / & - ( MSDENS(N) * REAA(1,N) * 1.0D-6 ) + State_Chm%AerMass%DAERSL(I,J,L,N-1) * QW(1) / & + ( MSDENS(N) * REAA(1,N,State_Chm%Phot%DRg) * 1.0D-6 ) ELSE !now combine with hydrophilic OD as before ODAER(I,J,L,IWV,N)= ODAER(I,J,L,IWV,N) + & 0.75d0 * BXHEIGHT(I,J,L) * & - State_Chm%AerMass%DAERSL(I,J,L,N-1) * QQAA(IWV,1,N) / & - ( MSDENS(N) * REAA(1,N) * 1.0D-6 ) + State_Chm%AerMass%DAERSL(I,J,L,N-1) * QW(1) / & + ( MSDENS(N) * REAA(1,N,State_Chm%Phot%DRg) * 1.0D-6 ) ENDIF ENDIF @@ -1625,15 +1708,15 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & !now combine with hydrophilic OD as before ODAER(I,J,L,IWV,N)= ODAER(I,J,L,IWV,N) + & 0.75d0 * BXHEIGHT(I,J,L) * & - State_Chm%AerMass%DAERSL(I,J,L,N-1) * QQAA(IWV,1,N) / & - ( MSDENS(N) * REAA(1,N) * 1.0D-6 ) + State_Chm%AerMass%DAERSL(I,J,L,N-1) * QW(1) / & + ( MSDENS(N) * State_Chm%AerMass%PDER(I,J,L) * 1.0D-6 ) ENDIF ! Get the AOD contribution from isoprene SOA only (eam, 2014) IF ( N == 3 .and. Is_ComplexSOA ) THEN ISOPOD(I,J,L,IWV) = SCALEOD*BXHEIGHT(I,J,L)*0.75d0 & - * State_Chm%AerMass%ISOAAQ(I,J,L) * QQAA(IWV,1,N) / & - ( MSDENS(N) * REAA(1,N) * 1.0D-6 ) + * State_Chm%AerMass%ISOAAQ(I,J,L) * QW(1) / & + ( MSDENS(N) * State_Chm%AerMass%PDER(I,J,L) * 1.0D-6 ) ENDIF ELSE @@ -1656,7 +1739,7 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & ! radius and blowing up ! Aerosol optical depth - ODAER(I,J,L,IWV,N) = BXHEIGHT(I,J,L) * XSASTRAT * QQAA(IWV,1,N) + ODAER(I,J,L,IWV,N) = BXHEIGHT(I,J,L) * XSASTRAT * QW(1) ENDIF @@ -1667,21 +1750,21 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & DO IR=1,3 RTODAER(I,J,L,IWV,N+IR-1)= ODAER(I,J,L,IWV,N)* & State_Chm%AerMass%FRAC_SNA(I,J,L,IR) - RTSSAER(I,J,L,IWV,N+IR-1) = SCALESSA*SSAA(IWV,1,N) - RTASYMAER(I,J,L,IWV,N+IR-1) = SCALEASY*ASYMAA(IWV,1,N) + RTSSAER(I,J,L,IWV,N+IR-1) = SCALESSA*SSAA(IWV,1,N,State_Chm%Phot%DRg) + RTASYMAER(I,J,L,IWV,N+IR-1) = SCALEASY*ASYMAA(IWV,1,N,State_Chm%Phot%DRg) ENDDO ELSE !RT arrays now offset from NAER by 2 (NRT=N+2 for N>1) !This will automatically be added after the standard aerosol !(NRHAER+1,2) but before dust RTODAER(I,J,L,IWV,NRT) = ODAER(I,J,L,IWV,N) - RTSSAER(I,J,L,IWV,NRT) = SCALESSA*SSAA(IWV,1,N) + RTSSAER(I,J,L,IWV,NRT) = SCALESSA*SSAA(IWV,1,N,State_Chm%Phot%DRg) !for BC SSA with absorption enhancement (xnw 8/24/15) IF ((N .EQ. 2) .AND. (LBCAE)) THEN RTSSAER(I,J,L,IWV,NRT) = BCSCAT_AE / & ODAER(I,J,L,IWV,N) ENDIF - RTASYMAER(I,J,L,IWV,NRT) = SCALEASY*ASYMAA(IWV,1,N) + RTASYMAER(I,J,L,IWV,NRT) = SCALEASY*ASYMAA(IWV,1,N,State_Chm%Phot%DRg) ENDIF #endif diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index d056f9af3..efa9ff8e6 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -1829,6 +1829,7 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & REAL(fp), POINTER :: SOAGX (:,:,:) REAL(fp), POINTER :: PM25 (:,:,:) REAL(fp), POINTER :: PM10 (:,:,:) + REAL(fp), POINTER :: PDER (:,:,:) ! H. Zhu REAL(fp), POINTER :: ISOAAQ (:,:,:) REAL(fp), POINTER :: SOAS (:,:,:) REAL(fp), POINTER :: FRAC_SNA (:,:,:,:) @@ -1897,6 +1898,7 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & SOAGX => State_Chm%AerMass%SOAGX PM25 => State_Chm%AerMass%PM25 PM10 => State_Chm%AerMass%PM10 + PDER => State_Chm%AerMass%PDER ISOAAQ => State_Chm%AerMass%ISOAAQ SOAS => State_Chm%AerMass%SOAS FRAC_SNA => State_Chm%AerMass%FRAC_SNA @@ -2141,6 +2143,13 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & State_Diag%PM10(I,J,L) = PM10(I,J,L) * kgm3_to_ugm3 ENDIF + !-------------------------------------- + ! PDER [nm] + !-------------------------------------- + IF ( State_Diag%Archive_PDER ) THEN + State_Diag%PDER(I,J,L) = PDER(I,J,L) + ENDIF + !-------------------------------------- ! Sum of all biogenic organic aerosol !-------------------------------------- @@ -2221,6 +2230,7 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & SOAGX => NULL() PM25 => NULL() PM10 => NULL() + PDER => NULL() ISOAAQ => NULL() SOAS => NULL() FRAC_SNA => NULL() diff --git a/GeosCore/dust_mod.F90 b/GeosCore/dust_mod.F90 index 029f3ccca..b28174230 100644 --- a/GeosCore/dust_mod.F90 +++ b/GeosCore/dust_mod.F90 @@ -1269,10 +1269,10 @@ SUBROUTINE RDUST_ONLINE( Input_Opt, State_Chm, State_Diag, State_Grid, & INTEGER, POINTER :: IWVSELECT (:,:) REAL*8, POINTER :: ACOEF_WV (:) REAL*8, POINTER :: BCOEF_WV (:) - REAL*8, POINTER :: RDAA (:,:) - REAL*8, POINTER :: QQAA (:,:,:) - REAL*8, POINTER :: SSAA (:,:,:) - REAL*8, POINTER :: ASYMAA (:,:,:) + REAL*8, POINTER :: RDAA (:,:,:) + REAL*8, POINTER :: QQAA (:,:,:,:) + REAL*8, POINTER :: SSAA (:,:,:,:) + REAL*8, POINTER :: ASYMAA (:,:,:,:) REAL(fp), POINTER :: ODMDUST (:,:,:,:,:) #ifdef RRTMG REAL*8, POINTER :: RTODAER (:,:,:,:,:) @@ -1407,8 +1407,8 @@ SUBROUTINE RDUST_ONLINE( Input_Opt, State_Chm, State_Diag, State_Grid, & ! dust stored in the IDST species bin of LUT variables ODMDUST(I,J,L,IWV,N) = 0.75e+0_fp * & State_Met%BXHEIGHT(I,J,L) * & - DUST(I,J,L,N) * QQAA(IWV,N,IDST) / & - ( MSDENS(N) * RDAA(N,IDST) * 1.0e-6_fp) + DUST(I,J,L,N) * QQAA(IWV,N,IDST,State_Chm%Phot%DRg) / & + ( MSDENS(N) * RDAA(N,IDST,State_Chm%Phot%DRg) * 1.0e-6_fp) #ifdef RRTMG !add dust optics to the RT code arrays @@ -1416,8 +1416,8 @@ SUBROUTINE RDUST_ONLINE( Input_Opt, State_Chm, State_Diag, State_Grid, & !will keep this way for uniformity for now but !possibly could deal with SSA and ASYM in RT module RTODAER(I,J,L,IWV,NAER+2+N) = ODMDUST(I,J,L,IWV,N) - RTSSAER(I,J,L,IWV,NAER+2+N) = SSAA(IWV,N,IDST) - RTASYMAER(I,J,L,IWV,NAER+2+N) = ASYMAA(IWV,N,IDST) + RTSSAER(I,J,L,IWV,NAER+2+N) = SSAA(IWV,N,IDST,State_Chm%Phot%DRg) + RTASYMAER(I,J,L,IWV,NAER+2+N) = ASYMAA(IWV,N,IDST,State_Chm%Phot%DRg) #endif ENDDO @@ -1454,7 +1454,7 @@ SUBROUTINE RDUST_ONLINE( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Skip non-chemistry boxes IF ( .not. State_Met%InChemGrid(I,J,L) ) CYCLE - ERADIUS(I,J,L,N) = RDAA(N,IDST) * 1.0e-4_fp + ERADIUS(I,J,L,N) = RDAA(N,IDST,State_Chm%Phot%DRg) * 1.0e-4_fp TAREA(I,J,L,N) = 3.e+0_fp / ERADIUS(I,J,L,N) * & DUST(I,J,L,N) / MSDENS(N) diff --git a/GeosCore/fast_jx_mod.F90 b/GeosCore/fast_jx_mod.F90 index b48f998b2..2c1d077a7 100644 --- a/GeosCore/fast_jx_mod.F90 +++ b/GeosCore/fast_jx_mod.F90 @@ -149,9 +149,9 @@ SUBROUTINE PHOTO_JX( amIRoot, dryrun, & real(fp) :: AMF2(2*JXL1_+1,2*JXL1_+1) ! Pointers - REAL*8, POINTER :: QQAA(:,:,:) - REAL*8, POINTER :: SSAA(:,:,:) - REAL*8, POINTER :: PHAA(:,:,:,:) + REAL*8, POINTER :: QQAA(:,:,:,:) + REAL*8, POINTER :: SSAA(:,:,:,:) + REAL*8, POINTER :: PHAA(:,:,:,:,:) ! ---------key SCATTERING arrays for clouds+aerosols------------------ real(fp) :: OD(5,JXL1_),SSA(5,JXL1_),SLEG(8,5,JXL1_) @@ -272,13 +272,13 @@ SUBROUTINE PHOTO_JX( amIRoot, dryrun, & IF (AOD999) THEN ! Aerosol/dust (999 nm scaling) ! Fixed to dry radius - QSCALING = QQAA(KMIE2,1,IDXAER)/QQAA(10,1,IDXAER) + QSCALING = QQAA(KMIE2,1,IDXAER,State_Chm%Phot%DRg)/QQAA(10,1,IDXAER,State_Chm%Phot%DRg) ELSE ! Aerosol/dust (550 nm scaling) - QSCALING = QQAA(KMIE2,1,IDXAER)/QQAA(5,1,IDXAER) + QSCALING = QQAA(KMIE2,1,IDXAER,State_Chm%Phot%DRg)/QQAA(5,1,IDXAER,State_Chm%Phot%DRg) ENDIF LOCALOD = QSCALING*AERX_COL(M,L) - LOCALSSA = SSAA(KMIE2,1,IDXAER)*LOCALOD + LOCALSSA = SSAA(KMIE2,1,IDXAER,State_Chm%Phot%DRg)*LOCALOD OD(KMIE,L) = OD(KMIE,L) + LOCALOD SSA(KMIE,L)= SSA(KMIE,L) + LOCALSSA DO I=1,8 @@ -295,20 +295,20 @@ SUBROUTINE PHOTO_JX( amIRoot, dryrun, & IDXAER=State_Chm%Phot%NSPAA !dust is last in LUT IR=M-3 IF (AOD999) THEN - QSCALING = QQAA(KMIE2,IR,IDXAER)/ & - QQAA(10,IR,IDXAER) !1000nm in new .dat + QSCALING = QQAA(KMIE2,IR,IDXAER,State_Chm%Phot%DRg)/ & + QQAA(10,IR,IDXAER,State_Chm%Phot%DRg) !1000nm in new .dat ELSE ! Aerosol/dust (550 nm scaling) - QSCALING = QQAA(KMIE2,IR,IDXAER)/ & - QQAA(5,IR,IDXAER) !550nm in new .dat + QSCALING = QQAA(KMIE2,IR,IDXAER,State_Chm%Phot%DRg)/ & + QQAA(5,IR,IDXAER,State_Chm%Phot%DRg) !550nm in new .dat ENDIF LOCALOD = QSCALING*AERX_COL(M,L) - LOCALSSA = SSAA(KMIE2,IR,IDXAER)*LOCALOD + LOCALSSA = SSAA(KMIE2,IR,IDXAER,State_Chm%Phot%DRg)*LOCALOD OD(KMIE,L) = OD(KMIE,L) + LOCALOD SSA(KMIE,L)= SSA(KMIE,L) + LOCALSSA DO I=1,8 SLEG(I,KMIE,L) = SLEG(I,KMIE,L) + & - (PHAA(KMIE2,IR,IDXAER,I)*LOCALSSA) + (PHAA(KMIE2,IR,IDXAER,I,State_Chm%Phot%DRg)*LOCALSSA) ENDDO ! I (Phase function) ENDIF ENDDO ! M (Aerosol) @@ -320,20 +320,20 @@ SUBROUTINE PHOTO_JX( amIRoot, dryrun, & IDXAER=10+(M-1)*NRH+IR IF (AERX_COL(IDXAER,L).gt.0d0) THEN IF (AOD999) THEN - QSCALING = QQAA(KMIE2,IR,M)/ & - QQAA(10,IR,M) !1000nm in new .dat + QSCALING = QQAA(KMIE2,IR,M,State_Chm%Phot%DRg)/ & + QQAA(10,IR,M,State_Chm%Phot%DRg) !1000nm in new .dat ELSE ! Aerosol/dust (550 nm scaling) - QSCALING = QQAA(KMIE2,IR,M)/ & - QQAA(5,IR,M) !550nm in new .dat + QSCALING = QQAA(KMIE2,IR,M,State_Chm%Phot%DRg)/ & + QQAA(5,IR,M,State_Chm%Phot%DRg) !550nm in new .dat ENDIF LOCALOD = QSCALING*AERX_COL(IDXAER,L) - LOCALSSA = SSAA(KMIE2,IR,M)*LOCALOD + LOCALSSA = SSAA(KMIE2,IR,M,State_Chm%Phot%DRg)*LOCALOD OD(KMIE,L) = OD(KMIE,L) + LOCALOD SSA(KMIE,L)= SSA(KMIE,L) + LOCALSSA DO I=1,8 SLEG(I,KMIE,L) = SLEG(I,KMIE,L) + & - (PHAA(KMIE2,IR,M,I)*LOCALSSA) + (PHAA(KMIE2,IR,M,I,State_Chm%Phot%DRg)*LOCALSSA) ENDDO ! I (Phase function) ENDIF ENDDO ! IR (RH bins) diff --git a/GeosCore/photolysis_mod.F90 b/GeosCore/photolysis_mod.F90 index d8684e555..0e92c02e5 100644 --- a/GeosCore/photolysis_mod.F90 +++ b/GeosCore/photolysis_mod.F90 @@ -43,6 +43,8 @@ MODULE PHOTOLYSIS_MOD ! Species ID flags INTEGER :: id_NIT, id_NITs, id_SALA, id_SALC +! for number of radii [hzhu, 08/2023] + INTEGER :: g CONTAINS !EOC @@ -878,17 +880,17 @@ SUBROUTINE RD_AOD( Input_Opt, State_Chm, RC ) ! Pointers REAL*8, POINTER :: WVAA (:,:) REAL*8, POINTER :: RHAA (:,:) - REAL*8, POINTER :: RDAA (:,:) - REAL*8, POINTER :: RWAA (:,:) + REAL*8, POINTER :: RDAA (:,:,:) + REAL*8, POINTER :: RWAA (:,:,:) REAL*8, POINTER :: SGAA (:,:) - REAL*8, POINTER :: REAA (:,:) + REAL*8, POINTER :: REAA (:,:,:) REAL*8, POINTER :: NCMAA (:,:,:) REAL*8, POINTER :: NRLAA (:,:,:) - REAL*8, POINTER :: QQAA (:,:,:) - REAL*8, POINTER :: ALPHAA(:,:,:) - REAL*8, POINTER :: SSAA (:,:,:) - REAL*8, POINTER :: ASYMAA(:,:,:) - REAL*8, POINTER :: PHAA (:,:,:,:) + REAL*8, POINTER :: QQAA (:,:,:,:) + REAL*8, POINTER :: ALPHAA(:,:,:,:) + REAL*8, POINTER :: SSAA (:,:,:,:) + REAL*8, POINTER :: ASYMAA(:,:,:,:) + REAL*8, POINTER :: PHAA (:,:,:,:,:) !================================================================ ! RD_AOD begins here! @@ -998,19 +1000,43 @@ SUBROUTINE RD_AOD( Input_Opt, State_Chm, RC ) READ( NJ1, '(A)' ) TITLE0 110 FORMAT( 3x, a20 ) + IF (k == 1 .OR. k == 3) THEN + ! for SO4 and ORGANICS, dry aerosol size varies, therefore all + ! opt properties vary. + DO g = 1, State_Chm%Phot%NDRg DO i = 1, State_Chm%Phot%NRAA DO j = 1, State_Chm%Phot%NWVAA READ(NJ1,*) WVAA(j,k),RHAA(i,k),NRLAA(j,i,k),NCMAA(j,i,k), & - RDAA(i,k),RWAA(i,k),SGAA(i,k),QQAA(j,i,k), & - ALPHAA(j,i,k),REAA(i,k),SSAA(j,i,k), & - ASYMAA(j,i,k),(PHAA(j,i,k,n),n=1,8) + RDAA(i,k,g),RWAA(i,k,g),SGAA(i,k),QQAA(j,i,k,g), & + ALPHAA(j,i,k,g),REAA(i,k,g),SSAA(j,i,k,g), & + ASYMAA(j,i,k,g),(PHAA(j,i,k,n,g),n=1,8) ! make note of where 1000nm is for FAST-J calcs IF (WVAA(j,k).EQ.1000.0) State_Chm%Phot%IWV1000=J ENDDO ENDDO + ENDDO + + ELSE + ! For other species, keep g = default Rg (DRg) + g = State_Chm%Phot%DRg + DO i = 1, State_Chm%Phot%NRAA + DO j = 1, State_Chm%Phot%NWVAA + + READ(NJ1,*) WVAA(j,k),RHAA(i,k),NRLAA(j,i,k),NCMAA(j,i,k), & + RDAA(i,k,g),RWAA(i,k,g),SGAA(i,k),QQAA(j,i,k,g), & + ALPHAA(j,i,k,g),REAA(i,k,g),SSAA(j,i,k,g), & + ASYMAA(j,i,k,g),(PHAA(j,i,k,n,g),n=1,8) + + ! make note of where 1000nm is for FAST-J calcs + IF (WVAA(j,k).EQ.1000.0) State_Chm%Phot%IWV1000=J + + ENDDO + ENDDO + + ENDIF ! Close file CLOSE( NJ1 ) diff --git a/Headers/aermass_container_mod.F90 b/Headers/aermass_container_mod.F90 index a8418404f..59049827b 100644 --- a/Headers/aermass_container_mod.F90 +++ b/Headers/aermass_container_mod.F90 @@ -59,6 +59,7 @@ MODULE AerMass_Container_Mod ! SOAIE : SOA product of IEPOX & HMML [kg/m3] ! PM25 : Particulate matter < 2.5 um [kg/m3] ! PM10 : Particulate matter < 10 um [kg/m3] + ! PDER : Parameterized effective Radius for SNA and OM [nm] - used for AOD calcualtion (H. Zhu) ! ISOAAQ : Isoprene SOA (aqueous formation) [kg/m3] ! SOAS : Simple SOA [kg/m3] ! FRAC_SNA : @@ -88,6 +89,9 @@ MODULE AerMass_Container_Mod REAL(fp), POINTER :: SOAGX (:,:,:) REAL(fp), POINTER :: PM25 (:,:,:) REAL(fp), POINTER :: PM10 (:,:,:) + REAL(fp), POINTER :: PDER (:,:,:) !H. Zhu + REAL(fp), POINTER :: SNAOM (:,:,:) !H. Zhu + REAL(fp), POINTER :: R_OMSNA (:,:,:) !H. Zhu REAL(fp), POINTER :: ISOAAQ (:,:,:) REAL(fp), POINTER :: SOAS (:,:,:) REAL(fp), POINTER :: FRAC_SNA (:,:,:,:) @@ -372,6 +376,34 @@ SUBROUTINE Init_AerMass_Container( Input_Opt, State_Grid, Aer, RC ) RETURN ENDIF Aer%PM10 = 0.0_fp + ! H. Zhu + ALLOCATE( Aer%PDER( NX, NY, NZ ), STAT=RC ) + CALL GC_CheckVar( 'PDER', 0, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error allocating array PDER!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + Aer%PDER = 0.0_fp + ! H. Zhu + ALLOCATE( Aer%SNAOM( NX, NY, NZ ), STAT=RC ) + CALL GC_CheckVar( 'SNAOM', 0, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error allocating array SNAOM!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + Aer%SNAOM = 0.0_fp + ! H. Zhu + ALLOCATE( Aer%R_OMSNA( NX, NY, NZ ), STAT=RC ) + CALL GC_CheckVar( 'R_OMSNA', 0, RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error allocating array R_OMSNA!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + Aer%R_OMSNA = 0.0_fp + ALLOCATE( Aer%SOAGX( NX, NY, NZ ), STAT=RC ) CALL GC_CheckVar( 'SOAGX', 0, RC ) @@ -631,6 +663,27 @@ SUBROUTINE Cleanup_AerMass_Container( Aer, RC ) IF ( RC /= GC_SUCCESS ) RETURN Aer%PM10 => NULL() ENDIF + ! H. Zhu + IF ( ASSOCIATED( Aer%PDER ) ) THEN + DEALLOCATE( Aer%PDER, STAT=RC ) + CALL GC_CheckVar( 'Aer%PDER', 2, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + Aer%PDER => NULL() + ENDIF + ! H. Zhu + IF ( ASSOCIATED( Aer%SNAOM ) ) THEN + DEALLOCATE( Aer%SNAOM, STAT=RC ) + CALL GC_CheckVar( 'Aer%SNAOM', 2, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + Aer%SNAOM => NULL() + ENDIF + ! H. Zhu + IF ( ASSOCIATED( Aer%R_OMSNA ) ) THEN + DEALLOCATE( Aer%R_OMSNA, STAT=RC ) + CALL GC_CheckVar( 'Aer%R_OMSNA', 2, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + Aer%R_OMSNA => NULL() + ENDIF IF ( ASSOCIATED( Aer%ISOAAQ ) ) THEN DEALLOCATE( Aer%ISOAAQ, STAT=RC ) diff --git a/Headers/phot_container_mod.F90 b/Headers/phot_container_mod.F90 index 691547d94..e180dedef 100644 --- a/Headers/phot_container_mod.F90 +++ b/Headers/phot_container_mod.F90 @@ -45,6 +45,8 @@ MODULE Phot_Container_Mod INTEGER :: NEMISS ! ?? INTEGER :: NASPECRAD ! # RRTMG aerosol species INTEGER :: NSPECRAD ! # RRTMG aerosol+gas species + INTEGER :: NDRg ! # LUT SNA and OM dry aerosol size bin + INTEGER :: DRg ! # identifier of the default dry aerosol size ! Scalars INTEGER :: JTAUMX ! max # divisions @@ -107,19 +109,19 @@ MODULE Phot_Container_Mod REAL*8, ALLOCATABLE :: ACOEF_RTWV(:) ! Coeffs for RT WL interpolation REAL*8, ALLOCATABLE :: BCOEF_RTWV(:) ! Coeffs for RT WL interpolation REAL*8, ALLOCATABLE :: CCOEF_RTWV(:) ! Coeffs for RT WL interpolation - REAL*8, ALLOCATABLE :: WVAA (:,:) ! ?? - REAL*8, ALLOCATABLE :: RHAA (:,:) ! ?? - REAL*8, ALLOCATABLE :: RDAA (:,:) ! ?? - REAL*8, ALLOCATABLE :: RWAA (:,:) ! ?? - REAL*8, ALLOCATABLE :: SGAA (:,:) ! ?? - REAL*8, ALLOCATABLE :: REAA (:,:) ! ?? - REAL*8, ALLOCATABLE :: NRLAA (:,:,:) ! ?? - REAL*8, ALLOCATABLE :: NCMAA (:,:,:) ! ?? - REAL*8, ALLOCATABLE :: QQAA (:,:,:) ! ?? - REAL*8, ALLOCATABLE :: ALPHAA (:,:,:) ! ?? - REAL*8, ALLOCATABLE :: SSAA (:,:,:) ! ?? - REAL*8, ALLOCATABLE :: ASYMAA (:,:,:) ! ?? - REAL*8, ALLOCATABLE :: PHAA (:,:,:,:) ! ?? + REAL*8, ALLOCATABLE :: WVAA (:,:) ! Wavelength read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: RHAA (:,:) ! RH read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: RDAA (:,:,:) ! Dry aerosol Rg read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: RWAA (:,:,:) ! Wet aerosol Rg read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: SGAA (:,:) ! Aerosol size geometric std. read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: REAA (:,:,:) ! Effective Radius read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: NRLAA (:,:,:) ! RI real part read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: NCMAA (:,:,:) ! RI imaginary part read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: QQAA (:,:,:,:) ! Extinction Effciency read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: ALPHAA (:,:,:,:) ! Alpha read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: SSAA (:,:,:,:) ! ss-alb read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: ASYMAA (:,:,:,:) ! g-sym read from LUTs (so4.dat etc.) + REAL*8, ALLOCATABLE :: PHAA (:,:,:,:,:) ! phase function read from LUTs (so4.dat etc.) ! For optical depth diagnostics REAL(fp), ALLOCATABLE :: ISOPOD (:,:,:,:) ! Isoprene optical depth @@ -214,6 +216,8 @@ SUBROUTINE Init_Phot_Container( Input_Opt, State_Grid, Phot, RC ) Phot%NEMISS = 16 ! ?? Phot%NASPECRAD = 16 ! # RRTMG aerosol species Phot%NSPECRAD = 23 ! # RRTMG aerosol+gas species + Phot%NDRg = 40 ! # LUT dry SNA and OM aerosol sizes + Phot%DRg = 6 ! # identifier of the default aerosol size ! Store certain values from Fast-JX with more intuitive name Phot%nWLbins = W_ @@ -505,8 +509,8 @@ SUBROUTINE Init_Phot_Container( Input_Opt, State_Grid, Phot, RC ) ENDIF Phot%RHAA = 0d0 - ! Phot%RDAA (:,:)! - ALLOCATE( Phot%RDAA( Phot%NRAA, Phot%NSPAA ), STAT=RC ) + ! Phot%RDAA (:,:,:) ! H. Zhu + ALLOCATE( Phot%RDAA( Phot%NRAA, Phot%NSPAA, Phot%NDRg), STAT=RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error allocating array RDAA!' CALL GC_Error( errMsg, RC, thisLoc ) @@ -514,8 +518,8 @@ SUBROUTINE Init_Phot_Container( Input_Opt, State_Grid, Phot, RC ) ENDIF Phot%RDAA = 0d0 - ! Phot%RWAA (:,:) - ALLOCATE( Phot%RWAA( Phot%NRAA, Phot%NSPAA ), STAT=RC ) + ! Phot%RWAA (:,:,:) ! H. Zhu + ALLOCATE( Phot%RWAA( Phot%NRAA, Phot%NSPAA, Phot%NDRg ), STAT=RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error allocating array RWAA!' CALL GC_Error( errMsg, RC, thisLoc ) @@ -532,8 +536,8 @@ SUBROUTINE Init_Phot_Container( Input_Opt, State_Grid, Phot, RC ) ENDIF Phot%SGAA = 0d0 - ! Phot%REAA (:,:) - ALLOCATE( Phot%REAA( Phot%NRAA, Phot%NSPAA ), STAT=RC ) + ! Phot%REAA (:,:,:) + ALLOCATE( Phot%REAA( Phot%NRAA, Phot%NSPAA, Phot%NDRg ), STAT=RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error allocating array REAA!' CALL GC_Error( errMsg, RC, thisLoc ) @@ -559,8 +563,8 @@ SUBROUTINE Init_Phot_Container( Input_Opt, State_Grid, Phot, RC ) ENDIF Phot%NCMAA = 0d0 - ! Phot%QQAA (:,:,:) - ALLOCATE( Phot%QQAA( Phot%NWVAA, Phot%NRAA, Phot%NSPAA ), STAT=RC ) + ! Phot%QQAA (:,:,:,:) + ALLOCATE( Phot%QQAA( Phot%NWVAA, Phot%NRAA, Phot%NSPAA, Phot%NDRg ), STAT=RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error allocating array QQAA!' CALL GC_Error( errMsg, RC, thisLoc ) @@ -568,8 +572,8 @@ SUBROUTINE Init_Phot_Container( Input_Opt, State_Grid, Phot, RC ) ENDIF Phot%QQAA = 0d0 - ! Phot%ALPHAA (:,:,:) - ALLOCATE( Phot%ALPHAA( Phot%NWVAA, Phot%NRAA, Phot%NSPAA ), & + ! Phot%ALPHAA (:,:,:,:) + ALLOCATE( Phot%ALPHAA( Phot%NWVAA, Phot%NRAA, Phot%NSPAA, Phot%NDRg ), & STAT=RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error allocating array ALPHAA!' @@ -578,8 +582,8 @@ SUBROUTINE Init_Phot_Container( Input_Opt, State_Grid, Phot, RC ) ENDIF Phot%ALPHAA = 0d0 - ! Phot%SSAA (:,:,:) - ALLOCATE( Phot%SSAA( Phot%NWVAA, Phot%NRAA, Phot%NSPAA ), STAT=RC ) + ! Phot%SSAA (:,:,:,:) + ALLOCATE( Phot%SSAA( Phot%NWVAA, Phot%NRAA, Phot%NSPAA, Phot%NDRg ), STAT=RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error allocating array SSAA!' CALL GC_Error( errMsg, RC, thisLoc ) @@ -587,8 +591,8 @@ SUBROUTINE Init_Phot_Container( Input_Opt, State_Grid, Phot, RC ) ENDIF Phot%SSAA = 0d0 - ! Phot%ASYMAA (:,:,:) - ALLOCATE( Phot%ASYMAA( Phot%NWVAA, Phot%NRAA, Phot%NSPAA ), & + ! Phot%ASYMAA (:,:,:,:) + ALLOCATE( Phot%ASYMAA( Phot%NWVAA, Phot%NRAA, Phot%NSPAA, Phot%NDRg ), & STAT=RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error allocating array ASYMAA!' @@ -598,7 +602,7 @@ SUBROUTINE Init_Phot_Container( Input_Opt, State_Grid, Phot, RC ) Phot%ASYMAA = 0d0 ! Phot%PHAA (:,:,:,:) - ALLOCATE( Phot%PHAA( Phot%NWVAA, Phot%NRAA, Phot%NSPAA, 8 ), & + ALLOCATE( Phot%PHAA( Phot%NWVAA, Phot%NRAA, Phot%NSPAA, 8, Phot%NDRg ), & STAT=RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error allocating array PHAA!' diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index c72110809..eaf88ae31 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -673,6 +673,10 @@ MODULE State_Diag_Mod REAL(f4), POINTER :: PM10(:,:,:) LOGICAL :: Archive_PM10 + ! H. Zhu + REAL(f4), POINTER :: PDER(:,:,:) + LOGICAL :: Archive_PDER + REAL(f4), POINTER :: TotalOA(:,:,:) LOGICAL :: Archive_TotalOA @@ -2114,6 +2118,10 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%PM10 => NULL() State_Diag%Archive_PM10 = .FALSE. + ! Paremeterized Dry Effective radius (H. Zhu, April 05 2024) + State_Diag%PDER => NULL() + State_Diag%Archive_PDER = .FALSE. + State_Diag%TotalOA => NULL() State_Diag%Archive_TotalOA = .FALSE. @@ -9388,6 +9396,29 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + !------------------------------------------------------------------- + ! PDER, aka parameterized dry effective radius for SNA and OM [nm] + ! H. Zhu, April 05, 2024 + !------------------------------------------------------------------- + diagID = 'PDER' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%PDER, & + archiveData = State_Diag%Archive_PDER, & + diagId = diagId, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + #ifdef MODEL_GEOS !-------------------------------------------------------------------- ! PM25 nitrates @@ -12152,6 +12183,7 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & State_Diag%Archive_AerMassTSOA .or. & State_Diag%Archive_BetaNO .or. & State_Diag%Archive_PM25 .or. & + State_Diag%Archive_PDER .or. & ! H. Zhu, April 05, 2024 State_Diag%Archive_PM10 .or. & State_Diag%Archive_TotalOA .or. & State_Diag%Archive_TotalOC .or. & @@ -13582,6 +13614,12 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN +! H. Zhu + CALL Finalize( diagId = 'PDER', & + Ptr2Data = State_Diag%PDER, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'TotalOA', & Ptr2Data = State_Diag%TotalOA, & RC = RC ) @@ -15578,6 +15616,12 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isUnits ) Units = 'ug m-3' IF ( isRank ) Rank = 3 +! H. Zhu + ELSE IF ( TRIM( Name_AllCaps ) == 'PDER' ) THEN + IF ( isDesc ) Desc = 'Paremeterized Effective Radius for SNA and OM' + IF ( isUnits ) Units = 'um' + IF ( isRank ) Rank = 3 + #ifdef MODEL_GEOS ELSE IF ( TRIM( Name_AllCaps ) == 'PM25NI' ) THEN IF ( isDesc ) Desc = & diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem index a35274364..a9c04a4a7 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem @@ -636,6 +636,7 @@ COLLECTIONS: @#'DefaultCollection', 'AerMassSOAIE ', 'GCHPchem', 'PM25 ', 'GCHPchem', 'PM10 ', 'GCHPchem', + 'PDER ', 'GCHPchem', 'TotalOA ', 'GCHPchem', 'TotalOC ', 'GCHPchem', #'AerMassASOA ', 'GCHPchem', From 4ea4c37c7fe1168eea88f073165b7c1d30f57dfb Mon Sep 17 00:00:00 2001 From: Haihui Zhu Date: Sat, 6 Apr 2024 17:49:45 -0500 Subject: [PATCH 205/331] moving PDER from aerosol mass collection to aerosols collection --- Headers/state_diag_mod.F90 | 2 +- run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index eaf88ae31..0efa63856 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -12183,7 +12183,6 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & State_Diag%Archive_AerMassTSOA .or. & State_Diag%Archive_BetaNO .or. & State_Diag%Archive_PM25 .or. & - State_Diag%Archive_PDER .or. & ! H. Zhu, April 05, 2024 State_Diag%Archive_PM10 .or. & State_Diag%Archive_TotalOA .or. & State_Diag%Archive_TotalOC .or. & @@ -12233,6 +12232,7 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & State_Diag%Archive_AOD = ( State_Diag%Archive_AODHygWL1 .or. & State_Diag%Archive_AODHygWL2 .or. & State_Diag%Archive_AODHygWL3 .or. & + State_Diag%Archive_PDER .or. & ! H. Zhu, April 05, 2024 State_Diag%Archive_AODSOAfromAqIsopWL1 .or. & State_Diag%Archive_AODSOAfromAqIsopWL2 .or. & State_Diag%Archive_AODSOAfromAqIsopWL3 .or. & diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem index a9c04a4a7..4e20fe1cf 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem @@ -636,7 +636,6 @@ COLLECTIONS: @#'DefaultCollection', 'AerMassSOAIE ', 'GCHPchem', 'PM25 ', 'GCHPchem', 'PM10 ', 'GCHPchem', - 'PDER ', 'GCHPchem', 'TotalOA ', 'GCHPchem', 'TotalOC ', 'GCHPchem', #'AerMassASOA ', 'GCHPchem', @@ -759,6 +758,7 @@ COLLECTIONS: @#'DefaultCollection', 'Chem_KhetiSLAHOClHBr ', 'GCHPchem', 'Chem_KhetiSLAHOBrHCl ', 'GCHPchem', 'Chem_KhetiSLAHOBrHBr ', 'GCHPchem', + 'PDER ', 'GCHPchem', :: #============================================================================== # Budget defined as species kg/s in the column (full, troposphere, or PBL) From 291210140c46a8c2af2d83760a61d2e84234c80b Mon Sep 17 00:00:00 2001 From: Viral Shah Date: Mon, 8 Apr 2024 10:15:44 -0400 Subject: [PATCH 206/331] Add PM25nit and PM25nh4 diags --- GeosCore/aerosol_mod.F90 | 4 +- Headers/state_diag_mod.F90 | 84 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 83 insertions(+), 5 deletions(-) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index d14b508f2..d3c69fb21 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -926,7 +926,7 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & ! PM2.5 nitrate IF ( State_Diag%Archive_PM25nit ) THEN - State_Diag%PM25nit(I,J,L) = ( NIT(I,J,L) * SIA_GROWTH ) & + State_Diag%PM25nit(I,J,L) = ( State_Chm%AerMass%NIT(I,J,L) * SIA_GROWTH ) & * ( 1013.25_fp / PMID(I,J,L) ) & * ( T(I,J,L) / 298.0_fp ) & * 1.0e+9_fp @@ -934,7 +934,7 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & ! PM2.5 ammonium IF ( State_Diag%Archive_PM25nh4 ) THEN - State_Diag%PM25nh4(I,J,L) = ( NH4(I,J,L) * SIA_GROWTH ) & + State_Diag%PM25nh4(I,J,L) = ( State_Chm%AerMass%NH4(I,J,L) * SIA_GROWTH ) & * ( 1013.25_fp / PMID(I,J,L) ) & * ( T(I,J,L) / 298.0_fp ) & * 1.0e+9_fp diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index c72110809..542d3805b 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -1399,9 +1399,15 @@ MODULE State_Diag_Mod !%%%%% PM2.5 diagnostics %%%%% - REAL(f4), POINTER :: PM25ni(:,:,:) ! PM25 nitrates + REAL(f4), POINTER :: PM25ni(:,:,:) ! PM25 nitrate+ammonium LOGICAL :: Archive_PM25ni + REAL(f4), POINTER :: PM25nit(:,:,:) ! PM25 nitrates + LOGICAL :: Archive_PM25nit + + REAL(f4), POINTER :: PM25nh4(:,:,:) ! PM25 ammonium + LOGICAL :: Archive_PM25nh4 + REAL(f4), POINTER :: PM25su(:,:,:) ! PM25 sulfates LOGICAL :: Archive_PM25su @@ -2767,6 +2773,12 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%PM25ni => NULL() State_Diag%Archive_PM25ni = .FALSE. + State_Diag%PM25nit => NULL() + State_Diag%Archive_PM25nit = .FALSE. + + State_Diag%PM25nh4 => NULL() + State_Diag%Archive_PM25nh4 = .FALSE. + State_Diag%PM25su => NULL() State_Diag%Archive_PM25su = .FALSE. @@ -9390,7 +9402,7 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & #ifdef MODEL_GEOS !-------------------------------------------------------------------- - ! PM25 nitrates + ! PM25 nitrates+ammonium !-------------------------------------------------------------------- diagID = 'PM25ni' CALL Init_and_Register( & @@ -9411,6 +9423,50 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + !-------------------------------------------------------------------- + ! PM25 nitrates + !-------------------------------------------------------------------- + diagID = 'PM25nit' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%PM25nit, & + archiveData = State_Diag%Archive_PM25nit, & + diagId = diagId, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + !-------------------------------------------------------------------- + ! PM25 ammonium + !-------------------------------------------------------------------- + diagID = 'PM25nh4' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%PM25nh4, & + archiveData = State_Diag%Archive_PM25nh4, & + diagId = diagId, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + !-------------------------------------------------------------------- ! PM25 sulfates !-------------------------------------------------------------------- @@ -14102,6 +14158,16 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'PM25nit', & + Ptr2Data = State_Diag%PM25nit, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + + CALL Finalize( diagId = 'PM25nh4', & + Ptr2Data = State_Diag%PM25nh4, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'PM25su', & Ptr2Data = State_Diag%PM25su, & RC = RC ) @@ -15581,7 +15647,19 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & #ifdef MODEL_GEOS ELSE IF ( TRIM( Name_AllCaps ) == 'PM25NI' ) THEN IF ( isDesc ) Desc = & - 'Particulate matter with radii < 2.5 um, nitrates' + 'Particulate matter with radii < 2.5 um, nitrates and ammonium' + IF ( isUnits ) Units = 'ug m-3' + IF ( isRank ) Rank = 3 + + ELSE IF ( TRIM( Name_AllCaps ) == 'PM25NIT' ) THEN + IF ( isDesc ) Desc = & + 'Particulate matter with radii < 2.5 um, nitrate' + IF ( isUnits ) Units = 'ug m-3' + IF ( isRank ) Rank = 3 + + ELSE IF ( TRIM( Name_AllCaps ) == 'PM25NH4' ) THEN + IF ( isDesc ) Desc = & + 'Particulate matter with radii < 2.5 um, ammonium' IF ( isUnits ) Units = 'ug m-3' IF ( isRank ) Rank = 3 From 7c7b807dff070ca6738f8c9ac8b9a4e204031a5b Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 8 Apr 2024 11:45:37 -0400 Subject: [PATCH 207/331] PR #1983 post-merge update: Pre-compute drydep species ID's GeosCore/drydep_mod.F90 - Now define module variables for drydep species ID's and pre-compute them in Init_Drydep. This will prevent repeated computation and comparison in loops over drydep species. - Also avoid useless computations where DIAM is multiplied by 1.0 Signed-off-by: Bob Yantosca --- GeosCore/drydep_mod.F90 | 154 +++++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 74 deletions(-) diff --git a/GeosCore/drydep_mod.F90 b/GeosCore/drydep_mod.F90 index 1d9694211..d4c651654 100644 --- a/GeosCore/drydep_mod.F90 +++ b/GeosCore/drydep_mod.F90 @@ -156,13 +156,23 @@ MODULE DRYDEP_MOD !======================================================================== ! Scalars - INTEGER :: NUMDEP, NWATER - INTEGER :: DRYHg0, DRYHg2, DryHgP - INTEGER :: id_ACET, id_ALD2, id_O3 - INTEGER :: id_MENO3, id_ETNO3, id_MOH - INTEGER :: id_NK01, id_Hg0 - INTEGER :: id_HNO3, id_PAN, id_IHN1 - INTEGER :: id_H2O2, id_SO2, id_NH3 + INTEGER :: NUMDEP, NWATER + INTEGER :: DRYHg0, DRYHg2, DryHgP + INTEGER :: id_ACET, id_ALD2, id_O3 + INTEGER :: id_MENO3, id_ETNO3, id_MOH + INTEGER :: id_NK01, id_Hg0 + INTEGER :: id_HNO3, id_PAN, id_IHN1 + INTEGER :: id_H2O2, id_SO2, id_NH3 + INTEGER :: idd_BCPO, idd_BCPI, idd_BrSALC + INTEGER :: idd_BrSALA, idd_DST1, idd_DST2 + INTEGER :: idd_DST3, idd_DST4, idd_DSTAL1 + INTEGER :: idd_DSTAL2, idd_DSTAL3, idd_DSTAL4 + INTEGER :: idd_ISALA, idd_ISALC, idd_NH4 + INTEGER :: idd_NIT, idd_NITD1, idd_NITD2 + INTEGER :: idd_NITD3, idd_NITD4, idd_NITs + INTEGER :: idd_SALA, idd_SALC, idd_SO4 + INTEGER :: idd_SO4D1, idd_SO4D2, idd_SO4D3 + INTEGER :: idd_SO4D4, idd_SO4s ! Arrays for Baldocchi drydep polynomial coefficients REAL(fp), TARGET :: DRYCOEFF(NPOLY ) = 0.0_fp @@ -1007,7 +1017,6 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & USE Input_Opt_Mod, ONLY : OptInput USE Species_Mod, ONLY : Species USE State_Chm_Mod, ONLY : ChmState - USE State_Chm_Mod, ONLY : Ind_ USE State_Diag_Mod, ONLY : DgnState USE State_Grid_Mod, ONLY : GrdState USE State_Met_Mod, ONLY : MetState @@ -1776,32 +1785,24 @@ SUBROUTINE DEPVEL( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Particle diameter, convert [m] -> [um] DIAM = A_RADI(K) * 2.e+0_f8 - IF ((Ind_(SpcInfo%Name) .EQ. Ind_('DST1')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('DSTAL1')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('NITD1')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('SO4D1'))) THEN - DIAM = 0.66895E-6 + IF ( K == idd_DST1 .or. K == idd_DSTAL1 .or. & + K == idd_NITD1 .or. K == idd_SO4D1 ) THEN + DIAM = 0.66895E-6 ENDIF - IF ((Ind_(SpcInfo%Name) .EQ. Ind_('DST2')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('DSTAL2')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('NITD2')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('SO4D2'))) THEN - DIAM = 2.4907E-6 + IF ( K == idd_DST2 .or. K == idd_DSTAL2 .or. & + K == idd_NITD2 .or. K == idd_SO4D2 ) THEN + DIAM = 2.4907E-6 ENDIF - IF ((Ind_(SpcInfo%Name) .EQ. Ind_('DST3')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('DSTAL3')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('NITD3')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('SO4D3'))) THEN - DIAM = 4.164E-6 + IF ( K == idd_DST3 .or. K == idd_DSTAL3 .or. & + K == idd_NITD3 .or. K == idd_SO4D3 ) THEN + DIAM = 4.164E-6 ENDIF - IF ((Ind_(SpcInfo%Name) .EQ. Ind_('DST4')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('DSTAL4')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('NITD4')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('SO4D4'))) THEN - DIAM = 6.677E-6 + IF ( K == idd_DST4 .or. K == idd_DSTAL4 .or. & + K == idd_NITD4 .or. K == idd_SO4D4 ) THEN + DIAM = 6.677E-6 ENDIF ! Particle density [kg/m3] @@ -3202,7 +3203,6 @@ FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, VTSout, Input_Opt, S USE Input_Opt_Mod, ONLY : OptInput USE Species_Mod, ONLY : Species USE State_Chm_Mod, ONLY : ChmState - USE State_Chm_Mod, ONLY : Ind_ ! ! !INPUT PARAMETERS: ! @@ -3303,11 +3303,7 @@ FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, VTSout, Input_Opt, S REAL(f8) :: DEDGE REAL(f8) :: DEN1, WTP INTEGER :: ID,NR - - ! For the species database - INTEGER :: SpcId - TYPE(Species), POINTER :: SpcInfo - REAL(f8) :: drydepRadius + REAL(f8) :: drydepRadius !======================================================================= ! # LUC [Zhang et al., 2001] GEOS-CHEM LUC (Corr. #) @@ -3482,22 +3478,16 @@ FUNCTION AERO_SFCRSII( K, II, PRESS, TEMP, USTAR, RHB, W10, VTSout, Input_Opt, S NR = INT((( Input_Opt%SALC_REDGE_um(2) - Input_Opt%SALA_REDGE_um(1) ) & / DR ) + 0.5e+0_f8 ) - ! drydepRadius - SpcId = NTRAIND(K) - SpcInfo => State_Chm%SpcData(SpcId)%Info - drydepRadius = A_RADI(K) ! Coarse seasalt - IF ((Ind_(SpcInfo%Name) .EQ. Ind_('NITS')) .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('SALC')) & - .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('SO4S')) .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('BRSALC')) & - .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('ISALC'))) THEN - drydepRadius = 0.74025E-6 + IF ( K == idd_NITS .or. K == idd_SALC .or. K == idd_SO4S .or. & + K == idd_BRSALC .or. K == idd_ISALC ) THEN + drydepRadius = 0.74025E-6 ENDIF - IF ((Ind_(SpcInfo%Name) .EQ. Ind_('SALA')) .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('BRSALA')) & - .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('ISALA'))) THEN - drydepRadius = 0.114945E-6 + IF ( K == idd_SALA .OR. K == idd_BRSALA .or. K == idd_ISALA ) THEN + drydepRadius = 0.114945E-6 ENDIF ! Particle radius [cm] @@ -3998,7 +3988,6 @@ FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR, & ! USE Species_Mod, ONLY : Species USE State_Chm_Mod, ONLY : ChmState - USE State_Chm_Mod, ONLY : Ind_ ! ! !INPUT PARAMETERS: @@ -4061,10 +4050,6 @@ FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR, & REAL(f8) :: RHBL ! Relative humidity local - ! For the species database - INTEGER :: SpcId - TYPE(Species), POINTER :: SpcInfo - !======================================================================= ! # LUC [Zhang et al., 2001] GEOS-CHEM LUC (Corr. #) !----------------------------------------------------------------------- @@ -4213,40 +4198,32 @@ FUNCTION ADUST_SFCRSII( K, II, PRESS, TEMP, USTAR, & RHBL = 0.98 ENDIF - SpcId = NTRAIND(K) - SpcInfo => State_Chm%SpcData(SpcId)%Info - ! SIA - IF ((Ind_(SpcInfo%Name) .EQ. Ind_('NIT')) .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('NH4')) & - .OR. (Ind_(SpcInfo%Name) .EQ. Ind_('SO4'))) THEN + IF ( K == idd_NIT .or. K == idd_NH4 .or. K == idd_SO4 ) THEN ! Efflorescence transtions IF (RHBL .LT. 0.35) THEN - DIAM = DIAM * 1.0 - ! Linear hygroscopic growth + ! DIAM is not changed ELSE IF ((RHBL .GE. 0.35) .AND. (RHBL .LE. 0.40)) THEN - DIAM = DIAM + (DIAM * ((1.0 + 0.61 * 0.40 / & - (1.0 - 0.40)) ** (1.0 / 3.0)) - DIAM) / & - (0.40 - 0.35) * (RHBL - 0.35) - ! Kohler hygroscopic growth + ! Linear hygroscopic growth + DIAM = DIAM + (DIAM * ((1.0_fp + 0.61_fp * 0.40_fp / & + (1.0_fp - 0.40_fp)) ** (1.0_fp / 3.0_fp)) - DIAM) / & + (0.40_fp - 0.35_fp) * (RHBL - 0.35_fp) ELSE - DIAM = DIAM * ((1.0 + 0.61 * RHBL / (1.0 - RHBL)) & - ** (1.0 / 3.0)) + ! Kohler hygroscopic growth + DIAM = DIAM * ((1.0_fp + 0.61_fp * RHBL / (1.0_fp - RHBL)) & + ** (1.0_fp / 3.0_fp)) ENDIF !BC - ELSE IF ((Ind_(SpcInfo%Name) .EQ. Ind_('BCPI')) .OR. & - (Ind_(SpcInfo%Name) .EQ. Ind_('BCPO'))) THEN - DIAM = DIAM * 1.0 + ELSE IF ( K == idd_BCPI .OR. K == idd_BCPO ) THEN + ! DIAM is not changed !OA ELSE - DIAM = DIAM * ((1.0 + 0.1 * RHBL / (1.0 - RHBL)) & - ** (1.0 / 3.0)) + DIAM = DIAM * ((1.0_fp + 0.1_fp * RHBL / (1.0_fp - RHBL)) & + ** (1.0_fp / 3.0_fp)) ENDIF - ! Free pointer - SpcInfo => NULL() - ! Particle density [kg/m3] hotp 10/26/07 DEN = 1500 @@ -4761,6 +4738,38 @@ SUBROUTINE INIT_DRYDEP( Input_Opt, State_Chm, State_Diag, State_Grid, RC ) id_H2O2 = Ind_('H2O2' ) id_SO2 = Ind_('SO2' ) id_NH3 = Ind_('NH3' ) + id_NK01 = Ind_('NK01' ) + + ! Drydep ID flags + idd_BCPO = Ind_('BCPI', 'D') + idd_BCPO = Ind_('BCPO', 'D') + idd_BrSALC = Ind_('BrSALC', 'D') + idd_BrSALA = Ind_('BrSALA', 'D') + idd_DST1 = Ind_('DST1', 'D') + idd_DST2 = Ind_('DST2', 'D') + idd_DST3 = Ind_('DST3', 'D') + idd_DST4 = Ind_('DST4', 'D') + idd_DSTAL1 = Ind_('DSTAL1', 'D') + idd_DSTAL2 = Ind_('DSTAL2', 'D') + idd_DSTAL3 = Ind_('DSTAL3', 'D') + idd_DSTAL4 = Ind_('DSTAL4', 'D') + idd_ISALA = Ind_('ISALA', 'D') + idd_ISALC = Ind_('ISALC', 'D') + idd_NH4 = Ind_('NH4', 'D') + idd_NIT = Ind_('NIT', 'D') + idd_NITD1 = Ind_('NITD1', 'D') + idd_NITD2 = Ind_('NITD2', 'D') + idd_NITD3 = Ind_('NITD3', 'D') + idd_NITD4 = Ind_('NITD4', 'D') + idd_NITs = Ind_('NITs', 'D') + idd_SALA = Ind_('SALA', 'D') + idd_SALC = Ind_('SALC', 'D') + idd_SO4 = Ind_('SO4', 'D') + idd_SO4D1 = Ind_('SO4D1', 'D') + idd_SO4D2 = Ind_('SO4D2', 'D') + idd_SO4D3 = Ind_('SO4D3', 'D') + idd_SO4D4 = Ind_('SO4D4', 'D') + idd_SO4s = Ind_('SO4S', 'D') !=================================================================== ! Arrays that hold information about dry-depositing species @@ -4987,9 +4996,6 @@ SUBROUTINE INIT_DRYDEP( Input_Opt, State_Chm, State_Diag, State_Grid, RC ) SpcInfo => NULL() ENDDO - ! For TOMAS - id_NK01 = Ind_('NK01' ) - !================================================================= ! Allocate arrays ! add allocation for SALT_V and DMID (jaegle 5/11/11) From ae61878ec99791d0f78ddaac2eabfbd0773a8c94 Mon Sep 17 00:00:00 2001 From: Haihui Zhu Date: Tue, 9 Apr 2024 09:56:28 -0500 Subject: [PATCH 208/331] making g a local variable --- GeosCore/aerosol_mod.F90 | 4 +--- GeosCore/photolysis_mod.F90 | 5 +---- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 2c37f92e5..20f59831b 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -97,8 +97,6 @@ MODULE AEROSOL_MOD ! (ewl, 1/23/17) INTEGER :: Map_NRHAER(5) - ! (hzhu Apr. 2024) - INTEGER :: g CONTAINS !EOC @@ -1065,7 +1063,7 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & LOGICAL :: FIRST = .TRUE. LOGICAL :: LINTERP CHARACTER(LEN=16) :: STAMP - INTEGER :: I, J, L, N, R, IRH, W, IRHN, NA, SpcID + INTEGER :: I, J, L, N, R, IRH, W, IRHN, NA, SpcID, g INTEGER :: AA, IWV, IIWV, NWVS, IR, NRT, S REAL*4 :: TEMP( State_Grid%NX,State_Grid%NY,State_Grid%NZ) REAL(fp) :: TEMP2(State_Grid%NX,State_Grid%NY,State_Grid%NZ) diff --git a/GeosCore/photolysis_mod.F90 b/GeosCore/photolysis_mod.F90 index 0e92c02e5..43aa79a57 100644 --- a/GeosCore/photolysis_mod.F90 +++ b/GeosCore/photolysis_mod.F90 @@ -43,9 +43,6 @@ MODULE PHOTOLYSIS_MOD ! Species ID flags INTEGER :: id_NIT, id_NITs, id_SALA, id_SALC -! for number of radii [hzhu, 08/2023] - INTEGER :: g - CONTAINS !EOC !------------------------------------------------------------------------------ @@ -862,7 +859,7 @@ SUBROUTINE RD_AOD( Input_Opt, State_Chm, RC ) ! !LOCAL VARIABLES ! ! Scalars - INTEGER :: I, J, K, N + INTEGER :: I, J, K, N, g INTEGER :: IOS, NJ1 LOGICAL :: LBRC, FileExists From c5b43fdb3f1b5431541f082c233fb553570de16b Mon Sep 17 00:00:00 2001 From: Haihui Zhu Date: Tue, 9 Apr 2024 10:40:15 -0500 Subject: [PATCH 209/331] adding an entry to CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0fbcf5be..718c2b078 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ This file documents all notable changes to the GEOS-Chem repository starting in version 14.0.0, including all GEOS-Chem Classic and GCHP run directory updates. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [14.x.x] - 2024-04-xx +- Added a parameterization for dry aerosol size (Rg) for SNA and OM aerosols. Updated AOD calculation reflecting varying aerosol size. ## [14.3.1] - 2024-04-02 ### Added From 0139486ac0732ec73488c04609b87f472d9778d6 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Tue, 9 Apr 2024 13:21:24 -0400 Subject: [PATCH 210/331] Add fixes for GCHP carbon simulations with single species (CO, CO2, OCS) The following fixes were added to address carbon simulations with CO, CO2, or OCS from crashing as discussed in #2237. 1. Add trailing whitespace after species names in HISTORY.rc.carbon to allow for differentiating between CO and CO2. 2. Modify function updateHistory.rc in run/shared/singleCarbonSpecies.sh to restore Collection.fields lines that are removed when CH4 is not included in the carbon simulation. Signed-off-by: Melissa Sulprizio # Conflicts: # run/shared/singleCarbonSpecies.sh --- CHANGELOG.md | 6 ++-- .../HISTORY.rc.templates/HISTORY.rc.carbon | 24 +++++++------- run/shared/singleCarbonSpecies.sh | 32 ++++++++++++++++--- 3 files changed, 41 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3d94f5cb..7cce47043 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,9 +9,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Diel and day-of-week scale factors for CEDS global base emissions - Added CO2, CO, and OCS single-tracer carbon simulations to the integration tests -### Fixed -- Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. - ### Changed - Switch from fixed to monthly timezones, which account for daylight savings time more accurately when computing emissions - Updated NOAA GMD surface CH4 boundary conditions through 2022 @@ -20,10 +17,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Use local scale height and level thickness to determine the PBL to determine the PBL top level and PBL pressure thickness ### Fixed +- Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. - Use rate-law function `GCARR_ac` for rxns that have Arrhenius `B` parameters that are zero - Now use correct index `WEAEROSOL(I,J,L,2+NDUST)` in routine `Settle_Strat_Aer` of `GeosCore/ucx_mod.F90` - Now get density of BCPI species from the species database in `ucx_mod.F90` -- Fix issues that prevented single-species carbon simulations from running +- Fix issues that prevented single-species carbon simulations from running in GCHP - Update `HEMCO_Config.rc.carbon` and `ExtData.rc.carbon` templates for consistency - Updated several emissions files for CO and CH4 for COARDS and MAPL compliance - Fixed several issues in GCHP single-species carbon simulation setup scripts diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon index 0ffb98d3f..d0e8e4834 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon @@ -166,14 +166,14 @@ COLLECTIONS: 'Emissions', SpeciesConc.frequency: 010000 SpeciesConc.duration: 240000 SpeciesConc.mode: 'time-averaged' - SpeciesConc.fields: 'SpeciesConcVV_CH4', 'GCHPchem', - 'SpeciesConcVV_CO ', 'GCHPchem', - 'SpeciesConcVV_CO2', 'GCHPchem', - 'SpeciesConcVV_OCS', 'GCHPchem', - ##'SpeciesConcMND_CH4', 'GCHPchem', - ##'SpeciesConcMND_CO ', 'GCHPchem', - ##'SpeciesConcMND_CO2', 'GCHPchem', - ##'SpeciesConcMND_OCS', 'GCHPchem', + SpeciesConc.fields: 'SpeciesConcVV_CH4 ', 'GCHPchem', + 'SpeciesConcVV_CO ', 'GCHPchem', + 'SpeciesConcVV_CO2 ', 'GCHPchem', + 'SpeciesConcVV_OCS ', 'GCHPchem', + ##'SpeciesConcMND_CH4 ', 'GCHPchem', + ##'SpeciesConcMND_CO ', 'GCHPchem', + ##'SpeciesConcMND_CO2 ', 'GCHPchem', + ##'SpeciesConcMND_OCS ', 'GCHPchem', :: #============================================================================== # Budget defined as species kg/s in the column (full, troposphere, or PBL) @@ -258,10 +258,10 @@ COLLECTIONS: 'Emissions', CloudConvFlux.frequency: 010000 CloudConvFlux.duration: 010000 CloudConvFlux.mode: 'time-averaged' - CloudConvFlux.fields: 'CloudConvFlux_CH4', 'GCHPchem', - 'CloudConvFlux_CO ', 'GCHPchem', - 'CloudConvFlux_CO2', 'GCHPchem', - 'CloudConvFlux_OCS', 'GCHPchem', + CloudConvFlux.fields: 'CloudConvFlux_CH4 ', 'GCHPchem', + 'CloudConvFlux_CO ', 'GCHPchem', + 'CloudConvFlux_CO2 ', 'GCHPchem', + 'CloudConvFlux_OCS ', 'GCHPchem', :: #============================================================================== # Concentrations of OH immediately after exiting the KPP solver diff --git a/run/shared/singleCarbonSpecies.sh b/run/shared/singleCarbonSpecies.sh index d53f41d3b..378f3c629 100755 --- a/run/shared/singleCarbonSpecies.sh +++ b/run/shared/singleCarbonSpecies.sh @@ -213,17 +213,38 @@ function updateHistory() { # Arguments: # ${1} : List of species to exclude # ${2} : Path to the run directory + # ${3} : List of species to include #======================================================================== # File to be modified file="${2}/HISTORY.rc" # For GCHP: remove entries for species to be excluded - for spc in ${1}; do - sed -i "/\_${spc}[ \t]*'/d" "${file}" - sed -i "/Emis${spc}_/d" "${file}" + exclude=("${1}") + for spc in ${exclude[@]}; do + sed -i "/\_${spc} /d" "${file}" # trailing space required + sed -i "/Emis${spc}_/d" "${file}" done + # Restore Collection.fields line + if [[ ! ${3} =~ "CH4" ]]; then + oldline=" 'Emis${3}_Total" + newline="Emissions.fields: 'Emis${3}_Total" + sed -i "s|$oldline|$newline|g" "${file}" + + oldline=" 'SpeciesConcVV_${3}" + newline="SpeciesConc.fields: 'SpeciesConcVV_${3}" + sed -i "s|$oldline|$newline|g" "${file}" + + oldline=" 'BudgetEmisDryDepFull_${3}" + newline="Budget.fields: 'BudgetEmisDryDepFull_${3}" + sed -i "s|$oldline|$newline|g" "${file}" + + oldline=" 'CloudConvFlux_${3}" + newline="CloudConvFlux.fields: 'CloudConvFlux_${3}" + sed -i "s|$oldline|$newline|g" "${file}" + fi + # Also disable emissions for OCS-only simulations # (as we currently do not have any) isItemInList "OCS" "${1}" @@ -348,13 +369,14 @@ function singleCarbonSpecies() { rundir="${2}" fi - # Get species to exclude + # Get species to include/exclude exclude=$(speciesToExclude "${1}") + include=${1} # Update configuration files updateGeosChemConfig "${exclude}" "${rundir}" updateHemcoConfig "${exclude}" "${rundir}" updateHemcoDiagn "${exclude}" "${rundir}" - updateHistory "${exclude}" "${rundir}" + updateHistory "${exclude}" "${rundir}" "${include}" updateExtData "${exclude}" "${rundir}" } From 3554df44611d57164efe16d5de56574415827840 Mon Sep 17 00:00:00 2001 From: "Sebastian D. Eastham" Date: Sat, 30 Sep 2023 16:04:27 -0400 Subject: [PATCH 211/331] First attempt at integrating HETP as an alternative to ISORROPIA --- GeosCore/CMakeLists.txt | 8 +- ...mod.F90 => aerosol_thermodynamics_mod.F90} | 127 +- GeosCore/chemistry_mod.F90 | 34 +- GeosCore/cleanup.F90 | 4 +- GeosCore/hetp_mod.F90 | 11863 ++++++++++++++++ GeosCore/input_mod.F90 | 15 + GeosCore/mach_hetp_mod.F90 | 495 + Headers/input_opt_mod.F90 | 2 + LICENSE.txt | 19 + 9 files changed, 12503 insertions(+), 64 deletions(-) rename GeosCore/{isorropiaII_mod.F90 => aerosol_thermodynamics_mod.F90} (91%) create mode 100644 GeosCore/hetp_mod.F90 create mode 100644 GeosCore/mach_hetp_mod.F90 diff --git a/GeosCore/CMakeLists.txt b/GeosCore/CMakeLists.txt index a0ee4ece4..a9c7d883b 100755 --- a/GeosCore/CMakeLists.txt +++ b/GeosCore/CMakeLists.txt @@ -4,10 +4,10 @@ # only for file tpcore_window_mod.F90 if(${USE_REAL8}) if("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "Intel") - set_source_files_properties(tpcore_window_mod.F90 + set_source_files_properties(tpcore_window_mod.F90 mach_hetp_mod.F90 hetp_mod.F90 PROPERTIES COMPILE_FLAGS "-r8") elseif("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU") - set_source_files_properties(tpcore_window_mod.F90 + set_source_files_properties(tpcore_window_mod.F90 mach_hetp_mod.F90 hetp_mod.F90 PROPERTIES COMPILE_FLAGS "-fdefault-real-8 -fdefault-double-8") endif() endif() @@ -47,7 +47,7 @@ add_library(GeosCore hco_interface_gc_mod.F90 hco_utilities_gc_mod.F90 input_mod.F90 - isorropiaII_mod.F90 + aerosol_thermodynamics_mod.F90 land_mercury_mod.F90 linear_chem_mod.F90 linoz_mod.F90 @@ -82,6 +82,8 @@ add_library(GeosCore vdiff_mod.F90 wetscav_mod.F90 YuIMN_Code.F90 + mach_hetp_mod.F90 + hetp_mod.F90 # Files only included for special cases $<$:flexgrid_read_mod.F90 get_met_mod.F90 set_boundary_conditions_mod.F90> diff --git a/GeosCore/isorropiaII_mod.F90 b/GeosCore/aerosol_thermodynamics_mod.F90 similarity index 91% rename from GeosCore/isorropiaII_mod.F90 rename to GeosCore/aerosol_thermodynamics_mod.F90 index 2de6f8953..4937544f0 100644 --- a/GeosCore/isorropiaII_mod.F90 +++ b/GeosCore/aerosol_thermodynamics_mod.F90 @@ -3,19 +3,19 @@ !------------------------------------------------------------------------------ !BOP ! -! !MODULE: isorropiaii_mod.F90 +! !MODULE: aerosol_thermodynamics_mod.F90 ! -! !DESCRIPTION: Module ISORROPIAII\_MOD contains the routines that provide -! the interface between ISORROPIA II and GEOS-Chem. +! !DESCRIPTION: Module AEROSOL\_THERMODYNAMICS\_MOD contains the routines that provide +! the interface between ISORROPIA II/HETP and GEOS-Chem. !\\ !\\ -! The actual ISORROPIA II code which performs Na-SO4-NH3-NO3-Cl-(Ca-K-Mg) -! aerosol thermodynamic equilibrium is in \texttt{isorropiaIIcode.f}. +! The actual ISORROPIA II/HETP code which performs Na-SO4-NH3-NO3-Cl-(Ca-K-Mg) +! aerosol thermodynamic equilibrium is in \texttt{isorropiaIIcode.f} and \textt{hetp_mod.F90}. !\\ !\\ ! !INTERFACE: ! -MODULE ISORROPIAII_MOD +MODULE AEROSOL_THERMODYNAMICS_MOD ! ! !USES: ! @@ -26,16 +26,16 @@ MODULE ISORROPIAII_MOD ! ! !PUBLIC MEMBER FUNCTIONS: ! - PUBLIC :: CLEANUP_ISORROPIAII - PUBLIC :: DO_ISORROPIAII + PUBLIC :: CLEANUP_ATE + PUBLIC :: DO_ATE PUBLIC :: GET_GNO3 #if defined( MODEL_CESM ) - PUBLIC :: INIT_ISORROPIAII + PUBLIC :: INIT_ATE #else ! ! !PRIVATE MEMBER FUNCTIONS: ! - PRIVATE :: INIT_ISORROPIAII + PRIVATE :: INIT_ATE #endif PRIVATE :: SAFELOG10 PRIVATE :: SET_HNO3 @@ -106,17 +106,17 @@ MODULE ISORROPIAII_MOD !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: do_isorropiaii +! !IROUTINE: do_ate ! -! !DESCRIPTION: Subroutine DO\_ISORROPIAII is the interface between the -! GEOS-Chem model and the aerosol thermodynamical equilibrium routine -! ISORROPIA II. +! !DESCRIPTION: Subroutine DO\_ATE is the interface between the +! GEOS-Chem model and the aerosol thermodynamical equilibrium routines +! ISORROPIA II or HETP. !\\ !\\ ! !INTERFACE: ! - SUBROUTINE DO_ISORROPIAII( Input_Opt, State_Chm, State_Diag, & - State_Grid, State_Met, RC ) + SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & + State_Grid, State_Met, RC ) ! ! !USES: ! @@ -139,6 +139,7 @@ SUBROUTINE DO_ISORROPIAII( Input_Opt, State_Chm, State_Diag, & USE TIME_MOD, ONLY : ITS_A_NEW_MONTH USE TIME_MOD, ONLY : GET_ELAPSED_SEC USE IsorropiaII_Main_Mod, ONLY : Isorropia + USE HETP_Mod, ONLY : mach_hetp_main_15cases ! ! !INPUT PARAMETERS: ! @@ -211,6 +212,13 @@ SUBROUTINE DO_ISORROPIAII( Input_Opt, State_Chm, State_Diag, & REAL(f8) :: Dcs !SALC diameter, m REAL(f8) :: n_air !air density, molec/cm3 REAL(f8) :: n_ssc !SALC number concentration, molec/m3 + REAL(f8) :: HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4 + REAL(f8) :: HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl + REAL(f8) :: HETP_HCl, HETP_Na, HETP_Ca, HETP_K + REAL(f8) :: HETP_Mg, HETP_H, HETP_OH, HETP_LWC + REAL(f8) :: HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg + REAL(f8) :: HETP_frSO4 + REAL(f4) :: HETP_num ! Strings CHARACTER(LEN=15) :: SCASI @@ -251,7 +259,7 @@ SUBROUTINE DO_ISORROPIAII( Input_Opt, State_Chm, State_Diag, & REAL(fp) :: OFFLINE_HCl (State_Grid%NX,State_Grid%NY,State_Grid%NZ) !================================================================= - ! DO_ISORROPIAII begins here! + ! DO_ATE begins here! !================================================================= ! Initialize @@ -371,7 +379,7 @@ SUBROUTINE DO_ISORROPIAII( Input_Opt, State_Chm, State_Diag, & #if !defined( MODEL_CESM ) ! Initialize arrays - CALL INIT_ISORROPIAII( State_Grid ) + CALL INIT_ATE( State_Grid ) #endif ! Check to see if we need to get HNO3 from HEMCO @@ -485,6 +493,12 @@ SUBROUTINE DO_ISORROPIAII( Input_Opt, State_Chm, State_Diag, & !$OMP PRIVATE( Qk, n_air, n_ssc, Hplus, Dcs ) & !$OMP PRIVATE( DEN_SAV, HNO3_DEN, OutOfBounds, F_HCL, F_HNO3 ) & !$OMP PRIVATE( SULFTEMP, BISULTEMP, NITRTEMP, HNO3_UGM3, CLTEMP ) & + !$OMP PRIVATE( HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4 ) & + !$OMP PRIVATE( HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl ) & + !$OMP PRIVATE( HETP_HCl, HETP_Na, HETP_Ca, HETP_K ) & + !$OMP PRIVATE( HETP_Mg, HETP_H, HETP_OH, HETP_LWC ) & + !$OMP PRIVATE( HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg ) & + !$OMP PRIVATE( HETP_frSO4, HETP_num ) & !$OMP SCHEDULE( DYNAMIC, 1 ) DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY @@ -733,18 +747,20 @@ SUBROUTINE DO_ISORROPIAII( Input_Opt, State_Chm, State_Diag, & ENDIF - !--------------------------------- - ! Call ISORROPIA - !--------------------------------- + If (.not. Input_Opt%LHETP) Then + !--------------------------------- + ! Call ISORROPIA + !--------------------------------- - ! set type of ISORROPIA call - ! Forward problem, do not change this value - ! 0e+0_fp represents forward problem - CNTRL(1) = 0.0_fp + ! set type of ISORROPIA call + ! Forward problem, do not change this value + ! 0e+0_fp represents forward problem + CNTRL(1) = 0.0_fp - ! Metastable for now - ! 1e+0_fp represents metastable problem - CNTRL(2) = 1.0_fp + ! Metastable for now + ! 1e+0_fp represents metastable problem + CNTRL(2) = 1.0_fp + End If ! Insert concentrations [mole/m3] into WI & prevent underflow WI(1) = MAX( TNA, CONMIN ) @@ -811,11 +827,38 @@ SUBROUTINE DO_ISORROPIAII( Input_Opt, State_Chm, State_Diag, & ELSE ! %%% Perform aerosol thermodynamic equilibrium %%% - ! ISORROPIA can be found in ISORROPIAIICODE.F - ! inputs are WI, RHI, TEMPI, CNTRL - CALL ISORROPIA( WI, RHI, TEMPI, CNTRL, & - WT, GAS, AERLIQ, AERSLD, & - SCASI, OTHER ) + If (Input_Opt%LHETP) Then + ! For safety + GAS = 0.0d0 + AERLIQ = 0.0d0 + Call MACH_HETP_Main_15Cases( WI(2), WI(3), WI(4), WI(1), WI(5), & + WI(6), WI(7), WI(8), TEMPI, RHI, & + HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4, & + HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl, & + HETP_HCl, HETP_Na, HETP_Ca, HETP_K, & + HETP_Mg, HETP_H, HETP_OH, HETP_LWC, & + HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg, & + HETP_frSO4, HETP_num ) + ! Spoof ISORROPIA outputs which are still used + GAS(1) = HETP_NH3 + GAS(2) = HETP_HNO3 + GAS(3) = HETP_HCl + ! Only used for diagnostics + AERLIQ( 1) = HETP_H + AERLIQ( 2) = HETP_Na + AERLIQ( 3) = HETP_NH4 + AERLIQ( 4) = HETP_Cl + AERLIQ( 5) = HETP_SO4 + AERLIQ( 6) = HETP_HSO4 + AERLIQ( 7) = HETP_NO3 + AERLIQ( 8) = HETP_LWC + Else + ! ISORROPIA can be found in ISORROPIAIICODE.F + ! inputs are WI, RHI, TEMPI, CNTRL + CALL ISORROPIA( WI, RHI, TEMPI, CNTRL, & + WT, GAS, AERLIQ, AERSLD, & + SCASI, OTHER ) + End If ! Consider mass transfer and acid limitation for coarse ! mode calculation @@ -998,7 +1041,7 @@ SUBROUTINE DO_ISORROPIAII( Input_Opt, State_Chm, State_Diag, & CALL DEBUG_MSG( '### ISORROPIAII: a DO_ISORROPIAII' ) ENDIF - END SUBROUTINE DO_ISORROPIAII + END SUBROUTINE DO_ATE !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! @@ -1253,7 +1296,7 @@ END SUBROUTINE GET_Qk !\\ ! !INTERFACE: ! - SUBROUTINE INIT_ISORROPIAII( State_Grid ) + SUBROUTINE INIT_ATE( State_Grid ) ! ! !USES: ! @@ -1276,7 +1319,7 @@ SUBROUTINE INIT_ISORROPIAII( State_Grid ) INTEGER :: AS !================================================================= - ! INIT_ISORROPIAII begins here! + ! INIT_ATE begins here! !================================================================= ALLOCATE( HNO3_sav( State_Grid%NX, State_Grid%NY, State_Grid%NZ ), & @@ -1289,21 +1332,21 @@ SUBROUTINE INIT_ISORROPIAII( State_Grid ) IF ( AS /= 0 ) CALL ALLOC_ERR( 'GAS_HNO3' ) GAS_HNO3 = 0e+0_fp - END SUBROUTINE INIT_ISORROPIAII + END SUBROUTINE INIT_ATE !EOC !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: cleanup_isorropiaII +! !IROUTINE: cleanup_ate ! -! !DESCRIPTION: Subroutine CLEANUP\_ISORROPIAII deallocates all module arrays. +! !DESCRIPTION: Subroutine CLEANUP\_ATE deallocates all module arrays. !\\ !\\ ! !INTERFACE: ! - SUBROUTINE CLEANUP_ISORROPIAII + SUBROUTINE CLEANUP_ATE ! ! !REVISION HISTORY: ! 06 Jul 2007 - H. O. T. Pye - Initial version @@ -1315,6 +1358,6 @@ SUBROUTINE CLEANUP_ISORROPIAII IF ( ALLOCATED( HNO3_sav ) ) DEALLOCATE( HNO3_sav ) IF ( ALLOCATED( GAS_HNO3 ) ) DEALLOCATE( GAS_HNO3 ) - END SUBROUTINE CLEANUP_ISORROPIAII + END SUBROUTINE CLEANUP_ATE !EOC -END MODULE ISORROPIAII_MOD +END MODULE AEROSOL_THERMODYNAMICS_MOD diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index 881bd6a9f..0f1cb1c06 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -66,7 +66,7 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & USE FullChem_Mod, ONLY : Do_FullChem USE GLOBAL_CH4_MOD, ONLY : CHEMCH4 USE Input_Opt_Mod, ONLY : OptInput - USE ISORROPIAII_MOD, ONLY : DO_ISORROPIAII + USE AEROSOL_THERMODYNAMICS_MOD, ONLY : DO_ATE USE LINEAR_CHEM_MOD, ONLY : DO_LINEAR_CHEM USE MERCURY_MOD, ONLY : CHEMMERCURY USE POPS_MOD, ONLY : CHEMPOPS @@ -350,17 +350,17 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & IF ( Input_Opt%LSSALT ) THEN #ifndef APM - ! ISORROPIA takes Na+, Cl- into account - CALL Do_IsorropiaII( Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Diag = State_Diag, & - State_Grid = State_Grid, & - State_Met = State_Met, & - RC = RC ) + ! ISORROPIA/HETP take Na+, Cl- into account + CALL Do_ATE( Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + State_Met = State_Met, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered in "Do_ISORROPIAII"!' + ErrMsg = 'Error encountered in "Do_ATE"!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF @@ -719,18 +719,18 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & IF ( Input_Opt%LSSALT ) THEN #ifndef APM - ! ISORROPIA takes Na+, Cl- into account - CALL Do_IsorropiaII( Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Diag = State_Diag, & - State_Grid = State_Grid, & - State_Met = State_Met, & - RC = RC ) + ! ISORROPIA/HETP take Na+, Cl- into account + CALL Do_ATE( Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + State_Met = State_Met, & + RC = RC ) #endif ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN - ErrMsg = 'Error encountered in "Do_IsorropiaII"!' + ErrMsg = 'Error encountered in "Do_ATE"!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF diff --git a/GeosCore/cleanup.F90 b/GeosCore/cleanup.F90 index 9b59a8caf..29e80b632 100644 --- a/GeosCore/cleanup.F90 +++ b/GeosCore/cleanup.F90 @@ -28,7 +28,7 @@ SUBROUTINE CLEANUP( Input_Opt, State_Grid, ERROR, RC ) USE Grid_Registry_Mod, ONLY : Cleanup_Grid_Registry USE History_Mod, ONLY : History_Cleanup USE Input_Opt_Mod, ONLY : OptInput - USE ISORROPIAII_MOD, ONLY : CLEANUP_ISORROPIAII + USE AEROSOL_THERMODYNAMICS_MOD, ONLY : CLEANUP_ATE USE LAND_MERCURY_MOD, ONLY : CLEANUP_LAND_MERCURY USE LINEAR_CHEM_MOD, ONLY : CLEANUP_LINEAR_CHEM USE MERCURY_MOD, ONLY : CLEANUP_MERCURY @@ -126,7 +126,7 @@ SUBROUTINE CLEANUP( Input_Opt, State_Grid, ERROR, RC ) CALL CLEANUP_CO2() CALL CLEANUP_DRYDEP() CALL CLEANUP_DUST() - CALL CLEANUP_ISORROPIAII() + CALL CLEANUP_ATE() CALL CLEANUP_PJC_PFIX() CALL CLEANUP_PRESSURE() CALL CLEANUP_SEASALT() diff --git a/GeosCore/hetp_mod.F90 b/GeosCore/hetp_mod.F90 new file mode 100644 index 000000000..8a2e0f0e2 --- /dev/null +++ b/GeosCore/hetp_mod.F90 @@ -0,0 +1,11863 @@ +!######### HETP: AEROSOL THERMODYNAMIC EQUILIBRIUM OF THE ################### +!######### NH4-SO4-NO3-Na-Cl-Ca-Mg-K SYSTEM ################### +! +!Copyright (C) 2023 Stefan Miller, Environment and Climate Change Canada +! Contact: Stefan.Miller (at) ec.gc.ca +! +! This program is free software: you can redistribute it and/or modify +! it under the terms of the GNU General Public License as published by +! the Free Software Foundation, either version 3 of the License, or +! (at your option) any later version. +! +! This program is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU General Public License for more details. +! +! You should have received a copy of the GNU General Public License +! along with this program. If not, see . +! +!############################################################################ +! ## HETP Code +! ## Module file for HETP code +! ## Contains: (1) parameters related to ITP/activity coefficient calculations +! ## (2) ZSR data arrays +! ## (3) other parameters +! +! ## Copyright 2023, Environment and Climate Change Canada (ECCC) +! ## Written by Stefan Miller +!############################################################################ +module hetp_mod + + IMPLICIT NONE + PRIVATE + + PUBLIC :: mach_hetp_main_15cases + PRIVATE :: mach_hetp_calca2 + PRIVATE :: mach_hetp_calcb4 + PRIVATE :: mach_hetp_calcc2 + PRIVATE :: mach_hetp_calcd3 + PRIVATE :: mach_hetp_calce4 + PRIVATE :: mach_hetp_calcf2 + PRIVATE :: mach_hetp_calcg5 + PRIVATE :: mach_hetp_calch6 + PRIVATE :: mach_hetp_calci6 + PRIVATE :: mach_hetp_calcj3 + PRIVATE :: mach_hetp_calco7 + PRIVATE :: mach_hetp_calcm8 + PRIVATE :: mach_hetp_calcp13 + PRIVATE :: mach_hetp_calcl9 + PRIVATE :: mach_hetp_calck4 + PRIVATE :: mach_hetp_calcact1 + PRIVATE :: mach_hetp_calcact1b + PRIVATE :: mach_hetp_calcact2 + PRIVATE :: mach_hetp_calcact2b + PRIVATE :: mach_hetp_calcact3 + PRIVATE :: mach_hetp_calcact3b + PRIVATE :: mach_hetp_calcact4 + PRIVATE :: mach_hetp_calcact4b + PRIVATE :: mach_hetp_poly3v + PRIVATE :: mach_hetp_poly + PRIVATE :: mach_hetp_adjust + + CONTAINS + + !################################################################################### + ! ## HETP Code + ! ## Branch/subcase determination for metastable state + ! AEROSOL THERMODYNAMIC EQUILIBRIUM OF THE NH4-SO4-NO3-Na-Cl-Ca-Mg-K system + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + !################################################################################### + subroutine mach_hetp_main_15cases(TS, TA, TN, TNa, TCl, TCa, TK, TMg, temp, rh, & + so4, hso4, caso4, nh4, nh3, no3, hno3, cl, hcl, & + na, ca, k, mg, h, oh, lwc, frna, frca, frk, frmg,& + frso4, case_number) + ! + use mach_hetp_mod + implicit none + ! + ! INPUT VARIABLES (total gas + aerosol, input as mol/m3 air) + real(kind=8), intent(in) :: TS ! Total sulfate + real(kind=8), intent(in) :: TA ! Total ammonium + real(kind=8), intent(in) :: TN ! Total nitrate + real(kind=8), intent(in) :: TNa ! Total sodium + real(kind=8), intent(in) :: TCl ! Total chloride + real(kind=8), intent(in) :: TCa ! Total calcium + real(kind=8), intent(in) :: TK ! Total potassium + real(kind=8), intent(in) :: TMg ! Total magnesium + real(kind=8), intent(in) :: temp ! Air temperature (K) + real(kind=8), intent(in) :: rh ! Relative humidity (0-1 scale; zero allowed) + ! + ! OUTPUT VARIABLES (output as mol/m3 air) + real(kind=8), intent(out) :: so4 ! SO4-- (aq) + real(kind=8), intent(out) :: hso4 ! HSO4- (aq) + real(kind=8), intent(out) :: caso4 ! CaSO4 (s) + real(kind=8), intent(out) :: nh4 ! NH4+ (aq) + real(kind=8), intent(out) :: nh3 ! NH3 (g) + real(kind=8), intent(out) :: no3 ! NO3- (aq) + real(kind=8), intent(out) :: hno3 ! HNO3 (g) + real(kind=8), intent(out) :: cl ! Cl- (aq) + real(kind=8), intent(out) :: hcl ! HCl (g) + real(kind=8), intent(out) :: na ! Na+ (aq) + real(kind=8), intent(out) :: ca ! Ca2+ (aq) + real(kind=8), intent(out) :: k ! K+ (aq) + real(kind=8), intent(out) :: mg ! Mg2+ (aq) + real(kind=8), intent(out) :: h ! H+ (aq) + real(kind=8), intent(out) :: oh ! OH- (aq) + real(kind=8), intent(out) :: lwc ! Aerosol liquid water content + real(kind=8), intent(out) :: frna ! Free Na + real(kind=8), intent(out) :: frca ! Free Ca + real(kind=8), intent(out) :: frk ! Free K + real(kind=8), intent(out) :: frmg ! Free Mg + real(kind=8), intent(out) :: frso4 ! Free SO4 + real(kind=4), intent(out) :: case_number + !!if_off + ! + ! ## Local variables ## + integer(kind=4), parameter :: nr = 15 !number of eq reactions + ! + real(kind=8), dimension(nr) :: k0 = (/3569119.63798333d0, 0.983992783234808d0, 57.639d0, & + 1.805d-5, 1.015d-2, 141.166162470542d0, & + 1.71700241471167d0, 30.9720858820060d0, 5.746d-17, & + 1.010d-14, 1.971d6, 37.6654800230020d0, & + 12.2216391328847d0, 0.474106585740804d0, 2.511d6/) + ! + real(kind=8), dimension(nr) :: p1 = (/29.4737118977339d0, 1.613671606774050d-2, 13.79d0, & + -1.50d0, 8.85d0, -2.88443799710923d0, & + -2.63431889805915d0, -5.19198839479649d0,-74.38d0, & + -22.52d0, 30.20d0, -1.56284095116099d0, & + -8.20148594143076d0, 0.992408038166253d0, 29.17d0/) + ! + real(kind=8), dimension(nr) :: p2 = (/16.8318498917489d0, 0.0d0, -5.393d0, 26.920d0, & + 25.140d0, 15.8287226365167d0, 38.5722877074814d0, & + 54.4022131344720d0, 6.120d0, 26.920d0, & + 19.910d0, 16.8992061582872d0, 16.0067356266538d0, & + 39.4996391628578d0, 16.830d0/) + ! + ! + real(kind=8) :: sulrat, sodrat, so4rat, crnarat, crrat, rest + real(kind=8) :: ccaso4i, cafri, ccano32i, cnacli, cmgno32i, ccacl2i, rest1 + real(kind=8) :: cna2so4i, frso4i, nafri, cnano3i, no3fr, rest2, cmgso4i + real(kind=8) :: frmgi, no3fri, cmgcl2i, clfri, rest3 + real(kind=8) :: frnh4, frno3, frcl, frca_init, frna_init, frk_init, frmg_init + ! + ! + ! On input, set output aqueous phase species to the total gas + aerosol concentration; + ! the output speciation will be partitioned and these variables reused + so4 = TS + nh4 = TA + no3 = TN + na = TNa + cl = TCl + ca = TCa + k = TK + mg = TMg + ! + ! Set other output species to 0.0d0 + hso4 = 0.0d0 + caso4 = 0.0d0 + nh3 = 0.0d0 + hno3 = 0.0d0 + hcl = 0.0d0 + h = 0.0d0 + oh = 0.0d0 + lwc = 0.0d0 + frna = 0.0d0 + frca = 0.0d0 + frk = 0.0d0 + frmg = 0.0d0 + ! + frso4 = 0.0d0 + frnh4 = 0.0d0 + frno3 = 0.0d0 + frcl = 0.0d0 + frca_init = 0.0d0 + frna_init = 0.0d0 + frk_init = 0.0d0 + frmg_init = 0.0d0 + ! + ! Sulfate ratios; initialize to 0.0d0 + sulrat = 0.0d0 + sodrat = 0.0d0 + so4rat = 0.0d0 + crnarat = 0.0d0 + crrat = 0.0d0 + ! + ! ####################### + ! ### SORTING SECTION ### + ! ####################### + ! + ! ### Branch 0 ### + ! ### No cases, all species < tiny: do nothing + if (TS + TA + TN + TNa + TCl + TCa + TK + TMg <= tiny) then + case_number = 0.0d0 + ! + ! ### Branch 1 ### + ! ISRP1F: Only sulfate and ammonium + else if (TN + TNa + TCl + TCa + TK + TMg <= tiny) then + so4 = max(so4, tiny) + nh4 = max(nh4, tiny) + no3 = 0.0d0 + na = 0.0d0 + cl = 0.0d0 + ca = 0.0d0 + k = 0.0d0 + mg = 0.0d0 + ! + ! ## Calculate sulfate ratio + sulrat = nh4 / so4 + ! + ! ## 1. Sulfate poor (case: calca2) + if (2.0 <= sulrat) then + case_number = 1.0d0 + call mach_hetp_calca2(so4, nh4, nh3, hso4, h, oh, & + lwc, rh, temp, k0, p1, p2, nr) + ! + ! ## 2. Sulfate rich, no acid (case: calcb4) + else if (1.0 <= sulrat .and. sulrat < 2.0) then + case_number = 2.0d0 + call mach_hetp_calcb4(so4, nh4, nh3, hso4, h, lwc, & + rh, temp, k0, p1, p2, nr) + ! + ! ## 3. Sulfate rich, free acid (case: calcc2) + else if (sulrat < 1.0) then + case_number = 3.0d0 + call mach_hetp_calcc2(so4, nh4, nh3, hso4, h, lwc, & + rh, temp, k0, p1, p2, nr) + end if + ! + ! ### Branch 2 ### + ! ISRP2F: Only sulfate, ammonium and nitrate + else if (TNa + TCl + TCa + TK + TMg <= tiny) then + so4 = max(so4, tiny) + nh4 = max(nh4, tiny) + no3 = max(no3, tiny) + na = 0.0d0 + cl = 0.0d0 + ca = 0.0d0 + k = 0.0d0 + mg = 0.0d0 + ! + ! ## Calculate sulfate ratio + sulrat = nh4 / so4 + ! + ! ## 4. Sulfate poor (case: calcd3) + if (2.0 <= sulrat) then + case_number = 4.0d0 + call mach_hetp_calcd3(so4, nh4, hno3, nh3, hso4, h, no3, & + lwc, rh, temp, k0, p1, p2, nr) + ! + ! ## 5. Sulfate rich, no acid (case: calce4) + else if (1.0 <= sulrat .and. sulrat < 2.0) then + case_number = 5.0d0 + call mach_hetp_calce4(so4, nh4, hno3, hso4, h, no3, & + lwc, rh, temp, k0, p1, p2, nr) + ! + ! ## 6. Sulfate rich, free acid (case: calcf2) + elseif (sulrat < 1.0) then + case_number = 6.0d0 + call mach_hetp_calcf2(so4, nh4, hno3, hso4, h, no3, & + lwc, rh, temp, k0, p1, p2, nr) + end if + ! + ! ### Branch 3 ### + ! ISRP3F: Only sulfate, ammonium, nitrate, chloride and calcium + else if (TCa + TK + TMg <= tiny) then + ! ## Adjust for too little ammonium and chloride + nh4 = max(nh4, tiny) ! In ISORROPIA II nh4 and cl are set to 1.0d-10 (not tiny) + cl = max(cl, tiny) ! creating 'excess mass', HETP uses tiny for mass conservation + ! + ! ## Adjust for too little sodium, sulfate and nitrate combined + if (na + so4 + no3 <= tiny) then + na = 1.0d-20 ! In ISORROPIA II na and so4 are set to 1.0d-10 (not tiny) + so4 = 1.0d-20 ! creating 'excess mass', HETP uses tiny for mass conservation + end if + ! + na = max(na, tiny) + so4 = max(so4, tiny) + no3 = max(no3, tiny) + ca = 0.0d0 + k = 0.0d0 + mg = 0.0d0 + ! + ! ## Check if too much sodium, if too much sodium adjust + ! Keep track of free amount that results after adjustment + if (na > 2.0d0*so4 + no3 + cl) then + frna_init = na - (1.0 - 1.0d-6)*(2.0d0*so4 + no3 + cl) + na = (1.0 - 1.0d-6)*(2.0d0*so4 + no3 + cl) + ! write(*,*), 'Warning error: Na adjusted' + end if + ! + ! ## Calculate sulfate ratios + sulrat = (na + nh4) / so4 + sodrat = na / so4 + ! + ! ## 7. Sulfate poor and sodium poor (case: calcg5) + if (2.0 <= sulrat .and. sodrat < 2.0) then + case_number = 7.0d0 + call mach_hetp_calcg5(so4, nh4, nh3, hno3, hcl, hso4, & + na, cl, no3, h, lwc, rh, temp, k0, & + p1, p2, nr) + ! + ! ## 8. Sulfate poor and sodium rich (case: calch6) + else if (sulrat >= 2.0 .and. sodrat >= 2.0) then + case_number = 8.0d0 + call mach_hetp_calch6(so4, nh4, nh3, hno3, hcl, hso4, & + na, cl, no3, h, lwc, frna, rh, & + temp, k0, p1, p2, nr) + ! + ! ## 9. Sulfate rich, no acid (case: calci6) + else if (1.0 <= sulrat .and. sulrat < 2.0) then + case_number = 9.0d0 + call mach_hetp_calci6(so4, nh4, nh3, hno3, hcl, hso4, & + na, cl, no3, h, lwc, frna, rh, & + temp, k0, p1, p2, nr) + ! + ! ## 10. Sulfate rich, free acid (case: calcj3) + else if (sulrat < 1.0) then + case_number = 10.0d0 + call mach_hetp_calcj3(so4, nh4, nh3, hno3, hcl, hso4, & + na, cl, no3, h, lwc, rh, temp, k0, & + p1, p2, nr) + end if + ! + ! ### Branch 4 ### + ! ISRP4F: All species are possibly present, at least one crustal species + ! (Ca, K, Mg) is present; Na and Cl are not necessarily present + else + ! ######In HETP; do not perform the below mass adjustments############ + ! #################################################################### + ! ## Adjust for too little ammonium and chloride + ! nh4 = max(nh4, 1.0d-10) + ! cl = max(cl, 1.0d-10) + ! + ! ## Adjust for too little sodium, sulfate and nitrate combined + ! if (na + so4 + no3 <= 1.0d-10) then + ! na = 1.0d-10 + ! so4 = 1.0d-10 + ! end if + ! #################################################################### + ! + na = max(na, tiny) + so4 = max(so4, tiny) + nh4 = max(nh4, tiny) + no3 = max(no3, tiny) + cl = max(cl, tiny) + ca = max(ca, tiny) + k = max(k, tiny) + mg = max(mg, tiny) + ! + ! ## Check if too much sodium + crustals; if too much adjust + rest = 2.0*so4 + no3 + cl + if (na + ca + k + mg > rest) then + ccaso4i = min(so4, ca) + frso4i = max(so4 - ccaso4i, 0.0d0) + cafri = max(ca - ccaso4i, 0.0d0) + ccano32i = min(cafri, 0.5d0*no3) + cafri = max(cafri - ccano32i, 0.0d0) + no3fri = max(no3 - 2.0d0*ccano32i, 0.0d0) + ccacl2i = min(cafri, 0.5d0*cl) + clfri = max(cl - 2.0d0*ccacl2i, 0.0d0) + rest1 = 2.0d0*frso4i + no3fri + clfri + ! + cna2so4i = min(frso4i, 0.5d0*na) + frso4i = max(frso4i - cna2so4i, 0.0d0) + nafri = max(na - 2.0d0*cna2so4i, 0.0d0) + cnacli = min(nafri, clfri) + nafri = max(nafri - cnacli, 0.0d0) + clfri = max(clfri - cnacli, 0.0d0) + cnano3i = min(nafri, no3fri) + no3fr = max(no3fri - cnano3i, 0.0d0) + rest2 = 2.0d0*frso4i + no3fri + clfri + ! + cmgso4i = min(frso4i, mg) + frmgi = max(mg - cmgso4i, 0.0d0) + frso4i = max(frso4i - cmgso4i, 0.0d0) + cmgno32i = min(frmgi, 0.5d0*no3fri) + frmgi = max(frmgi - cmgno32i, 0.0d0) + no3fri = max(no3fri - 2.0d0*cmgno32i, 0.0d0) + cmgcl2i = min(frmgi, 0.5d0*clfri) + clfri = max(clfri - 2.0d0*cmgcl2i, 0.0d0) + rest3 = 2.0d0*frso4i + no3fri + clfri + ! + if (ca > rest) then ! Ca > 2*SO4 + Cl + NO3? + frca_init = max(ca - (1.0 - 1.0d-6)*rest, 0.0d0) + frna_init = na + frk_init = k + frmg_init = mg + ca = (1.0 - 1.0d-6)*rest + na = 0.0d0 + k = 0.0d0 + mg = 0.0d0 + ! write(*,*), 'Warning error: Ca, Na, K, Mg in excess' + ! + else if (na > rest1) then ! Na > 2*frso4 + frcl + frno3? + frna_init = max(na - (1.0 - 1.0d-6)*rest1, 0.0d0) + frk_init = k + frmg_init = mg + na = (1.0 - 1.0d-6)*rest1 + k = 0.0d0 + mg = 0.0d0 + ! write(*,*), 'Warning error: Na, K, Mg in excess' + ! + else if (mg > rest2) then ! Mg > 2*frso4 + frcl + frno3? + frk_init = k + frmg_init = max(mg - (1.0 - 1.0d-6)*rest2, 0.0d0) + mg = (1.0 - 1.0d-6)*rest2 + k = 0.0d0 + ! write(*,*), 'Warning error: K, Mg in excess' + ! + else if (k > rest3) then ! K > 2*frso4 + frcl + frno3? + frk_init = max(k - (1.0 - 1.0d-6)*rest3, 0.0d0) + k = (1.0 - 1.0d-6)*rest3 + ! write(*,*), 'Warning error: K in excess' + end if + end if + ! + ! ## Calculate sulfate ratios + so4rat = (na + nh4 + ca + k + mg) / so4 + crnarat = (na + ca + k + mg) / so4 + crrat = (ca + k + mg) / so4 + ! + ! ## 11. Sulfate poor and dust + sodium poor + if (2.0 <= so4rat .and. crnarat < 2.0) then + case_number = 11.0d0 + call mach_hetp_calco7(so4, nh4, nh3, hno3, hcl, hso4, & + na, cl, no3, h, lwc, ca, k, mg, & + caso4, frmg, frna, frca, frk, rh, & + temp, k0, p1, p2, nr) + ! + ! ## 12-13. Sulfate poor and dust + sodium rich + else if (so4rat >= 2.0 .and. crnarat >= 2.0) then + if (crrat <= 2.0) then + case_number = 12.0d0 + call mach_hetp_calcm8(so4, nh4, nh3, hno3, hcl, hso4, & + na, cl, no3, h, lwc, ca, k, mg, & + caso4, frca, frmg, frk, frna, & + rh, temp, k0, p1, p2, nr) + ! + else if (crrat > 2.0) then + case_number = 13.0d0 + call mach_hetp_calcp13(so4, nh4, nh3, hno3, hcl, hso4, & + na, cl, no3, h, lwc, ca, k, mg, & + caso4, frso4, frmg, frk, frca, & + frna, rh, temp, k0, p1, p2, nr) + end if + ! + ! ## 14. Sulfate rich (no acid) + else if (1.0 <= so4rat .and. so4rat < 2.0) then + case_number = 14.0d0 + call mach_hetp_calcl9(so4, nh4, nh3, hno3, hcl, hso4, & + na, cl, no3, h, lwc, ca, k, mg, & + caso4, frmg, frk, frca, frna, & + frso4, rh, temp, k0, p1, p2, nr) + ! + ! ## 15. Sulfate super rich (free acid) + else if (so4rat < 1.0) then + case_number = 15.0d0 + call mach_hetp_calck4(so4, nh4, nh3, hno3, hcl, hso4, & + na, cl, no3, h, lwc, ca, k, mg, & + caso4, rh, temp, k0, p1, p2, nr) + end if + end if + ! + ! ### Return output ### + ! Add up free amounts after chemical partitioning at thermodynamic equilibrium + frca = frca + frca_init + frna = frna + frna_init + frk = frk + frk_init + frmg = frmg + frmg_init + lwc = lwc * 1.0d3 / 18.0d0 ! kg/m3 air -> mol/m3 air + ! + return + end subroutine mach_hetp_main_15cases + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: A2; Sulfate poor + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, & + lwn_i, rh, temp, k0, p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: oh_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, gnh3, h, oh, lwn, t, aw, so4_t, nh4_t + real(kind=8) :: khso4, knh3, kh2o, errin, errouloc, errinlocb + real(kind=8) :: omebe, omehi, y1, y2, y3, x3, c1, k1, k2, k3, k4, ya, yb, xa, xb + real(kind=8) :: dx, tt1, tt2, lwnsq, gmax, loccondition + real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, u1 + integer(kind=4) :: j, k, rooteval, irh, nmax + logical(kind=4) :: condition, noroot, earlyexit, soln, frst, calain, calou + real(kind=8), dimension(13) :: gama, gamin, gamou + ! + so4 = so4_i + nh4 = nh4_i + aw = rh + t = temp + hso4 = 0.0d0 + gnh3 = 0.0d0 + h = 0.0d0 + oh = 0.0d0 + lwn = 0.0d0 + so4_t = 0.0d0 + nh4_t = nh4 + noroot =.false. + earlyexit = .false. + soln = .false. + frst = .true. + calain = .true. + calou = .true. + loccondition = 0.0d0 + gama = 0.1d0 + gamou = 0.1d0 + gamin = 1.0d10 + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt1 = tstd / t - 1.0d0 + tt2 = 1.0d0 + log(tstd / t) - tstd / t + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Aerosol liquid water content + so4_t = so4 + lwn = max(so4_t/awas(irh), tiny) + ! + ! ## Constant values + lwnsq = aw*lwn*lwn + c1 = r*t + k1 = kh2o*lwnsq + k2 = knh3*c1 + k3 = khso4*lwn + k4 = k2/kh2o + ! + ! + ! ### STAGE 1: Root tracking ### + ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs + rooteval = 0 + condition = .true. + do while (rooteval < 2 .or. (condition .and. rooteval < ndiv+1)) + rooteval = rooteval + 1 + ! + ! ## Set low limit and high limit + if (rooteval == 1) then + omehi = 2.0d0*so4 ! high limit: from NH4+ -> NH3(g) + H+(aq) + y1 = 1.0d0 + end if + ! + ! ## Begin search on subinterval + if (rooteval == 2) then + soln = .false. + if (abs(y2) <= eps) then + earlyexit = .true. + end if + y1 = y2 + ! + if (earlyexit .EQV. .true.) then + dx = 0.0d0 + else + dx = (omehi - tiny)/float(ndiv) + end if + ! + omehi = max(omehi - dx, tiny) + end if + ! + ! ## Continue search + if (rooteval > 2) then + if (loccondition < 0.0d0) then + ! ## 1. Root has been found on the subinterval; save x values for ITP search + y1 = y1 + omebe = omebe + omehi = omehi + else + ! ## 2. No root has been found; continue searching in the next subinterval + y1 = y2 + omebe = omehi + omehi = max(omehi - dx, tiny) + end if + end if + ! + ! ## Solve the system of equations + frst = .true. + calain = .true. + ! + if (soln .EQV. .false.) then + h = omehi + so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/omehi + 1.0d0)), tiny) + nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/omehi + 1.0d0), 2.0d0*so4_t) + hso4 = so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/omehi + 1.0d0) + gnh3 = max(nh4 - nh4_t, tiny) + oh = k1/omehi + end if + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 0 + do while ( k < nsweep-1 .and. errin >= epsact) + k = k + 1 + + ! ## Reset gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(4) = gama(4) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(13) = gama(13) + end if + + ! ## Reset gamin + if (soln .EQV. .false.) then + gamin(4) = gama(4) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(13) = gama(13) + end if + ! + call mach_hetp_calcact1b(h, nh4_t, so4_t, hso4, lwn, gama, t, soln, & + frst, calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + errouloc = max(errouloc, abs(gamou(7) - gama(7)) / gamou(7)) + errouloc = max(errouloc, abs(gamou(8) - gama(8)) / gamou(8)) + errouloc = max(errouloc, abs(gamou(9) - gama(9)) / gamou(9)) + errouloc = max(errouloc, abs(gamou(4) - gama(4)) / gamou(4)) + errouloc = max(errouloc, abs(gamou(13) - gama(13)) / gamou(13)) + calou = errouloc .ge. epsact + frst = .false. + end if + ! + errinlocb = 0 + errinlocb = max(errinlocb, abs(gamin(7) - gama(7)) / gamin(7)) + errinlocb = max(errinlocb, abs(gamin(8) - gama(8)) / gamin(8)) + errinlocb = max(errinlocb, abs(gamin(9) - gama(9)) / gamin(9)) + errinlocb = max(errinlocb, abs(gamin(4) - gama(4)) / gamin(4)) + errinlocb = max(errinlocb, abs(gamin(13) - gama(13)) / gamin(13)) + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + errin = max(errin, 0.0d0) + errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) + errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) + errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) + errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) + errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) + ! + ! ## Solve system of equations, using new activity coefficients + if (soln .EQV. .false.) then + h = omehi + so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/omehi + 1.0d0)), tiny) + nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/omehi + 1.0d0), 2.0d0*so4_t) + hso4 = so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/omehi + 1.0d0) + gnh3 = max(nh4 - nh4_t, tiny) + oh = k1/omehi + end if + end do + ! + y2 = (nh4_t/(2.0d0*so4_t + hso4) - 1.0d0) + h/(2.0d0*so4_t + hso4) + ! + ! ## Check for criteria to exit root tracking + loccondition = sign(1.0d0,y1)*sign(1.0d0,y2) + ! + ! ## AFTER iterating through ALL ndiv subdivided intervals + if (rooteval == ndiv + 1) then + ! ## (1) No solution; reset x-value to 'tiny' and use to solve system + if (loccondition > 0.0d0 .and. abs(y2) > eps .and. earlyexit .EQV. .false.) then + noroot = .true. + ! write(*,*), 'Warning in CALCA2: no solution found; no interval with sign change' + omehi = tiny ! Reset to tiny + omebe = omehi + else if (loccondition > 0.0d0 .and. abs(y2) <= eps .and. earlyexit .EQV. .false.) then + ! ## (2) Solution is assumed and ITP is not required + noroot = .true. + soln = .true. + else if (earlyexit .EQV. .true.) then + ! ## (3) Solution is assumed and ITP is not required + noroot = .true. + omehi = tiny ! Reset to tiny + omebe = omehi + end if + end if + ! + ! ## Test for criteria to exit root tracking + condition = .false. + if (loccondition > 0.0d0 .and. noroot .EQV. .false.) then + condition = .true. + else + soln = .true. + end if + end do + ! + ! ## The root tracking did not iterate until ndiv + ! ## Check if an x-value of tiny was a solution, if so reset x-value to tiny + if (rooteval < ndiv + 1 .and. earlyexit .EQV. .true.) then + ! Solution has been assumed + noroot = .true. + omehi = tiny ! Reset to tiny + omebe = omehi + soln = .true. + end if + ! + if (earlyexit .EQV. .false. .and. noroot .EQV. .false.) then + soln = .false. + end if + ! + ! + ! ### STAGE 2: modified bisection search (using ITP algorithm) ### + ! ## Initialize static ITP variables + if (noroot .EQV. .false.) then + yb = y1 + ya = y2 + ! + xa = omehi + xb = omebe + x3 = omebe + ! + if (xa == xb) then + noroot = .true. + gx = tiny + else + gx = xb - xa + end if + ! + gx2 = (xa+xb)*0.5d0 + u1 = 0.2d0/gx + nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 + nmax = int(nh) + 2 + else + x3 = omehi + soln = .true. + end if + ! + ! ## Start search + j = 0 + condition = .true. + do while (j < maxit .and. condition) + ! ## Set dynamic ITP variables + if (noroot .EQV. .false. .and. soln .EQV. .false.) then + gx = xb - xa + xh = 0.5d0*(xa + xb) + rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) + delta= u1*(max(gx, 0.0d0))**2.0d0 + xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) + ! + sigma = sign(1.0d0, xh - xf) + if (delta <= abs(xh - xf)) then + xt = xf + sigma*delta + else + xt = xh + end if + ! + if (abs(xt - xh) <= rr) then + x3 = xt + else + x3 = xh - sigma*rr + end if + end if + ! + j = j + 1 + ! + if (soln .EQV. .false.) then + gmax = 0.1d0 + gmax = max(gmax, gama(7)) + gmax = max(gmax, gama(8)) + gmax = max(gmax, gama(9)) + gmax = max(gmax, gama(4)) + gmax = max(gmax, gama(13)) + end if + ! + ! ## Reinitialize activity coefficients if gmax > 100.0d0 + if (gmax > 100.0d0 .and. soln .EQV. .false.) then + gama(7) = 0.1d0 + gama(8) = 0.1d0 + gama(9) = 0.1d0 + gama(4) = 0.1d0 + gama(13) = 0.1d0 + gamin(7) = 1.0d10 + gamin(8) = 1.0d10 + gamin(9) = 1.0d10 + gamin(4) = 1.0d10 + gamin(13)= 1.0d10 + calou = .true. + frst = .true. + end if + ! + ! ## Solve system of equations + frst = .true. + calain = .true. + if (soln .EQV. .false.) then + h = x3 + so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/x3 + 1.0d0)), tiny) + nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/x3 + 1.0d0), 2.0d0*so4_t) + hso4 = so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/x3 + 1.0d0) + gnh3 = max(nh4 - nh4_t, tiny) + oh = k1/x3 + end if + ! + ! ## Iterate until convergence of activity coefficients + k = 0 + errin = 1.0d0 + do while ( k < nsweep-1 .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(4) = gama(4) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(13) = gama(13) + end if + ! + ! ## Reset gamin + if (soln .EQV. .false.) then + gamin(4) = gama(4) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(13) = gama(13) + end if + ! + call mach_hetp_calcact1b(h, nh4_t, so4_t, hso4, lwn, gama, t, soln, & + frst, calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + errouloc = max(errouloc, abs(gamou(7) - gama(7)) / gamou(7)) + errouloc = max(errouloc, abs(gamou(8) - gama(8)) / gamou(8)) + errouloc = max(errouloc, abs(gamou(9) - gama(9)) / gamou(9)) + errouloc = max(errouloc, abs(gamou(4) - gama(4)) / gamou(4)) + errouloc = max(errouloc, abs(gamou(13) - gama(13)) / gamou(13)) + calou = errouloc .ge. epsact + frst = .false. + end if + ! + errinlocb = 0 + errinlocb = max(errinlocb, abs(gamin(7) - gama(7)) / gamin(7)) + errinlocb = max(errinlocb, abs(gamin(8) - gama(8)) / gamin(8)) + errinlocb = max(errinlocb, abs(gamin(9) - gama(9)) / gamin(9)) + errinlocb = max(errinlocb, abs(gamin(4) - gama(4)) / gamin(4)) + errinlocb = max(errinlocb, abs(gamin(13) - gama(13)) / gamin(13)) + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + errin = max(errin, 0.0d0) + errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) + errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) + errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) + errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) + errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) + ! + ! ## Solve system of equations, with new activity coefficients + if (soln .EQV. .false.) then + h = x3 + so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/x3 + 1.0d0)), tiny) + nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/x3 + 1.0d0), 2.0d0*so4_t) + hso4 = so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/x3 + 1.0d0) + gnh3 = max(nh4 - nh4_t, tiny) + oh = k1/x3 + end if + end do + ! + y3 = (nh4_t/(2.0d0*so4_t + hso4) - 1.0d0) + h/(2.0d0*so4_t + hso4) + ! + condition = .false. + if (noroot .EQV. .true.) then + ! ## If no root on interval then do not perform ITP + xa = x3 + xb = x3 + else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + xb = x3 + yb = y3 + else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + xa = x3 + ya = y3 + else if (soln .EQV. .false.) then + xa = x3 + xb = x3 + end if + ! + ! ## Check for convergence criteria to exit ITP: + if (abs(xb - xa) > abs(xa*eps) .and. noroot .EQV. .false.) then + condition = .true. + soln = .false. + else + soln = .true. + end if + end do + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + hso4_i = hso4 + h_i = h + nh3g_i = gnh3 + lwn_i = lwn + oh_i = oh + ! + return + end subroutine mach_hetp_calca2 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: B4; Sulfate rich, no free acid + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcb4(so4_i, nh4_i, nh3g_i, hso4_i, h_i, lwn_i, & + rh, temp, k0, p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables: + real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, t, aw, tt1, tt2, c1, so4_t, nh4_t + real(kind=8) :: khso4, knh3, kh2o, bb, cc, dd, hh, ff, v, ak1, errin, tt0 + real(kind=8) :: m4, m9, m13, a3, c2, c3, c4 + integer(kind=4) :: j, irh + logical(kind=4) :: gg + real(kind=8), dimension(13) :: gama, gamin + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + aw = rh + t = temp + hso4 = 0.0d0 + gnh3 = 0.0d0 + h = 0.0d0 + lwn = 0.0d0 + so4_t = 0.0d0 + nh4_t = nh4 + gama = 0.1d0 + gamin = 1.0d10 + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Calculate dry composition; used to calculate initial aerosol liquid water + gg = 2.0*so4 - nh4 <= nh4 - so4 + ! + if (gg) then + ! NH4HSO4 >= (NH4)2SO4 + m4 = 2.0d0*nh4 - 3.0d0*so4 ! clc + m9 = 0.0d0 ! nh4hs4 + m13 = 2.0d0*so4 - nh4 ! nh42s4 + else + ! NH4HSO4 < (NH4)2SO4 + m4 = 0.0d0 ! clc + m9 = 3.0d0*so4 - 2.0d0*nh4 ! nh4hs4 + m13 = nh4 - so4 ! nh42s4 + end if + ! + ! ## Save ZSR parameters as variables to limit indirect addressing in loops + c2 = awlc(irh) + c3 = awab(irh) + c4 = awas(irh) + ! + ! ## Initial aerosol liquid water content + lwn = max(m13/c2 + m9/c3 + m4/c4, tiny) + c1 = khso4*(lwn/0.1d0) + ! + ! + ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### + ! ## Setup initial conditions + ! ## 1. Calculate initial concentrations of H+/HSO4-/SO42- + bb = so4 + c1 - nh4 + cc = -c1*so4 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root + end if + ! + ! ## 2. Speciation + so4_t = max(tiny, min(hh, so4)) + hso4 = max(tiny, min(so4 - so4_t, so4)) + h = max(tiny, min(c1*hso4/so4_t, so4)) + ! + ! ## 3. Aerosol liquid water content + ! ## Correct for HSO4 dissociation + gg = so4_t - h < hso4 + h + if (gg) then + m4 = 0.0d0 + m13 = so4_t - h + m9 = max((hso4 + h) - (so4_t - h), 0.0d0) + else + m13 = hso4 + h + m9 = 0.0d0 + m4 = max((so4_t - h) - (hso4 + h), 0.0d0) + end if + lwn = max(m13/c2 + m9/c3 + m4/c4, tiny) + ! + ! ## Iterative search for solution with convergence of activity coefficients + j = 0 + errin = 1.0d0 + do while (j < nsweep-1 .and. errin >= epsact) + j = j + 1 + ! + ! ## Reset gamin + gamin(4) = gama(4) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(13) = gama(13) + ! + call mach_hetp_calcact1(h, nh4_t, so4_t, hso4, lwn, gama, t) + ! + ! ## Test convergence criterion: max change in the activity coefficients + errin = 0.0d0 + errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) + errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) + errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) + errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) + errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) + + ! ## 1. Solve system of equations + ak1 = khso4*((gama(8)/gama(7))*(gama(8)/gama(7)))*(lwn/gama(7)) + bb = so4 + ak1 - nh4_t + cc = -ak1*so4 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root + end if + ! + ! ## 2. Speciation + so4_t = max(tiny, min(hh, so4)) + hso4 = max(tiny, min(so4 - so4_t, so4)) + h = max(tiny, min(ak1*hso4/so4_t, so4)) + ! + ! ## 3. Aerosol liquid water content + ! ## Correct for HSO4 dissociation + gg = so4_t - h < hso4 + h + if (gg) then + m4 = 0.0d0 + m13 = so4_t - h + m9 = max((hso4 + h) - (so4_t - h), 0.0d0) ! NH4HSO4 + else + m13 = hso4 + h + m9 = 0.0d0 + m4 = max((so4_t - h) - (hso4 + h), 0.0d0) ! (NH4)2SO4 + end if + ! + lwn = max(m13/c2 + m9/c3 + m4/c4, tiny) + end do + ! + ! + ! ### MINOR SYSTEM: NH4+/NH3/H+ ### + ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb + ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major + ! system (solved above) is used initially. + if (lwn > tiny) then + ! ## 1. Calculate NH3 sublimation + ff = 0.0d0 + a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 + bb = h + 1.0d0/a3 ! bb always > 0 + cc = -nh4_t/a3 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ! ## 2. Speciation + ! ## Due to round-off, ff may be .gt. nh4_t giving negative nh4_t + ! ## If this condition is true, then set ff = nh4_t + ff = max(tiny, min(ff, nh4_t)) + gnh3 = ff + nh4_t = max(nh4_t - ff, 0.0d0) + h = h + ff + end if + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + hso4_i = hso4 + h_i = h + nh3g_i = gnh3 + lwn_i = lwn + ! + return + end subroutine mach_hetp_calcb4 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: C2; Sulfate rich, free acid + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcc2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, lwn_i, & + rh, temp, k0, p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, frh2so4, t, aw + real(kind=8) :: khso4, knh3, kh2o, bb, cc, dd, hh, v, errin, tt0 + real(kind=8) :: so4_t, nh4_t, tt1, tt2, c1, c2, c3, ff, a3 + integer(kind=4) :: j, irh + real(kind=8), dimension(13) :: gama, gamin + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + aw = rh + t = temp + hso4 = 0.0d0 + gnh3 = 0.0d0 + h = 0.0d0 + lwn = 1.0d-20 + so4_t = 0.0d0 + nh4_t = 0.0d0 + gama = 0.1d0 + gamin = 1.0d10 + frh2so4 = 0.0d0 + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Aerosol liquid water content + c3 = so4 - nh4 + lwn = max(max(c3, 0.0d0)/awsa(irh) + nh4/awab(irh), tiny) + ! + ! ## Constant values + c1 = khso4*1.0d-19 + c2 = khso4*lwn + ! + ! + ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### + ! ## Setup initial conditions + ! ## 1. Calculate initial concentrations of H+/HSO4-/SO42- + bb = c3 + c1 + cc = -c1*so4 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root + end if + ! + ! ## 2. Speciation + nh4_t = nh4 + so4_t = hh + hso4 = max(so4 - hh, tiny) + h = c3 + hh + frh2so4 = max(so4_t + hso4 - nh4_t, 0.0d0) ! Free H2SO4 + ! + ! ## Iterative search for solution with convergence of activity coefficients + j = 0 + errin = 1.0d0 + do while (j < nsweep-1 .and. errin >= epsact) + j = j + 1 + ! + ! ## Reset gamin + gamin(4) = gama(4) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(13) = gama(13) + ! + call mach_hetp_calcact1(h, nh4_t, so4_t, hso4, lwn, gama, t) + ! + ! ## Test convergence criterion: max change in the activity coefficients + errin = 0.0d0 + errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) + errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) + errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) + errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) + errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) + ! + ! ## 1. Solve system of equations + bb = c3 + c2/gama(7)*(gama(8)/gama(7))**2.0 + cc = -(c2/gama(7)*(gama(8)/gama(7))**2.0)*so4 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root + end if + ! + ! ## 2. Speciation + so4_t = hh + hso4 = max(so4 - hh, tiny) + h = c3 + hh + frh2so4 = max(so4_t + hso4 - nh4_t, 0.0d0) + end do + ! + ! + ! ### MINOR SYSTEM: NH4+/NH3/H+ ### + ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb + ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major + ! system (solved above) is used initially. + if (lwn > tiny) then + ! Calculate NH3 sublimation + ff = 0.0d0 + a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 + bb = h + 1.0d0/a3 ! bb always > 0 + cc = -nh4_t/a3 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ! Speciation + ! Due to round-off, ff may be .gt. nh4_t giving negative nh4_t + ! If this condition is true, then set ff = nh4_t + ff = max(tiny, min(ff, nh4_t)) + gnh3 = ff + nh4_t = max(nh4_t - ff, 0.0d0) + h = h + ff + end if + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + hso4_i = hso4 + h_i = h + nh3g_i = gnh3 + lwn_i = lwn + ! + return + end subroutine mach_hetp_calcc2 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: D3; Sulfate poor + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, & + lwn_i, rh, temp, k0, p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, ghno3, gnh3, gnh3_i, ghno3_i, no3, h, lwn, t, aw, nh4no3, nh42s4 + real(kind=8) :: knh3, khso4, kh2o, khno3, knh4no3, k1, k2, k3, c1, c1a, c1b, c2, c3, c4, c10, c11 + real(kind=8) :: bb, cc, dd, hh, v, ak1, errin, tt0, a3, a7, psi3, denm, m1, m2 + real(kind=8) :: so4_t, nh4_t, no3_t, tt1, tt2, x3, gmax, y3, psilo, psihi, k4, k5, k6 + real(kind=8) :: omehi, omebe, y1, y2, dx, a4, ylo, yhi, pshi, ya, yb, xa, xb + real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, u1, errouloc, errinlocb + real(kind=8) :: cl, cl_t, ghcl, caso4, gama10sq, lwnsq + integer(kind=4) :: ii, j, k, rooteval, count_rt, irh, nmax + logical(kind=4) :: condition, soln, earlyexit, frst, calain, calou, noroot, redo, earlye + real(kind=8), dimension(13) :: gama, gamin, gamou, gama_min + real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter + real(kind=8) :: no3_min, nh4_min, h_min, lwn_min, gnh3_min, ghno3_min + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + aw = rh + t = temp + hso4 = 0.0d0 + ghno3 = 0.0d0 + gnh3 = 0.0d0 + gnh3_i= 0.0d0 + ghno3_i=0.0d0 + h = 0.0d0 + lwn = 0.0d0 + nh4no3= 0.0d0 + nh42s4= 0.0d0 + so4_t = 0.0d0 + nh4_t = nh4 + no3_t = 0.0d0 + cl = 0.0d0 + cl_t = 0.0d0 + ghcl = 0.0d0 + caso4 = 0.0d0 + soln = .false. + frst = .true. + calain= .true. + calou = .true. + redo = .false. + noroot= .false. + count_rt = 1 + earlyexit = .false. + gama = 0.1d0 + gamou = 0.1d0 + gamin = 1.0d10 + earlye = .false. + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3= k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## 6. NH4NO3(s) <==> NH3(g) + HNO3(g) (xk10) + knh4no3 = k0(9) * exp(p1(9)*tt1 + p2(9)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Calculate NH4NO3 that volatizes (ISORROPIA II: subroutine 'CALCD1A') + nh42s4 = so4 + c1 = max(0.0d0, min(nh4 - 2.0d0*nh42s4, no3)) + c1a = max(no3 - c1, 0.0d0) + c1b = max(nh4 - c1 - 2.0d0*nh42s4, 0.0d0) + c2 = c1a + c1b + c3 = sqrt(c2*c2 + 4.0d0*(knh4no3/(r*t)/(r*t))) + c4 = min(c1, 0.5d0*(-c2 + c3)) + ! + ! ## Initial speciation + nh4no3 = max(c1 - c4, 0.0d0) ! NH4NO3 (s) + gnh3 = c1b + c4 ! NH3 (g) + ghno3 = c1a + c4 ! HNO3 (g) + gnh3_i = gnh3 + ghno3_i= ghno3 + so4_t = nh42s4 + hso4 = 0.0d0 + nh4_t = nh4no3 + no3_t = nh4no3 + ! + ! ## Initial aerosol liquid water content + m1 = (so4_t + hso4) ! (NH4)2SO4 + m2 = (nh4_t - 2.0d0*m1) ! free NH4 + ! + ! ## Save ZSR allocations to limit indirect addressing + c10 = awas(irh) + c11 = awan(irh) + lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) + ! + ! ## Constant values + k1 = khno3*r*t + k2 = (knh3/kh2o)*r*t + k3 = kh2o*aw + pshi= gnh3 + k4 = nh4no3*2.0d0*nh42s4 + nh4no3*nh4no3 + k5 = 2.0d0*nh42s4 + nh4no3 + ! + ! + ! ### STAGE 1: Root tracking ### + ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs + rooteval = 0 + condition = .true. + do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking + rooteval = rooteval + 1 + ! + ! ## Set high limit for root tracking (i.e. lower bound) + if (rooteval == 1 .and. count_rt == 1) then + omehi = tiny + y1 = 1.0d0 + end if + ! + ! ## Begin search on subinterval + if (rooteval == 2) then + soln = .false. + if (count_rt == 1 .or. redo .EQV. .true.) then + ylo = y2 + end if + ! + gmax = 0.1d0 + gmax = max(gmax, gama( 4)) + gmax = max(gmax, gama( 5)) + gmax = max(gmax, gama( 7)) + gmax = max(gmax, gama( 8)) + gmax = max(gmax, gama( 9)) + gmax = max(gmax, gama(10)) + gmax = max(gmax, gama(13)) + ! + ! ## Reinitialize activity coefficients if gmax > 100.0d0 + if (gmax > 100.0d0 .and. soln .EQV. .false.) then + gama = 0.1d0 + gamin = 1.0d10 + gamou = 1.0d10 + calou = .true. + frst = .true. + end if + ! + if (abs(y2) <= eps .and. (count_rt == 1 .or. redo .EQV. .true.)) then + earlyexit = .true. + end if + ! + y1 = y2 + ! + if (earlyexit .EQV. .true. .or. (count_rt > 1 .and. redo .EQV. .false.)) then + dx = 0.0d0 + else if (count_rt > 1 .and. redo .EQV. .true.) then + dx = (max(pshi-omehi, tiny))/float(ndiv) + omebe = omehi ! Lower bound of subinterval (xa) + elseif (count_rt == 1) then + dx = (pshi-tiny)/float(ndiv) + omebe = omehi ! Lower bound of subinterval (xa) + else + dx = 0.0d0 + end if + ! + omehi = omehi + dx ! Upper bound of subinterval (xb) + end if + ! + ! ## Continue search + if (rooteval > 2) then + if (soln .EQV. .false.) then + gmax = 0.1d0 + gmax = max(gmax, gama( 4)) + gmax = max(gmax, gama( 5)) + gmax = max(gmax, gama( 7)) + gmax = max(gmax, gama( 8)) + gmax = max(gmax, gama( 9)) + gmax = max(gmax, gama(10)) + gmax = max(gmax, gama(13)) + end if + ! + ! ## Reinitialize activity coefficients if gmax > 100.0d0 + if (gmax > 100.0d0 .and. soln .EQV. .false.) then + gama = 0.1d0 + gamin = 1.0d10 + gamou = 1.0d10 + calou = .true. + frst = .true. + end if + + if (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0 .and. (count_rt == 1 .or. redo .EQV. .true.)) then + ! ## 1. Root has been found on the subinterval; save x values for ITP search + y1 = y1 + omebe = omebe + omehi = omehi + elseif (count_rt == 1 .or. redo .EQV. .true.) then + ! ## 2. No root has been found, continue searching in the next subinterval + y1 = y2 + omebe = omehi + omehi = omehi + dx + end if + end if + ! + ! ## Solve the system of equations + frst = .true. + calain = .true. + if (soln .EQV. .false. .and. (count_rt == 1 .or. redo .EQV. .true.)) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + a3 = k1*lwnsq/gama10sq + a4 = k2*gama10sq/(gama(5)*gama(5)) + a7 = k3*lwnsq + ! + ! ## 1. Calculate dissociation quantities + k6 = a3*a4*(gnh3_i - omehi) + psi3 = k6*ghno3_i - k4 - nh4no3*omehi + psi3 = psi3 / (k6 + k5 + omehi) + psi3 = min(max(psi3, 0.0d0), ghno3_i) + ! + ! ## 2. Calculate H+ + bb = omehi - psi3 + ! Use ISORROPIA II current scheme + denm = bb + sqrt(bb*bb + 4.0d0*a7) + if (denm <= tiny) then + denm = (bb + abs(bb)) + 2.0d0*a7/abs(bb) + end if + h = 2.0d0*a7/denm + ! + ! ## 3. Speciation + nh4_t = omehi + k5 + so4_t = nh42s4 + no3_t = psi3 + nh4no3 + ghno3 = max(ghno3_i - psi3, tiny2) + gnh3 = max(gnh3_i - omehi, tiny2) + ! + ! ## 4. Aerosol liquid Water content + m1 = so4_t + hso4 ! (NH4)2SO4 + m2 = nh4_t - 2.0d0*m1 ! free NH4 + lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) + end if + ! + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 0 + do while ( k < nsweep-1 .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamou + if (soln .EQV. .false. .and. frst .EQV. .true. .and. (count_rt == 1 .or. redo .EQV. .true.)) then + gamou( 4) = gama( 4) + gamou( 5) = gama( 5) + gamou( 7) = gama( 7) + gamou( 8) = gama( 8) + gamou( 9) = gama( 9) + gamou(10) = gama(10) + gamou(13) = gama(13) + end if + ! + ! ## Reset gamin + if (soln .EQV. .false. .and. (count_rt == 1 .or. redo .EQV. .true.)) then + gamin( 4) = gama( 4) + gamin( 5) = gama( 5) + gamin( 7) = gama( 7) + gamin( 8) = gama( 8) + gamin( 9) = gama( 9) + gamin(10) = gama(10) + gamin(13) = gama(13) + end if + ! + call mach_hetp_calcact2b(h, nh4_t, so4_t, hso4, no3_t, lwn, gama, t, soln, & + frst, calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + errouloc = max(errouloc, abs(gamou(4 ) - gama(4 )) / gamou(4 )) + errouloc = max(errouloc, abs(gamou(5 ) - gama(5 )) / gamou(5 )) + errouloc = max(errouloc, abs(gamou(7 ) - gama(7 )) / gamou(7 )) + errouloc = max(errouloc, abs(gamou(8 ) - gama(8 )) / gamou(8 )) + errouloc = max(errouloc, abs(gamou(9 ) - gama(9 )) / gamou(9 )) + errouloc = max(errouloc, abs(gamou(10) - gama(10)) / gamou(10)) + errouloc = max(errouloc, abs(gamou(13) - gama(13)) / gamou(13)) + calou = errouloc .ge. epsact + frst = .false. + end if + ! + errinlocb = 0 + errinlocb = max(errinlocb, abs(gamin(4 ) - gama(4 )) / gamin(4 )) + errinlocb = max(errinlocb, abs(gamin(5 ) - gama(5 )) / gamin(5 )) + errinlocb = max(errinlocb, abs(gamin(7 ) - gama(7 )) / gamin(7 )) + errinlocb = max(errinlocb, abs(gamin(8 ) - gama(8 )) / gamin(8 )) + errinlocb = max(errinlocb, abs(gamin(9 ) - gama(9 )) / gamin(9 )) + errinlocb = max(errinlocb, abs(gamin(10) - gama(10)) / gamin(10)) + errinlocb = max(errinlocb, abs(gamin(13) - gama(13)) / gamin(13)) + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 13 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, with new activity coefficients + if (soln .EQV. .false. .and. (count_rt == 1 .or. redo .EQV. .true.)) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + a3 = k1*lwnsq/gama10sq + a4 = k2*gama10sq/(gama(5)*gama(5)) + a7 = k3*lwnsq + ! + ! ## 1. Calculate dissociation quantities + k6 = a3*a4*(gnh3_i - omehi) + psi3 = k6*ghno3_i - k4 - nh4no3*omehi + psi3 = psi3 / (k6 + k5 + omehi) + psi3 = min(max(psi3, 0.0d0), ghno3_i) + ! + ! ## 2. Calculate H+ + bb = (omehi - psi3) + ! Use ISORROPIA II current scheme + denm = bb + sqrt(bb*bb + 4.0d0*a7) + if (denm <= tiny) then + denm = (bb + abs(bb)) + 2.0d0*a7/abs(bb) + end if + h = 2.0d0*a7/denm + ! + ! ## 3. Speciation + nh4_t = omehi + k5 + so4_t = nh42s4 + no3_t = psi3 + nh4no3 + ghno3 = max(ghno3_i - psi3, tiny2) + gnh3 = max(gnh3_i - omehi, tiny2) + ! + ! ## 4. Aerosol liquid water content + m1 = (so4_t + hso4) ! (NH4)2SO4 + m2 = (nh4_t - 2.0d0*m1) ! free NH4 + lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) + end if + end do + ! + y2 = nh4_t/h/max(gnh3, tiny)/a4 - 1.0d0 !Function value + ! + ! ## Check for criteria to exit root tracking + condition = .false. + if (sign(1.0d0,y1)*sign(1.0d0,y2) > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps) then + condition = .true. + elseif (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0 .and. abs(y2) > eps) then + ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP + soln = .true. + else + ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) + soln = .true. + noroot = .true. + earlye = .true. + end if + ! + if (rooteval == ndiv+1) then + count_rt = count_rt + 1 + ! + if (redo .EQV. .true. .or. count_rt == 2) then + yhi = y2 + redo = .false. + end if + ! + if (abs(y2) < eps) then + redo = .false. + noroot = .true. + else if (ylo < 0.0d0 .and. yhi < 0.0d0) then + redo = .false. + omehi = tiny + noroot = .true. + else if (ylo > 0.0d0 .and. yhi > 0.0d0) then + if (count_rt == 2) then + pshi = tiny + omebe = tiny + omehi = tiny - 0.1d0*(nh4no3 + nh42s4) !psi4lo + psihi = omebe + psilo = omehi + elseif (count_rt > 2) then + psihi = psilo + psilo = psihi - 0.1d0*(nh4no3 + nh42s4) + pshi = psihi + omebe = psihi + omehi = psilo + end if + ! + if (omehi < -1.0d0*(nh4no3 + nh42s4)) then + ! ## No solution + omehi = tiny + omebe = tiny + redo = .false. + noroot = .true. + else + ! ## Include sulfate in initial calculation of liquid water content + so4_t = nh42s4 + hso4 = 0.0d0 + nh4_t = nh4no3 + no3_t = nh4no3 + ! + m1 = (so4_t + hso4) ! (NH4)2SO4 + m2 = (nh4_t - 2.0d0*m1) ! free NH4 + lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) ! Water content + ! + redo = .true. + rooteval = 0 + end if + else + redo = .false. + end if + end if + end do + ! + ! + ! ### STAGE 2: modified bisection search (using ITP algorithm) ### + ! ## Initialize static ITP variables + if (noroot .EQV. .false.) then + ya = y1 + yb = y2 + xa = omebe + xb = omehi + x3 = omehi + ! + if (xa == xb) then + noroot = .true. + gx = tiny + else + gx = xb - xa + end if + ! + gx2 = (xa+xb)*0.5d0 + u1 = 0.2d0/gx + nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 + nmax = int(nh) + 2 + else + x3 = omehi + end if + ! + ! ## Start search + y3_lastiter = 0.0d0 + x3_lastiter = 0.0d0 + y3_min = 1.0d20 + x3_min = 0.0d0 + ! + j = 0 + condition = .true. + ! + if (earlye .EQV. .true.) then + soln = .true. + else + soln = .false. + end if + ! + do while (j < maxit .and. condition) ! Begin outer loop for ITP search + ! ## Set dynamic ITP variables + ! 1. Track x3 and y3 of the previous iteration + if (j > 0) then + y3_lastiter = y3 + x3_lastiter = x3 + end if + ! + + ! 2. Track the minimum y3 that is found before ending + ! This is for a post-convergence correction, in case of an oscillatory solution + if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then + y3_min = y3_lastiter + x3_min = x3_lastiter + ghno3_min = ghno3 + no3_min = no3_t + h_min = h + gnh3_min = gnh3 + nh4_min = nh4_t + lwn_min = lwn + gama_min = gama + end if + ! + if (noroot .EQV. .false. .and. soln .EQV. .false.) then + if (yb - ya == 0.0d0) then + write(*,*), '###### ABORT ######' + write(*,*), 'Zero divide in ITP reset: CALCD3' + write(*,*), 'SO4 in = ', so4 + write(*,*), 'NH4 in = ', nh4 + write(*,*), 'NO3 in = ', no3 + write(*,*), 'Temp in= ', t + write(*,*), 'RH in = ', aw + return + end if + ! + gx = xb - xa + xh = 0.5d0*(xa + xb) + rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) + delta= u1*(max(gx, 0.0d0))**2.0d0 + xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) + ! + sigma = sign(1.0d0, xh - xf) + if (delta <= abs(xh - xf)) then + xt = xf + sigma*delta + else + xt = xh + end if + ! + if (abs(xt - xh) <= rr) then + x3 = xt + else + x3 = xh - sigma*rr + end if + end if + ! + j = j + 1 + ! + if (soln .EQV. .false.) then + gmax = 0.1d0 + gmax = max(gmax, gama( 4)) + gmax = max(gmax, gama( 5)) + gmax = max(gmax, gama( 7)) + gmax = max(gmax, gama( 8)) + gmax = max(gmax, gama( 9)) + gmax = max(gmax, gama(10)) + gmax = max(gmax, gama(13)) + end if + ! + ! ## Reinitialize activity coefficients if gmax > 100.0d0 + if (gmax > 100.0d0 .and. soln .EQV. .false.) then + gama = 0.1d0 + gamin = 1.0d10 + gamou = 1.0d10 + calou = .true. + frst = .true. + end if + ! + ! ## Solve system of equations + frst = .true. + calain = .true. + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + a3 = k1*lwnsq/gama10sq + a4 = k2*gama10sq/(gama(5)*gama(5)) + a7 = k3*lwnsq + ! + ! ## 1. Calculate dissociation quantities + k6 = a3*a4*(gnh3_i - x3) + psi3 = k6*ghno3_i - k4 - nh4no3*x3 + psi3 = psi3 / (k6 + k5 + x3) + psi3 = min(max(psi3, 0.0d0), ghno3_i) + ! + ! ## 2. Calculate H+ + bb = x3 - psi3 + ! Use ISORROPIA II current scheme + denm = bb + sqrt(bb*bb + 4.0d0*a7) + if (denm <= tiny) then + denm = (bb + abs(bb)) + 2.0d0*a7/abs(bb) + end if + h = 2.0d0*a7/denm + ! + ! ## 3. Speciation + nh4_t = x3 + k5 + so4_t = nh42s4 + no3_t = psi3 + nh4no3 + ghno3 = max(ghno3_i - psi3, tiny2) + gnh3 = max(gnh3_i - x3, tiny2) + ! + ! ## 4. Aerosol liquid water content + m1 = (so4_t + hso4) ! (NH4)2SO4 + m2 = (nh4_t - 2.0d0*m1) ! free NH4 + lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) + end if + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 0 + do while ( k < nsweep-1 .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamin and gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou( 4) = gama( 4) + gamou( 5) = gama( 5) + gamou( 7) = gama( 7) + gamou( 8) = gama( 8) + gamou( 9) = gama( 9) + gamou(10) = gama(10) + gamou(13) = gama(13) + end if + ! + if (soln .EQV. .false.) then + gamin( 4) = gama( 4) + gamin( 5) = gama( 5) + gamin( 7) = gama( 7) + gamin( 8) = gama( 8) + gamin( 9) = gama( 9) + gamin(10) = gama(10) + gamin(13) = gama(13) + end if + ! + call mach_hetp_calcact2b(h, nh4_t, so4_t, hso4, no3_t, lwn, gama, t, soln, & + frst, calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0.0d0 + errouloc = max(errouloc, abs(gamou(4 ) - gama(4 )) / gamou(4 )) + errouloc = max(errouloc, abs(gamou(5 ) - gama(5 )) / gamou(5 )) + errouloc = max(errouloc, abs(gamou(7 ) - gama(7 )) / gamou(7 )) + errouloc = max(errouloc, abs(gamou(8 ) - gama(8 )) / gamou(8 )) + errouloc = max(errouloc, abs(gamou(9 ) - gama(9 )) / gamou(9 )) + errouloc = max(errouloc, abs(gamou(10) - gama(10)) / gamou(10)) + errouloc = max(errouloc, abs(gamou(13) - gama(13)) / gamou(13)) + calou = errouloc .ge. epsact + frst = .false. + end if + ! + errinlocb = 0.0d0 + errinlocb = max(errinlocb, abs(gamin(4 ) - gama(4 )) / gamin(4 )) + errinlocb = max(errinlocb, abs(gamin(5 ) - gama(5 )) / gamin(5 )) + errinlocb = max(errinlocb, abs(gamin(7 ) - gama(7 )) / gamin(7 )) + errinlocb = max(errinlocb, abs(gamin(8 ) - gama(8 )) / gamin(8 )) + errinlocb = max(errinlocb, abs(gamin(9 ) - gama(9 )) / gamin(9 )) + errinlocb = max(errinlocb, abs(gamin(10) - gama(10)) / gamin(10)) + errinlocb = max(errinlocb, abs(gamin(13) - gama(13)) / gamin(13)) + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 13 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, with new activity coefficients + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + a3 = k1*lwnsq/gama10sq + a4 = k2*gama10sq/(gama(5)*gama(5)) + a7 = k3*lwnsq + ! + ! ## 1. Calculate dissociation quantities + k6 = a3*a4*(gnh3_i - x3) + psi3 = k6*ghno3_i - k4 - nh4no3*x3 + psi3 = psi3 / (k6 + k5 + x3) + psi3 = min(max(psi3, 0.0d0), ghno3_i) + ! + ! ## 2. Calculate H+ + bb = x3 - psi3 + ! Use ISORROPIA II current scheme + denm = bb + sqrt(bb*bb + 4.0d0*a7) + if (denm <= tiny) then + denm = (bb + abs(bb)) + 2.0d0*a7/abs(bb) + end if + h = 2.0d0*a7/denm + ! + ! ## 3. Speciation + nh4_t = x3 + k5 + so4_t = nh42s4 + no3_t = psi3 + nh4no3 + ghno3 = max(ghno3_i - psi3, tiny2) + gnh3 = max(gnh3_i - x3, tiny2) + ! + ! ## 4. Aerosol liquid Water content + m1 = (so4_t + hso4) ! (NH4)2SO4 + m2 = (nh4_t - 2.0d0*m1) ! free NH4 + lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) + end if + end do + ! + y3 = nh4_t/h/max(gnh3, tiny)/a4 - 1.0d0 + ! + condition = .false. + if (noroot .EQV. .true.) then + ! ## If no root on interval, then do not perform ITP + xa = x3 + xb = x3 + else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + if (ya < 0.0d0) then + yb = y3 + xb = x3 + elseif (ya > 0.0d0) then + ya = y3 + xa = x3 + end if + else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + if (ya < 0.0d0) then + ya = y3 + xa = x3 + elseif (ya > 0.0d0) then + yb = y3 + xb = x3 + end if + else if (soln .EQV. .false.) then + xa = x3 + xb = x3 + end if + ! + ! ## Check for convergence criteria to exit ITP: + if (xb - xa > abs(xa*eps) .and. noroot .EQV. .false.) then + condition = .true. + soln = .false. + else + soln = .true. + end if + ! + ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed + if (abs(y3) <= eps .and. noroot .EQV. .false.) then + soln = .true. + condition = .false. + end if + ! + ! ## Post-convergence correction: + ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration + ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize + ! ## the objective function (i.e., y3); in this case, this is chosen as the solution + if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then + ! write(*,*), 'Warning: oscillatory behavior; possibility of no valid solution!' + x3 = x3_min + nh4_t = nh4_min + no3_t = no3_min + h = h_min + lwn = lwn_min + ghno3 = ghno3_min + gnh3 = gnh3_min + ! + ! ## Reset activity coefficients + gama = gama_min + a4 = k2*(gama(10)/gama(5))*(gama(10)/gama(5)) + y3 = nh4_t/h/max(gnh3, tiny)/a4 - 1.0d0 + end if + end if + end do + ! + ! + ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### + hso4 = 0.0d0 + if (h > tiny) then + ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) + bb =-(h + so4_t + ak1) + cc = h*so4_t + dd = bb*bb - 4.d0*cc + ! + if (dd >= 0.0d0) then + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + hh = 0.5d0*(-bb - sqrt(bb*bb - 4.d0*cc)) + end if + ! + hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) + h = max(h - hh, 0.0d0) + so4_t = max(so4_t - hh, 0.0d0) + hso4 = hh + end if + end if + ! + ! + ! ### Perform mass adjustment if excess exists ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + no3_i = no3_t + hso4_i = hso4 + h_i = h + hno3g_i = ghno3 + nh3g_i = gnh3 + lwn_i = lwn + ! + return + end subroutine mach_hetp_calcd3 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: E4; Sulfate rich, no acid + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calce4(so4_i, nh4_i, hno3g_i, hso4_i, h_i, no3_i, & + lwn_i, rh, temp, k0, p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, ghno3, no3, h, lwn, t, aw + real(kind=8) :: khso4, kh2o, khno3, bb, cc, dd, hh, v, ak1, errin, tt0 + real(kind=8) :: so4_t, nh4_t, no3_t, m4, m9, m13, tt1, tt2, c1, c2 + real(kind=8) :: gnh3, cl, cl_t, ghcl, caso4, c3, c4, c5 + integer(kind=4) :: j, irh + logical(kind=4) :: gg + real(kind=8), dimension(13) :: gama, gamin + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + aw = rh + t = temp + hso4 = 0.0d0 + ghno3 = 0.0d0 + h = 0.0d0 + lwn = 0.0d0 + so4_t = 0.0d0 + nh4_t = nh4 + no3_t = 0.0d0 + gnh3 = 0.0d0 + cl = 0.0d0 + cl_t = 0.0d0 + ghcl = 0.0d0 + caso4 = 0.0d0 + gama = 0.1d0 + gamin = 1.0d10 + ! + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Calculate dry composition + gg = 2.0*so4 - nh4 <= nh4 - so4 + ! + if (gg) then + ! NH4HSO4 >= (NH4)2SO4 + m4 = 2.0d0*nh4 - 3.0d0*so4 + m9 = 0.0d0 + m13 = 2.0d0*so4 - nh4 + else + ! NH4HSO4 < (NH4)2SO4 + m4 = 0.0d0 + m9 = 3.0d0*so4 - 2.0d0*nh4 + m13 = nh4 - so4 + end if + ! + ! ## Aerosol liquid water content (initial) + ! Save ZSR arrays as variables to limit indirect addressing + c3 = awlc(irh) + c4 = awab(irh) + c5 = awas(irh) + lwn = m13/c3 + m9/c4 + m4/c5 + ! + ! Constant variables + c1 = khno3*r*t + c2 = khso4*(lwn/0.1d0) + ! + ! + ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### + ! ## Setup initial conditions + bb = so4 + c2 - nh4 + cc = -c2*so4 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root + end if + ! + ! ## 2. Speciation + so4_t = max(tiny, min(hh, so4)) + hso4 = max(tiny, min(so4 - so4_t, so4)) + h = max(tiny, min(c2*hso4/so4_t, so4)) + ! + ! ## 3. Aerosol liquid water content + gg = so4_t - h < hso4 + h + if (gg) then + m4 = 0.0d0 + m13 = so4_t - h + m9 = max((hso4 + h) - (so4_t - h), 0.0d0) + else + m13 = hso4 + h + m9 = 0.0d0 + m4 = max((so4_t - h) - (hso4 + h), 0.0d0) + end if + lwn = max(m13/c3 + m9/c4 + m4/c5, tiny) + ! + ! + ! ## Iterative search for solution with convergence of activity coefficients + j = 0 + errin = 1.0d0 + do while (j < nsweep-1 .and. errin >= epsact) + j = j + 1 + + ! ## Reset gamin + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(13) = gama(13) + ! + call mach_hetp_calcact2(h, nh4_t, so4_t, hso4, no3_t, lwn, gama, t) + ! + ! ## Test convergence criterion: max change in the activity coefficients + errin = 0.0d0 + errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) + errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) + errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) + errin = max(errin, abs((gamin(10)- gama(10)) / gamin(10))) + errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) + errin = max(errin, abs((gamin(5) - gama(5)) / gamin(5))) + errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) + + ! ## 1. Solve system of equations + ak1 = khso4*((gama(8)/gama(7))*(gama(8)/gama(7)))*(lwn/gama(7)) + bb = so4 + ak1 - nh4_t + cc = -ak1*so4 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root + end if + ! + ! ## 2. Speciation + so4_t = max(tiny, min(hh, so4)) + hso4 = max(tiny, min(so4 - so4_t, so4)) + h = max(tiny, min(ak1*hso4/so4_t, so4)) + ! + ! ## 3. Aerosol liquid water content + gg = so4_t - h < hso4 + h + if (gg) then + m4 = 0.0d0 + m13 = so4_t - h + m9 = max((hso4 + h) - (so4_t - h), 0.0d0) ! NH4HSO4 + else + m9 = 0.0d0 + m13 = hso4 + h + m4 = max((so4_t - h) - (hso4 + h), 0.0d0) ! (NH4)2SO4 + end if + lwn = max(m13/c3 + m9/c4 + m4/c5, tiny) + end do + ! + ! + ! ### MINOR SYSTEM: NO3-/HNO3/H+ ### + ! Nitric acid in the liquid phase assumed a minor species; nitric acid is dissolved + ! from the [HNO3(g)] -> [H+] + [NO3-] equilibrium using the [H+] from the major system + hh = 0.0d0 + if (lwn > tiny) then + bb = c1*(lwn/gama(10))*(lwn/gama(10)) + h !!bb always > 0 + cc = c1*(lwn/gama(10))*(lwn/gama(10))*no3 + + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) + end if + end if + ! + ghno3 = max(no3 - hh, 0.0d0) + no3_t = hh + h = h + hh + ! + ! + ! ### Perform mass adjustment if excess exists ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + hso4_i = hso4 + no3_i = no3_t + h_i = h + hno3g_i = ghno3 + lwn_i = lwn + ! + return + end subroutine mach_hetp_calce4 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: F2; Sulfate rich, free acid + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcf2(so4_i, nh4_i, hno3g_i, hso4_i, h_i, no3_i, & + lwn_i, rh, temp, k0, p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, no3, hso4, ghno3, h, lwn, frh2so4, t, aw + real(kind=8) :: khso4, kh2o, khno3, bb, cc, dd, hh, v, errin, tt0 + real(kind=8) :: so4_t, nh4_t, no3_t, tt1, tt2, c1, c2, c3, c4 + real(kind=8) :: gnh3, cl, cl_t, ghcl, caso4 + integer(kind=4) :: j, irh + real(kind=8), dimension(13) :: gama, gamin + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + aw = rh + t = temp + hso4 = 0.0d0 + ghno3 = 0.0d0 + h = 0.0d0 + lwn = 1.0d-20 + so4_t = 0.0d0 + nh4_t = 0.0d0 + no3_t = 0.0d0 + frh2so4 = 0.0d0 + gnh3 = 0.0d0 + cl = 0.0d0 + cl_t = 0.0d0 + ghcl = 0.0d0 + caso4 = 0.0d0 + gama = 0.1d0 + gamin = 1.0d10 + ! + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + + ! ## Aerosol liquid water content + c3 = so4 - nh4 + lwn = max(max(c3, 0.0d0)/awsa(irh) + nh4/awab(irh), tiny) + ! + ! ## Constant values + c1 = khno3*r*t + c2 = khso4*1.0d-19 + c4 = khso4*lwn + ! + ! + ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### + ! ## Setup initial conditions + bb = c3 + c2 + cc = -c2*so4 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root + end if + ! + ! ## 2. Speciation + nh4_t = nh4 + so4_t = hh + hso4 = max(so4-hh, tiny) + h = c3 + hh + frh2so4 = max(so4_t + hso4 - nh4_t, 0.0d0) + ! + ! + ! ## Iterative search for solution with convergence of activity coefficients + j = 0 + errin = 1.0d0 + do while (j < nsweep-1 .and. errin >= epsact) + j = j + 1 + ! + ! ## Reset gamin + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(13) = gama(13) + ! + call mach_hetp_calcact2(h, nh4_t, so4_t, hso4, no3_t, lwn, gama, t) + ! + ! ## Test convergence criterion: max change in the activity coefficients + errin = 0.0d0 + errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) + errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) + errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) + errin = max(errin, abs((gamin(10)- gama(10)) / gamin(10))) + errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) + errin = max(errin, abs((gamin(5) - gama(5)) / gamin(5))) + errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) + ! + ! ## 1. Solve system of equations + bb = c3 + c4/gama(7)*(gama(8)/gama(7))**2.0 + cc = -(c4/gama(7)*(gama(8)/gama(7))**2.0)*so4 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root + end if + ! + ! ## 2. Speciation + so4_t = hh + hso4 = max(so4 - hh, tiny) + h = c3 + hh + frh2so4 = max(so4_t + hso4 - nh4_t, 0.0d0) + end do + ! + ! + ! ### MINOR SYSTEM: NO3-/HNO3/H+ ### + ! Nitric acid in the liquid phase assumed a minor species; nitric acid is dissolved + ! from the [HNO3(g)] -> [H+] + [NO3-] equilibrium using the [H+] from the major system + hh = 0.0d0 + if (lwn > tiny) then + bb = c1*(lwn/gama(10))*(lwn/gama(10)) + h !!bb always > 0 + cc = c1*(lwn/gama(10))*(lwn/gama(10))*no3 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) + end if + end if + ! + ghno3 = max(no3 - hh, 0.0d0) + no3_t = hh + h = h + hh + ! + ! + ! ### Perform mass adjustment if excess exists ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + no3_i = no3_t + hso4_i = hso4 + h_i = h + hno3g_i = ghno3 + lwn_i = lwn + ! + return + end subroutine mach_hetp_calcf2 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: G5; Sulfate poor; sodium poor + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, & + cl_i, no3_i, h_i, lwn_i, rh, temp, k0, p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: na_i + real(kind=8), intent(inout) :: cl_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: hclg_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, no3, cl, na, ghno3, ghcl, caso4, t, aw + real(kind=8) :: khso4, knh3, kh2o, khno3, khcl, bb, cc, dd, hh, v, ak1, frnh4, tt0 + real(kind=8) :: errouloc, errinlocb, errin, ohi, smin, scon, m4, m5, m6 + real(kind=8) :: a4, a5, psi4, psi5, nh, sigma, xt, xf, xh, delta, rr, gx, gx2 + real(kind=8) :: u1, ya, yb, xa, xb, c1, c2, c3, c3a, c4, c5, k1, k2, k3, k4, loccon + real(kind=8) :: omehi, omebe, y1, y2, y3, x3, dx, a6, gmax, zsr2 + real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, tt1, tt2, zsr3, zsr4 + real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter, lwnsq, gama10sq + real(kind=8) :: no3_min, nh4_min, cl_min, h_min, lwn_min, ghcl_min, gnh3_min, ghno3_min + integer(kind=4) :: j, k, ii, rooteval, irh, nmax + logical(kind=4) :: condition, noroot, soln, frst, calain, calou, earlyexit + real(kind=8), dimension(13) :: gama, gamin, gamou, gama_min + ! + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + na = na_i + cl = cl_i + aw = rh + t = temp + caso4 = 0.0d0 + hso4 = 0.0d0 + gnh3 = 0.0d0 + ghno3 = 0.0d0 + ghcl = 0.0d0 + h = 0.0d0 + lwn = 0.0d0 + so4_t = 0.0d0 + nh4_t = 0.0d0 + no3_t = 0.0d0 + na_t = 0.0d0 + cl_t = 0.0d0 + noroot=.false. + soln =.false. + gmax = 0.0d0 + calou =.true. + gama = 0.1d0 + gamin = 1.0d10 + gamou = 0.1d0 + earlyexit = .false. + ! + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) + khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Create variables to hold ZSR variables (to limit indirect addressing) + zsr2 = awas(irh) + zsr3 = awan(irh) + zsr4 = awac(irh) + ! + ! ## Constant values + c1 = r*t + c2 = 0.5d0*na !na2so4 + c5 = c2/awss(irh) + c3 = max(so4 - c2, 0.0d0) !frso4 + c3a= 2.0d0*c3 + c4 = max(nh4 - c3a, 0.0d0) !frnh4 + k1 = knh3/kh2o*c1 + k2 = khno3*c1 + k3 = khcl*c1 + k4 = kh2o*aw + ! + ! ## Initial speciation + na_t = na + so4_t = c3 + c2 + ! + ! ## Initial aerosol liquid water content + lwn = c3/zsr2 + c5 + ! + ! + ! ### STAGE 1: Root tracking ### + ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs + rooteval = 0 + condition = .true. + do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking + rooteval = rooteval + 1 + ! + ! ## Set high limit for root tracking (i.e. lower bound) + if (rooteval == 1) then + omehi = tiny + y1 = 0.0d0 + end if + ! + ! ## Begin search on subinterval + if (rooteval == 2) then + soln = .false. + y1 = y2 + ! + dx = (cl-tiny-tiny)/float(ndiv) + ! + omebe = omehi ! Lower bound of subinterval (xa) + omehi = omehi + dx ! Upper bound of subinterval (xb) + end if + ! + ! ## Continue search + if (rooteval > 2) then + if (loccon < 0.0d0) then + ! ## 1. Root has been found on the subinterval; save x values for ITP search + y1 = y1 + omebe = omebe + omehi = omehi + else + ! ## 2. No root has been found, continue searching in the next subinterval + y1 = y2 + omebe = omehi + omehi = omehi + dx + end if + end if + ! + ! ## Solve the system of equations + frst = .true. + calain = .true. + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + if (no3 >= tiny) then + psi5 = omehi*no3/(a6/a5*(cl-omehi) + omehi) + else + psi5 = tiny + end if + ! + ! ## 2. Account for NH3 evaporation + if (so4 > tiny) then + bb = -(c4 + omehi + psi5 + 1.0d0/a4) + cc = c4*(psi5 + omehi) - c3a/a4 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + else + psi4 = tiny + end if + ! + ! ## 3. Speciation + nh4_t = c3a + psi4 + cl_t = omehi + no3_t = psi5 + gnh3 = max(c4 - psi4, tiny2) + ghno3 = max(no3 - psi5, tiny2) + ghcl = max(cl - omehi, tiny2) + ! + ! ## 4. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 5. Aerosol liquid water content + m4 = max(so4_t - c2, 0.0d0) ! (NH4)2SO4 + frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) + m5 = min(no3_t, frnh4) ! NH4NO3 + frnh4 = max(frnh4 - m5, 0.0d0) + m6 = min(cl_t, frnh4) ! NH4Cl + lwn = max(c5 + m4/zsr2 + m5/zsr3 + m6/zsr4, tiny) + end if + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 0 + do while ( k < nsweep-1 .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(1) = gama(1) + gamou(2) = gama(2) + gamou(3) = gama(3) + gamou(4) = gama(4) + gamou(5) = gama(5) + gamou(6) = gama(6) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(10) = gama(10) + gamou(11) = gama(11) + gamou(12) = gama(12) + gamou(13) = gama(13) + end if + ! + ! ## Reset gamin + if (soln .EQV. .false.) then + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + end if + ! + call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + lwn, gama, t, soln, frst, calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + do ii = 1, 13 + errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) + end do + calou = errouloc .ge. epsact + frst = .false. + end if + ! + errinlocb = 0 + do ii = 1, 13 + errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) + end do + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 13 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, using new activity coefficients + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + if (no3 >= tiny) then + psi5 = omehi*no3/(a6/a5*(cl - omehi) + omehi) + else + psi5 = tiny + end if + ! + ! ## 2. Account for NH3 evaporation + if (so4 > tiny) then + bb = -(c4 + omehi + psi5 + 1.0d0/a4) + cc = c4*(psi5 + omehi) - c3a/a4 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + else + psi4 = tiny + end if + ! + ! ## 3. Speciation + nh4_t = c3a + psi4 + cl_t = omehi + no3_t = psi5 + gnh3 = max(c4 - psi4, tiny2) + ghno3 = max(no3 - psi5, tiny2) + ghcl = max(cl - omehi, tiny2) + ! + ! ## 4. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 5. Aerosol liquid water content + m4 = max(so4_t - c2, 0.0d0) ! (NH4)2SO4 + frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) + m5 = min(no3_t, frnh4) ! NH4NO3 + frnh4 = max(frnh4 - m5, 0.0d0) + m6 = min(cl_t, frnh4) ! NH4Cl + lwn = max(c5 + m4/zsr2 + m5/zsr3 + m6/zsr4, tiny) + end if + end do + ! + y2 = h*cl_t/ghcl/a6 - 1.0d0 ! Function value + ! + ! ## Check for criteria to exit root tracking before ndiv iterations of root tracking + condition = .false. + loccon = sign(1.0d0,y1)*sign(1.0d0,y2) + if (loccon > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps) then + condition = .true. + elseif (loccon < 0.0d0 .and. abs(y2) > eps) then + ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP + soln = .true. + else + ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) + if (rooteval >= 2) then + ! ## Root has been found on the end of a subinterval + soln = .true. + noroot = .true. + earlyexit = .true. + else + ! ## Root is found at the start of larger interval, but still proceed + condition = .true. + end if + end if + ! + ! ## Too little Cl; reset x-value to tiny and exit root tracking + if (cl <= tiny) then + condition = .false. + rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking + noroot = .true. + omehi = tiny ! Reset x-value to tiny, and solve system with this value + omebe = omehi + end if + ! + ! ### AFTER iterating through ALL ndiv subdivided intervals + if (rooteval == ndiv + 1) then + if (loccon > 0.0d0 .and. abs(y2) > eps) then + ! ## (1) No solution + noroot = .true. + omehi = tiny ! Reset to tiny + omebe = omehi + ! write(*,*), 'Warning in CALCG5: no solution found' + else if (loccon > 0.0d0 .and. abs(y2) <= eps) then + ! ## (2) Solution is assumed and ITP is not required + noroot = .true. + soln = .true. + end if + end if + end do !End outer loop for root tracking + ! + ! + ! + ! ### STAGE 2: modified bisection search (using ITP algorithm) ### + ! ## Initialize static ITP variables + if (noroot .EQV. .false.) then + ya = y1 + yb = y2 + xa = omebe + xb = omehi + x3 = omehi + ! + if (xa == xb) then + noroot = .true. + gx = tiny + else + gx = xb - xa + end if + ! + gx2 = (xa+xb)*0.5d0 + u1 = 0.2d0/gx + nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 + nmax = int(nh) + 2 + else + x3 = omehi + end if + ! + ! ## Start search + ! 1. Store value of previous y3 for later use + y3_lastiter = 0.0d0 + x3_lastiter = 0.0d0 + y3_min = 1.0d20 + x3_min = 0.0d0 + ! + j = 0 + condition = .true. + ! + if (earlyexit .EQV. .false.) then + soln = .false. + end if + ! + do while (j < maxit .and. condition) + ! ## Set dynamic ITP variables + ! 1. Track x3 and y3 of the previous iteration + if (j > 0) then + y3_lastiter = y3 + x3_lastiter = x3 + end if + ! + ! 2. Track the minimum y3 that is found before ending + if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then + y3_min = y3_lastiter + x3_min = x3_lastiter + ghno3_min = ghno3 + no3_min = no3_t + h_min = h + ghcl_min = ghcl + cl_min = cl_t + gnh3_min = gnh3 + nh4_min = nh4_t + lwn_min = lwn + gama_min = gama + end if + ! + if (noroot .EQV. .false. .and. soln .EQV. .false.) then + if (yb - ya == 0.0d0) then + write(*,*), '###### ABORT ######' + write(*,*), 'Zero divide in ITP reset: CALCG5' + write(*,*), 'SO4 in = ', so4 + write(*,*), 'NH4 in = ', nh4 + write(*,*), 'NO3 in = ', no3 + write(*,*), 'Na in = ', na + write(*,*), 'Cl in = ', cl + write(*,*), 'Temp in= ', t + write(*,*), 'RH in = ', aw + return + end if + ! + gx = xb - xa + xh = 0.5d0*(xa + xb) + rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) + delta= u1*(max(gx, 0.0d0))**2.0d0 + xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) + ! + sigma = sign(1.0d0, xh - xf) + if (delta <= abs(xh - xf)) then + xt = xf + sigma*delta + else + xt = xh + end if + ! + if (abs(xt - xh) <= rr) then + x3 = xt + else + x3 = xh - sigma*rr + end if + end if + ! + j = j + 1 + ! + if (soln .EQV. .false.) then + gmax = 0.1d0 + gmax = max(gmax, gama(1)) + gmax = max(gmax, gama(2)) + gmax = max(gmax, gama(3)) + gmax = max(gmax, gama(4)) + gmax = max(gmax, gama(5)) + gmax = max(gmax, gama(6)) + gmax = max(gmax, gama(7)) + gmax = max(gmax, gama(8)) + gmax = max(gmax, gama(9)) + gmax = max(gmax, gama(10)) + gmax = max(gmax, gama(11)) + gmax = max(gmax, gama(12)) + gmax = max(gmax, gama(13)) + end if + ! + ! ## Reinitialize activity coefficients if gmax > 100.0d0 + if (gmax > 100.0d0 .and. soln .EQV. .false.) then + gama = 0.1d0 + gamin = 1.0d10 + gamou = 1.0d10 + calou = .true. + frst = .true. + end if + ! + ! ## Solve system of equations + frst = .true. + calain = .true. + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + if (no3 >= tiny) then + psi5 = x3*no3/(a6/a5*(cl-x3) + x3) + else + psi5 = tiny + end if + ! + ! ## 2. Account for NH3 evaporation + if (so4 > tiny) then + bb = -(c4 + x3 + psi5 + 1.0d0/a4) + cc = c4*(psi5 + x3) - c3a/a4 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + else + psi4 = tiny + end if + ! + ! ## 3. Speciation + nh4_t = c3a + psi4 + cl_t = x3 + no3_t = psi5 + gnh3 = max(c4 - psi4, tiny2) + ghno3 = max(no3 - psi5, tiny2) + ghcl = max(cl - x3, tiny2) + ! + ! ## 4. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 5. Aerosol liquid water content + m4 = max(so4_t - c2, 0.0d0) ! (NH4)2SO4 + frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) + m5 = min(no3_t, frnh4) ! NH4NO3 + frnh4 = max(frnh4 - m5, 0.0d0) + m6 = min(cl_t, frnh4) ! NH4Cl + lwn = max(c5 + m4/zsr2 + m5/zsr3 + m6/zsr4, tiny) + end if + ! + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 0 + do while ( k < nsweep-1 .and. errin >= epsact) + k = k + 1 + ! ## Reset gamin and gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(1) = gama(1) + gamou(2) = gama(2) + gamou(3) = gama(3) + gamou(4) = gama(4) + gamou(5) = gama(5) + gamou(6) = gama(6) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(10) = gama(10) + gamou(11) = gama(11) + gamou(12) = gama(12) + gamou(13) = gama(13) + end if + ! + if (soln .EQV. .false.) then + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + end if + ! + call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + lwn, gama, t, soln, frst, calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + do ii = 1, 13 + errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) + end do + calou = errouloc .ge. epsact + frst = .false. + end if + ! + errinlocb = 0 + do ii = 1, 13 + errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) + end do + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 13 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, with new activity coefficients + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + if (no3 >= tiny) then + psi5 = x3*no3/(a6/a5*(cl-x3) + x3) + else + psi5 = tiny + end if + ! + ! ## 2. Account for NH3 evaporation + if (so4 > tiny) then + bb = -(c4 + x3 + psi5 + 1.0d0/a4) + cc = c4*(psi5 + x3) - c3a/a4 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + else + psi4 = tiny + end if + ! + ! ## 3. Speciation + nh4_t = c3a + psi4 + cl_t = x3 + no3_t = psi5 + gnh3 = max(c4 - psi4, tiny2) + ghno3 = max(no3 - psi5, tiny2) + ghcl = max(cl - x3, tiny2) + ! + ! ## 4. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 5. Aerosol liquid water content + m4 = max(so4_t - c2, 0.0d0) ! (NH4)2SO4 + frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) + m5 = min(no3_t, frnh4) ! NH4NO3 + frnh4 = max(frnh4 - m5, 0.0d0) + m6 = min(cl_t, frnh4) ! NH4Cl + lwn = max(c5 + m4/zsr2 + m5/zsr3 + m6/zsr4, tiny) + end if + end do + ! + y3 = h*cl_t/ghcl/a6 - 1.0d0 + ! + condition = .false. + if (noroot .EQV. .true.) then + ! ## If no root on interval then do not perform ITP + xa = x3 + xb = x3 + else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + xb = x3 + yb = y3 + else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + xa = x3 + ya = y3 + else if (soln .EQV. .false.) then + xa = x3 + xb = x3 + end if + ! + ! ## Check for convergence criteria to exit ITP: + if (xb - xa > abs(xa*eps) .and. noroot .EQV. .false.) then + condition = .true. + soln = .false. + else + soln = .true. + end if + ! + ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed + if (abs(y3) <= eps .and. noroot .EQV. .false.) then + soln = .true. + condition = .false. + end if + ! + ! ## Post-convergence correction: + ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration + ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize + ! ## the objective function (i.e., y3); in this case, this is chosen as the solution + if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then + x3 = x3_min + cl_t = cl_min + nh4_t = nh4_min + no3_t = no3_min + h = h_min + lwn = lwn_min + ghcl = ghcl_min + ghno3 = ghno3_min + gnh3 = gnh3_min + ! + ! ## Reset activity coefficients + gama = gama_min + a6 = k3*(lwn/gama(11))*(lwn/gama(11)) + y3 = h*cl_t/ghcl/a6 - 1.0d0 + end if + end if + end do ! End outer loop of ITP search + ! + ! + ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### + hso4 = 0.0d0 + if (h > tiny .and. so4_t > tiny .and. lwn >= 1.0d-19) then + ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) + bb =-(h + so4_t + ak1) + cc = h*so4_t + dd = bb*bb - 4.d0*cc + ! + if (dd >= 0.0d0) then + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + hh = 0.5d0*(-bb - sqrt(bb*bb - 4.d0*cc)) + end if + ! + hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) + h = max(h - hh, 0.0d0) + so4_t = max(so4_t - hh, 0.0d0) + hso4 = hh + end if + end if + ! + ! + ! ### Perform mass adjustment if excess exists ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + no3_i = no3_t + hso4_i = hso4 + na_i = na_t + cl_i = cl_t + nh3g_i = gnh3 + hno3g_i = ghno3 + hclg_i = ghcl + h_i = h + lwn_i = lwn + ! + return + end subroutine mach_hetp_calcg5 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: H6; Sulfate poor; sodium rich + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & + na_i, cl_i, no3_i, h_i, lwn_i, frna_d, rh, temp, k0, & + p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: na_i + real(kind=8), intent(inout) :: cl_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: hclg_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent (out) :: frna_d + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, no3, cl, na, ghno3, ghcl, caso4 + real(kind=8) :: t, aw, khso4, knh3, kh2o, khno3, khcl, frnh4, frno3, frcl, tt0 + real(kind=8) :: bb, cc, dd, hh, v, ak1, errin, ohi, smin, scon, a5, psi4, psi5 + real(kind=8) :: m5, m6, omehi, omebe, y1, y2, y3, x3, dx, a6, a4, u1, ya, yb + real(kind=8) :: xa, xb, so4_t, nh4_t, no3_t, na_t, cl_t, c5, c6, c7, sumzsr + real(kind=8) :: zsr1, zsr2, tt1, tt2, gmax, c1, c2, c3, k1, k2, k3, k4, loccon + real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, errouloc, errinlocb + real(kind=8) :: frno3_d, frcl_d, lwnsq, gama10sq + integer(kind=4) :: irh, nmax, j, k, ii, rooteval + logical(kind=4) :: condition, noroot, earlyexit, soln, frst, calain, calou + real(kind=8), dimension(13) :: gama, gamin, gamou, gama_min + real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter + real(kind=8) :: no3_min, nh4_min, cl_min, h_min, lwn_min, ghcl_min, gnh3_min, ghno3_min + ! + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + na = na_i + cl = cl_i + aw = rh + t = temp + hso4 = 0.0d0 + caso4 = 0.0d0 + gnh3 = 0.0d0 + ghno3 = 0.0d0 + ghcl = 0.0d0 + h = 0.0d0 + lwn = tiny + so4_t = so4 + nh4_t = 0.0d0 + no3_t = 0.0d0 + na_t = 0.0d0 + cl_t = 0.0d0 + frna_d= 0.0d0 + frcl_d= 0.0d0 + frno3_d= 0.0d0 + noroot=.false. + soln =.false. + gama = 0.1d0 + gamin = 1.0d10 + gamou = 1.0d10 + gmax = 0.0d0 + earlyexit = .false. + calou = .true. + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*(tt2)) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*(tt2)))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*(tt2)) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) + khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*(tt2)) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + + ! ## Calculate constant parameters + c1 = r*t + c3 = 2.0d0*so4 !na2so4 + frna_d = max(na - c3, 0.0d0) + c2 = min(frna_d, no3) !nano3 + c5 = max(no3-c2, 0.0d0) !frno3 + frno3_d= c5 + frna_d = max(frna_d - c2, 0.0d0) + c7 = min(frna_d, cl) !nacl + c6 = max(cl - c7, 0.0d0) !frcl + frcl_d = c6 + frna_d = max(frna_d - c7, 0.0d0) + k1 = knh3/kh2o*c1 + k2 = khno3*c1 + k3 = khcl*c1 + k4 = kh2o*aw + ! + ! ## Constant ZSR parameter + sumzsr = c7/awsc(irh) + so4/awss(irh) + c2/awsn(irh) + zsr1 = awan(irh) + zsr2 = awac(irh) + ! + ! ## Initial speciation + na_t = c2 + c7 + c3 + ! + ! + ! ### STAGE 1: Root tracking ### + ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs + rooteval = 0 + condition = .true. + do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking + rooteval = rooteval + 1 + ! + ! ## Set high limit for root tracking (i.e. lower bound) + if (rooteval == 1) then + omehi = tiny + y1 = 1.0d0 + end if + ! + ! ## Begin search on subinterval + if (rooteval == 2) then + soln = .false. + if (abs(y2) <= eps) then + earlyexit = .true. + end if + y1 = y2 + ! + if (earlyexit .EQV. .true.) then + dx = 0.0d0 + else + dx = (c6-tiny-tiny)/float(ndiv) + end if + omebe = omehi ! Lower bound of subinterval (xa) + omehi = omehi + dx ! Upper bound of subinterval (xb) + end if + ! + ! ## Continue search + if (rooteval > 2) then + if (loccon < 0.0d0) then + ! ## 1. Root has been found on the subinterval; save x values for ITP search + y1 = y1 + omebe = omebe + omehi = omehi + else + ! ## 2. No root has been found, continue searching in the next subinterval + y1 = y2 + omebe = omehi + omehi = omehi + dx + end if + end if + ! + ! ## Solve the system of equations + frst = .true. + calain = .true. + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = c5*(omehi + c7) - a6/a5*c2*(c6-omehi) + psi5 = max(psi5 / (a6/a5*(c6 - omehi) + omehi + c7), tiny) + ! + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + omehi + psi5 + 1.0d0/a4) + cc = nh4*(psi5 + omehi) + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + psi4 = min(psi4, nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = omehi + c7 + no3_t = psi5 + c2 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(c5 - psi5, tiny2) + ghcl = max(c6 - omehi, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t - c2, 0.0d0) + frcl = max(cl_t - c7, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5 , 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(sumzsr + m5/zsr1 + m6/zsr2, tiny) + end if + ! + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 0 + do while ( k < nsweep-1 .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(1) = gama(1) + gamou(2) = gama(2) + gamou(3) = gama(3) + gamou(4) = gama(4) + gamou(5) = gama(5) + gamou(6) = gama(6) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(10) = gama(10) + gamou(11) = gama(11) + gamou(12) = gama(12) + gamou(13) = gama(13) + end if + ! + ! ## Reset gamin + if (soln .EQV. .false.) then + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + end if + ! + call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + lwn, gama, t, soln, frst, calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + do ii = 1, 13 + errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) + end do + calou = errouloc .ge. epsact + frst = .false. + end if + ! + errinlocb = 0 + do ii = 1, 13 + errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) + end do + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 13 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, using new activity coefficients + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = c5*(omehi + c7) - a6/a5*c2*(c6-omehi) + psi5 = max(psi5 / (a6/a5*(c6 - omehi) + omehi + c7), tiny) + ! + bb = -(nh4 + omehi + psi5 + 1.0d0/a4) + cc = nh4*(psi5 + omehi) + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + omehi + psi5 + 1.0d0/a4) + cc = nh4*(psi5+ omehi) + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + psi4 = min(psi4, nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = omehi + c7 + no3_t = psi5 + c2 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(c5 - psi5, tiny2) + ghcl = max(c6 - omehi, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t - c2, 0.0d0) + frcl = max(cl_t - c7, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5 , 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(sumzsr + m5/zsr1 + m6/zsr2, tiny) + end if + end do + ! + y2 = nh4_t*cl_t/ghcl/gnh3/a6/a4 - 1.0d0 !Function value + ! + ! ## Check for criteria to exit root tracking + condition = .false. + loccon = sign(1.0d0,y1)*sign(1.0d0,y2) + if (loccon > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps .and. c6 > tiny) then + condition = .true. + elseif (loccon < 0.0d0 .and. abs(y2) > eps) then + ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP + soln = .true. + else + ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) + soln = .true. + noroot = .true. + end if + ! + ! ## Too little frcl; reset x-value to tiny and exit root tracking + if (c6 <= tiny) then + condition = .false. + rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking + noroot = .true. + omehi = tiny ! Reset x-value to tiny, and solve system with this value + omebe = omehi + end if + ! + ! ### AFTER iterating through ALL ndiv subdivided intervals + if (rooteval == ndiv + 1) then + if (loccon > 0.0d0 .and. abs(y2) > eps .and. c6 > tiny .and. earlyexit .EQV. .false.) then + ! ## (1) No solution + noroot = .true. + omehi = tiny ! Reset to tiny + omebe = omehi + ! write(*,*), 'Warning in CALCH6: no solution found' + else if (loccon > 0.0d0 .and. abs(y2) <= eps .and. c6 > tiny .and. earlyexit .EQV. .false.) then + ! ## (2) Solution is assumed and ITP is not required + noroot = .true. + !soln = .true. + end if + end if + end do !End outer loop for root tracking + ! + ! + ! + ! ### STAGE 2: modified bisection search (using ITP algorithm) ### + ! ## Initialize static ITP variables + if (noroot .EQV. .false.) then + ya = y1 + yb = y2 + xa = omebe + xb = omehi + x3 = omehi + ! + if (xa == xb) then + noroot = .true. + gx = tiny + else + gx = xb - xa + end if + ! + gx2 = (xa+xb)*0.5d0 + u1 = 0.2d0/gx + nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 + nmax = int(nh) + 2 + else + x3 = omehi + end if + ! + ! ## Start search + ! 1. Store value of previous y3 for later use + y3_lastiter = 0.0d0 + x3_lastiter = 0.0d0 + y3_min = 1.0d20 + x3_min = 0.0d0 + ! + j = 0 + condition = .true. + soln = .false. + do while (j < maxit .and. condition) ! Begin outer loop for ITP search + ! ## Set dynamic ITP variables + ! 1. Track x3 and y3 of the previous iteration + if (j > 0) then + y3_lastiter = y3 + x3_lastiter = x3 + end if + ! + ! 2. Track the minimum y3 that is found before ending + if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then + y3_min = y3_lastiter + x3_min = x3_lastiter + ghno3_min = ghno3 + no3_min = no3_t + h_min = h + ghcl_min = ghcl + cl_min = cl_t + gnh3_min = gnh3 + nh4_min = nh4_t + lwn_min = lwn + gama_min = gama + end if + ! + if (noroot .EQV. .false. .and. soln .EQV. .false.) then + if (yb - ya == 0.0d0) then + write(*,*), '###### ABORT ######' + write(*,*), 'Zero divide in ITP reset: CALCH6' + write(*,*), 'SO4 in = ', so4 + write(*,*), 'NH4 in = ', nh4 + write(*,*), 'NO3 in = ', no3 + write(*,*), 'Na in = ', na + write(*,*), 'Cl in = ', cl + write(*,*), 'Temp in= ', t + write(*,*), 'RH in = ', aw + return + end if + ! + gx = xb - xa + xh = 0.5d0*(xa + xb) + rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) + delta= u1*(max(gx, 0.0d0))**2.0d0 + xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) + ! + sigma = sign(1.0d0, xh - xf) + if (delta <= abs(xh - xf)) then + xt = xf + sigma*delta + else + xt = xh + end if + ! + if (abs(xt - xh) <= rr) then + x3 = xt + else + x3 = xh - sigma*rr + end if + end if + ! + j = j + 1 + ! + if (soln .EQV. .false.) then + gmax = 0.1d0 + gmax = max(gmax, gama(1)) + gmax = max(gmax, gama(2)) + gmax = max(gmax, gama(3)) + gmax = max(gmax, gama(4)) + gmax = max(gmax, gama(5)) + gmax = max(gmax, gama(6)) + gmax = max(gmax, gama(7)) + gmax = max(gmax, gama(8)) + gmax = max(gmax, gama(9)) + gmax = max(gmax, gama(10)) + gmax = max(gmax, gama(11)) + gmax = max(gmax, gama(12)) + gmax = max(gmax, gama(13)) + end if + ! + ! ## Reinitialize activity coefficients if gmax > 100.0d0 + if (gmax > 100.0d0 .and. soln .EQV. .false.) then + gama = 0.1d0 + gamin = 1.0d10 + gamou = 1.0d10 + calou = .true. + frst = .true. + end if + ! + ! ## Solve system of equations + frst = .true. + calain = .true. + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = c5*(x3 + c7) - a6/a5*c2*(c6-x3) + psi5 = max(psi5 / (a6/a5*(c6 - x3) + x3 + c7), tiny) + ! + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + x3 + psi5 + 1.0d0/a4) + cc = nh4*(psi5+ x3) + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + psi4 = min(psi4, nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = x3 + c7 + no3_t = psi5 + c2 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(c5 - psi5, tiny2) + ghcl = max(c6 - x3, tiny2) + + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t - c2, 0.0d0) + frcl = max(cl_t - c7, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5 , 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(sumzsr + m5/zsr1 + m6/zsr2, tiny) + end if + ! + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 0 + do while ( k < nsweep-1 .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamin and gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(1) = gama(1) + gamou(2) = gama(2) + gamou(3) = gama(3) + gamou(4) = gama(4) + gamou(5) = gama(5) + gamou(6) = gama(6) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(10) = gama(10) + gamou(11) = gama(11) + gamou(12) = gama(12) + gamou(13) = gama(13) + end if + ! + if (soln .EQV. .false.) then + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + end if + ! + call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + lwn, gama, t, soln, frst, calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + do ii = 1, 13 + errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) + end do + calou = errouloc .ge. epsact + frst = .false. + end if + ! + errinlocb = 0 + do ii = 1, 13 + errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) + end do + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 13 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, with new activity coefficients + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = c5*(x3 + c7) - a6/a5*c2*(c6-x3) + psi5 = max(psi5 / (a6/a5*(c6 - x3) + x3 + c7), tiny) + ! + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + x3 + psi5 + 1.0d0/a4) + cc = nh4*(psi5 + x3) + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + psi4 = min(psi4, nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = x3 + c7 + no3_t = psi5 + c2 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(c5 - psi5, tiny2) + ghcl = max(c6 - x3, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t - c2, 0.0d0) + frcl = max(cl_t - c7, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5 , 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(sumzsr + m5/zsr1 + m6/zsr2, tiny) + end if + end do + ! + y3 = nh4_t*cl_t/ghcl/gnh3/a6/a4 - 1.0d0 !Function value + ! + condition = .false. + if (noroot .EQV. .true.) then + ! ## If no root on interval then do not perform ITP + xa = x3 + xb = x3 + else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + xb = x3 + yb = y3 + else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + xa = x3 + ya = y3 + else if (soln .EQV. .false.) then + xa = x3 + xb = x3 + end if + ! + ! ## Check for convergence criteria to exit ITP: + if (xb - xa > abs(xa*eps) .and. noroot .EQV. .false.) then + condition = .true. + soln = .false. + else + soln = .true. + end if + ! + ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed + if (abs(y3) <= eps .and. noroot .EQV. .false.) then + soln = .true. + condition = .false. + end if + ! + ! ## Post-convergence correction: + ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration + ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize + ! ## the objective function (i.e., y3); in this case, this is chosen as the solution + if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then + x3 = x3_min + cl_t = cl_min + nh4_t = nh4_min + no3_t = no3_min + h = h_min + lwn = lwn_min + ghcl = ghcl_min + ghno3 = ghno3_min + gnh3 = gnh3_min + ! + ! ## Reset activity coefficients + gama = gama_min + a4 = k1*(gama(10)/gama(5))*(gama(10)/gama(5)) + a6 = k3*(lwn/gama(11))*(lwn/gama(11)) + y3 = nh4_t*cl_t/ghcl/gnh3/a6/a4 - 1.0d0 + end if + end if + end do ! End outer loop of ITP search + ! + ! + ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### + hso4 = 0.0d0 + if (h > tiny .and. so4_t > tiny .and. lwn >= 1.0d-19) then + ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) + bb =-(h + so4_t + ak1) + cc = h*so4_t + dd = bb*bb - 4.d0*cc + ! + if (dd >= 0.0d0) then + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + hh = 0.5d0*(-bb - sqrt(bb*bb - 4.d0*cc)) + end if + ! + hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) + h = max(h - hh, 0.0d0) + so4_t = max(so4_t - hh, 0.0d0) + hso4 = hh + end if + end if + ! + ! + ! ### Perform mass adjustment if excess exists ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + no3_i = no3_t + hso4_i = hso4 + na_i = na_t + cl_i = cl_t + nh3g_i = gnh3 + hno3g_i = ghno3 + hclg_i = ghcl + h_i = h + lwn_i = lwn + ! + return + end subroutine mach_hetp_calch6 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: I6; Sulfate rich, no free acid + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calci6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & + na_i, cl_i, no3_i, h_i, lwn_i, frna, rh, temp, k0, & + p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: na_i + real(kind=8), intent(inout) :: cl_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: hclg_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent (out) :: frna + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn + real(kind=8) :: no3, cl, na, ghno3, ghcl, caso4, t, aw + real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, m1, m2, m3, delcl + real(kind=8) :: na2so4, nh42s4, nh4hs4, nahso4, slc, tt1, tt2, c1, c2, c3 + real(kind=8) :: knh3, kh2o, khno3, khcl, khso4, bb, cc, dd, ff, v, errin + real(kind=8) :: a3, a4, a6, psi6, frnh4, frso4, delno, tt0 + integer(kind=4) :: j, ii, islv, irh + logical(kind=4) :: ispoly + real(kind=8), dimension(13) :: gama, gamin + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + na = na_i + cl = cl_i + aw = rh + t = temp + hso4 = 0.0d0 + gnh3 = 0.0d0 + ghno3 = 0.0d0 + ghcl = 0.0d0 + h = 0.0d0 + caso4 = 0.0d0 + lwn = tiny + so4_t = 0.0d0 + nh4_t = 0.0d0 + no3_t = 0.0d0 + na_t = 0.0d0 + cl_t = 0.0d0 + delcl = 0.0d0 + na2so4= 0.0d0 + nh42s4= 0.0d0 + nh4hs4= 0.0d0 + nahso4= 0.0d0 + slc = 0.0d0 + gama = 0.1d0 + gamin = 1.0d10 + ! + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) + khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Calculate non-volatile solids (subroutine 'CALCI1A' in ISORROPIA II) + na2so4 = 0.5d0*na !na2so4 + frna = na - 2.0d0*na2so4 + frso4 = max(so4 - na2so4, 0.0d0) + slc = min(nh4/3.0d0, frso4*0.5d0) !(nh4)3h(so4)2 + frso4 = max(frso4 - 2.0d0*slc, 0.0d0) + frnh4 = max(nh4 - 3.0d0*slc, 0.0d0) + ! + if (frso4 <= tiny) then + slc = max(slc - frnh4, 0.0d0) + nh42s4 = 2.0d0*frnh4 !(nh4)2so4 + else if (frnh4 <= tiny .and. na2so4 <= tiny) then + nh4hs4 = 3.0d0*min(frso4, slc) !nh4hso4 + slc = max(slc - frso4, 0.0d0) + else if (frnh4 <= tiny .and. na2so4 > tiny) then + nh4hs4 = 3.0d0*min(frso4, slc) + slc = max(slc - frso4, 0.0d0) + frso4 = max(frso4-nh4hs4/3.0d0, 0.0d0) + nahso4 = 2.0d0*frso4 !nahso4 + na2so4 = max(na2so4 - frso4, 0.0d0) + frna = max(na - nahso4 - 2.0d0*na2so4, 0.0d0) + end if + ! + ! ## Calculate gaseous species + ghno3 = no3 + ghcl = cl + + ! ## Calculate constants + c1 = slc + nahso4 + nh4hs4 + c2 = slc + na2so4 + nh42s4 + ! + ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### + ! ## Setup initial conditions + ! ## 1. Calculate dissociation quantities + a6 = khso4*1.0d-19 + bb = c2 + a6 + cc = -a6*c1 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + psi6 = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + psi6 = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ! ## 2. Speciation + h = psi6 + na_t = 2.0d0*na2so4 + nahso4 + nh4_t = 3.0d0*slc + 2.0d0*nh42s4 + nh4hs4 + ! + ! Due to round-off, psi6 may be .gt. lc + nahso4 + nh4hs4 giving negative hso4 + ! If this condition is true, reset psi6 to [c1] and proceed + psi6 = min(psi6, c1) + so4_t = c2 + psi6 + hso4 = max(c1 - psi6, 0.0d0) + ! + ! ## 3. Aerosol liquid water content + lwn = max(nh42s4/awas(irh) + na2so4/awss(irh) + nh4hs4/awab(irh) + nahso4/awsb(irh) + & + slc/awlc(irh), tiny) + c3 = khso4*lwn + ! + ! + ! ## Iterative search for solution with convergence of activity coefficients + j = 0 + errin = 1.0d0 + do while (j < nsweep-1 .and. errin >= epsact) + j = j + 1 + ! + ! ## Reset gamin + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + ! + call mach_hetp_calcact3(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + lwn, gama, t) + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 13 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## 1. Calculate dissociation quantities + a6 = c3/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) + bb = c2 + a6 + cc = -a6*c1 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + psi6 = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + psi6 = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ! ## 2. Speciation + h = psi6 + psi6 = min(psi6, c1) + so4_t = c2 + psi6 + hso4 = max(c1 - psi6, 0.0d0) + end do + ! + ! + ! ### MINOR SYSTEM #1: Cl-/HCl/NO3-/HNO3/H+ ### + ! ## Calculate dissolution of HCl, HNO3 in the presence of (H,SO4) + ! ## HCl, HNO3 are considered minor species + ispoly = .false. + ! + ! ## 1. Special case: aerosol liquid water content (lwn) = 0.0d0 + if (lwn <= tiny) then + ! Gaseous species + ghcl = max(cl - cl_t, 0.0d0) + ghno3 = max(no3 - no3_t, 0.0d0) + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ! + ! ## 2. Special case: HCl = HNO3 = 0.0d0 + else if (cl <= tiny .and. no3 <= tiny) then + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ! + ! ## 3. Special case: HCl = 0.0d0 + else if (cl <= tiny) then + ! Nitric acid in the liquid phase is assumed a minor species + ! HNO3(g) <--> (H+) + (NO3-), using (H+) from the sulfates + ff = 0.0d0 + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + if (lwn > tiny) then + bb = h + khno3*r*t*(lwn/gama(10))**2.0 + cc = (khno3*r*t*(lwn/gama(10))**2.0)*no3 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) + else + ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) + end if + end if + ! + ! Speciation + ghno3 = max(no3 - ff, 0.0d0) + no3_t = ff + h = h + ff + ! + ! ## 4. Special case: HNO3 = 0.0d0 + else if (no3 <= tiny) then + ! Hydrochloric acid in the liquid phase is assumed a minor species + ! HCl (g) <--> (H+) + (Cl-) using (H+) from the sulfates + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ff = 0.0d0 + if (lwn > tiny) then + bb = h + khcl*r*t*(lwn/gama(11))**2.0 + cc = (khcl*r*t*(lwn/gama(11))**2.0)*cl + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) + else + ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) + end if + end if + ! + ! Speciation + ghcl = max(cl - ff, 0.0d0) + cl_t = ff + h = h + ff + ! + ! ## 5. All else: not a special case + else + ispoly = .true. + a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 + a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl + ! + ! Calculate cubic equation coefficients + m1 = (a3*no3 + a4*cl + (h + a4)*(a3 - a4))/(a3 - a4) + m2 = ((h + a4)*a4*cl - a4*(a3 - a4)*cl)/(a3 - a4) + m3 = -a4*a4*cl*cl/(a3 - a4) + end if + ! + ! ## Calculate roots + ! call mach_hetp_poly3v(m1, m2, m3, delcl, islv) !# Original ISORROPIA subroutine + call mach_hetp_poly(m1, m2, m3, cl, delcl, islv) + ! + delno = 0.0d0 + if (ispoly) then + if (islv /= 0) then + ! Tiny amounts of HCl are assumed when there is no root + delcl = tiny !Change in Cl- + end if + ! + a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 + a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl + delno = min(a3*no3*delcl/(a4*cl + (a3 - a4)*delcl), no3) !Change in NO3- + ! + if (delcl < 0.0d0 .or. delno < 0.0d0 .or. delcl > cl .or. delno > no3) then + delcl = tiny !Change in Cl- + delno = tiny !Change in NO3- + end if + ! + ! ## Effect on liquid phase + h = h + delno + delcl ! H+ change + cl_t = cl_t + delcl ! Cl- change + no3_t = no3_t + delno ! NO3- change + ! + ! ## Gaseous species + ghcl = max(cl - cl_t, 0.0d0) + ghno3 = max(no3 - no3_t, 0.0d0) + end if + ! + ! + ! ### MINOR SYSTEM #2: NH4+/NH3/H+ ### + ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb + ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major + ! system (solved above) is used initially. + if (lwn > tiny) then + ! ## Calculate NH3 sublimation + ff = 0.0d0 + a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 + bb = h + 1.0d0/a3 ! bb always > 0 + cc = -nh4_t/a3 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ! ## Speciation + ! Due to round-off, ff may be .gt. nh4_t giving negative nh4_t + ! If this condition is true, then set ff = nh4_t + ff = max(tiny, min(ff, nh4_t)) + gnh3 = ff + nh4_t = max(nh4_t - ff, 0.0d0) + h = h + ff + end if + ! + ! + ! ### Perform mass adjustment if excess exists ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + no3_i = no3_t + hso4_i = hso4 + na_i = na_t + cl_i = cl_t + nh3g_i = gnh3 + hno3g_i = ghno3 + hclg_i = ghcl + h_i = h + lwn_i = lwn + ! + return + end subroutine mach_hetp_calci6 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: J3; Sulfate rich, free acid + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcj3(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & + na_i, cl_i, no3_i, h_i, lwn_i, rh, temp, k0, & + p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: na_i + real(kind=8), intent(inout) :: cl_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: hclg_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn + real(kind=8) :: no3, cl, na, ghno3, ghcl, caso4, t, aw + real(kind=8) :: knh3, khso4, kh2o, khno3, khcl + real(kind=8) :: bb, cc, dd, ff, v, errin, a3, a4, psi6, delno, tt0, c3, c5, c6 + real(kind=8) :: delcl, m1, m2, m3, tt1, tt2, c1, c2, so4_t, nh4_t, no3_t, na_t, cl_t + integer(kind=4) :: j, ii, islv, irh + logical(kind=4) :: ispoly + real(kind=8), dimension(13) :: gama, gamin + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + na = na_i + cl = cl_i + aw = rh + t = temp + ! + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + hso4 = 0.0d0 + gnh3 = 0.0d0 + ghno3 = 0.0d0 + ghcl = 0.0d0 + h = 0.0d0 + caso4 = 0.0d0 + lwn = tiny + so4_t = 0.0d0 + nh4_t = 0.0d0 + no3_t = 0.0d0 + na_t = 0.0d0 + cl_t = 0.0d0 + delcl = 0.0d0 + gama = 0.1d0 + gamin = 1.0d10 + ! + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) + khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Constant values + c1 = max(so4 - nh4 - na, tiny) + c2 = c1 + na + nh4 + c3 = nh4/awab(irh) + na/awsb(irh) + c5 = nh4 + na + c6 = awsa(irh) + ! + ! + ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### + ! ## Setup initial conditions + ! ## 1. Calculate dissociation quantities + a3 = khso4*1.0d-19 + bb = a3 + c1 ! bb always > 0 + cc = -a3*c2 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + psi6 = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + psi6 = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ! ## 2. Speciation + ! Due to round-off, subtraction of psi6 may give negative hso4; if this condition is true reset psi6 + psi6 = min(psi6, c2) + h = c1 + psi6 + na_t = na + nh4_t = nh4 + so4_t = psi6 + hso4 = max(c2 - psi6, 0.0d0) + ! + ! ## 3. Aerosol liquid water content + lwn = max(c3 + max((so4_t + hso4 - c5), 0.0d0)/c6, tiny) + ! + ! + ! ## Iterative search for solution with convergence of activity coefficients + j = 0 + errin = 1.0d0 + do while (j < nsweep-1 .and. errin >= epsact) + j = j + 1 + ! + ! ## Reset gamin + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + ! + call mach_hetp_calcact3(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, lwn, gama, t) + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 13 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## 1. Calculate dissociation quantities + a3 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) + bb = a3 + c1 !! bb always > 0 + cc = -a3*c2 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + psi6 = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + psi6 = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ! ## 2. Speciation + psi6 = min(psi6, c2) + h = c1 + psi6 + so4_t = psi6 + hso4 = max(c2 - psi6, 0.0d0) + + ! ## 3. Aerosol liquid water content + lwn = max(c3 + max((so4_t + hso4 - c5), 0.0d0)/c6, tiny) + end do + ! + ! + ! ### MINOR SYSTEM #1: Cl-/HCl/NO3-/HNO3/H+ ### + ! ## Calculate dissolution of HCl, HNO3 in the presence of (H,SO4) + ! ## HCl, HNO3 are considered minor species + ispoly = .false. + ! + ! ## 1. Special case: aerosol liquid water content (lwn) = 0.0d0 + if (lwn <= tiny) then + ! Gaseous species + ghcl = max(cl - cl_t, 0.0d0) + ghno3 = max(no3 - no3_t, 0.0d0) + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ! + ! ## 2. Special case: HCl = HNO3 = 0.0d0 + else if (cl <= tiny .and. no3 <= tiny) then + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ! + ! ## 3. Special case: HCl = 0.0d0 + else if (cl <= tiny) then + ! Nitric acid in the liquid phase is assumed a minor species + ! HNO3(g) <--> (H+) + (NO3-), using H+ from the sulfates + ff = 0.0d0 + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + if (lwn > tiny) then + bb = h + khno3*r*t*(lwn/gama(10))**2.0 + cc = (khno3*r*t*(lwn/gama(10))**2.0)*no3 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) + else + ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) + end if + end if + ! + ! Speciation + ghno3 = max(no3 - ff, 0.0d0) + no3_t = ff + h = h + ff + ! + ! ## 4. Special case: HNO3 = 0.0d0 + else if (no3 <= tiny) then + ! Hydrochloric acid in the liquid phase is assumed a minor species + ! HCl (g) <--> (H+) + (Cl-) using (H+) from the sulfates + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ff = 0.0d0 + if (lwn > tiny) then + bb = h + khcl*r*t*(lwn/gama(11))**2.0 + cc = (khcl*r*t*(lwn/gama(11))**2.0)*cl + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) + else + ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) + end if + end if + ! + ! Speciation + ghcl = max(cl - ff, 0.0d0) + cl_t = ff + h = h + ff + ! + ! ## 5. All else: not a special case + else + ispoly = .true. + a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 + a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl + ! + ! Calculate cubic equation coefficients + m1 = (a3*no3 + a4*cl + (h + a4)*(a3 - a4))/(a3 - a4) + m2 = ((h + a4)*a4*cl - a4*(a3 - a4)*cl)/(a3 - a4) + m3 = -a4*a4*cl*cl/(a3 - a4) + end if + ! + ! ## Calculate roots + ! call mach_hetp_poly3v(m1, m2, m3, delcl, islv) # Original ISORROPIA subroutine + call mach_hetp_poly(m1, m2, m3, cl, delcl, islv) + ! + delno = 0.0d0 + if (ispoly) then + if (islv /= 0) then + ! Tiny amounts of HCl are assumed when there is no root + delcl = tiny !Change in Cl- + end if + ! + a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 + a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl + delno = min(a3*no3*delcl/(a4*cl + (a3 - a4)*delcl), no3) !Change in NO3- + ! + if (delcl < 0.0d0 .or. delno < 0.0d0 .or. delcl > cl .or. delno > no3) then + delcl = tiny !Change in Cl- + delno = tiny !Change in NO3- + end if + ! + ! ## Effect on liquid phase + h = h + delno + delcl ! H+ change + cl_t = cl_t + delcl ! Cl- change + no3_t = no3_t + delno ! NO3- change + ! + ! ## Gaseous species + ghcl = max(cl - cl_t, 0.0d0) + ghno3 = max(no3 - no3_t, 0.0d0) + end if + ! + ! + ! ### MINOR SYSTEM #2: NH4+/NH3/H+ ### + ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb + ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major + ! system (solved above) is used initially. + if (lwn > tiny) then + ! ## Calculate NH3 sublimation + ff = 0.0d0 + a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 + bb = h + 1.0d0/a3 ! bb always > 0 + cc = -nh4_t/a3 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ! ## Speciation + ! ## Due to round-off, ff may be .gt. nh4_t giving negative nh4_t + ! ## If this condition is true, then set ff = nh4_t + ff = max(tiny, min(ff, nh4_t)) + gnh3 = ff + nh4_t = max(nh4_t - ff, 0.0d0) + h = h + ff + end if + ! + ! + ! ### Perform mass adjustment if excess exists ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + no3_i = no3_t + hso4_i = hso4 + na_i = na_t + cl_i = cl_t + nh3g_i = gnh3 + hno3g_i = ghno3 + hclg_i = ghcl + h_i = h + lwn_i = lwn + ! + return + end subroutine mach_hetp_calcj3 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: O7; Sulfate poor; dust and sodium poor + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & + na_i, cl_i, no3_i, h_i, lwn_i, ca_i, k_i, mg_i, & + caso4_i, frmg, frna, frca, frk, rh, temp, k0, & + p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: na_i + real(kind=8), intent(inout) :: cl_i + real(kind=8), intent(inout) :: ca_i + real(kind=8), intent(inout) :: k_i + real(kind=8), intent(inout) :: mg_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: hclg_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent(inout) :: caso4_i + real(kind=8), intent(inout) :: frna + real(kind=8), intent(inout) :: frmg + real(kind=8), intent(inout) :: frk + real(kind=8), intent(inout) :: frca + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, caso4, no3, cl, na, ca, pk, mg, ghno3, ghcl + real(kind=8) :: t, aw, knh3, khso4, kh2o, khno3, khcl, bb, cc, dd, hh, v, errin + real(kind=8) :: smin, ohi, frnh4, a4, a5, psi4, psi5, m4, m5, m6, ak1, scon + real(kind=8) :: tt0, errinlocb, errouloc, loccon + real(kind=8) :: omehi, omebe, y1, y2, y3, x3, dx, c1, c2, c2a, c3, gmax, ya, yb, xa, xb + real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, ca_t, pk_t, mg_t, k1, k2, k3, k4 + real(kind=8) :: so4fr, a6, na2so4, k2so4, mgso4, tt1, tt2, c6a, c7, c8, c9, c10 + real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, u1, lwnsq, gama10sq + integer(kind=4) :: j, k, ii, rooteval, irh, nmax + logical(kind=4) :: condition, noroot, soln, frst, calain, calou, earlye + real(kind=8), dimension(23) :: gama, gamin, gamou, gama_min + real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter + real(kind=8) :: no3_min, nh4_min, cl_min, h_min, lwn_min, ghcl_min, gnh3_min, ghno3_min + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + na = na_i + cl = cl_i + ca = ca_i + pk = k_i + mg = mg_i + aw = rh + t = temp + hso4 = 0.0d0 + gnh3 = 0.0d0 + ghno3 = 0.0d0 + ghcl = 0.0d0 + h = 0.0d0 + lwn = tiny + so4_t = 0.0d0 + nh4_t = 0.0d0 + no3_t = 0.0d0 + na_t = 0.0d0 + cl_t = 0.0d0 + ca_t = 0.0d0 + pk_t = 0.0d0 + mg_t = 0.0d0 + caso4 = 0.0d0 + so4fr = 0.0d0 + na2so4= 0.0d0 + k2so4 = 0.0d0 + mgso4 = 0.0d0 + noroot=.false. + frk = 0.0d0 + frmg = 0.0d0 + frca = 0.0d0 + frna = 0.0d0 + soln = .false. + calou = .true. + gama = 0.1d0 + gamin = 1.0d10 + gamou = 0.1d0 + earlye = .false. + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3= k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) + khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Constants + c1 = r*t + k1 = (knh3/kh2o)*c1 + k2 = khno3*c1 + k3 = khcl*c1 + k4 = kh2o*aw + ! + ! ## Calculate dry salt composition + ! ## Salts assumed to have completely dissolved (MgSO4, Na2SO4, K2SO4) + caso4 = min(ca, so4) + so4fr = max(so4 - caso4, 0.0d0) + frca = max(ca - caso4, 0.0d0) + k2so4 = min(0.5d0*pk, so4fr) + frk = max(pk - 2.0d0*k2so4, 0.0d0) + so4fr = max(so4fr - k2so4, 0.0d0) + na2so4= min(0.5d0*na, so4fr) + frna = max(na - 2.0d0*na2so4, 0.0d0) + so4fr = max(so4fr - na2so4, 0.0d0) + mgso4 = min(mg, so4fr) + frmg = max(mg - mgso4, 0.0d0) + so4fr = max(so4fr - mgso4, 0.0d0) + ! + ! ## Initial speciation + na_t = 2.0d0*na2so4 + so4_t = na2so4 + max(so4fr, 0.0d0) + k2so4 + mgso4 + pk_t = 2.0d0*k2so4 + mg_t = mgso4 + ! + ! ## Constants + c2 = 0.5d0*na_t - 0.5d0*pk_t - mg_t + c2a = 2.0d0*max(so4fr, 0.0d0) + c3 = max(nh4 - c2a,0.0d0) ! free nh4 == nh3 dry + ! + ! ## Save ZSR arrays as variables to limit indirect addressing + c6a = na2so4/awss(irh) + k2so4/awps(irh) + mgso4/awms(irh) + c7 = awas(irh) + c8 = awan(irh) + c9 = awac(irh) + c10 = na2so4 + k2so4 + mgso4 + ! + ! ## Initial aerosol liquid water content from dry salt composition + lwn = max(max(so4fr, 0.0d0)/c7 + c6a, tiny) + ! + ! + ! ### STAGE 1: Root tracking ### + ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs + rooteval = 0 + condition = .true. + do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking + rooteval = rooteval + 1 + ! + ! ## Set high limit for root tracking (i.e. lower bound) + if (rooteval == 1) then + omehi = tiny + y1 = 1.0d0 + end if + ! + ! ## Begin search on subinterval + if (rooteval == 2) then + soln = .false. + y1 = y2 + ! + dx = (cl-tiny-tiny)/float(ndiv) + ! + omebe = omehi ! Lower bound of subinterval (xa) + omehi = omehi + dx ! Upper bound of subinterval (xb) + end if + ! + ! ## Continue search + if (rooteval > 2) then + if (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0) then + ! ## 1. Root has been found on the subinterval; save x values for ITP search + y1 = y1 + omebe = omebe + omehi = omehi + else + ! ## 2. No root has been found, continue searching in the next subinterval + y1 = y2 + omebe = omehi + omehi = omehi + dx + end if + end if + ! + ! ## Solve the system of equations + frst = .true. + calain = .true. + ! + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + if (no3 >= tiny) then + psi5 = min(omehi*no3/(a6/a5*(cl - omehi) + omehi), no3) + else + psi5 = tiny + end if + ! + ! ## 1. Account for NH3 evaporation + if (so4 > tiny) then + bb = -(c3 + omehi + psi5 + 1.0d0/a4) + cc = c3*(psi5 + omehi) - c2a/a4 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + psi4 = max(min(psi4, c3) , 0.0d0) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = c2a + psi4 + cl_t = omehi + no3_t = psi5 + gnh3 = max(c3 - psi4, tiny2) + ghno3 = max(no3 - psi5, tiny2) + ghcl = max(cl - omehi, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + m4 = max(so4_t - c10, 0.0d0) + frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) + m5 = min(no3_t, frnh4) + frnh4 = max(frnh4 - m5, 0.0d0) + m6 = min(cl_t, frnh4) + lwn = max(c6a + m4/c7 + m5/c8 + m6/c9, tiny) + end if + ! + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 0 + do while ( k < nsweep-1 .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(1) = gama(1) + gamou(2) = gama(2) + gamou(3) = gama(3) + gamou(4) = gama(4) + gamou(5) = gama(5) + gamou(6) = gama(6) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(10) = gama(10) + gamou(11) = gama(11) + gamou(12) = gama(12) + gamou(13) = gama(13) + gamou(14) = gama(14) + gamou(15) = gama(15) + gamou(16) = gama(16) + gamou(17) = gama(17) + gamou(18) = gama(18) + gamou(19) = gama(19) + gamou(20) = gama(20) + gamou(21) = gama(21) + gamou(22) = gama(22) + gamou(23) = gama(23) + end if + ! + ! ## Reset gamin + if (soln .EQV. .false.) then + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + gamin(14) = gama(14) + gamin(15) = gama(15) + gamin(16) = gama(16) + gamin(17) = gama(17) + gamin(18) = gama(18) + gamin(19) = gama(19) + gamin(20) = gama(20) + gamin(21) = gama(21) + gamin(22) = gama(22) + gamin(23) = gama(23) + end if + ! + call mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & + calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + do ii = 1, 23 + errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) + end do + calou = errouloc .ge. epsact + frst = .false. + end if + + errinlocb = 0 + do ii = 1, 23 + errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) + end do + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 23 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, using new activity coefficients + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + if (no3 >= tiny) then + psi5 = min(omehi*no3/(a6/a5*(cl - omehi) + omehi), no3) + else + psi5 = tiny + end if + ! + ! ## 1. Account for NH3 evaporation + if (so4 > tiny) then + bb = -(c3 + omehi + psi5 + 1.0d0/a4) + cc = c3*(psi5 + omehi) - c2a/a4 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + psi4 = max(min(psi4, c3) , 0.0d0) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = c2a + psi4 + cl_t = omehi + no3_t = psi5 + gnh3 = max(c3 - psi4, tiny2) + ghno3 = max(no3 - psi5, tiny2) + ghcl = max(cl - omehi, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + m4 = max(so4_t - c10, 0.0d0) + frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) + m5 = min(no3_t, frnh4) + frnh4 = max(frnh4 - m5, 0.0d0) + m6 = min(cl_t, frnh4) + lwn = max(c6a + m4/c7 + m5/c8 + m6/c9, tiny) + end if + end do + ! + y2 = h*cl_t/ghcl/a6 - 1.0d0 !Function value + ! + ! + ! ## Check for criteria to exit root tracking + condition = .false. + loccon = sign(1.0d0,y1)*sign(1.0d0,y2) + if (loccon > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps .and. cl > tiny) then + condition = .true. + elseif (loccon < 0.0d0 .and. abs(y2) > eps) then + ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP + soln = .true. + else + ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) + if (rooteval >= 2) then + soln = .true. + noroot = .true. + earlye = .true. + else + condition = .true. + end if + end if + ! + ! ## Too little frcl; reset x-value to tiny and exit root tracking + if (cl <= tiny) then + condition = .false. + rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking + noroot = .true. + omehi = tiny ! Reset x-value to tiny, and solve system with this value + omebe = omehi + end if + ! + ! ### AFTER iterating through ALL ndiv subdivided intervals + if (rooteval == ndiv + 1) then + loccon = sign(1.0d0,y1)*sign(1.0d0,y2) + if (loccon > 0.0d0 .and. abs(y2) > eps) then + ! ## (1) No solution + noroot = .true. + omehi = tiny ! Reset to tiny + omebe = omehi + ! write(*,*), 'Warning in CALCO7: no solution found' + else if (loccon > 0.0d0 .and. abs(y2) <= eps) then + ! ## (2) Solution is assumed and ITP is not required + noroot = .true. + end if + end if + end do !End outer loop for root tracking + ! + ! + ! + ! ### STAGE 2: modified bisection search (using ITP algorithm) ### + ! ## Initialize static ITP variables + if (noroot .EQV. .false.) then + ya = y1 + yb = y2 + xa = omebe + xb = omehi + x3 = omehi + ! + if (xa == xb) then + noroot = .true. + gx = tiny + else + gx = xb - xa + end if + ! + gx2 = (xa+xb)*0.5d0 + u1 = 0.2d0/gx + nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 + nmax = int(nh) + 2 + else + x3 = omehi + end if + ! + ! ## Start search + y3_lastiter = 0.0d0 + x3_lastiter = 0.0d0 + y3_min = 1.0d20 + x3_min = 0.0d0 + ! + j = 0 + condition = .true. + ! + if (earlye .EQV. .true.) then + soln = .true. + else + soln = .false. + end if + ! + do while (j < maxit .and. condition) ! Begin outer loop for ITP search + ! 1. Track x3 and y3 of the previous iteration + if (j > 0) then + y3_lastiter = y3 + x3_lastiter = x3 + end if + ! + ! 2. Track the minimum y3 that is found before ending + if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then + y3_min = y3_lastiter + x3_min = x3_lastiter + ghno3_min = ghno3 + no3_min = no3_t + h_min = h + ghcl_min = ghcl + cl_min = cl_t + gnh3_min = gnh3 + nh4_min = nh4_t + lwn_min = lwn + gama_min = gama + end if + ! + if (noroot .EQV. .false. .and. soln .EQV. .false.) then + ! ## Set dynamic ITP variables + if (yb - ya == 0.0d0) then + write(*,*), '###### ABORT ######' + write(*,*), 'Zero divide in ITP reset: CALCO7' + write(*,*), 'SO4 in = ', so4 + write(*,*), 'NH4 in = ', nh4 + write(*,*), 'NO3 in = ', no3 + write(*,*), 'Na in = ', na + write(*,*), 'Cl in = ', cl + write(*,*), 'Ca in = ', ca + write(*,*), 'Mg in = ', mg + write(*,*), 'K in = ', pk + write(*,*), 'Temp in= ', t + write(*,*), 'RH in = ', aw + return + end if + ! + gx = xb - xa + xh = 0.5d0*(xa + xb) + rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) + delta= u1*(max(gx, 0.0d0))**2.0d0 + xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) + ! + sigma = sign(1.0d0, xh - xf) + if (delta <= abs(xh - xf)) then + xt = xf + sigma*delta + else + xt = xh + end if + ! + if (abs(xt - xh) <= rr) then + x3 = xt + else + x3 = xh - sigma*rr + end if + end if + ! + j = j + 1 + ! + if (soln .EQV. .false.) then + gmax = 0.1d0 + gmax = max(gmax, gama(1)) + gmax = max(gmax, gama(2)) + gmax = max(gmax, gama(3)) + gmax = max(gmax, gama(4)) + gmax = max(gmax, gama(5)) + gmax = max(gmax, gama(6)) + gmax = max(gmax, gama(7)) + gmax = max(gmax, gama(8)) + gmax = max(gmax, gama(9)) + gmax = max(gmax, gama(10)) + gmax = max(gmax, gama(11)) + gmax = max(gmax, gama(12)) + gmax = max(gmax, gama(13)) + gmax = max(gmax, gama(14)) + gmax = max(gmax, gama(15)) + gmax = max(gmax, gama(16)) + gmax = max(gmax, gama(17)) + gmax = max(gmax, gama(18)) + gmax = max(gmax, gama(19)) + gmax = max(gmax, gama(20)) + gmax = max(gmax, gama(21)) + gmax = max(gmax, gama(22)) + gmax = max(gmax, gama(23)) + end if + ! + ! ## Reinitialize activity coefficients if gmax > 100.0d0 + if (gmax > 100.0d0 .and. soln .EQV. .false.) then + gama = 0.1d0 + gamin = 1.0d10 + gamou = 1.0d10 + calou = .true. + frst = .true. + end if + ! + frst = .true. + calain = .true. + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + if (no3 >= tiny) then + psi5 = min(x3*no3/(a6/a5*(cl - x3) + x3), no3) + else + psi5 = tiny + end if + ! + ! ## 1. Account for NH3 evaporation + if (so4 > tiny) then + bb = -(c3 + x3 + psi5 + 1.0d0/a4) + cc = c3*(psi5 + x3) - c2a/a4 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + psi4 = max(min(psi4, c3) , 0.0d0) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = c2a + psi4 + cl_t = x3 + no3_t = psi5 + gnh3 = max(c3 - psi4, tiny2) + ghno3 = max(no3 - psi5, tiny2) + ghcl = max(cl - x3, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + m4 = max(so4_t - c10, 0.0d0) + frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) + m5 = min(no3_t, frnh4) + frnh4 = max(frnh4 - m5, 0.0d0) + m6 = min(cl_t, frnh4) + lwn = max(c6a + m4/c7 + m5/c8 + m6/c9, tiny) + end if + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 0 + do while ( k < nsweep-1 .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamin and gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(1) = gama(1) + gamou(2) = gama(2) + gamou(3) = gama(3) + gamou(4) = gama(4) + gamou(5) = gama(5) + gamou(6) = gama(6) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(10) = gama(10) + gamou(11) = gama(11) + gamou(12) = gama(12) + gamou(13) = gama(13) + gamou(14) = gama(14) + gamou(15) = gama(15) + gamou(16) = gama(16) + gamou(17) = gama(17) + gamou(18) = gama(18) + gamou(19) = gama(19) + gamou(20) = gama(20) + gamou(21) = gama(21) + gamou(22) = gama(22) + gamou(23) = gama(23) + end if + ! + if (soln .EQV. .false.) then + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + gamin(14) = gama(14) + gamin(15) = gama(15) + gamin(16) = gama(16) + gamin(17) = gama(17) + gamin(18) = gama(18) + gamin(19) = gama(19) + gamin(20) = gama(20) + gamin(21) = gama(21) + gamin(22) = gama(22) + gamin(23) = gama(23) + end if + ! + call mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & + calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + do ii = 1, 23 + errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) + end do + calou = errouloc .ge. epsact + frst = .false. + end if + + errinlocb = 0 + do ii = 1, 23 + errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) + end do + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 23 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, with new activity coefficients + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + if (no3 >= tiny) then + psi5 = min(x3*no3/(a6/a5*(cl - x3) + x3), no3) + else + psi5 = tiny + end if + ! + ! ## 1. Account for NH3 evaporation + if (so4 > tiny) then + bb = -(c3 + x3 + psi5 + 1.0d0/a4) + cc = c3*(psi5 + x3) - c2a/a4 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + psi4 = max(min(psi4, c3) , 0.0d0) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = c2a + psi4 + cl_t = x3 + no3_t = psi5 + gnh3 = max(c3 - psi4, tiny2) + ghno3 = max(no3 - psi5, tiny2) + ghcl = max(cl - x3, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + m4 = max(so4_t - c10, 0.0d0) + frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) + m5 = min(no3_t, frnh4) + frnh4 = max(frnh4 - m5, 0.0d0) + m6 = min(cl_t, frnh4) + lwn = max(c6a + m4/c7 + m5/c8 + m6/c9, tiny) + end if + end do + ! + y3 = h*cl_t/ghcl/a6 - 1.0d0 !Function value + ! + condition = .false. + if (noroot .EQV. .true.) then + ! ## If no root on interval then do not perform ITP + xa = x3 + xb = x3 + else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + xb = x3 + yb = y3 + else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + xa = x3 + ya = y3 + else if (soln .EQV. .false.) then + xa = x3 + xb = x3 + end if + ! + ! ## Test for convergence criteria to exit ITP: + if (xb - xa > abs(xa*eps) .and. cl > tiny .and. noroot .EQV. .false.) then + condition = .true. + soln = .false. + else + soln = .true. + end if + ! + ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed + if (abs(y3) <= eps .and. noroot .EQV. .false.) then + soln = .true. + condition = .false. + end if + ! + ! ## Post-convergence correction: + ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration + ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize + ! ## the objective function (i.e., y3); in this case, this is chosen as the solution + if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then + x3 = x3_min + cl_t = cl_min + nh4_t = nh4_min + no3_t = no3_min + h = h_min + lwn = lwn_min + ghcl = ghcl_min + ghno3 = ghno3_min + gnh3 = gnh3_min + ! + ! ## Reset activity coefficients + gama = gama_min + a6 = k3*(lwn/gama(11))*(lwn/gama(11)) + y3 = h*cl_t/ghcl/a6 - 1.0d0 + end if + end if + end do ! End outer loop of ITP search + ! + ! + ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### + hso4 = 0.0d0 + if (h > tiny .and. so4_t > tiny .and. lwn >= 1.0d-19) then + ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) + bb =-(h + so4_t + ak1) + cc = h*so4_t + dd = bb*bb - 4.d0*cc + ! + if (dd >= 0.0d0) then + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + hh = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) + h = max(h - hh, 0.0d0) + so4_t = max(so4_t - hh, 0.0d0) + hso4 = hh + end if + end if + ! + ! + ! ### Perform mass adjustment to machine precision, if excess exists ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + no3_i = no3_t + hso4_i = hso4 + na_i = na_t + cl_i = cl_t + ca_i = ca_t + k_i = pk_t + mg_i = mg_t + nh3g_i = gnh3 + hno3g_i = ghno3 + hclg_i = ghcl + h_i = h + lwn_i = lwn + caso4_i = caso4 + ! + return + end subroutine mach_hetp_calco7 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: M8; Sulfate poor; dust and sodium rich + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & + na_i, cl_i, no3_i, h_i, lwn_i, ca_i, k_i, mg_i, & + caso4_i, frca, frmg, frk, frna, rh, temp, & + k0, p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: na_i + real(kind=8), intent(inout) :: cl_i + real(kind=8), intent(inout) :: ca_i + real(kind=8), intent(inout) :: k_i + real(kind=8), intent(inout) :: mg_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: hclg_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent(inout) :: caso4_i + real(kind=8), intent(inout) :: frna + real(kind=8), intent(inout) :: frmg + real(kind=8), intent(inout) :: frk + real(kind=8), intent(inout) :: frca + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, caso4, no3, cl, na, ca, pk, mg, ghno3, ghcl + real(kind=8) :: t, aw, knh3, khso4, kh2o, khno3, khcl, bb, cc, dd, hh, v, errin, smin, ohi + real(kind=8) :: a4, a5, psi4, psi5, m5, m6, ak1, scon, tt0 + real(kind=8) :: errouloc, errinlocb, c1, gmax, ztot, loccon + real(kind=8) :: omehi, omebe, y1, y2, y3, x3, dx, a6, tt1, tt2, k1, k2, ya, yb, xa, xb + real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, ca_t, pk_t, mg_t, k3, k4 + real(kind=8) :: na2so4, chi4, chi5, chi6, nacl, nano3, k2so4, mgso4, c5, c6 + real(kind=8) :: frcl_d, frno3_d, frnh4_d, frno3, frnh4, frcl, frso4, lwnsq, gama10sq + real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, u1 + integer(kind=4) :: j, k, ii, rooteval, irh, nmax + logical(kind=4) :: condition, noroot, earlyexit, soln, frst, calain, calou, earlye + real(kind=8), dimension(23) :: gama, gamin, gamou, gama_min + real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter + real(kind=8) :: no3_min, nh4_min, cl_min, h_min, lwn_min, ghcl_min, gnh3_min, ghno3_min + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + na = na_i + cl = cl_i + ca = ca_i + pk = k_i + mg = mg_i + aw = rh + t = temp + na2so4= 0.0d0 + chi4 = 0.0d0 + chi5 = 0.0d0 + chi6 = 0.0d0 + nacl = 0.0d0 + nano3 = 0.0d0 + k2so4 = 0.0d0 + mgso4 = 0.0d0 + hso4 = 0.0d0 + gnh3 = 0.0d0 + ghno3 = 0.0d0 + ghcl = 0.0d0 + h = 0.0d0 + lwn = tiny + so4_t = 0.0d0 + nh4_t = 0.0d0 + no3_t = 0.0d0 + na_t = 0.0d0 + cl_t = 0.0d0 + ca_t = 0.0d0 + pk_t = 0.0d0 + mg_t = 0.0d0 + caso4 = 0.0d0 + frmg = 0.0d0 + frk = 0.0d0 + frca = 0.0d0 + frso4 = 0.0d0 + frna = 0.0d0 + frnh4 = 0.0d0 + frcl = 0.0d0 + frno3 = 0.0d0 + frno3_d=0.0d0 + frnh4_d=0.0d0 + frcl_d =0.0d0 + earlyexit = .false. + noroot =.false. + soln = .false. + calou = .true. + gmax = 0.0d0 + gama = 0.1d0 + gamou = 0.1d0 + gamin = 1.0d10 + earlye = .false. + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3= k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) + khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Constants + c1 = r*t + k1 = (knh3/kh2o)*c1 + k2 = khno3*c1 + k3 = khcl*c1 + k4 = kh2o*aw + ! + ! ## Calculate dry salt composition; keep track of 'free' amounts + ! ## Salts assumed to have completely dissolved (NaNO3, NaCl, MgSO4, Na2SO4, K2SO4) + caso4 = min(ca, so4) + frso4 = max(so4 - caso4, 0.0d0) + frca = max(ca - caso4, 0.0d0) + k2so4 = min(0.5d0*pk, frso4) + frk = max(pk - 2.0d0*k2so4, 0.0d0) + frso4 = max(frso4 - k2so4, 0.0d0) + mgso4 = min(mg, frso4) + frmg = max(mg - mgso4, 0.0d0) + frso4 = max(frso4 - mgso4, 0.0d0) + na2so4 = max(frso4, 0.0d0) + frna = max(na - 2.0d0*na2so4, 0.0d0) + frso4 = max(frso4 - na2so4, 0.0d0) + nano3 = min(frna, no3) + frna = max(frna - nano3, 0.0d0) + frno3_d = max(no3 - nano3, 0.0d0) + chi4 = nh4 + ! frnh4_d = max(nh4 - chi4, 0.0d0) + chi5 = max(no3 - nano3, 0.0d0) + ! frno3_d = max(frno3_d - chi5, 0.0d0) + nacl = min(frna, cl) + ! frcl_d = max(cl - nacl, 0.0d0) + frna = max(frna - nacl, 0.0d0) + chi6 = max(cl - nacl, 0.0d0) + ! frcl_d = max(frcl_d - chi6, 0.0d0) + ! + ! ## Initial aqueous speciation + na_t = nano3 + nacl + 2.0d0*na2so4 + so4_t = na2so4 + k2so4 + mgso4 + pk_t = 2.0d0*k2so4 + mg_t = mgso4 + ! + ! ## Constant ZSR + ztot = nacl/awsc(irh) + na2so4/awss(irh) + nano3/awsn(irh) + & + k2so4/awps(irh) + mgso4/awms(irh) + c5 = awan(irh) + c6 = awac(irh) + ! + ! + ! ### STAGE 1: Root tracking ### + ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs + rooteval = 0 + condition = .true. + do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking + rooteval = rooteval + 1 + ! + ! ## Set high limit for root tracking (i.e. lower bound) + if (rooteval == 1) then + omehi = tiny + y1 = 1.0d0 + end if + ! + ! ## Begin search on subinterval + if (rooteval == 2) then + soln = .false. + if (abs(y2) <= eps) then + earlyexit = .true. + dx = 0.0d0 + else + dx = (chi6-tiny-tiny)/float(ndiv) + end if + ! + y1 = y2 + ! + omebe = omehi ! Lower bound of subinterval (xa) + omehi = omehi + dx ! Upper bound of subinterval (xb) + end if + ! + ! ## Continue search + if (rooteval > 2) then + if (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0) then + ! ## 1. Root has been found on the subinterval; save x values for ITP search + y1 = y1 + omebe = omebe + omehi = omehi + else + ! ## 2. No root has been found, continue searching in the next subinterval + y1 = y2 + omebe = omehi + omehi = omehi + dx + end if + end if + ! + ! ## Solve the system of equations + frst = .true. + calain = .true. + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = chi5*(omehi + nacl) - a6/a5*nano3*(chi6 - omehi) + psi5 = psi5/(a6/a5*(chi6 - omehi) + omehi + nacl) + psi5 = min(max(psi5, tiny), chi5) + ! + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + omehi + psi5 + 1.0d0/a4) + cc = nh4*(psi5 + omehi) + psi4 = min(max(0.5d0*(-bb - sqrt(max(bb*bb - 4.0d0*cc, 0.0d0))), 0.0d0), nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = omehi + nacl + no3_t = psi5 + nano3 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(chi5 - psi5, tiny2) + ghcl = max(chi6 - omehi, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t - nano3, 0.0d0) + frcl = max(cl_t - nacl, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5, 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(ztot + m5/c5 + m6/c6, tiny) + end if + ! + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 0 + do while ( k < nsweep-1 .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(1) = gama(1) + gamou(2) = gama(2) + gamou(3) = gama(3) + gamou(4) = gama(4) + gamou(5) = gama(5) + gamou(6) = gama(6) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(10) = gama(10) + gamou(11) = gama(11) + gamou(12) = gama(12) + gamou(13) = gama(13) + gamou(14) = gama(14) + gamou(15) = gama(15) + gamou(16) = gama(16) + gamou(17) = gama(17) + gamou(18) = gama(18) + gamou(19) = gama(19) + gamou(20) = gama(20) + gamou(21) = gama(21) + gamou(22) = gama(22) + gamou(23) = gama(23) + end if + ! + ! ## Reset gamin + if (soln .EQV. .false.) then + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + gamin(14) = gama(14) + gamin(15) = gama(15) + gamin(16) = gama(16) + gamin(17) = gama(17) + gamin(18) = gama(18) + gamin(19) = gama(19) + gamin(20) = gama(20) + gamin(21) = gama(21) + gamin(22) = gama(22) + gamin(23) = gama(23) + end if + ! + call mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & + calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + do ii = 1, 23 + errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) + end do + calou = errouloc .ge. epsact + frst = .false. + end if + ! + errinlocb = 0 + do ii = 1, 23 + errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) + end do + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 23 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, with new activity coefficients + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = chi5*(omehi + nacl) - a6/a5*nano3*(chi6 - omehi) + psi5 = psi5/(a6/a5*(chi6 - omehi) + omehi + nacl) + psi5 = min(max(psi5, tiny), chi5) + ! + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + omehi + psi5 + 1.0d0/a4) + cc = nh4*(psi5 + omehi) + psi4 = min(max(0.5d0*(-bb - sqrt(max(bb*bb - 4.0d0*cc, 0.0d0))), 0.0d0), nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = omehi + nacl + no3_t = psi5 + nano3 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(chi5 - psi5, tiny2) + ghcl = max(chi6 - omehi, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t - nano3, 0.0d0) + frcl = max(cl_t - nacl, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5, 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(ztot + m5/c5 + m6/c6, tiny) + end if + end do + ! + y2 = h*cl_t/ghcl/a6 - 1.0d0 !Function value + ! + ! ## Check for criteria to exit root tracking + condition = .false. + ! + loccon = sign(1.0d0,y1)*sign(1.0d0,y2) + if (loccon > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps .and. chi6 > tiny) then + condition = .true. + elseif (loccon < 0.0d0 .and. abs(y2) > eps) then + ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP + soln = .true. + else + ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) + soln = .true. + noroot = .true. + earlye = .true. + end if + ! + ! ## Too little frcl, or 'tiny' is a root; reset x-value to tiny and exit root tracking + if (chi6 <= tiny .or. earlyexit .EQV. .true.) then + condition = .false. + rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking + noroot = .true. + omehi = tiny ! Reset x-value to tiny, and solve system with this value + omebe = omehi + end if + ! + ! ### AFTER iterating through ALL ndiv subdivided intervals + if (rooteval == ndiv + 1) then + loccon = sign(1.0d0,y1)*sign(1.0d0,y2) + if (loccon > 0.0d0 .and. abs(y2) > eps) then + ! ## (1) No solution + noroot = .true. + omehi = tiny + omebe = omehi + ! write(*,*), 'Warning in CALCM8: no solution found' + else if (loccon > 0.0d0 .and. abs(y2) <= eps) then + ! ## (2) Solution is assumed and ITP is not required + noroot = .true. + end if + end if + end do !End outer loop for root tracking + ! + ! + ! + ! ### STAGE 2: modified bisection search (using ITP algorithm) ### + ! ## Initialize static ITP variables + if (noroot .EQV. .false.) then + ya = y1 + yb = y2 + xa = omebe + xb = omehi + x3 = omehi + ! + if (xa == xb) then + noroot = .true. + gx = tiny + else + gx = xb - xa + end if + ! + gx2 = (xa+xb)*0.5d0 + u1 = 0.2d0/gx + nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 + nmax = int(nh) + 2 + else + x3 = omehi + end if + ! + ! ## Start search + ! 1. Store value of previous y3 for later use + y3_lastiter = 0.0d0 + x3_lastiter = 0.0d0 + y3_min = 1.0d20 + x3_min = 0.0d0 + ! + j = 0 + condition = .true. + ! + if (earlye .EQV. .true.) then + soln = .true. + else + soln = .false. + end if + ! + do while (j < maxit .and. condition) ! Begin outer loop for ITP search + ! 1. Track x3 and y3 of the previous iteration + if (j > 0) then + y3_lastiter = y3 + x3_lastiter = x3 + end if + ! + ! 2. Track the minimum y3 that is found before ending + if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then + y3_min = y3_lastiter + x3_min = x3_lastiter + ghno3_min = ghno3 + no3_min = no3_t + h_min = h + ghcl_min = ghcl + cl_min = cl_t + gnh3_min = gnh3 + nh4_min = nh4_t + lwn_min = lwn + gama_min = gama + end if + ! + if (noroot .EQV. .false. .and. soln .EQV. .false.) then + ! ## Set dynamic ITP variables + if (yb - ya == 0.0d0) then + write(*,*), '###### ABORT ######' + write(*,*), 'Zero divide in ITP reset: CALCM8' + write(*,*), 'SO4 in = ', so4 + write(*,*), 'NH4 in = ', nh4 + write(*,*), 'NO3 in = ', no3 + write(*,*), 'Na in = ', na + write(*,*), 'Cl in = ', cl + write(*,*), 'Ca in = ', ca + write(*,*), 'Mg in = ', mg + write(*,*), 'K in = ', pk + write(*,*), 'Temp in= ', t + write(*,*), 'RH in = ', aw + return + end if + ! + gx = xb - xa + xh = 0.5d0*(xa + xb) + rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) + delta= u1*(max(gx, 0.0d0))**2.0d0 + xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) + ! + sigma = sign(1.0d0, xh - xf) + if (delta <= abs(xh - xf)) then + xt = xf + sigma*delta + else + xt = xh + end if + ! + if (abs(xt - xh) <= rr) then + x3 = xt + else + x3 = xh - sigma*rr + end if + end if + ! + j = j + 1 + ! + if (soln .EQV. .false.) then + gmax = 0.1d0 + gmax = max(gmax, gama(1)) + gmax = max(gmax, gama(2)) + gmax = max(gmax, gama(3)) + gmax = max(gmax, gama(4)) + gmax = max(gmax, gama(5)) + gmax = max(gmax, gama(6)) + gmax = max(gmax, gama(7)) + gmax = max(gmax, gama(8)) + gmax = max(gmax, gama(9)) + gmax = max(gmax, gama(10)) + gmax = max(gmax, gama(11)) + gmax = max(gmax, gama(12)) + gmax = max(gmax, gama(13)) + gmax = max(gmax, gama(14)) + gmax = max(gmax, gama(15)) + gmax = max(gmax, gama(16)) + gmax = max(gmax, gama(17)) + gmax = max(gmax, gama(18)) + gmax = max(gmax, gama(19)) + gmax = max(gmax, gama(20)) + gmax = max(gmax, gama(21)) + gmax = max(gmax, gama(22)) + gmax = max(gmax, gama(23)) + end if + ! + ! ## Reinitialize activity coefficients if gmax > 100.0d0 + if (gmax > 100.0d0 .and. soln .EQV. .false.) then + gama = 0.1d0 + gamin = 1.0d10 + gamou = 1.0d10 + calou = .true. + frst = .true. + end if + ! + ! ## Solve system of equations + frst = .true. + calain = .true. + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = chi5*(x3 + nacl) - a6/a5*nano3*(chi6 - x3) + psi5 = psi5/(a6/a5*(chi6 - x3) + x3 + nacl) + psi5 = min(max(psi5, tiny), chi5) + ! + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + x3 + psi5 + 1.0d0/a4) + cc = nh4*(psi5 + x3) + psi4 = min(max(0.5d0*(-bb - sqrt(max(bb*bb - 4.0d0*cc, 0.0d0))), 0.0d0), nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = x3 + nacl + no3_t = psi5 + nano3 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(chi5 - psi5, tiny2) + ghcl = max(chi6 - x3, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t - nano3, 0.0d0) + frcl = max(cl_t - nacl, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5, 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(ztot + m5/c5 + m6/c6, tiny) + end if + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 0 + do while ( k < nsweep .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamin and gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(1) = gama(1) + gamou(2) = gama(2) + gamou(3) = gama(3) + gamou(4) = gama(4) + gamou(5) = gama(5) + gamou(6) = gama(6) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(10) = gama(10) + gamou(11) = gama(11) + gamou(12) = gama(12) + gamou(13) = gama(13) + gamou(14) = gama(14) + gamou(15) = gama(15) + gamou(16) = gama(16) + gamou(17) = gama(17) + gamou(18) = gama(18) + gamou(19) = gama(19) + gamou(20) = gama(20) + gamou(21) = gama(21) + gamou(22) = gama(22) + gamou(23) = gama(23) + end if + ! + if (soln .EQV. .false.) then + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + gamin(14) = gama(14) + gamin(15) = gama(15) + gamin(16) = gama(16) + gamin(17) = gama(17) + gamin(18) = gama(18) + gamin(19) = gama(19) + gamin(20) = gama(20) + gamin(21) = gama(21) + gamin(22) = gama(22) + gamin(23) = gama(23) + end if + ! + call mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & + calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + do ii = 1, 23 + errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) + end do + calou = errouloc .ge. epsact + frst = .false. + end if + ! + errinlocb = 0 + do ii = 1, 23 + errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) + end do + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 23 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, with new activity coefficients + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = chi5*(x3 + nacl) - a6/a5*nano3*(chi6 - x3) + psi5 = psi5/(a6/a5*(chi6 - x3) + x3 + nacl) + psi5 = min(max(psi5, tiny), chi5) + ! + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + x3 + psi5 + 1.0d0/a4) + cc = nh4*(psi5 + x3) + psi4 = min(max(0.5d0*(-bb - sqrt(max(bb*bb - 4.0d0*cc, 0.0d0))), 0.0d0), nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = x3 + nacl + no3_t = psi5 + nano3 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(chi5 - psi5, tiny2) + ghcl = max(chi6 - x3, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t & + - pk_t - 2.0d0*mg_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t - nano3, 0.0d0) + frcl = max(cl_t - nacl, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5, 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(ztot + m5/c5 + m6/c6, tiny) + end if + end do + ! + y3 = h*cl_t/ghcl/a6 - 1.0d0 !Function value + ! + condition = .false. + if (noroot .EQV. .true.) then + ! ## If no root on interval then do not perform ITP + xa = x3 + xb = x3 + else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + xb = x3 + yb = y3 + else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + xa = x3 + ya = y3 + else if (soln .EQV. .false.) then + xa = x3 + xb = x3 + end if + ! + ! ## Check for convergence criteria to exit ITP + if (xb - xa > abs(xa*eps) .and. chi6 > tiny .and. noroot .EQV. .false.) then + condition = .true. + soln = .false. + else + soln = .true. + end if + ! + ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed + if (abs(y3) <= eps .and. noroot .EQV. .false.) then + soln = .true. + condition = .false. + end if + ! + ! ## Post-convergence correction: + ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration + ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize + ! ## the objective function (i.e., y3); in this case, this is chosen as the solution + if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then + x3 = x3_min + cl_t = cl_min + nh4_t = nh4_min + no3_t = no3_min + h = h_min + lwn = lwn_min + ghcl = ghcl_min + ghno3 = ghno3_min + gnh3 = gnh3_min + ! + ! ## Reset activity coefficients + gama = gama_min + a6 = k3*(lwn/gama(11))*(lwn/gama(11)) + y3 = h*cl_t/ghcl/a6 - 1.0d0 + end if + end if + end do ! End outer loop of ITP search + ! + ! + ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### + hso4 = 0.0d0 + if (h > tiny .and. so4_t > tiny .and. lwn >= 1.0d-19) then + ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) + bb =-(h + so4_t + ak1) + cc = h*so4_t + dd = bb*bb - 4.d0*cc + ! + if (dd >= 0.0d0) then + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + hh = 0.5d0*(-bb - sqrt(bb*bb - 4.d0*cc)) + end if + ! + hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) + h = max(h - hh, 0.0d0) + so4_t = max(so4_t - hh, 0.0d0) + hso4 = hh + end if + end if + ! + ! + ! ### Perform mass adjustment if excess exists, to balance mass to machine precision ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + no3_i = no3_t + hso4_i = hso4 + na_i = na_t + cl_i = cl_t + ca_i = ca_t + k_i = pk_t + mg_i = mg_t + nh3g_i = gnh3 + hno3g_i = ghno3 + hclg_i = ghcl + h_i = h + lwn_i = lwn + caso4_i = caso4 + ! + return + end subroutine mach_hetp_calcm8 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: P13; Sulfate poor; dust and sodium rich + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & + na_i, cl_i, no3_i, h_i, lwn_i, ca_i, k_i, mg_i, & + caso4_i, frso4, frmg, frk, frca, frna, rh, temp, & + k0, p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: na_i + real(kind=8), intent(inout) :: cl_i + real(kind=8), intent(inout) :: ca_i + real(kind=8), intent(inout) :: k_i + real(kind=8), intent(inout) :: mg_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: hclg_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent(inout) :: caso4_i + real(kind=8), intent(inout) :: frso4 + real(kind=8), intent(inout) :: frmg + real(kind=8), intent(inout) :: frk + real(kind=8), intent(inout) :: frca + real(kind=8), intent(inout) :: frna + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, caso4, no3, cl, na, ca, pk, mg, ghno3, ghcl + real(kind=8) :: t, aw, knh3, khso4, kh2o, khno3, khcl, a4, a5, psi4, psi5, ak1, m5, m6, tt0 + real(kind=8) :: bb, cc, dd, hh, v, errin, smin, ohi, scon, errouloc, errinlocb + real(kind=8) :: frcl, frno3, frnh4, cano32, kno3, kcl, loccon + real(kind=8) :: omehi, omebe, y1, y2, y3, x3, dx, a6, tt1, tt2, k1, k2, ya, yb, xa, xb + real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, ca_t, pk_t, mg_t, k3, k4 + real(kind=8) :: chi5, chi6, nacl, nano3, k2so4, mgso4, c1, c2, c3, c4, c5 + real(kind=8) :: mgno32, mgcl2, cacl2, gmax, ztot, lwnsq, gama10sq + real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, u1 + integer(kind=4) :: j, k, ii, rooteval, irh, nmax + logical(kind=4) :: condition, noroot, earlyexit, soln, frst, calain, calou, earlye + real(kind=8), dimension(23) :: gama, gamin, gamou, gama_min + real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter + real(kind=8) :: no3_min, nh4_min, cl_min, h_min, lwn_min, ghcl_min, gnh3_min, ghno3_min + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + na = na_i + cl = cl_i + ca = ca_i + pk = k_i + mg = mg_i + aw = rh + t = temp + hso4 = 0.0d0 + gnh3 = 0.0d0 + ghno3 = 0.0d0 + ghcl = 0.0d0 + h = 0.0d0 + lwn = tiny + so4_t = 0.0d0 + nh4_t = 0.0d0 + no3_t = 0.0d0 + na_t = 0.0d0 + cl_t = 0.0d0 + ca_t = 0.0d0 + pk_t = 0.0d0 + mg_t = 0.0d0 + caso4 = 0.0d0 + noroot=.false. + earlyexit = .false. + soln = .false. + calou = .true. + gmax = 0.0d0 + gama = 0.1d0 + gamin = 1.0d10 + gamou = 0.1d0 + earlye = .false. + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3= k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) + khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Calculate dry salt composition + ! ## Salts assumed to have completely dissolved + ! ## Dissolved salts include: Ca(NO3)2, CaCl2, K2SO4, KNO3, KCl, MgSO4, Mg(NO3)2, MgCl2, NaNO3, NaCl + caso4 = min(so4, ca) + frca = max(ca - caso4, 0.0d0) + frso4 = max(so4 - caso4, 0.0d0) + k2so4 = min(frso4, 0.5d0*pk) + frk = max(pk - 2.0d0*k2so4, 0.0d0) + frso4 = max(frso4 - k2so4, 0.0d0) + mgso4 = min(frso4, mg) + frmg = max(mg - mgso4, 0.0d0) + frso4 = max(frso4 - mgso4, 0.0d0) + nacl = min(na, cl) + frna = max(na - nacl, 0.0d0) + frcl = max(cl - nacl, 0.0d0) + cano32= min(frca, 0.5d0*no3) + frca = max(frca - cano32, 0.0d0) + frno3 = max(no3 - 2.0d0*cano32, 0.0d0) + cacl2 = min(frca, 0.5d0*frcl) + frca = max(frca - cacl2, 0.0d0) + frcl = max(frcl - 2.0d0*cacl2, 0.0d0) + mgno32= min(frmg, 0.5d0*frno3) + frmg = max(frmg - mgno32, 0.0d0) + frno3 = max(frno3 - 2.0d0*mgno32, 0.0d0) + mgcl2 = min(frmg, 0.5d0*frcl) + frmg = max(frmg - mgcl2, 0.0d0) + frcl = max(frcl - 2.0d0*mgcl2, 0.0d0) + nano3 = min(frna, frno3) + frna = max(frna - nano3, 0.0d0) + frno3 = max(frno3 - nano3, 0.0d0) + kcl = min(frk, frcl) + frk = max(frk - kcl, 0.0d0) + frcl = max(frcl - kcl, 0.0d0) + kno3 = min(frk, frno3) + frk = max(frk - kno3, 0.0d0) + frno3 = max(frno3 - kno3, 0.0d0) + chi5 = frno3 ! HNO3(g) + chi6 = frcl ! HCl(g) + frno3 = 0.0d0 + frcl = 0.0d0 + ! + ! ## Initial speciation + na_t = nacl + nano3 + so4_t = k2so4 + mgso4 + ca_t = cano32 + cacl2 + pk_t = 2.0d0*k2so4 + kno3 + kcl + mg_t = mgso4 + mgno32 + mgcl2 + ! + ! ## Calculate constant parameters + c1 = r*t + c2 = nacl + kcl + 2.0d0*mgcl2 + 2.0d0*cacl2 + c3 = nano3 + 2.0d0*cano32 + kno3 + 2.0d0*mgno32 + c4 = -1.0d0*nano3 - 2.0d0*cano32 - kno3 - 2.0d0*mgno32 + c5 = -1.0d0*nacl - 2.0d0*cacl2 - kcl - 2.0d0*mgcl2 + k1 = (knh3/kh2o)*c1 + k2 = khno3*c1 + k3 = khcl*c1 + k4 = kh2o*aw + ! + ! ## Constant ZSR parameters + ztot = nacl/awsc(irh) + nano3/awsn(irh) + cano32/awcn(irh) + & + cacl2/awcc(irh) + kno3/awpn(irh) + kcl/awpc(irh) + & + mgno32/awmn(irh) + mgcl2/awmc(irh) + k2so4/awps(irh) + & + mgso4/awms(irh) + ! + ! + ! ### STAGE 1: Root tracking ### + ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs + rooteval = 0 + condition = .true. + do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking + rooteval = rooteval + 1 + ! + ! ## Set high limit for root tracking (i.e. lower bound) + if (rooteval == 1) then + omehi = tiny + y1 = 1.0d0 + end if + ! + ! ## Begin search on subinterval + if (rooteval == 2) then + soln = .false. + if (abs(y2) <= eps) then + earlyexit = .true. + end if + ! + y1 = y2 + ! + if (earlyexit .EQV. .true.) then + dx = 0.0d0 + else + dx = (chi6-tiny-tiny)/float(ndiv) + end if + ! + omebe = omehi ! Lower bound of subinterval (xa) + omehi = omehi + dx ! Upper bound of subinterval (xb) + end if + ! + ! ## Continue search + if (rooteval > 2) then + if (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0) then + ! ## 1. Root has been found on the subinterval; save x values for ITP search + y1 = y1 + omebe = omebe + omehi = omehi + else + ! ## 2. No root has been found, continue searching in the next subinterval + y1 = y2 + omebe = omehi + omehi = omehi + dx + end if + end if + ! + ! ## Solve the system of equations + frst = .true. + calain = .true. + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = chi5*(omehi + c2) - a6/a5*(c3)*(chi6 - omehi) + psi5 = psi5/(a6/a5*(chi6 - omehi) + omehi + c2) + psi5 = min(max(psi5, tiny), chi5) + + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + omehi + psi5 + 1.0d0/a4) + cc = nh4*(psi5 + omehi) + + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5*bb - 0.5*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + + psi4 = min(max(psi4, 0.0d0), nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = omehi + c2 + no3_t = psi5 + c3 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(chi5 - psi5, tiny2) + ghcl = max(chi6 - omehi, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t & + - pk_t - 2.0d0*mg_t - 2.0d0*ca_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t + c4, 0.0d0) + frcl = max(cl_t + c5, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5, 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(ztot + m5/awan(irh) + m6/awac(irh), tiny) + end if + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 1 + do while ( k < nsweep .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(1) = gama(1) + gamou(2) = gama(2) + gamou(3) = gama(3) + gamou(4) = gama(4) + gamou(5) = gama(5) + gamou(6) = gama(6) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(10) = gama(10) + gamou(11) = gama(11) + gamou(12) = gama(12) + gamou(13) = gama(13) + gamou(14) = gama(14) + gamou(15) = gama(15) + gamou(16) = gama(16) + gamou(17) = gama(17) + gamou(18) = gama(18) + gamou(19) = gama(19) + gamou(20) = gama(20) + gamou(21) = gama(21) + gamou(22) = gama(22) + gamou(23) = gama(23) + end if + ! + ! ## Reset gamin + if (soln .EQV. .false.) then + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + gamin(14) = gama(14) + gamin(15) = gama(15) + gamin(16) = gama(16) + gamin(17) = gama(17) + gamin(18) = gama(18) + gamin(19) = gama(19) + gamin(20) = gama(20) + gamin(21) = gama(21) + gamin(22) = gama(22) + gamin(23) = gama(23) + end if + ! + call mach_hetp_calcact4b( h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & + calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + do ii = 1, 23 + errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) + end do + calou = errouloc .ge. epsact + frst = .false. + end if + + errinlocb = 0 + do ii = 1, 23 + errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) + end do + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 23 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, using new activity coefficients + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = chi5*(omehi + c2) - a6/a5*(c3)*(chi6 - omehi) + psi5 = psi5/(a6/a5*(chi6 - omehi) + omehi + c2) + psi5 = min(max(psi5, tiny), chi5) + + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + omehi + psi5 + 1.0d0/a4) + cc = nh4*(psi5 + omehi) + + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5*bb - 0.5*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + + psi4 = min(max(psi4, 0.0d0), nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = omehi + c2 + no3_t = psi5 + c3 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(chi5 - psi5, tiny2) + ghcl = max(chi6 - omehi, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t & + - pk_t - 2.0d0*mg_t - 2.0d0*ca_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t + c4, 0.0d0) + frcl = max(cl_t + c5, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5, 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(ztot + m5/awan(irh) + m6/awac(irh), tiny) + end if + end do + ! + y2 = h*cl_t/ghcl/a6 - 1.0d0 !Function value + ! + ! ## Check for criteria to exit root tracking + condition = .false. + loccon = sign(1.0d0,y1)*sign(1.0d0,y2) + if (loccon > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps .and. chi6 > tiny) then + condition = .true. + elseif (loccon < 0.0d0 .and. abs(y2) > eps) then + ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP + soln = .true. + else + ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) + soln = .true. + noroot = .true. + earlye = .true. + end if + ! + ! ## Too little frcl, or 'tiny' is a root; reset x-value to tiny and exit root tracking + if (chi6 <= tiny .or. earlyexit .EQV. .true.) then + condition = .false. + rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking + noroot = .true. + omehi = tiny ! Reset x-value to tiny, and solve system with this value + omebe = omehi + end if + ! + ! ### AFTER iterating through ALL ndiv subdivided intervals + if (rooteval == ndiv + 1) then + loccon = sign(1.0d0,y1)*sign(1.0d0,y2) + if (loccon > 0.0d0 .and. abs(y2) > eps) then + ! ## (1) No solution + noroot = .true. + omehi = tiny + omebe = omehi + ! write(*,*), 'Warning in CALCP13: no solution found' + else if (loccon > 0.0d0 .and. abs(y2) <= eps) then + ! ## (2) Solution is assumed and ITP is not required + noroot = .true. + end if + end if + end do !End outer loop for root tracking + ! + ! + ! + ! ### STAGE 2: modified bisection search (using ITP algorithm) ### + ! ## Initialize static ITP variables + if (noroot .EQV. .false.) then + ya = y1 + yb = y2 + xa = omebe + xb = omehi + x3 = omehi + ! + if (xa == xb) then + noroot = .true. + gx = tiny + else + gx = xb - xa + end if + ! + gx2 = (xa+xb)*0.5d0 + u1 = 0.2d0/gx + nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 + nmax = int(nh) + 2 + else + x3 = omehi + end if + ! + ! ## Start search + y3_lastiter = 0.0d0 + x3_lastiter = 0.0d0 + y3_min = 1.0d20 + x3_min = 0.0d0 + ! + j = 0 + condition = .true. + ! + if (earlye .EQV. .true.) then + soln = .true. + else + soln = .false. + end if + ! + do while (j < maxit .and. condition) ! Begin outer loop for ITP search + ! ## Set dynamic ITP variables + ! 1. Track x3 and y3 of the previous iteration + if (j > 0) then + y3_lastiter = y3 + x3_lastiter = x3 + end if + ! + ! 2. Track the minimum y3 that is found before ending + if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then + y3_min = y3_lastiter + x3_min = x3_lastiter + ghno3_min = ghno3 + no3_min = no3_t + h_min = h + ghcl_min = ghcl + cl_min = cl_t + gnh3_min = gnh3 + nh4_min = nh4_t + lwn_min = lwn + gama_min = gama + end if + ! + if (noroot .EQV. .false. .and. soln .EQV. .false.) then + if (yb - ya == 0.0d0) then + write(*,*), '###### ABORT ######' + write(*,*), 'Zero divide in ITP reset: CALCP13' + write(*,*), 'SO4 in = ', so4 + write(*,*), 'NH4 in = ', nh4 + write(*,*), 'NO3 in = ', no3 + write(*,*), 'Na in = ', na + write(*,*), 'Cl in = ', cl + write(*,*), 'Temp in= ', t + write(*,*), 'RH in = ', aw + return + end if + ! + gx = xb - xa + xh = 0.5d0*(xa + xb) + rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) + delta= u1*(max(gx, 0.0d0))**2.0d0 + xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) + ! + sigma = sign(1.0d0, xh - xf) + if (delta <= abs(xh - xf)) then + xt = xf + sigma*delta + else + xt = xh + end if + ! + if (abs(xt - xh) <= rr) then + x3 = xt + else + x3 = xh - sigma*rr + end if + end if + ! + j = j + 1 + ! + if (soln .EQV. .false.) then + gmax = 0.1d0 + gmax = max(gmax, gama(1)) + gmax = max(gmax, gama(2)) + gmax = max(gmax, gama(3)) + gmax = max(gmax, gama(4)) + gmax = max(gmax, gama(5)) + gmax = max(gmax, gama(6)) + gmax = max(gmax, gama(7)) + gmax = max(gmax, gama(8)) + gmax = max(gmax, gama(9)) + gmax = max(gmax, gama(10)) + gmax = max(gmax, gama(11)) + gmax = max(gmax, gama(12)) + gmax = max(gmax, gama(13)) + gmax = max(gmax, gama(14)) + gmax = max(gmax, gama(15)) + gmax = max(gmax, gama(16)) + gmax = max(gmax, gama(17)) + gmax = max(gmax, gama(18)) + gmax = max(gmax, gama(19)) + gmax = max(gmax, gama(20)) + gmax = max(gmax, gama(21)) + gmax = max(gmax, gama(22)) + gmax = max(gmax, gama(23)) + end if + ! + ! ## Reinitialize activity coefficients if gmax > 100.0d0 + if (gmax > 100.0d0 .and. soln .EQV. .false.) then + gama = 0.1d0 + gamin = 1.0d10 + gamou = 1.0d10 + calou = .true. + frst = .true. + end if + ! + ! ## Solve system of equations + frst = .true. + calain = .true. + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = chi5*(x3 + c2) - a6/a5*(c3)*(chi6 - x3) + psi5 = psi5/(a6/a5*(chi6 - x3) + x3 + c2) + psi5 = min(max(psi5, tiny), chi5) + + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + x3 + psi5 + 1.0d0/a4) + cc = nh4*(psi5 + x3) + + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5*bb - 0.5*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + + psi4 = min(max(psi4, 0.0d0), nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = x3 + c2 + no3_t = psi5 + c3 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(chi5 - psi5, tiny2) + ghcl = max(chi6 - x3, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t & + - pk_t - 2.0d0*mg_t - 2.0d0*ca_t + scon = k4*lwnsq + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t + c4, 0.0d0) + frcl = max(cl_t + c5, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5, 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(ztot + m5/awan(irh) + m6/awac(irh), tiny) + end if + ! + ! ## Iterate until convergence of activity coefficients + errin = 1.0d0 + k = 1 + do while ( k < nsweep .and. errin >= epsact) + k = k + 1 + ! + ! ## Reset gamin and gamou + if (soln .EQV. .false. .and. frst .EQV. .true.) then + gamou(1) = gama(1) + gamou(2) = gama(2) + gamou(3) = gama(3) + gamou(4) = gama(4) + gamou(5) = gama(5) + gamou(6) = gama(6) + gamou(7) = gama(7) + gamou(8) = gama(8) + gamou(9) = gama(9) + gamou(10) = gama(10) + gamou(11) = gama(11) + gamou(12) = gama(12) + gamou(13) = gama(13) + gamou(14) = gama(14) + gamou(15) = gama(15) + gamou(16) = gama(16) + gamou(17) = gama(17) + gamou(18) = gama(18) + gamou(19) = gama(19) + gamou(20) = gama(20) + gamou(21) = gama(21) + gamou(22) = gama(22) + gamou(23) = gama(23) + end if + ! + if (soln .EQV. .false.) then + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + gamin(14) = gama(14) + gamin(15) = gama(15) + gamin(16) = gama(16) + gamin(17) = gama(17) + gamin(18) = gama(18) + gamin(19) = gama(19) + gamin(20) = gama(20) + gamin(21) = gama(21) + gamin(22) = gama(22) + gamin(23) = gama(23) + end if + ! + call mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & + calain, calou) + ! + if (frst .EQV. .true.) then + errouloc = 0 + do ii = 1, 23 + errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) + end do + calou = errouloc .ge. epsact + frst = .false. + end if + ! + errinlocb = 0 + do ii = 1, 23 + errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) + end do + calain = errinlocb .ge. epsact + ! + errin = 0.0d0 + ! ## Test for convergence of activity coefficients + do ii = 1, 23 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system of equations, with new activity coefficients + if (soln .EQV. .false.) then + lwnsq = lwn*lwn + gama10sq = gama(10)*gama(10) + ! + a4 = k1*gama10sq/(gama(5)*gama(5)) + a5 = k2*lwnsq/gama10sq + a6 = k3*lwnsq/(gama(11)*gama(11)) + ! + ! ## 1. Calculate dissociation quantities + psi5 = chi5*(x3 + c2) - a6/a5*(c3)*(chi6 - x3) + psi5 = psi5/(a6/a5*(chi6 - x3) + x3 + c2) + psi5 = min(max(psi5, tiny), chi5) + ! + if (nh4 > tiny .and. lwn > tiny) then + bb = -(nh4 + x3 + psi5 + 1.0d0/a4) + cc = nh4*(psi5 + x3) + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + psi4 = -0.5*bb - 0.5*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + psi4 = min(max(psi4, 0.0d0), nh4) + else + psi4 = tiny + end if + ! + ! ## 2. Speciation + nh4_t = psi4 + cl_t = x3 + c2 + no3_t = psi5 + c3 + gnh3 = max(nh4 - psi4, tiny2) + ghno3 = max(chi5 - psi5, tiny2) + ghcl = max(chi6 - x3, tiny2) + ! + ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) + smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t & + - pk_t - 2.0d0*mg_t - 2.0d0*ca_t + scon = k4*lwn*lwn + ! + if (smin > tiny) then ! H+ in excess + bb =-smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + h = max(hh,sqrt(scon)) + ! ohi = scon/h + else ! OH- in excess + bb = smin + cc =-scon + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ohi = max(hh,sqrt(scon)) + h = scon/ohi + end if + ! + ! ## 4. Aerosol liquid water content + frno3 = max(no3_t + c4, 0.0d0) + frcl = max(cl_t + c5, 0.0d0) + m5 = min(nh4_t, frno3) + frnh4 = max(nh4_t - m5, 0.0d0) + m6 = min(frcl, frnh4) + lwn = max(ztot + m5/awan(irh) + m6/awac(irh), tiny) + end if + end do + ! + y3 = h*cl_t/ghcl/a6 - 1.0d0 !Function value + ! + condition = .false. + if (noroot .EQV. .true.) then + ! ## If no root on interval then do not perform ITP + xa = x3 + xb = x3 + else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + xb = x3 + yb = y3 + else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + xa = x3 + ya = y3 + else if (soln .EQV. .false.) then + xa = x3 + xb = x3 + end if + ! + ! ## Check for convergence criteria to exit ITP: + if (xb - xa > abs(xa*eps) .and. chi6 > tiny .and. noroot .EQV. .false.) then + condition = .true. + soln = .false. + else + soln = .true. + end if + ! + ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed + if (abs(y3) <= eps .and. noroot .EQV. .false.) then + soln = .true. + condition = .false. + end if + ! + ! ## Post-convergence correction: + ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration + ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize + ! ## the objective function (i.e., y3); in this case, this is chosen as the solution + if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then + x3 = x3_min + cl_t = cl_min + nh4_t = nh4_min + no3_t = no3_min + h = h_min + lwn = lwn_min + ghcl = ghcl_min + ghno3 = ghno3_min + gnh3 = gnh3_min + ! + ! ## Reset activity coefficients + gama = gama_min + a6 = k3*(lwn/gama(11))*(lwn/gama(11)) + y3 = h*cl_t/ghcl/a6 - 1.0d0 + end if + end if + end do ! End outer loop of ITP search + ! + ! + ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### + hso4 = 0.0d0 + if (h > tiny .and. so4_t > tiny .and. lwn >= 1.0d-19) then + ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) + bb =-(h + so4_t + ak1) + cc = h*so4_t + dd = bb*bb - 4.d0*cc + ! + if (dd >= 0.0d0) then + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root + else + hh = 0.5d0*(-bb - sqrt(bb*bb - 4.d0*cc)) + end if + ! + hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) + h = max(h - hh, 0.0d0) + so4_t = max(so4_t - hh, 0.0d0) + hso4 = hh + end if + end if + ! + ! + ! ### Perform mass adjustment if excess exists ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + no3_i = no3_t + hso4_i = hso4 + na_i = na_t + cl_i = cl_t + ca_i = ca_t + k_i = pk_t + mg_i = mg_t + nh3g_i = gnh3 + hno3g_i = ghno3 + hclg_i = ghcl + h_i = h + lwn_i = lwn + caso4_i = caso4 + ! + return + end subroutine mach_hetp_calcp13 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: L9; sulfate rich; no free acid + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcl9(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & + na_i, cl_i, no3_i, h_i, lwn_i, ca_i, k_i, mg_i, & + caso4_i, frmg, frk, frca, frna, frso4, rh, temp, k0, & + p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: na_i + real(kind=8), intent(inout) :: cl_i + real(kind=8), intent(inout) :: ca_i + real(kind=8), intent(inout) :: k_i + real(kind=8), intent(inout) :: mg_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: hclg_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent(inout) :: caso4_i + real(kind=8), intent(out) :: frmg + real(kind=8), intent(out) :: frk + real(kind=8), intent(out) :: frca + real(kind=8), intent(out) :: frna + real(kind=8), intent(out) :: frso4 + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, caso4 + real(kind=8) :: no3, cl, na, ca, pk, mg, ghno3, ghcl, t, aw + real(kind=8) :: knh3, khso4, kh2o, khno3, khcl, frso4_2, frnh4, frnh4_2, tt0 + real(kind=8) :: bb, cc, dd, ff, hh, v, errin, a3, a4, a9, delno + real(kind=8) :: delcl, m1, m2, m3, c1, c2, tt1, tt2 + real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, ca_t, pk_t, mg_t + real(kind=8) :: clc, nh4hs4, nahso4, na2so4, nh42s4, k2so4, mgso4, kkhso4, exnh4 + real(kind=8) :: frcl, frno3 + integer(kind=4) :: j, ii, islv, irh + logical(kind=4) :: ispoly + real(kind=8), dimension(23) :: gama, gamin + ! + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + na = na_i + cl = cl_i + ca = ca_i + pk = k_i + mg = mg_i + aw = rh + t = temp + caso4 = 0.0d0 + hso4 = 0.0d0 + gnh3 = 0.0d0 + ghno3 = 0.0d0 + ghcl = 0.0d0 + h = 0.0d0 + lwn = tiny + so4_t = 0.0d0 + nh4_t = 0.0d0 + no3_t = 0.0d0 + na_t = 0.0d0 + cl_t = 0.0d0 + ca_t = 0.0d0 + pk_t = 0.0d0 + mg_t = 0.0d0 + delcl = 0.0d0 + na2so4= 0.0d0 + nahso4= 0.0d0 + clc = 0.0d0 + nh42s4= 0.0d0 + nh4hs4= 0.0d0 + kkhso4= 0.0d0 + k2so4 = 0.0d0 + mgso4 = 0.0d0 + frmg = 0.0d0 + frna = 0.0d0 + frk = 0.0d0 + frca = 0.0d0 + frcl = 0.0d0 + frno3 = 0.0d0 + frso4 = 0.0d0 + frnh4 = 0.0d0 + exnh4 = 0.0d0 + gama = 0.1d0 + gamin = 1.0d10 + ! + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) + khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Find dry composition: all solids except CaSO4 assumed to be completely dissolved + ! ## Subroutine 'CALCL1A' in ISORROPIA II, but modified here for mass balance + caso4 = min(ca, so4) + frso4 = max(so4 - caso4, 0.0d0) + frca = max(ca - caso4, 0.0d0) + ! + k2so4 = min(0.5d0*pk, frso4) + frk = max(pk - 2.0d0*k2so4, 0.0d0) + frso4 = max(frso4 - k2so4, 0.0d0) + ! + na2so4 = min(0.5d0*na, frso4) + frna = max(na - 2.0d0*na2so4, 0.0d0) + frso4 = max(frso4 - na2so4, 0.0d0) + ! + mgso4 = min(mg, frso4) + frmg = max(mg - mgso4, 0.0d0) + frso4 = max(frso4 - mgso4, 0.0d0) + ! + clc = min(nh4/3.0d0, frso4*0.5d0) ! (NH4)3H(SO4)2(s) + frso4 = max(frso4 - 2.0d0*clc, 0.0d0) + frnh4 = max(nh4 - 3.0d0*clc, 0.0d0) + ! + if (frso4 <= tiny) then + frso4 = frso4 + 2.0d0*clc - 2.0d0*max(clc-frnh4, 0.0d0) + frnh4_2 = frnh4 + 3.0d0*clc - 3.0d0*max(clc-frnh4, 0.0d0) + clc = max(clc - frnh4, 0.0d0) + nh42s4 = min(0.5d0*frnh4_2, frso4) + frnh4 = max(frnh4_2 - 2.0d0*nh42s4, 0.0d0) + frso4 = max(frso4 - nh42s4, 0.0d0) + else if (frnh4 <= tiny) then + nh4hs4 = 3.0d0*min(frso4, clc) + clc = max(clc - frso4, 0.0d0) + frso4 = max(frso4 - nh4hs4/3.0d0, 0.0d0) + ! + if (na2so4 > tiny) then + frso4_2 = frso4 + frso4 = frso4 + (na2so4 - max(na2so4 - frso4, 0.0d0)) + na2so4 = max(na2so4 - frso4_2, 0.0d0) + frna = max(na - 2.0d0*na2so4, 0.0d0) + nahso4 = min(frna, frso4) + frna = max(frna - nahso4, 0.0d0) + frso4 = max(frso4 - nahso4, 0.0d0) + end if + ! + if (k2so4 > tiny) then + frso4_2 = frso4 + frso4 = frso4 + k2so4 - max(k2so4 - frso4, 0.0d0) + k2so4 = max(k2so4 - frso4_2, 0.0d0) + frk = max(pk - 2.0d0*k2so4, 0.0d0) + kkhso4 = min(frk, frso4) + frso4 = max(frso4 - kkhso4, 0.0d0) + frk = max(frk - kkhso4, 0.0d0) + end if + end if + ! + ! ## Speciation + na_t = 2.0d0*na2so4 + nahso4 + nh4_t = 3.0d0*clc + 2.0d0*nh42s4 + nh4hs4 + pk_t = kkhso4 + 2.0d0*k2so4 + mg_t = mgso4 + ! + ! ## Gaseous species + ghno3 = no3 + ghcl = cl + ! + ! ## Constant values + c1 = clc + na2so4 + nh42s4 + k2so4 + mgso4 + c2 = kkhso4 + nh4hs4 + clc + nahso4 + ! + ! + ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### + ! ## Setup initial conditions + ! ## 1. Calculate dissociation quantities + a9 = khso4*1.0d-19 + bb = c1 + a9 ! bb always > 0 + cc = -a9*c2 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + hh = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ! ## 2. Speciation + hh = max(hh, tiny) ! Avoid negative hh + hh = min(hh, c2) ! Avoid negative HSO4 + h = hh + so4_t = c1 + hh + hso4 = max(c2 - hh, 0.0d0) + ! + ! ## 3. Aerosol liquid water content + lwn = max(nh42s4/awas(irh) + na2so4/awss(irh) + nh4hs4/awab(irh) + & + nahso4/awsb(irh) + clc/awlc(irh) + k2so4/awps(irh) + & + kkhso4/awpb(irh) + mgso4/awms(irh), tiny) + ! + ! ## Iterative search for solution with convergence of activity coefficients + errin = 1.0d0 + j = 0 + do while (j < nsweep-1 .and. errin >= epsact) + j = j + 1 + ! + ! ## Reset gamin + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + gamin(14) = gama(14) + gamin(15) = gama(15) + gamin(16) = gama(16) + gamin(17) = gama(17) + gamin(18) = gama(18) + gamin(19) = gama(19) + gamin(20) = gama(20) + gamin(21) = gama(21) + gamin(22) = gama(22) + gamin(23) = gama(23) + ! + call mach_hetp_calcact4(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + ca_t, pk_t, mg_t, lwn, gama, t) + ! + ! ## Test for convergence of activity coefficients + errin = 0.0d0 + do ii = 1, 23 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system with new set of activity coefficients + ! ## 1. Calculate dissociation quantities + a9 = khso4*lwn/gama(7)*(gama(8)/gama(7))**2.0 + bb = c1 + a9 ! bb always > 0 + cc = -a9*c2 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + hh = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) + end if + ! + ! ## 2. Speciation + hh = max(hh, tiny) ! Avoid negative hh + hh = min(hh, c2) ! Avoid negative HSO4 + h = hh + so4_t = c1 + hh + hso4 = max(c2 - hh, 0.0d0) + end do + ! + ! + ! ### MINOR SYSTEM #1: Cl-/HCl/NO3-/HNO3/H+ ### + ! ## Calculate dissolution of HCl, HNO3 in the presence of (H,SO4) + ! ## HCl, HNO3 are considered minor species + ispoly = .false. + ! + ! ## 1. Special case: aerosol liquid water content (lwn) = 0.0d0 + if (lwn <= tiny) then + ! Gaseous species + ghcl = max(cl - cl_t, 0.0d0) + ghno3 = max(no3 - no3_t, 0.0d0) + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ! + ! ## 2. Special case: HCl = HNO3 = 0.0d0 + else if (cl <= tiny .and. no3 <= tiny) then + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ! + ! ## 3. Special case: HCl = 0.0d0 + else if (cl <= tiny) then + ! Nitric acid in the liquid phase is assumed a minor species + ! HNO3(g) <--> (H+) + (NO3-), using (H+) from the sulfates + ff = 0.0d0 + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + if (lwn > tiny) then + bb = h + khno3*r*t*(lwn/gama(10))**2.0 + cc = (khno3*r*t*(lwn/gama(10))**2.0)*no3 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) + else + ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) + end if + end if + ! + ! Speciation + ghno3 = max(no3 - ff, 0.0d0) + no3_t = ff + h = h + ff + ! + ! ## 4. Special case: HNO3 = 0.0d0 + else if (no3 <= tiny) then + ! Hydrochloric acid in the liquid phase is assumed a minor species + ! HCl (g) <--> (H+) + (Cl-) using (H+) from the sulfates + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ff = 0.0d0 + if (lwn > tiny) then + bb = h + khcl*r*t*(lwn/gama(11))**2.0 + cc = (khcl*r*t*(lwn/gama(11))**2.0)*cl + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) + else + ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) + end if + end if + ! + ! Speciation + ghcl = max(cl - ff, 0.0d0) + cl_t = ff + h = h + ff + ! + ! ## 5. All else: not a special case + else + ispoly = .true. + a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 + a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl + ! + ! Calculate cubic equation coefficients + m1 = (a3*no3 + a4*cl + (h + a4)*(a3 - a4))/(a3 - a4) + m2 = ((h + a4)*a4*cl - a4*(a3 - a4)*cl)/(a3 - a4) + m3 = -a4*a4*cl*cl/(a3 - a4) + end if + ! + ! ## Calculate roots + ! call mach_hetp_poly3v(m1, m2, m3, delcl, islv) # Original ISORROPIA subroutine + call mach_hetp_poly(m1, m2, m3, cl, delcl, islv) + ! + delno = 0.0d0 + if (ispoly) then + if (islv /= 0) then + ! Tiny amounts of HCl are assumed when there is no root + delcl = tiny !Change in Cl- + end if + ! + a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 + a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl + delno = min(a3*no3*delcl/(a4*cl + (a3 - a4)*delcl), no3) !Change in NO3- + ! + if (delcl < 0.0d0 .or. delno < 0.0d0 .or. delcl > cl .or. delno > no3) then + delcl = tiny !Change in Cl- + delno = tiny !Change in NO3- + end if + ! + ! ## Effect on liquid phase + h = h + delno + delcl ! H+ change + cl_t = cl_t + delcl ! Cl- change + no3_t = no3_t + delno ! NO3- change + ! + ! ## Gaseous species + ghcl = max(cl - cl_t, 0.0d0) + ghno3 = max(no3 - no3_t, 0.0d0) + end if + ! + ! + ! ### MINOR SYSTEM #2: NH4+/NH3/H+ ### + ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb + ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major + ! system (solved above) is used initially. + if (lwn > tiny) then + ! Calculate NH3 sublimation + ff = 0.0d0 + a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 + bb = h + 1.0d0/a3 ! bb always > 0 + cc = -nh4_t/a3 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ! Speciation + ! Due to round-off, ff may be .gt. nh4_t giving negative nh4_t + ! If this condition is true, then set ff = nh4_t + ff = max(tiny2, min(ff, nh4_t)) + gnh3 = ff + nh4_t = max(nh4_t - ff, 0.0d0) + h = h + ff + end if + ! + ! Add any free nh4 back to the gas phase + gnh3 = gnh3 + frnh4 + frnh4 = 0.0d0 + ! + ! + ! ### Perform mass adjustment if excess exists ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + no3_i = no3_t + hso4_i = hso4 + na_i = na_t + cl_i = cl_t + ca_i = ca_t + k_i = pk_t + mg_i = mg_t + nh3g_i = gnh3 + hno3g_i = ghno3 + hclg_i = ghcl + h_i = h + lwn_i = lwn + caso4_i = caso4 + ! + return + end subroutine mach_hetp_calcl9 + + + + !############################################################################ + ! ## HETP Code + ! ## Subcase: K4; sulfate rich; free acid + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calck4(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & + na_i, cl_i, no3_i, h_i, lwn_i, ca_i, k_i, mg_i, & + caso4_i, rh, temp, k0, p1, p2, nr) + ! + use mach_hetp_mod + implicit none + ! + integer(kind=4), intent (in) :: nr + real(kind=8), intent (in) :: k0 (nr) + real(kind=8), intent (in) :: p1 (nr) + real(kind=8), intent (in) :: p2 (nr) + real(kind=8), intent(inout) :: so4_i + real(kind=8), intent(inout) :: nh4_i + real(kind=8), intent(inout) :: no3_i + real(kind=8), intent(inout) :: hso4_i + real(kind=8), intent(inout) :: na_i + real(kind=8), intent(inout) :: cl_i + real(kind=8), intent(inout) :: ca_i + real(kind=8), intent(inout) :: k_i + real(kind=8), intent(inout) :: mg_i + real(kind=8), intent(inout) :: nh3g_i + real(kind=8), intent(inout) :: hno3g_i + real(kind=8), intent(inout) :: hclg_i + real(kind=8), intent(inout) :: h_i + real(kind=8), intent(inout) :: lwn_i + real(kind=8), intent(inout) :: caso4_i + real(kind=8), intent (in) :: rh + real(kind=8), intent (in) :: temp + ! + ! ## Local variables + real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, caso4 + real(kind=8) :: no3, cl, na, ca, pk, mg, ghno3, ghcl, t, aw + real(kind=8) :: knh3, khso4, kh2o, khno3, khcl + real(kind=8) :: bb, cc, dd, ff, v, hh, errin, a3, a4, delno, tt0 + real(kind=8) :: delcl, m1, m2, m3, c1, c2, c3, c4, c5, c6, c7, tt1, tt2 + real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, ca_t, pk_t, mg_t + integer(kind=4) :: j, ii, islv, irh + logical(kind=4) :: ispoly + real(kind=8), dimension(23) :: gama, gamin + ! + ! + ! ### Initialize variables ### + so4 = so4_i + nh4 = nh4_i + no3 = no3_i + na = na_i + cl = cl_i + ca = ca_i + pk = k_i + mg = mg_i + aw = rh + t = temp + hso4 = 0.0d0 + gnh3 = 0.0d0 + ghno3 = 0.0d0 + ghcl = 0.0d0 + h = 0.0d0 + lwn = tiny + so4_t = 0.0d0 + nh4_t = 0.0d0 + no3_t = 0.0d0 + na_t = 0.0d0 + cl_t = 0.0d0 + ca_t = 0.0d0 + pk_t = 0.0d0 + mg_t = 0.0d0 + caso4 = 0.0d0 + delcl = 0.0d0 + gama = 0.1d0 + gamin = 1.0d10 + ! + ! + ! ### Calculate equilibrium constants and other static variables ### + ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will + ! ## cause division by zero, aborting the code + aw = max(aw, 0.005d0) + aw = min(aw, 0.995d0) + ! + tt0 = tstd / t + tt1 = tt0 - 1.0d0 + tt2 = 1.0d0 + log(tt0) - tt0 + ! + ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) + khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) + ! + ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) + ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) + ! ## Net NH3: k2*k3 (xk2) + knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & + (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) + ! + ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) + kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) + ! + ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) + khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) + ! + ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) + khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) + ! + ! ## Calculate ZSR position parameter + irh = max(min(int(aw*100+0.5), 100), 1) + ! + ! ## Constants + c1 = max(so4 - nh4 - na - ca - pk - mg, tiny) ! Free H2SO4 + c2 = c1 + pk + na + nh4 + c3 = c1 + mg + c4 = c1*mg + ! + ! ## ZSR constants + c5 = nh4/awab(irh) + na/awsb(irh) + pk/awpb(irh) + mg/awms(irh) + c6 = nh4 + na + pk + mg + c7 = awsa(irh) + ! + ! + ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### + ! ## Setup initial conditions + ! ## 1. Calculate dissociation quantities + a4 = khso4*1.0d-19 + bb = a4 + c3 ! bb always > 0 + cc = -a4*c2 + c4 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + hh = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc,0.0d0))) + end if + hh = min(c2, hh) + ! + ! ## 2. Speciation + h = c1 + hh + na_t = na + nh4_t = nh4 + so4_t = hh + mg + hso4 = max(c2 - hh, 0.0d0) + pk_t = pk + mg_t = mg + caso4 = ca + ! + ! ## 3. Aerosol liquid water content + lwn = max(c5 + max(so4_t + hso4 - c6, 0.0d0)/c7, tiny) + ! + ! ## Iterative search for solution with convergence of activity coefficients + errin = 1.0d0 + j = 0 + do while (j < nsweep-1 .and. errin >= epsact) + j = j + 1 + ! + ! ## Reset gamin + gamin(1) = gama(1) + gamin(2) = gama(2) + gamin(3) = gama(3) + gamin(4) = gama(4) + gamin(5) = gama(5) + gamin(6) = gama(6) + gamin(7) = gama(7) + gamin(8) = gama(8) + gamin(9) = gama(9) + gamin(10) = gama(10) + gamin(11) = gama(11) + gamin(12) = gama(12) + gamin(13) = gama(13) + gamin(14) = gama(14) + gamin(15) = gama(15) + gamin(16) = gama(16) + gamin(17) = gama(17) + gamin(18) = gama(18) + gamin(19) = gama(19) + gamin(20) = gama(20) + gamin(21) = gama(21) + gamin(22) = gama(22) + gamin(23) = gama(23) + ! + call mach_hetp_calcact4(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & + ca_t, pk_t, mg_t, lwn, gama, t) + ! + ! ## Test for convergence of activity coefficients + errin = 0.0d0 + do ii = 1, 23 + errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) + end do + ! + ! ## Solve system with new set of activity coefficients + ! ## 1. Calculate dissociation quantities + a4 = khso4*lwn/gama(7)*(gama(8)/gama(7))**2.0 + bb = a4 + c3 + cc = -a4*c2 + c4 + ! + if (bb /= 0.d0) then + dd = cc/(bb*bb) + v = 4.d0*dd + else + v = 1.d3 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + hh = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc,0.0d0))) + end if + hh = min(c2, hh) + ! + ! ## 2. Speciation + h = c1 + hh + so4_t = hh + mg + hso4 = max(c2 - hh, 0.0d0) + ! + ! ## 3. Aerosol liquid water content + lwn = max(c5 + max(so4_t + hso4 - c6, 0.0d0)/c7, tiny) + end do + ! + ! + ! ### MINOR SYSTEM #1: Cl-/HCl/NO3-/HNO3/H+ ### + ! ## Calculate dissolution of HCl, HNO3 in the presence of (H,SO4) + ! ## HCl, HNO3 are considered minor species + ispoly = .false. + ! + ! ## 1. Special case: aerosol liquid water content (lwn) = 0.0d0 + if (lwn <= tiny) then + ! Gaseous species + ghcl = max(cl - cl_t, 0.0d0) + ghno3 = max(no3 - no3_t, 0.0d0) + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ! + ! ## 2. Special case: HCl = HNO3 = 0.0d0 + else if (cl <= tiny .and. no3 <= tiny) then + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ! + ! ## 3. Special case: HCl = 0.0d0 + else if (cl <= tiny) then + ! Nitric acid in the liquid phase is assumed a minor species + ! HNO3(g) <--> (H+) + (NO3-), using (H+) from the sulfates + ff = 0.0d0 + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + if (lwn > tiny) then + bb = h + khno3*r*t*(lwn/gama(10))**2.0 + cc = (khno3*r*t*(lwn/gama(10))**2.0)*no3 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) + else + ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) + end if + end if + ! + ! Speciation + ghno3 = max(no3 - ff, 0.0d0) + no3_t = ff + h = h + ff + ! + ! ## 4. Special case: HNO3 = 0.0d0 + else if (no3 <= tiny) then + ! Hydrochloric acid in the liquid phase is assumed a minor species + ! HCl (g) <--> (H+) + (Cl-) using (H+) from the sulfates + m1 = 0.0d0 + m2 = 0.0d0 + m3 = 0.0d0 + ff = 0.0d0 + if (lwn > tiny) then + bb = h + khcl*r*t*(lwn/gama(11))**2.0 + cc = (khcl*r*t*(lwn/gama(11))**2.0)*cl + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb /= 0.d0) then + ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) + else + ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) + end if + end if + ! + ! Speciation + ghcl = max(cl - ff, 0.0d0) + cl_t = ff + h = h + ff + ! + ! ## 5. All else: not a special case + else + ispoly = .true. + a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 + a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl + ! + ! Calculate cubic equation coefficients + m1 = (a3*no3 + a4*cl + (h + a4)*(a3 - a4))/(a3 - a4) + m2 = ((h + a4)*a4*cl - a4*(a3 - a4)*cl)/(a3 - a4) + m3 = -a4*a4*cl*cl/(a3 - a4) + end if + ! + ! ## Calculate roots + call mach_hetp_poly(m1, m2, m3, cl, delcl, islv) + ! call mach_hetp_poly3v(m1, m2, m3, delcl, islv) # Original ISORROPIA subroutine + ! + delno = 0.0d0 + if (ispoly) then + if (islv /= 0) then + ! Tiny amounts of HCl are assumed when there is no root + delcl = tiny !Change in Cl- + end if + ! + a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 + a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl + delno = min(a3*no3*delcl/(a4*cl + (a3 - a4)*delcl), no3) !Change in NO3- + ! + if (delcl < 0.0d0 .or. delno < 0.0d0 .or. delcl > cl .or. delno > no3) then + delcl = tiny !Change in Cl- + delno = tiny !Change in NO3- + end if + ! + ! ## Effect on liquid phase + h = h + delno + delcl ! H+ change + cl_t = cl_t + delcl ! Cl- change + no3_t = no3_t + delno ! NO3- change + ! + ! ## Gaseous species + ghcl = max(cl - cl_t, 0.0d0) + ghno3 = max(no3 - no3_t, 0.0d0) + end if + ! + ! + ! ### MINOR SYSTEM #2: NH4+/NH3/H+ ### + ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb + ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major + ! system (solved above) is used initially. + if (lwn > tiny) then + ! Calculate NH3 sublimation + ff = 0.0d0 + a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 + bb = h + 1.0d0/a3 ! bb always > 0 + cc = -nh4_t/a3 + ! + if (bb /= 0.d0) then + dd = cc / (bb*bb) + v = 4.d0*dd + else + v = 1.d+03 + end if + ! + if (abs(v) <= smrt .and. bb > 0.d0) then + ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb + else + ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) + end if + ! + ! Speciation + ! Due to round-off, ff may be .gt. nh4_t giving negative nh4_t + ! If this condition is true, then set ff = nh4_t + ff = max(tiny, min(ff, nh4_t)) + gnh3 = ff + nh4_t = max(nh4_t - ff, 0.0d0) + h = h + ff + end if + ! + ! + ! ### Perform mass adjustment if excess exists ### + call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + ! + ! ### Save result and return ### + so4_i = so4_t + nh4_i = nh4_t + no3_i = no3_t + hso4_i = hso4 + na_i = na_t + cl_i = cl_t + ca_i = ca_t + k_i = pk_t + mg_i = mg_t + nh3g_i = gnh3 + hno3g_i = ghno3 + hclg_i = ghcl + h_i = h + lwn_i = lwn + caso4_i = caso4 + ! + return + end subroutine mach_hetp_calck4 + + + + !############################################################################ + ! ## HETP Code + ! ## Calculates multi-component activity coefficients from Bromley's method + ! ## of ammonium-sulfate aerosol system for case B4, C2 + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcact1(h, nh4_t, so4_t, hso4, lwn, gama, t) + ! + use mach_hetp_mod, only: tiny + implicit none + ! + real(kind=8), intent(in) :: nh4_t + real(kind=8), intent(in) :: so4_t + real(kind=8), intent(in) :: hso4 + real(kind=8), intent(in) :: lwn + real(kind=8), intent(in) :: h + real(kind=8), intent(in) :: t + real(kind=8), intent(inout) :: gama (13) + ! + ! ## Local variables + real(kind=8) :: ionic, sion, tc, c, xx, xx2, c1, c2, hh + real(kind=8) :: c3, c4, c5, c5a + real(kind=8) :: ff11, ff13, f2a2, f2a3, ch1, ch2 + real(kind=8) :: h2, k1, k2, f11, f12 + real(kind=8) :: g04, g06, g07, g08, g09, g11 + ! + ! ## Calculate ionic strength of solution + ionic = h + nh4_t + 4.0d0*so4_t + hso4 + ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) + ! + ! ## Calculate the binary activity coefficients + sion = sqrt(ionic) + c3 = exp(-0.023d0*ionic*ionic*ionic) + c4 = -0.5107d0*sion + c5 = 1.0d0 + 0.1d0*ionic + c5a = 1.0d0 + sion + ! + ! ## Coefficients at 25C + if (ionic < 6.0d0) then + c = 1.0d0 + -0.01375d0*c3 + xx = c4/(1.0d0 + c*sion) + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + 2.0d0*xx + + c = 1.0d0 + -0.0055d0*c3 + xx = c4/(1.0d0 + c*sion) + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + 2.0d0*xx + + c = 1.0d0 + 0.44d0*c3 + xx = c4/(1.0d0 + c*sion) + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + + c = 1.0d0 + 0.0451d0*c3 + xx = c4/(1.0d0 + c*sion) + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + + c = 1.0d0 + 0.33d0*c3 + xx = c4/(1.0d0 + c*sion) + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + else + xx = c4/(1.0d0 + sion) + xx2 = 2.0d0*xx + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + xx2 + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + xx2 + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + end if + ! + ! ## Correct for temperature other than 298 K + tc = abs(t - 298.0d0) + if (abs(tc) > 1.0) then + c1 = 1.125d0 - 0.005d0*(t - 273.0d0) + c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92 - & + 0.41d0*sion/c5a) + c3 = 2.0d0*c2 + g04 = c1*g04 - c3 + g06 = c1*g06 - c2 + g07 = c1*g07 - c3 + g08 = c1*g08 - c2 + g11 = c1*g11 - c2 + end if + ! + ! ## Correction: g9 is g09 which is not calculated in calcact1 + ! use g09 from calcact3 to represent g09 (slc.2.2012) + g09 = g06 + g08 - g11 + ! + ! ## Calculate multicomponent activity coefficients + hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a + f11 = so4_t/lwn + f12 = hso4/lwn + ch1 = 2.25d0/ionic + ch2 = 1.0d0/ionic + h2 = 2.0d0*hh + k1 = ch1*f11 + k2 = ch2*f12 + ff11 = k1*(g07 + h2) + k2*(g08 + hh) + ff13 = k1*(g04 + h2) + k2*(g09 + hh) + + f11 = h/lwn + f12 = nh4_t/lwn + f2a2 = ((ch1*f11)*(g07 + h2) + (ch1*f12)*(g04 + h2))*0.5d0 + f2a3 = ch2*f11*(g08 + hh) + ch2*f12*(g09 + hh) + + ! ## log10 of activity coefficients + gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 + gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 + gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 + gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 + gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape + ! + ! ## Convert log(gama) coefficients to gama + gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) + gama(4) = 10.0d0**gama(4) + gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) + gama(13) = 10.0d0**gama(13) + gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) + gama(7) = 10.0d0**gama(7) + gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) + gama(8) = 10.0d0**gama(8) + gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) + gama(9) = 10.0d0**gama(9) + ! + return + end subroutine mach_hetp_calcact1 + + + + !############################################################################ + ! ## HETP Code + ! ## Calculates multi-component activity coefficients from Bromley's method + ! ## of ammonium-sulfate aerosol system for case A2 + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcact1b(h, nh4_t, so4_t, hso4, lwn, gama, t, soln, & + frst, calain, calou) + ! + use mach_hetp_mod, only: tiny + implicit none + ! + real(kind=8), intent(in) :: nh4_t + real(kind=8), intent(in) :: so4_t + real(kind=8), intent(in) :: hso4 + real(kind=8), intent(in) :: lwn + real(kind=8), intent(in) :: h + real(kind=8), intent(in) :: t + real(kind=8), intent(inout) :: gama (13) + logical(kind=4), intent(in) :: soln + logical(kind=4), intent(in) :: frst + logical(kind=4), intent(in) :: calain + logical(kind=4), intent(in) :: calou + ! + ! ## Local variables + real(kind=8) :: ionic, sion, tc, c, xx, xx2, c1, c2, hh + real(kind=8) :: c3, c4, c5, c5a + real(kind=8) :: ff11, ff13, f2a2, f2a3, ch1, ch2 + real(kind=8) :: h2, k1, k2, f11, f12 + real(kind=8) :: g04, g06, g07, g08, g09, g11 + ! + if ((soln .EQV. .false.).and. & + ((frst .EQV. .true. .and. calou .EQV. .true.) .or. & + (frst .EQV. .false. .and. calain .EQV. .true.))) then + ! ## Calculate ionic strength of solution + ionic = h + nh4_t + 4.0d0*so4_t + hso4 + ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) + ! + ! ## Calculate the binary activity coefficients + sion = sqrt(ionic) + c3 = exp(-0.023d0*ionic*ionic*ionic) + c4 = -0.5107d0*sion + c5 = 1.0d0 + 0.1d0*ionic + c5a = 1.0d0 + sion + ! + ! ## Coefficients at 25C + if (ionic < 6.0d0) then + c = 1.0d0 + -0.01375d0*c3 + xx = c4/(1.0d0 + c*sion) + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + 2.0d0*xx + + c = 1.0d0 + -0.0055d0*c3 + xx = c4/(1.0d0 + c*sion) + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + 2.0d0*xx + + c = 1.0d0 + 0.44d0*c3 + xx = c4/(1.0d0 + c*sion) + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + + c = 1.0d0 + 0.0451d0*c3 + xx = c4/(1.0d0 + c*sion) + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + + c = 1.0d0 + 0.33d0*c3 + xx = c4/(1.0d0 + c*sion) + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + else + xx = c4/(1.0d0 + sion) + xx2 = 2.0d0*xx + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + xx2 + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + xx2 + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + end if + ! + ! ## Correct for temperature other than 298 K + tc = abs(t - 298.0d0) + if (abs(tc) > 1.0) then + c1 = 1.125d0 - 0.005d0*(t - 273.0d0) + c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92 - & + 0.41d0*sion/c5a) + c3 = 2.0d0*c2 + g04 = c1*g04 - c3 + g06 = c1*g06 - c2 + g07 = c1*g07 - c3 + g08 = c1*g08 - c2 + g11 = c1*g11 - c2 + end if + ! + ! ## Correction: g9 is g09 which is not calculated in calcact1 + ! use g09 from calcact3 to represent g09 (slc.2.2012) + g09 = g06 + g08 - g11 + ! + ! ## Calculate multicomponent activity coefficients + hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a + f11 = so4_t/lwn + f12 = hso4/lwn + ch1 = 2.25d0/ionic + ch2 = 1.0d0/ionic + h2 = 2.0d0*hh + k1 = ch1*f11 + k2 = ch2*f12 + ff11 = k1*(g07 + h2) + k2*(g08 + hh) + ff13 = k1*(g04 + h2) + k2*(g09 + hh) + + f11 = h/lwn + f12 = nh4_t/lwn + f2a2 = ((ch1*f11)*(g07 + h2) + (ch1*f12)*(g04 + h2))*0.5d0 + f2a3 = ch2*f11*(g08 + hh) + ch2*f12*(g09 + hh) + + ! ## log10 of activity coefficients + gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 + gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 + gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 + gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 + gama(13)= 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape + ! + ! ## Convert log(gama) coefficients to gama + gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) + gama(4) = 10.0d0**gama(4) + gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) + gama(13) = 10.0d0**gama(13) + gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) + gama(7) = 10.0d0**gama(7) + gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) + gama(8) = 10.0d0**gama(8) + gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) + gama(9) = 10.0d0**gama(9) + end if + ! + return + end subroutine mach_hetp_calcact1b + + + + !############################################################################ + ! ## HETP Code + ! ## Calculates multi-component activity coefficients from Bromley's method + ! ## of ammonium-sulfate-nitrate aerosol system for case E4 and F2 + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcact2(h, nh4_t, so4_t, hso4, no3, lwn, gama, t) + ! + use mach_hetp_mod, only: tiny + implicit none + ! + real(kind=8), intent(in) :: nh4_t + real(kind=8), intent(in) :: so4_t + real(kind=8), intent(in) :: hso4 + real(kind=8), intent(in) :: no3 + real(kind=8), intent(in) :: lwn + real(kind=8), intent(in) :: h + real(kind=8), intent(in) :: t + real(kind=8), intent(inout) :: gama(13) + ! + ! ## Local variables: + real(kind=8) :: ionic, sion, tc, c, xx, xx2, c1, c2, hh + real(kind=8) :: c3, c4, c5, c5a + real(kind=8) :: ff11, ff13, f2a2, f2a3, f2a4, ch1, ch2 + real(kind=8) :: h2, k1, k2, k3, f11, f12, f13 + real(kind=8) :: g04, g05, g06, g07, g08, g09, g10, g11 + ! + ! ## Calculate ionic strength of solution + ionic = h + nh4_t + 4.0d0*so4_t + hso4 + no3 + ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) + ! + ! ## Calculate the binary activity coefficients + sion = sqrt(ionic) + c3 = exp(-0.023d0*ionic*ionic*ionic) + c4 = -0.5107d0*sion + c5 = 1.0d0 + 0.1d0*ionic + c5a = 1.0d0 + sion + ! + ! ## Coefficients at 25C + if (ionic < 6.0d0) then + c = 1.0d0 + -0.01375d0*c3 + xx = c4/(1.0d0 + c*sion) + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + 2.0d0*xx + + c = 1.0d0 + -0.06325d0*c3 + xx = c4/(1.0d0 + c*sion) + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + + c = 1.0d0 + -0.0055d0*c3 + xx = c4/(1.0d0 + c*sion) + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + 2.0d0*xx + + c = 1.0d0 + 0.44d0*c3 + xx = c4/(1.0d0 + c*sion) + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + + c = 1.0d0 + 0.0451d0*c3 + xx = c4/(1.0d0 + c*sion) + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + + c = 1.0d0 + 0.143d0*c3 + xx = c4/(1.0d0 + c*sion) + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + + c = 1.0d0 + 0.33d0*c3 + xx = c4/(1.0d0 + c*sion) + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + else + xx = c4/(1.0d0 + sion) + xx2 = 2.0d0*xx + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + xx2 + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + xx2 + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + end if + ! + ! ## Correct for temperature other than 298 K + tc = abs(t - 298.0d0) + if (tc > 1.0) then + c1 = 1.125d0 - 0.005d0*(t - 273.0d0) + c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92 - 0.41d0*sion/c5a) + c3 = 2.0d0*c2 + g04 = c1*g04 - c3 + g05 = c1*g05 - c2 + g06 = c1*g06 - c2 + g07 = c1*g07 - c3 + g08 = c1*g08 - c2 + g10 = c1*g10 - c2 + g11 = c1*g11 - c2 + end if + ! + ! ## Correction: g9 is g09 which is not calculated in calcact1 + ! use g09 from calcact3 to represent g09 (slc.2.2012) + g09 = g06 + g08 - g11 + ! + ! ## Calculate multicomponent activity coefficients + hh = (0.511*(298.0/t)**1.5)*sion/c5a + ! + f11 = so4_t/lwn + f12 = hso4/lwn + f13 = no3/lwn + ch1 = 2.25d0/ionic + ch2 = 1.0d0/ionic + h2 = 2.0d0*hh + k1 = ch1*f11 + k2 = ch2*f12 + k3 = ch2*f13 + ff11 = k1*(g07 + h2) + k2*(g08 + hh) + k3*(g10 + hh) + ff13 = k1*(g04 + h2) + k2*(g09 + hh) + k3*(g05 + hh) + ! + f11 = h/lwn + f12 = nh4_t/lwn + k1 = ch2*f11 + k2 = ch2*f12 + f2a2 = ((ch1*f11)*(g07 + h2) + (ch1*f12)*(g04 + h2))*0.5d0 + f2a3 = k1*(g08 + hh) + k2*(g09 + hh) + f2a4 = k1*(g10 + hh) + k2*(g05 + hh) + ! + ! ## log10 of activity coefficients + gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 + gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 + gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 + gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 + gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 + gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 + gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape + ! + ! ## Convert log(gama) coefficients to gama + gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) + gama(4) = 10.0d0**gama(4) + gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) + gama(5) = 10.0d0**gama(5) + gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) + gama(13) = 10.0d0**gama(13) + gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) + gama(7) = 10.0d0**gama(7) + gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) + gama(8) = 10.0d0**gama(8) + gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) + gama(9) = 10.0d0**gama(9) + gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) + gama(10) = 10.0d0**gama(10) + return + end subroutine mach_hetp_calcact2 + + + + !############################################################################ + ! ## HETP Code + ! ## Calculates multi-component activity coefficients from Bromley's method + ! ## of ammonium-sulfate-nitrate aerosol system for case D3 + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcact2b(h, nh4_t, so4_t, hso4, no3, lwn, gama, t, soln, & + frst, calain, calou) + ! + use mach_hetp_mod, only: tiny + implicit none + ! + real(kind=8), intent(in) :: nh4_t + real(kind=8), intent(in) :: so4_t + real(kind=8), intent(in) :: hso4 + real(kind=8), intent(in) :: no3 + real(kind=8), intent(in) :: lwn + real(kind=8), intent(in) :: h + real(kind=8), intent(in) :: t + real(kind=8), intent(inout) :: gama(13) + logical(kind=4), intent(in) :: soln + logical(kind=4), intent(in) :: frst + logical(kind=4), intent(in) :: calain + logical(kind=4), intent(in) :: calou + ! + ! ## Local variables: + real(kind=8) :: ionic, sion, tc, c, xx, xx2, c1, c2, hh + real(kind=8) :: c3, c4, c5, c5a + real(kind=8) :: ff11, ff13, f2a2, f2a3, f2a4, ch1, ch2 + real(kind=8) :: h2, k1, k2, k3, f11, f12, f13 + real(kind=8) :: g04, g05, g06, g07, g08, g09, g10, g11 + ! + if ((soln .EQV. .false.) .and. & + ((frst .EQV. .true. .and. calou .EQV. .true.) .or. & + (frst .EQV. .false. .and. calain .EQV. .true.)) ) then + ! ## Calculate ionic strength of solution + ionic = h + nh4_t + 4.0d0*so4_t + hso4 + no3 + ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) + ! + ! ## Calculate the binary activity coefficients + sion = sqrt(ionic) + c3 = exp(-0.023d0*ionic*ionic*ionic) + c4 = -0.5107d0*sion + c5 = 1.0d0 + 0.1d0*ionic + c5a = 1.0d0 + sion + ! + ! ## Coefficients at 25C + if (ionic < 6.0d0) then + c = 1.0d0 + -0.01375d0*c3 + xx = c4/(1.0d0 + c*sion) + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + 2.0d0*xx + + c = 1.0d0 + -0.06325d0*c3 + xx = c4/(1.0d0 + c*sion) + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + + c = 1.0d0 + -0.0055d0*c3 + xx = c4/(1.0d0 + c*sion) + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + 2.0d0*xx + + c = 1.0d0 + 0.44d0*c3 + xx = c4/(1.0d0 + c*sion) + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + + c = 1.0d0 + 0.0451d0*c3 + xx = c4/(1.0d0 + c*sion) + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + + c = 1.0d0 + 0.143d0*c3 + xx = c4/(1.0d0 + c*sion) + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + + c = 1.0d0 + 0.33d0*c3 + xx = c4/(1.0d0 + c*sion) + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + else + xx = c4/(1.0d0 + sion) + xx2 = 2.0d0*xx + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + xx2 + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + xx2 + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + end if + ! + ! ## Correct for temperature other than 298 K + tc = abs(t - 298.0d0) + if (tc > 1.0) then + c1 = 1.125d0 - 0.005d0*(t - 273.0d0) + c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92 - 0.41d0*sion/c5a) + c3 = 2.0d0*c2 + g04 = c1*g04 - c3 + g05 = c1*g05 - c2 + g06 = c1*g06 - c2 + g07 = c1*g07 - c3 + g08 = c1*g08 - c2 + g10 = c1*g10 - c2 + g11 = c1*g11 - c2 + end if + ! + ! ## Correction: g9 is g09 which is not calculated in calcact1 + ! use g09 from calcact3 to represent g09 (slc.2.2012) + g09 = g06 + g08 - g11 + ! + ! ## Calculate multicomponent activity coefficients + hh = (0.511*(298.0/t)**1.5)*sion/c5a + ! + f11 = so4_t/lwn + f12 = hso4/lwn + f13 = no3/lwn + ch1 = 2.25d0/ionic + ch2 = 1.0d0/ionic + h2 = 2.0d0*hh + k1 = ch1*f11 + k2 = ch2*f12 + k3 = ch2*f13 + ff11 = k1*(g07 + h2) + k2*(g08 + hh) + k3*(g10 + hh) + ff13 = k1*(g04 + h2) + k2*(g09 + hh) + k3*(g05 + hh) + ! + f11 = h/lwn + f12 = nh4_t/lwn + k1 = ch2*f11 + k2 = ch2*f12 + f2a2 = ((ch1*f11)*(g07 + h2) + (ch1*f12)*(g04 + h2))*0.5d0 + f2a3 = k1*(g08 + hh) + k2*(g09 + hh) + f2a4 = k1*(g10 + hh) + k2*(g05 + hh) + ! + ! ## log10 of activity coefficients + gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 + gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 + gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 + gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 + gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 + gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 + gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape + ! + ! ## Convert log(gama) coefficients to gama + gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) + gama(4) = 10.0d0**gama(4) + gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) + gama(5) = 10.0d0**gama(5) + gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) + gama(13) = 10.0d0**gama(13) + gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) + gama(7) = 10.0d0**gama(7) + gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) + gama(8) = 10.0d0**gama(8) + gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) + gama(9) = 10.0d0**gama(9) + gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) + gama(10) = 10.0d0**gama(10) + end if + ! + return + end subroutine mach_hetp_calcact2b + + + + !############################################################################ + ! ## HETP Code + ! ## Calculates multi-component activity coefficients from Bromley's method + ! ## of ammonium-sulfate-nitrate-sodium-chloride aerosol system for case + ! ## I6 and J3 + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcact3(h, nh4_t, so4_t, hso4, no3, cl, na, lwn, gama, t) + ! + use mach_hetp_mod, only: tiny + implicit none + ! + real(kind=8), intent(in) :: nh4_t + real(kind=8), intent(in) :: so4_t + real(kind=8), intent(in) :: hso4 + real(kind=8), intent(in) :: no3 + real(kind=8), intent(in) :: cl + real(kind=8), intent(in) :: na + real(kind=8), intent(in) :: lwn + real(kind=8), intent(in) :: h + real(kind=8), intent(in) :: t + real(kind=8), intent(inout) :: gama(13) + ! + ! ## Local variables: + real(kind=8) :: ionic, sion, c, xx, xx2, c1, c2, hh + real(kind=8) :: c3, c4, c5, c5a + real(kind=8) :: f11, f12, f13, f14, k1, k2, k3, k4, h2 + real(kind=8) :: f21, f22, f23, ch1, ch2 + real(kind=8) :: f2a1, f2a2, f2a3, f2a4, ff11, ff12, ff13 + real(kind=8) :: g01, g02, g03, g04, g05, g06, g07, g08, g09 + real(kind=8) :: g10, g11, g12 + logical(kind=4) :: tc + ! + ! ## Calculate ionic strength of solution + ionic = h + na + nh4_t + cl + 4.0d0*so4_t + hso4 + no3 + ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) + ! + ! ## Calculate the binary activity coefficients + sion = sqrt(ionic) + c3 = exp(-0.023d0*ionic*ionic*ionic) + c4 = -0.5107d0*sion + c5 = 1.0d0 + 0.1d0*ionic + c5a = 1.0d0 + sion + ! + ! ## Coefficients at 25C + if (ionic < 6.0d0) then + c = 1.0d0 + 0.12265d0*c3 + xx = c4/(1.0d0 + c*sion) + g01 = 0.39495d0 + 0.60505d0*c5**2.23 + g01 = log10(g01) + xx + + c = 1.0d0 + -0.01045d0*c3 + xx = c4/(1.0d0 + c*sion) + g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) + g02 = 2.0d0*log10(g02) + 2.0d0*xx + + c = 1.0d0 + -0.02145d0*c3 + xx = c4/(1.0d0 + c*sion) + g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) + g03 = log10(g03) + xx + + c = 1.0d0 + -0.01375d0*c3 + xx = c4/(1.0d0 + c*sion) + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + 2.0d0*xx + + c = 1.0d0 + -0.06325d0*c3 + xx = c4/(1.0d0 + c*sion) + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + + c = 1.0d0 + -0.0055d0*c3 + xx = c4/(1.0d0 + c*sion) + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + 2.0d0*xx + + c = 1.0d0 + 0.44d0*c3 + xx = c4/(1.0d0 + c*sion) + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + + c = 1.0d0 + 0.0451d0*c3 + xx = c4/(1.0d0 + c*sion) + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + + c = 1.0d0 + 0.143d0*c3 + xx = c4/(1.0d0 + c*sion) + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + + c = 1.0d0 + 0.33d0*c3 + xx = c4/(1.0d0 + c*sion) + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + else + xx = c4/(1.0d0 + sion) + xx2 = 2.0d0*xx + g01 = 0.39495d0 + 0.60505d0*c5**2.23 + g01 = log10(g01) + xx + g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) + g02 = 2.0d0*log10(g02) + xx2 + g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) + g03 = log10(g03) + xx + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + xx2 + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + xx2 + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + end if + ! + ! ## Correct coefficients for temperature other than 298 K + tc = abs(t - 298.0d0) > 1.0d0 + if (tc) then + c1 = 1.125d0 - 0.005d0*(t - 273.0d0) + c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92d0 - 0.41d0*sion/c5a) + c3 = 2.0d0*c2 + g01 = c1*g01 - c2 !g01 + g02 = c1*g02 - c3 !g02 + g03 = c1*g03 - c2 !g03 + g04 = c1*g04 - c3 !g04 + g05 = c1*g05 - c2 !g05 + g06 = c1*g06 - c2 !g06 + g07 = c1*g07 - c3 !g07 + g08 = c1*g08 - c2 !g08 + g10 = c1*g10 - c2 !g10 + g11 = c1*g11 - c2 !g11 + end if + ! + g09 = g06 + g08 - g11 + g12 = g01 + g08 - g11 + ! + ! ## Calculate multicomponent activity coefficients + hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a + ! + f11 = cl/lwn + f12 = so4_t/lwn + f13 = hso4/lwn + f14 = no3/lwn + ch1 = 1.0d0/ionic + ch2 = 2.25d0/ionic + k1 = ch1*f11 + k2 = ch2*f12 + k3 = ch1*f13 + k4 = ch1*f14 + h2 = 2.0d0*hh + ! + ff11 = k1*(g11 + hh) + k2*(g07 + h2) + k3*(g08 + hh) + k4*(g10 + hh) + ff12 = k1*(g01 + hh) + k2*(g02 + h2) + k3*(g12 + hh) + k4*(g03 + hh) + ff13 = k1*(g06 + hh) + k2*(g04 + h2) + k3*(g09 + hh) + k4*(g05 + hh) + ! + f21 = h/lwn + f22 = na/lwn + f23 = nh4_t/lwn + k1 = ch1*f21 + k2 = ch1*f22 + k3 = ch1*f23 + f2a1 = k1*(g11 + hh) + k2*(g01 + hh) + k3*(g06 + hh) + f2a2 = ((ch2*f21)*(g07 + h2) + (ch2*f22)*(g02 + h2) + (ch2*f23)*(g04 + h2))*0.5d0 + f2a3 = k1*(g08 + hh) + k2*(g12 + hh) + k3*(g09 + hh) + f2a4 = k1*(g10 + hh) + k2*(g03 + hh) + k3*(g05 + hh) + ! + ! ## log10 of activity coefficients + gama(1) = ((ff12 + f2a1) * 0.5d0 - hh) ! NaCl + gama(2) = ((ff12 + f2a2) / 3.0d0 - hh)*2.0d0 ! Na2SO4 + gama(3) = ((ff12 + f2a4) * 0.5d0 - hh) ! NaNO3 + gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 + gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 + gama(6) = ((ff13 + f2a1) * 0.5d0 - hh) ! NH4Cl + gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 + gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 + gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 + gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 + gama(11) = ((ff11 + f2a1) * 0.5d0 - hh) ! HCl + gama(12) = ((ff12 + f2a3) * 0.5d0 - hh) ! NaHSO4 + gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape + + ! ## Convert log(gama) coefficients to gama + gama(1) = max(-5.0d0, min(gama(1), 5.0d0)) + gama(1) = 10.0**gama(1) + gama(2) = max(-5.0d0, min(gama(2), 5.0d0)) + gama(2) = 10.0**gama(2) + gama(3) = max(-5.0d0, min(gama(3), 5.0d0)) + gama(3) = 10.0**gama(3) + gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) + gama(4) = 10.0**gama(4) + gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) + gama(5) = 10.0**gama(5) + gama(6) = max(-5.0d0, min(gama(6), 5.0d0)) + gama(6) = 10.0**gama(6) + gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) + gama(7) = 10.0**gama(7) + gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) + gama(8) = 10.0**gama(8) + gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) + gama(9) = 10.0**gama(9) + gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) + gama(10) = 10.0**gama(10) + gama(11) = max(-5.0d0, min(gama(11), 5.0d0)) + gama(11) = 10.0**gama(11) + gama(12) = max(-5.0d0, min(gama(12), 5.0d0)) + gama(12) = 10.0**gama(12) + gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) + gama(13) = 10.0**gama(13) + ! + return + end subroutine mach_hetp_calcact3 + + + + !############################################################################ + ! ## HETP Code + ! ## Calculates multi-component activity coefficients from Bromley's method + ! ## of ammonium-sulfate-nitrate-sodium-chloride aerosol system for case + ! ## G5 and H6 + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3, cl, na, & + lwn, gama, t, soln, frst, calain, calou) + ! + use mach_hetp_mod, only: tiny + implicit none + ! + real(kind=8), intent(in) :: nh4_t + real(kind=8), intent(in) :: so4_t + real(kind=8), intent(in) :: hso4 + real(kind=8), intent(in) :: no3 + real(kind=8), intent(in) :: cl + real(kind=8), intent(in) :: na + real(kind=8), intent(in) :: lwn + real(kind=8), intent(in) :: h + real(kind=8), intent(in) :: t + logical(kind=4), intent(in) :: soln + real(kind=8), intent(inout) :: gama (13) + logical(kind=4), intent(in) :: frst + logical(kind=4), intent(in) :: calain + logical(kind=4), intent(in) :: calou + ! + ! ## Local variables: + real(kind=8) :: ionic, sion, c, xx, xx2, c1, c2, hh + real(kind=8) :: c3, c4, c5, c5a + real(kind=8) :: f11, f12, f13, f14, k1, k2, k3, k4, h2 + real(kind=8) :: f21, f22, f23, ch1, ch2 + real(kind=8) :: f2a1, f2a2, f2a3, f2a4, ff11, ff12, ff13 + real(kind=8) :: g01, g02, g03, g04, g05, g06, g07, g08, g09 + real(kind=8) :: g10, g11, g12 + logical(kind=4) :: tc + ! + ! + if ((soln .EQV. .false.) .and. & + ((frst .EQV. .true. .and. calou .EQV. .true.) .or. & + (frst .EQV. .false. .and. calain .EQV. .true.)) ) then + ! ## Calculate ionic strength of solution + ionic = h + na + nh4_t + cl + 4.0d0*so4_t + hso4 + no3 + ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) + ! + ! ## Calculate the binary activity coefficients + sion = sqrt(ionic) + c3 = exp(-0.023d0*ionic*ionic*ionic) + c4 = -0.5107d0*sion + c5 = 1.0d0 + 0.1d0*ionic + c5a = 1.0d0 + sion + ! + ! ## Coefficients at 25C + if (ionic < 6.0d0) then + c = 1.0d0 + 0.12265d0*c3 + xx = c4/(1.0d0 + c*sion) + g01 = 0.39495d0 + 0.60505d0*c5**2.23 + g01 = log10(g01) + xx + + c = 1.0d0 + -0.01045d0*c3 + xx = c4/(1.0d0 + c*sion) + g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) + g02 = 2.0d0*log10(g02) + 2.0d0*xx + + c = 1.0d0 + -0.02145d0*c3 + xx = c4/(1.0d0 + c*sion) + g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) + g03 = log10(g03) + xx + + c = 1.0d0 + -0.01375d0*c3 + xx = c4/(1.0d0 + c*sion) + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + 2.0d0*xx + + c = 1.0d0 + -0.06325d0*c3 + xx = c4/(1.0d0 + c*sion) + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + + c = 1.0d0 + -0.0055d0*c3 + xx = c4/(1.0d0 + c*sion) + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + 2.0d0*xx + + c = 1.0d0 + 0.44d0*c3 + xx = c4/(1.0d0 + c*sion) + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + + c = 1.0d0 + 0.0451d0*c3 + xx = c4/(1.0d0 + c*sion) + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + + c = 1.0d0 + 0.143d0*c3 + xx = c4/(1.0d0 + c*sion) + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + + c = 1.0d0 + 0.33d0*c3 + xx = c4/(1.0d0 + c*sion) + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + else + xx = c4/(1.0d0 + sion) + xx2 = 2.0d0*xx + g01 = 0.39495d0 + 0.60505d0*c5**2.23 + g01 = log10(g01) + xx + g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) + g02 = 2.0d0*log10(g02) + xx2 + g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) + g03 = log10(g03) + xx + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + xx2 + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + xx2 + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + end if + ! + ! ## Correct coefficients for temperature other than 298 K + tc = abs(t - 298.0d0) > 1.0d0 + if (tc) then + c1 = 1.125d0 - 0.005d0*(t - 273.0d0) + c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92d0 - 0.41d0*sion/c5a) + c3 = 2.0d0*c2 + g01 = c1*g01 - c2 !g01 + g02 = c1*g02 - c3 !g02 + g03 = c1*g03 - c2 !g03 + g04 = c1*g04 - c3 !g04 + g05 = c1*g05 - c2 !g05 + g06 = c1*g06 - c2 !g06 + g07 = c1*g07 - c3 !g07 + g08 = c1*g08 - c2 !g08 + g10 = c1*g10 - c2 !g10 + g11 = c1*g11 - c2 !g11 + end if + ! + g09 = g06 + g08 - g11 + g12 = g01 + g08 - g11 + ! + ! ## Calculate multicomponent activity coefficients + hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a + ! + f11 = cl/lwn + f12 = so4_t/lwn + f13 = hso4/lwn + f14 = no3/lwn + ch1 = 1.0d0/ionic + ch2 = 2.25d0/ionic + k1 = ch1*f11 + k2 = ch2*f12 + k3 = ch1*f13 + k4 = ch1*f14 + h2 = 2.0d0*hh + ! + ff11 = k1*(g11 + hh) + k2*(g07 + h2) + k3*(g08 + hh) + k4*(g10 + hh) + ff12 = k1*(g01 + hh) + k2*(g02 + h2) + k3*(g12 + hh) + k4*(g03 + hh) + ff13 = k1*(g06 + hh) + k2*(g04 + h2) + k3*(g09 + hh) + k4*(g05 + hh) + ! + f21 = h/lwn + f22 = na/lwn + f23 = nh4_t/lwn + k1 = ch1*f21 + k2 = ch1*f22 + k3 = ch1*f23 + f2a1 = k1*(g11 + hh) + k2*(g01 + hh) + k3*(g06 + hh) + f2a2 = ((ch2*f21)*(g07 + h2) + (ch2*f22)*(g02 + h2) + (ch2*f23)*(g04 + h2))*0.5d0 + f2a3 = k1*(g08 + hh) + k2*(g12 + hh) + k3*(g09 + hh) + f2a4 = k1*(g10 + hh) + k2*(g03 + hh) + k3*(g05 + hh) + ! + ! ## log10 of activity coefficients + gama(1) = ((ff12 + f2a1) * 0.5d0 - hh) ! NaCl + gama(2) = ((ff12 + f2a2) / 3.0d0 - hh)*2.0d0 ! Na2SO4 + gama(3) = ((ff12 + f2a4) * 0.5d0 - hh) ! NaNO3 + gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 + gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 + gama(6) = ((ff13 + f2a1) * 0.5d0 - hh) ! NH4Cl + gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 + gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 + gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 + gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 + gama(11) = ((ff11 + f2a1) * 0.5d0 - hh) ! HCl + gama(12) = ((ff12 + f2a3) * 0.5d0 - hh) ! NaHSO4 + gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape + + ! ## Convert log(gama) coefficients to gama + gama(1) = max(-5.0d0, min(gama(1), 5.0d0)) + gama(1) = 10.0**gama(1) + gama(2) = max(-5.0d0, min(gama(2), 5.0d0)) + gama(2) = 10.0**gama(2) + gama(3) = max(-5.0d0, min(gama(3), 5.0d0)) + gama(3) = 10.0**gama(3) + gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) + gama(4) = 10.0**gama(4) + gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) + gama(5) = 10.0**gama(5) + gama(6) = max(-5.0d0, min(gama(6), 5.0d0)) + gama(6) = 10.0**gama(6) + gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) + gama(7) = 10.0**gama(7) + gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) + gama(8) = 10.0**gama(8) + gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) + gama(9) = 10.0**gama(9) + gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) + gama(10) = 10.0**gama(10) + gama(11) = max(-5.0d0, min(gama(11), 5.0d0)) + gama(11) = 10.0**gama(11) + gama(12) = max(-5.0d0, min(gama(12), 5.0d0)) + gama(12) = 10.0**gama(12) + gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) + gama(13) = 10.0**gama(13) + end if + ! + return + end subroutine mach_hetp_calcact3b + + + + !############################################################################ + ! ## HETP Code + ! ## Calculates multi-component activity coefficients from Bromley's method + ! ## of ammonium-sulfate-nitrate-sodium-chloride-calcium-potassium-magnesium + ! ## aerosol system for case K4 and L9 + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcact4(h, nh4_t, so4_t, hso4, no3, cl, na, & + ca, pk, mg, lwn, gama, t) + ! + use mach_hetp_mod, only: tiny + implicit none + ! + real(kind=8), intent (in) :: nh4_t + real(kind=8), intent (in) :: so4_t + real(kind=8), intent (in) :: hso4 + real(kind=8), intent (in) :: no3 + real(kind=8), intent (in) :: cl + real(kind=8), intent (in) :: na + real(kind=8), intent (in) :: ca + real(kind=8), intent (in) :: pk + real(kind=8), intent (in) :: mg + real(kind=8), intent (in) :: lwn + real(kind=8), intent (in) :: h + real(kind=8), intent (in) :: t + real(kind=8), intent(inout) :: gama (23) + ! + ! ## Local variables: + ! + real(kind=8) :: ionic, sion, tc, tx, c, xx, xx2, c1, c2, hh + real(kind=8) :: c3, c4, c5, c5a + real(kind=8) :: f11, f12, f13, f14, k1, k2, k3, k4, h2, h3 + real(kind=8) :: f21, f22, f23, ch1, ch2, ch3 + real(kind=8) :: f2a1, f2a2, f2a3, f2a4, f2b1, f2b2, f2b3, f2b4 + real(kind=8) :: ff11, ff12, ff13, ff14, ff15, ff16 + real(kind=8) :: g01, g02, g03, g04, g05, g06, g07, g08, g09 + real(kind=8) :: g10, g11, g12, g15, g16, g17, g18, g19, g20 + real(kind=8) :: g21, g22, g23 + ! + ! ## Calculate ionic strength of solution + ionic = h + na + nh4_t + cl + 4.0d0*so4_t + hso4 & + + no3 + 4.0d0*ca + pk + 4.0d0*mg + ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) + + ! ## Calculate the binary activity coefficients + sion = sqrt(ionic) + c3 = exp(-0.023d0*ionic*ionic*ionic) + c4 = -0.5107d0*sion + c5 = 1.0d0 + 0.1d0*ionic + c5a = 1.0d0 + sion + ! + ! ## Coefficients at 25C + if (ionic < 6.0d0) then + c = 1.0d0 + 0.12265d0*c3 + xx = c4/(1.0d0 + c*sion) + g01 = 0.39495d0 + 0.60505d0*c5**2.23 + g01 = log10(g01) + xx + + c = 1.0d0 + -0.01045d0*c3 + xx = c4/(1.0d0 + c*sion) + g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) + g02 = 2.0d0*log10(g02) + 2.0d0*xx + + c = 1.0d0 + -0.02145d0*c3 + xx = c4/(1.0d0 + c*sion) + g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) + g03 = log10(g03) + xx + + c = 1.0d0 + -0.01375d0*c3 + xx = c4/(1.0d0 + c*sion) + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + 2.0d0*xx + + c = 1.0d0 + -0.06325d0*c3 + xx = c4/(1.0d0 + c*sion) + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + + c = 1.0d0 + -0.0055d0*c3 + xx = c4/(1.0d0 + c*sion) + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + 2.0d0*xx + + c = 1.0d0 + 0.44d0*c3 + xx = c4/(1.0d0 + c*sion) + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + + c = 1.0d0 + 0.0451d0*c3 + xx = c4/(1.0d0 + c*sion) + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + + c = 1.0d0 + 0.143d0*c3 + xx = c4/(1.0d0 + c*sion) + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + + c = 1.0d0 + 0.33d0*c3 + xx = c4/(1.0d0 + c*sion) + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + + c = 1.0d0 + 0.05115d0*c3 + xx = c4/(1.0d0 + c*sion) + g15 = 0.31045d0 + 0.68955d0*c5**0.93 + g15 = 2.0d0*log10(g15) + 2.0d0*xx + + c = 1.0d0 + 0.132d0*c3 + xx = c4/(1.0d0 + c*sion) + g16 = 0.406d0 + 0.594d0*c5**2.40 + g16 = 2.0d0*log10(g16) + 2.0d0*xx + + c = 1.0d0 + -0.01375d0*c3 + xx = c4/(1.0d0 + c*sion) + g17 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g17 = 2.0d0*log10(g17) + 2.0d0*xx + + c = 1.0d0 + -0.12815d0*c3 + xx = c4/(1.0d0 + c*sion) + g19 = 0.09855d0 + 0.90145d0*c5**(-2.33) + g19 = log10(g19) + xx + + c = 1.0d0 + 0.0506d0*c3 + xx = c4/(1.0d0 + c*sion) + g20 = 0.3098d0 + 0.6902d0*c5**0.92 + g20 = log10(g20) + xx + + c = 1.0d0 + 0.00825d0*c3 + xx = c4/(1.0d0 + c*sion) + g21 = 0.25975d0 + 0.74025d0*c5**0.15 + g21 = 4.0d0*log10(g21) + 4.0d0*xx + + c = 1.0d0 + 0.1276d0*c3 + xx = c4/(1.0d0 + c*sion) + g22 = 0.4008d0 + 0.5992d0*c5**2.32 + g22 = 2.0d0*log10(g22) + 2.0d0*xx + + c = 1.0d0 + 0.1595d0*c3 + xx = c4/(1.0d0 + c*sion) + g23 = 0.4385d0 + 0.5615d0*c5**2.90 + g23 = 2.0d0*log10(g23) + 2.0d0*xx + else + xx = c4/(1.0d0 + sion) + xx2 = 2.0d0*xx + g01 = 0.39495d0 + 0.60505d0*c5**2.23 + g01 = log10(g01) + xx + g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) + g02 = 2.0d0*log10(g02) + xx2 + g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) + g03 = log10(g03) + xx + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + xx2 + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + xx2 + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + g15 = 0.31045d0 + 0.68955d0*c5**0.93 + g15 = 2.0d0*log10(g15) + xx2 + g16 = 0.406d0 + 0.594d0*c5**2.40 + g16 = 2.0d0*log10(g16) + xx2 + g17 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g17 = 2.0d0*log10(g17) + xx2 + g19 = 0.09855d0 + 0.90145d0*c5**(-2.33) + g19 = log10(g19) + xx + g20 = 0.3098d0 + 0.6902d0*c5**0.92 + g20 = log10(g20) + xx + g21 = 0.25975d0 + 0.74025d0*c5**0.15 + g21 = 4.0d0*log10(g21) + 4.0d0*xx + g22 = 0.4008d0 + 0.5992d0*c5**2.32 + g22 = 2.0d0*log10(g22) + xx2 + g23 = 0.4385d0 + 0.5615d0*c5**2.90 + g23 = 2.0d0*log10(g23) + xx2 + end if + ! + ! ## Correct for temperature other than 298 K + tc = abs(t - 298.0d0) + tx = 0.005d0*(t - 273.0d0) + if (tc > 1.0d0) then + c1 = 1.125d0 - tx + c2 = (0.125d0 - tx)*(0.039d0*ionic**0.92 - 0.41d0*sion/c5a) + c3 = c2*2.0d0 + g01 = c1*g01 - c2 !g01 + g02 = c1*g02 - c3 !g02 + g03 = c1*g03 - c2 !g03 + g04 = c1*g04 - c3 !g04 + g05 = c1*g05 - c2 !g05 + g06 = c1*g06 - c2 !g06 + g07 = c1*g07 - c3 !g07 + g08 = c1*g08 - c2 !g08 + g10 = c1*g10 - c2 !g10 + g11 = c1*g11 - c2 !g11 + g15 = c1*g15 - c3 !g15 + g16 = c1*g16 - c3 !g16 + g17 = c1*g17 - c3 !g17 + g19 = c1*g19 - c2 !g19 + g20 = c1*g20 - c2 !g20 + g21 = c1*g21 - c2*4.0d0 !g21 + g22 = c1*g22 - c3 !g22 + g23 = c1*g23 - c3 !g23 + end if + ! + g09 = g06 + g08 - g11 + g12 = g01 + g08 - g11 + g18 = g08 + g20 - g11 + ! + ! ## Calculate multicomponent activity coefficients + hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a + f11 = cl/lwn + f12 = so4_t/lwn + f13 = hso4/lwn + f14 = no3/lwn + ch1 = 1.0d0/ionic + ch2 = 2.25d0/ionic + k1 = ch1*f11 + k2 = ch2*f12 + k3 = ch1*f13 + k4 = ch1*f14 + h2 = 2.0d0*hh + ! + ff11 = k1*(g11 + hh) + k2*(g07 + h2) + k3*(g08 + hh) + k4*(g10 + hh) + ff12 = k1*(g01 + hh) + k2*(g02 + h2) + k3*(g12 + hh) + k4*(g03 + hh) + ff13 = k1*(g06 + hh) + k2*(g04 + h2) + k3*(g09 + hh) + k4*(g05 + hh) + ! + f21 = h/lwn + f22 = na/lwn + f23 = nh4_t/lwn + k1 = ch1*f21 + k2 = ch1*f22 + k3 = ch1*f23 + f2a1 = k1*(g11 + hh) + k2*(g01 + hh) + k3*(g06 + hh) + f2a2 = ((ch2*f21)*(g07 + h2) + (ch2*f22)*(g02 + h2) + (ch2*f23)*(g04 + h2))*0.5d0 + f2a3 = k1*(g08 + hh) + k2*(g12 + hh) + k3*(g09 + hh) + f2a4 = k1*(g10 + hh) + k2*(g03 + hh) + k3*(g05 + hh) + ! + ch1 = 2.25d0/ionic + ch2 = 4.0d0/ionic + ch3 = 1.0d0/ionic + h3 = 4.0d0*hh + f11 = cl/lwn + f12 = so4_t/lwn + f13 = no3/lwn + f14 = hso4/lwn + k1 = ch1*f11 + k2 = ch2*f12 + k3 = ch1*f13 + ! + ff14 = (k1*(g16 + h2) + k2*h3 + k3*(g15 + h2))*0.5d0 + ff15 = (ch3*f11)*(g20 + hh) + (ch1*f12)*(g17 + h2) + (ch3*f14)*(g18 + hh) + & + (ch3*f13)*(g19 + hh) + ff16 = (k1*(g23 + h2) + k2*(g21 + h3) + k3*(g22 + h2))*0.5d0 + ! + f21 = ca/lwn + f22 = pk/lwn + f23 = mg/lwn + k1 = ch1*f21 + k2 = ch1*f23 + k3 = ch3*f22 + f2b1 = k1*(g16 + h2) + k3*(g20 + hh) + k2*(g23 + h2) + f2b2 = ((ch2*f21)*h3 + (ch1*f22)*(g17 + h2) + (ch2*f23)*(g21 + h3))*0.5d0 + f2b3 = (ch3*f22)*(g18 + hh) + f2b4 = k1*(g15 + h2) + k3*(g19 + hh) + k2*(g22 + h2) + ! + ! ## log10 of activity coefficients + gama(1) = ((ff12 + f2a1) * 0.5d0 - hh) ! NaCl + gama(2) = ((ff12 + f2a2) / 3.0d0 - hh)*2.0d0 ! Na2SO4 + gama(3) = ((ff12 + f2a4) * 0.5d0 - hh) ! NaNO3 + gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 + gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 + gama(6) = ((ff13 + f2a1) * 0.5d0 - hh) ! NH4Cl + gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 + gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 + gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 + gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 + gama(11) = ((ff11 + f2a1) * 0.5d0 - hh) ! HCl + gama(12) = ((ff12 + f2a3) * 0.5d0 - hh) ! NaHSO4 + gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape + gama(14) = 0.0d0 ! CaSO4 + gama(15) = ((ff14 + f2b4) / 3.0d0 - hh)*2.0d0 ! Ca(NO3)2 + gama(16) = ((ff14 + f2b1) / 3.0d0 - hh)*2.0d0 ! CaCl2 + gama(17) = ((ff15 + f2b2) / 3.0d0 - hh)*2.0d0 ! K2SO4 + gama(18) = ((ff15 + f2b3) * 0.5d0 - hh) ! KHSO4 + gama(19) = ((ff15 + f2b4) * 0.5d0 - hh) ! KNO3 + gama(20) = ((ff15 + f2b1) * 0.5d0 - hh) ! KCl + gama(21) = ((ff16 + f2b2) * 0.25d0- hh)*4.0d0 ! MgSO4 + gama(22) = ((ff16 + f2b4) / 3.0d0 - hh)*2.0d0 ! Mg(NO3)2 + gama(23) = ((ff16 + f2b1) / 3.0d0 - hh)*2.0d0 ! MgCl2 + + ! ## Convert log(gama) coefficients to gama + gama(1) = max(-5.0d0, min(gama(1), 5.0d0)) + gama(1) = 10.0**gama(1) + gama(2) = max(-5.0d0, min(gama(2), 5.0d0)) + gama(2) = 10.0**gama(2) + gama(3) = max(-5.0d0, min(gama(3), 5.0d0)) + gama(3) = 10.0**gama(3) + gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) + gama(4) = 10.0**gama(4) + gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) + gama(5) = 10.0**gama(5) + gama(6) = max(-5.0d0, min(gama(6), 5.0d0)) + gama(6) = 10.0**gama(6) + gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) + gama(7) = 10.0**gama(7) + gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) + gama(8) = 10.0**gama(8) + gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) + gama(9) = 10.0**gama(9) + gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) + gama(10) = 10.0**gama(10) + gama(11) = max(-5.0d0, min(gama(11), 5.0d0)) + gama(11) = 10.0**gama(11) + gama(12) = max(-5.0d0, min(gama(12), 5.0d0)) + gama(12) = 10.0**gama(12) + gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) + gama(13) = 10.0**gama(13) + gama(14) = 1.0d0 + gama(15) = max(-5.0d0, min(gama(15), 5.0d0)) + gama(15) = 10.0**gama(15) + gama(16) = max(-5.0d0, min(gama(16), 5.0d0)) + gama(16) = 10.0**gama(16) + gama(17) = max(-5.0d0, min(gama(17), 5.0d0)) + gama(17) = 10.0**gama(17) + gama(18) = max(-5.0d0, min(gama(18), 5.0d0)) + gama(18) = 10.0**gama(18) + gama(19) = max(-5.0d0, min(gama(19), 5.0d0)) + gama(19) = 10.0**gama(19) + gama(20) = max(-5.0d0, min(gama(20), 5.0d0)) + gama(20) = 10.0**gama(20) + gama(21) = max(-5.0d0, min(gama(21), 5.0d0)) + gama(21) = 10.0**gama(21) + gama(22) = max(-5.0d0, min(gama(22), 5.0d0)) + gama(22) = 10.0**gama(22) + gama(23) = max(-5.0d0, min(gama(23), 5.0d0)) + gama(23) = 10.0**gama(23) + ! + return + end subroutine mach_hetp_calcact4 + + + + !############################################################################ + ! ## HETP Code + ! ## Calculates multi-component activity coefficients from Bromley's method + ! ## of ammonium-sulfate-nitrate-sodium-chloride-calcium-potassium-magnesium + ! ## aerosol system for case O7, M8 and P13 + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3, cl, na, & + ca, pk, mg, lwn, gama, t, soln, frst, & + calain, calou) + ! + use mach_hetp_mod, only: tiny + implicit none + ! + real(kind=8), intent (in) :: nh4_t + real(kind=8), intent (in) :: so4_t + real(kind=8), intent (in) :: hso4 + real(kind=8), intent (in) :: no3 + real(kind=8), intent (in) :: cl + real(kind=8), intent (in) :: na + real(kind=8), intent (in) :: ca + real(kind=8), intent (in) :: pk + real(kind=8), intent (in) :: mg + real(kind=8), intent (in) :: lwn + real(kind=8), intent (in) :: h + real(kind=8), intent (in) :: t + real(kind=8), intent(inout) :: gama (23) + logical(kind=4), intent (in) :: soln + logical(kind=4), intent (in) :: frst + logical(kind=4), intent (in) :: calain + logical(kind=4), intent (in) :: calou + ! + ! ## Local variables: + ! + real(kind=8) :: ionic, sion, tc, tx, c, xx, xx2, c1, c2, hh + real(kind=8) :: c3, c4, c5, c5a + real(kind=8) :: f11, f12, f13, f14, k1, k2, k3, k4, h2, h3 + real(kind=8) :: f21, f22, f23, ch1, ch2, ch3 + real(kind=8) :: f2a1, f2a2, f2a3, f2a4, f2b1, f2b2, f2b3, f2b4 + real(kind=8) :: ff11, ff12, ff13, ff14, ff15, ff16 + real(kind=8) :: g01, g02, g03, g04, g05, g06, g07, g08, g09 + real(kind=8) :: g10, g11, g12, g15, g16, g17, g18, g19, g20 + real(kind=8) :: g21, g22, g23 + ! + ! + if ((soln .EQV. .false.) .and. & + ((frst .EQV. .true. .and. calou .EQV. .true.) .or. & + (frst .EQV. .false. .and. calain .EQV. .true.)) ) then + ! + ! ## Calculate ionic strength of solution + ionic = h + na + nh4_t + cl + 4.0d0*so4_t + hso4 & + + no3 + 4.0d0*ca + pk + 4.0d0*mg + ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) + + ! ## Calculate the binary activity coefficients + sion = sqrt(ionic) + c3 = exp(-0.023d0*ionic*ionic*ionic) + c4 = -0.5107d0*sion + c5 = 1.0d0 + 0.1d0*ionic + c5a = 1.0d0 + sion + ! + ! ## Coefficients at 25C + if (ionic < 6.0d0) then + c = 1.0d0 + 0.12265d0*c3 + xx = c4/(1.0d0 + c*sion) + g01 = 0.39495d0 + 0.60505d0*c5**2.23 + g01 = log10(g01) + xx + + c = 1.0d0 + -0.01045d0*c3 + xx = c4/(1.0d0 + c*sion) + g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) + g02 = 2.0d0*log10(g02) + 2.0d0*xx + + c = 1.0d0 + -0.02145d0*c3 + xx = c4/(1.0d0 + c*sion) + g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) + g03 = log10(g03) + xx + + c = 1.0d0 + -0.01375d0*c3 + xx = c4/(1.0d0 + c*sion) + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + 2.0d0*xx + + c = 1.0d0 + -0.06325d0*c3 + xx = c4/(1.0d0 + c*sion) + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + + c = 1.0d0 + -0.0055d0*c3 + xx = c4/(1.0d0 + c*sion) + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + 2.0d0*xx + + c = 1.0d0 + 0.44d0*c3 + xx = c4/(1.0d0 + c*sion) + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + + c = 1.0d0 + 0.0451d0*c3 + xx = c4/(1.0d0 + c*sion) + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + + c = 1.0d0 + 0.143d0*c3 + xx = c4/(1.0d0 + c*sion) + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + + c = 1.0d0 + 0.33d0*c3 + xx = c4/(1.0d0 + c*sion) + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + + c = 1.0d0 + 0.05115d0*c3 + xx = c4/(1.0d0 + c*sion) + g15 = 0.31045d0 + 0.68955d0*c5**0.93 + g15 = 2.0d0*log10(g15) + 2.0d0*xx + + c = 1.0d0 + 0.132d0*c3 + xx = c4/(1.0d0 + c*sion) + g16 = 0.406d0 + 0.594d0*c5**2.40 + g16 = 2.0d0*log10(g16) + 2.0d0*xx + + c = 1.0d0 + -0.01375d0*c3 + xx = c4/(1.0d0 + c*sion) + g17 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g17 = 2.0d0*log10(g17) + 2.0d0*xx + + c = 1.0d0 + -0.12815d0*c3 + xx = c4/(1.0d0 + c*sion) + g19 = 0.09855d0 + 0.90145d0*c5**(-2.33) + g19 = log10(g19) + xx + + c = 1.0d0 + 0.0506d0*c3 + xx = c4/(1.0d0 + c*sion) + g20 = 0.3098d0 + 0.6902d0*c5**0.92 + g20 = log10(g20) + xx + + c = 1.0d0 + 0.00825d0*c3 + xx = c4/(1.0d0 + c*sion) + g21 = 0.25975d0 + 0.74025d0*c5**0.15 + g21 = 4.0d0*log10(g21) + 4.0d0*xx + + c = 1.0d0 + 0.1276d0*c3 + xx = c4/(1.0d0 + c*sion) + g22 = 0.4008d0 + 0.5992d0*c5**2.32 + g22 = 2.0d0*log10(g22) + 2.0d0*xx + + c = 1.0d0 + 0.1595d0*c3 + xx = c4/(1.0d0 + c*sion) + g23 = 0.4385d0 + 0.5615d0*c5**2.90 + g23 = 2.0d0*log10(g23) + 2.0d0*xx + else + xx = c4/(1.0d0 + sion) + xx2 = 2.0d0*xx + g01 = 0.39495d0 + 0.60505d0*c5**2.23 + g01 = log10(g01) + xx + g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) + g02 = 2.0d0*log10(g02) + xx2 + g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) + g03 = log10(g03) + xx + g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g04 = 2.0d0*log10(g04) + xx2 + g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) + g05 = log10(g05) + xx + g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) + g07 = 2.0d0*log10(g07) + xx2 + g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 + g08 = log10(g08) + xx + g06 = 0.3033d0 + 0.6967d0*c5**0.82 + g06 = log10(g06) + xx + g10 = 0.419d0 + 0.581d0*c5**2.60 + g10 = log10(g10) + xx + g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 + g11 = log10(g11) + xx + g15 = 0.31045d0 + 0.68955d0*c5**0.93 + g15 = 2.0d0*log10(g15) + xx2 + g16 = 0.406d0 + 0.594d0*c5**2.40 + g16 = 2.0d0*log10(g16) + xx2 + g17 = 0.23375d0 + 0.76625d0*c5**(-0.25) + g17 = 2.0d0*log10(g17) + xx2 + g19 = 0.09855d0 + 0.90145d0*c5**(-2.33) + g19 = log10(g19) + xx + g20 = 0.3098d0 + 0.6902d0*c5**0.92 + g20 = log10(g20) + xx + g21 = 0.25975d0 + 0.74025d0*c5**0.15 + g21 = 4.0d0*log10(g21) + 4.0d0*xx + g22 = 0.4008d0 + 0.5992d0*c5**2.32 + g22 = 2.0d0*log10(g22) + xx2 + g23 = 0.4385d0 + 0.5615d0*c5**2.90 + g23 = 2.0d0*log10(g23) + xx2 + end if + ! + ! ## Correct for temperature other than 298 K + tc = abs(t - 298.0d0) + tx = 0.005d0*(t - 273.0d0) + if (tc > 1.0d0) then + c1 = 1.125d0 - tx + c2 = (0.125d0 - tx)*(0.039d0*ionic**0.92 - 0.41d0*sion/c5a) + c3 = c2*2.0d0 + g01 = c1*g01 - c2 !g01 + g02 = c1*g02 - c3 !g02 + g03 = c1*g03 - c2 !g03 + g04 = c1*g04 - c3 !g04 + g05 = c1*g05 - c2 !g05 + g06 = c1*g06 - c2 !g06 + g07 = c1*g07 - c3 !g07 + g08 = c1*g08 - c2 !g08 + g10 = c1*g10 - c2 !g10 + g11 = c1*g11 - c2 !g11 + g15 = c1*g15 - c3 !g15 + g16 = c1*g16 - c3 !g16 + g17 = c1*g17 - c3 !g17 + g19 = c1*g19 - c2 !g19 + g20 = c1*g20 - c2 !g20 + g21 = c1*g21 - c2*4.0d0 !g21 + g22 = c1*g22 - c3 !g22 + g23 = c1*g23 - c3 !g23 + end if + ! + g09 = g06 + g08 - g11 + g12 = g01 + g08 - g11 + g18 = g08 + g20 - g11 + ! + ! ## Calculate multicomponent activity coefficients + hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a + f11 = cl/lwn + f12 = so4_t/lwn + f13 = hso4/lwn + f14 = no3/lwn + ch1 = 1.0d0/ionic + ch2 = 2.25d0/ionic + k1 = ch1*f11 + k2 = ch2*f12 + k3 = ch1*f13 + k4 = ch1*f14 + h2 = 2.0d0*hh + ! + ff11 = k1*(g11 + hh) + k2*(g07 + h2) + k3*(g08 + hh) + k4*(g10 + hh) + ff12 = k1*(g01 + hh) + k2*(g02 + h2) + k3*(g12 + hh) + k4*(g03 + hh) + ff13 = k1*(g06 + hh) + k2*(g04 + h2) + k3*(g09 + hh) + k4*(g05 + hh) + ! + f21 = h/lwn + f22 = na/lwn + f23 = nh4_t/lwn + k1 = ch1*f21 + k2 = ch1*f22 + k3 = ch1*f23 + f2a1 = k1*(g11 + hh) + k2*(g01 + hh) + k3*(g06 + hh) + f2a2 = ((ch2*f21)*(g07 + h2) + (ch2*f22)*(g02 + h2) + (ch2*f23)*(g04 + h2))*0.5d0 + f2a3 = k1*(g08 + hh) + k2*(g12 + hh) + k3*(g09 + hh) + f2a4 = k1*(g10 + hh) + k2*(g03 + hh) + k3*(g05 + hh) + ! + ch1 = 2.25d0/ionic + ch2 = 4.0d0/ionic + ch3 = 1.0d0/ionic + h3 = 4.0d0*hh + f11 = cl/lwn + f12 = so4_t/lwn + f13 = no3/lwn + f14 = hso4/lwn + k1 = ch1*f11 + k2 = ch2*f12 + k3 = ch1*f13 + ! + ff14 = (k1*(g16 + h2) + k2*h3 + k3*(g15 + h2))*0.5d0 + ff15 = (ch3*f11)*(g20 + hh) + (ch1*f12)*(g17 + h2) + (ch3*f14)*(g18 + hh) + & + (ch3*f13)*(g19 + hh) + ff16 = (k1*(g23 + h2) + k2*(g21 + h3) + k3*(g22 + h2))*0.5d0 + ! + f21 = ca/lwn + f22 = pk/lwn + f23 = mg/lwn + k1 = ch1*f21 + k2 = ch1*f23 + k3 = ch3*f22 + f2b1 = k1*(g16 + h2) + k3*(g20 + hh) + k2*(g23 + h2) + f2b2 = ((ch2*f21)*h3 + (ch1*f22)*(g17 + h2) + (ch2*f23)*(g21 + h3))*0.5d0 + f2b3 = (ch3*f22)*(g18 + hh) + f2b4 = k1*(g15 + h2) + k3*(g19 + hh) + k2*(g22 + h2) + ! + ! ## log10 of activity coefficients + gama(1) = ((ff12 + f2a1) * 0.5d0 - hh) ! NaCl + gama(2) = ((ff12 + f2a2) / 3.0d0 - hh)*2.0d0 ! Na2SO4 + gama(3) = ((ff12 + f2a4) * 0.5d0 - hh) ! NaNO3 + gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 + gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 + gama(6) = ((ff13 + f2a1) * 0.5d0 - hh) ! NH4Cl + gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 + gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 + gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 + gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 + gama(11) = ((ff11 + f2a1) * 0.5d0 - hh) ! HCl + gama(12) = ((ff12 + f2a3) * 0.5d0 - hh) ! NaHSO4 + gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape + gama(14) = 0.0d0 ! CaSO4 + gama(15) = ((ff14 + f2b4) / 3.0d0 - hh)*2.0d0 ! Ca(NO3)2 + gama(16) = ((ff14 + f2b1) / 3.0d0 - hh)*2.0d0 ! CaCl2 + gama(17) = ((ff15 + f2b2) / 3.0d0 - hh)*2.0d0 ! K2SO4 + gama(18) = ((ff15 + f2b3) * 0.5d0 - hh) ! KHSO4 + gama(19) = ((ff15 + f2b4) * 0.5d0 - hh) ! KNO3 + gama(20) = ((ff15 + f2b1) * 0.5d0 - hh) ! KCl + gama(21) = ((ff16 + f2b2) * 0.25d0- hh)*4.0d0 ! MgSO4 + gama(22) = ((ff16 + f2b4) / 3.0d0 - hh)*2.0d0 ! Mg(NO3)2 + gama(23) = ((ff16 + f2b1) / 3.0d0 - hh)*2.0d0 ! MgCl2 + + ! ## Convert log(gama) coefficients to gama + gama(1) = max(-5.0d0, min(gama(1), 5.0d0)) + gama(1) = 10.0**gama(1) + gama(2) = max(-5.0d0, min(gama(2), 5.0d0)) + gama(2) = 10.0**gama(2) + gama(3) = max(-5.0d0, min(gama(3), 5.0d0)) + gama(3) = 10.0**gama(3) + gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) + gama(4) = 10.0**gama(4) + gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) + gama(5) = 10.0**gama(5) + gama(6) = max(-5.0d0, min(gama(6), 5.0d0)) + gama(6) = 10.0**gama(6) + gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) + gama(7) = 10.0**gama(7) + gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) + gama(8) = 10.0**gama(8) + gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) + gama(9) = 10.0**gama(9) + gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) + gama(10) = 10.0**gama(10) + gama(11) = max(-5.0d0, min(gama(11), 5.0d0)) + gama(11) = 10.0**gama(11) + gama(12) = max(-5.0d0, min(gama(12), 5.0d0)) + gama(12) = 10.0**gama(12) + gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) + gama(13) = 10.0**gama(13) + gama(14) = 1.0d0 + gama(15) = max(-5.0d0, min(gama(15), 5.0d0)) + gama(15) = 10.0**gama(15) + gama(16) = max(-5.0d0, min(gama(16), 5.0d0)) + gama(16) = 10.0**gama(16) + gama(17) = max(-5.0d0, min(gama(17), 5.0d0)) + gama(17) = 10.0**gama(17) + gama(18) = max(-5.0d0, min(gama(18), 5.0d0)) + gama(18) = 10.0**gama(18) + gama(19) = max(-5.0d0, min(gama(19), 5.0d0)) + gama(19) = 10.0**gama(19) + gama(20) = max(-5.0d0, min(gama(20), 5.0d0)) + gama(20) = 10.0**gama(20) + gama(21) = max(-5.0d0, min(gama(21), 5.0d0)) + gama(21) = 10.0**gama(21) + gama(22) = max(-5.0d0, min(gama(22), 5.0d0)) + gama(22) = 10.0**gama(22) + gama(23) = max(-5.0d0, min(gama(23), 5.0d0)) + gama(23) = 10.0**gama(23) + end if + ! + return + end subroutine mach_hetp_calcact4b + + + + !############################################################################ + ! ## HETP Code + ! ## Finds the smallest positive real root of a cubic equation analytically + ! + ! ## Equation of the form: + ! ## x*x*x + a1*x*x + a2*x + a3 = 0.0d0 + ! ## Input: a1, a2, a3 + ! ## Output: root, islv ! Minimum positive real root + ! ! root set to 1.0d30 if no root is found + ! ! islv > 0 if no root is found + ! + ! ## Special case: quadratic equation solved separately + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_poly3v (a1, a2, a3, root, islv) + ! + implicit none + ! + real(kind=8), intent (in) :: a1 + real(kind=8), intent (in) :: a2 + real(kind=8), intent (in) :: a3 + real(kind=8), intent(out) :: root + integer(kind=4), intent(out) :: islv + ! + ! ## Local variables + ! + integer(kind=4) :: j, ix + real(kind=8) :: thet, coef, s, sqd, ssig, tsig, t, d, q, r, pi + real(kind=8) :: x(3) + real(kind=8), parameter :: expon = 1.0d0/3.0d0, zero = 0.0d0, & + thet1 = 120.0d0/180.0d0, thet2 = 240.0d0/180.0d0, & + eps = 1.d-50 + ! + pi = acos(-1.0d0) + islv = 1 + root = 0.0d0 + x = 0.0d0 + ! + ! #### 1. Quadratic equation + d = a1*a1 - 4.0d0*a2 + + if (abs(a3) <= eps) then + ix = 1 + x(1) = 0.0d0 + end if + ! + if (abs(a3) <= eps .and. d >= zero) then + ix = 3 + x(2) = 0.5d0*(-a1 + sqrt(d)) + x(3) = 0.5d0*(-a1 - sqrt(d)) + end if + ! + ! #### 2. Cubic equation + q = (3.0d0*a2 - a1*a1)/9.0d0 + r = (9.0d0*a1*a2 - 27.0d0*a3 - 2.0d0*a1*a1*a1)/54.0d0 + d = q*q*q + r*r + ! + ! ## Calculate roots * + ! ## i. d < 0, three real roots + if (abs(a3) > eps .and. d < -eps) then + ix = 3 + thet = expon*acos(r / sqrt(-q*q*q)) + coef = 2.0d0*sqrt(-q) + x(1) = coef*cos(thet) - expon*a1 + x(2) = coef*cos(thet + thet1*pi) - expon*a1 + x(3) = coef*cos(thet + thet2*pi) - expon*a1 + end if + ! + ! ## ii. d = 0, three real (one double) roots + if (abs(a3) > eps .and. d >= -eps .and. d <= eps) then + ix = 2 + s = (abs(r)**expon)*sign(1.0e0, real(r)) + x(1) = 2.0d0*s - expon*a1 + x(2) = -s - expon*a1 + end if + ! + ! ## iii. d > 0, one real root + if (abs(a3) > eps .and. d > eps) then + ix = 1 + sqd = sqrt(d) + ssig = sign(1.0e0, real(r + sqd)) + tsig = sign(1.0e0, real(r - sqd)) + s = ssig*(abs(r + sqd))**expon + t = tsig*(abs(r - sqd))**expon + x(1) = s + t - expon*a1 + end if + + ! #### Select the appropriate root + ! ## Note that islv == 1 if there are no positive roots with a magnitude > eps + islv = 1 + do j = 1, 3 + islv = min(islv, int(0.5d0*(1.0d0 + sign(1.0d0, (eps - x(j)))))) + end do + ! + ! ## Set roots with magnitude <= eps to 1.0d+30; then determine the smallest root + root = 1.0d30 + do j = 1, 3 + x(j) = max(x(j), 1.0d30*(0.5d0*(1.0d0 - sign(1.0d0, x(j) - eps)))) + end do + ! + do j = 1, 3 + root = min(root, x(j)) + end do + return + end + + + + !############################################################################ + ! ## HETP Code + ! ## Finds the smallest positive real root of a cubic equation analytically; + ! ## if no root is found analytically, an ITP search is then performed over + ! ## the range (tiny2, cl) + ! + ! ## Equation of the form: + ! ## x*x*x + a1*x*x + a2*x + a3 = 0.0d0 + ! ## Input: a1, a2, a3, cl + ! ## Output: root, islv ! Minimum positive real root + ! ! root set to 1.0d30 if no root is found + ! ! islv > 0 if no root is found + ! + ! ## Special case: quadratic equation solved separately + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_poly(a1, a2, a3, cl, root, islv) + ! + implicit none + ! + real(kind=8), intent (in) :: a1 + real(kind=8), intent (in) :: a2 + real(kind=8), intent (in) :: a3 + real(kind=8), intent (in) :: cl + real(kind=8), intent(out) :: root + integer(kind=4), intent(out) :: islv + ! + ! Local variables + ! + integer(kind=4), parameter :: jmax = 60 + integer(kind=4) :: j, ix + real(kind=8) :: thet, coef, s, sqd, ssig, tsig, t, d, q, r, pi + real(kind=8) :: x(3) + real(kind=8), parameter :: expon = 1.0d0/3.0d0, zero = 0.0d0, & + thet1 = 120.0d0/180.0d0, thet2 = 240.0d0/180.0d0, & + eps = 1.d-50 + real(kind=8) :: y1, x1, y2, x2, nh, nmax, eps2!, k1, k2, + real(kind=8) :: xf, xh, xt, sigma, delta, rr, x3, y3, gx2, gx, u1 + integer(kind=4) :: k + real(kind=8) :: rooteval, ndiv, dx + logical(kind=4) :: condition, ITPsearch, bisect + ! + bisect = .true. + ! + pi = acos(-1.0d0) + islv = 1 + root = 0.0d0 + x = 0.0d0 + ! + ! #### 1. Quadratic equation + d = a1*a1 - 4.0d0*a2 + ! + if (abs(a3) <= eps) then + ix = 1 + x(1) = 0.0d0 + end if + ! + if (abs(a3) <= eps .and. d >= zero) then + ix = 3 + x(2) = 0.5d0*(-a1 + sqrt(d)) + x(3) = 0.5d0*(-a1 - sqrt(d)) + end if + ! + ! #### 2. Cubic equation + q = (3.0d0*a2 - a1*a1)/9.0d0 + r = (9.0d0*a1*a2 - 27.0d0*a3 - 2.0d0*a1*a1*a1)/54.0d0 + d = q*q*q + r*r + ! + ! ## Calculate roots + ! ## i. d < 0, three real roots + if (abs(a3) > eps .and. d < -eps) then + ix = 3 + thet = expon*acos(r / sqrt(-q*q*q)) + coef = 2.0d0*sqrt(-q) + x(1) = coef*cos(thet) - expon*a1 + x(2) = coef*cos(thet + thet1*pi) - expon*a1 + x(3) = coef*cos(thet + thet2*pi) - expon*a1 + end if + ! + ! ## ii. d = 0, three real (one double) roots + if (abs(a3) > eps .and. d >= -eps .and. d <= eps) then + ix = 2 + s = (abs(r)**expon)*sign(1.0e0, real(r)) + x(1) = 2.0d0*s - expon*a1 + x(2) = -s - expon*a1 + end if + ! + ! ## iii. d > 0, one real root + if (abs(a3) > eps .and. d > eps) then + ix = 1 + sqd = sqrt(d) + ssig = sign(1.0e0, real(r + sqd)) + tsig = sign(1.0e0, real(r - sqd)) + s = ssig*(abs(r + sqd))**expon + t = tsig*(abs(r - sqd))**expon + x(1) = s + t - expon*a1 + end if + + ! #### Select the appropriate root + ! ## Note that islv == 1 if there are no positive roots with a magnitude > eps + islv = 1 + do j = 1, 3 + islv = min(islv, int(0.5d0*(1.0d0 + sign(1.0d0, (eps - x(j)))))) + end do + ! + ! ## Set roots with magnitude <= eps to 1.0d+30; then determine the smallest root + root = 1.0d30 + do j = 1, 3 + x(j) = max(x(j), 1.0d30*(0.5d0*(1.0d0 - sign(1.0d0, x(j) - eps)))) + end do + ! + do j = 1, 3 + root = min(root, x(j)) + end do + ! + ITPsearch = .false. + ! ## No root less than 1.0d29 was found; perform ITP search instead + if (root > 1.0d29) then + rooteval = 0 + ndiv = 5 + x1 = 1.0d-28 !Lower bound is tiny2 + y1 = x1*x1*x1 + a1*x1*x1 + a2*x1 + a3 + dx = cl/real(ndiv-1) !Upper bound is total chlorine + condition= .false. + ! + ! ## Subdivision search for a root + do while (rooteval < 5 .and. condition .EQV. .false.) + x2 = x1 + dx + y2 = x2*x2*x2 + a1*x2*x2 + a2*x2 + a3 + ! + ! ## Test for a sign change + if (y1 == 0.0d0) then + ! ## 1. x1 is a root + condition = .true. + ITPsearch = .false. + root = x1 + islv = 0 + elseif (y2 == 0.0d0) then + ! ## 2. x2 is a root + condition = .true. + ITPsearch = .false. + root = x2 + islv = 0 + elseif (y1*y2 < 0.0d0) then + ! ## 3. Interval has a sign change + condition = .true. + ITPsearch = .true. + elseif (y1*y2 > 0.0d0) then + ! ## 4. No sign change; continue onto next interval + x1 = x2 + y1 = y2 + ITPsearch = .false. + end if + ! + rooteval = rooteval + 1 + end do + end if + ! + ! k1 = 0.1d0 + ! k2 = 2.0d0 + eps2 = 1.0d-9 + ! + ! #### Perform an ITP search to refine the root, if a root exists + if (bisect .and. ITPsearch) then + gx = x2 - x1 + gx2 = (x1+x2)*0.5d0 + u1 = 0.2d0/gx + nh = log10(abs(gx/(2.0d0*gx2*eps2))) / 0.301029995663981195d0 + nmax = nint(nh) + 2 + k = 0 + ! + do while (abs(x2-x1) > x2*eps2 .and. k < jmax) + gx = x2 - x1 + xh = 0.5d0*(x1 + x2) + rr = max(gx2*eps*2.d0**(real(nmax - k)) - 0.5d0*gx, 0.0d0) + delta= u1*(max(gx, 0.0d0))**2.0d0 + xf = max((y2*x1 - y1*x2) / (y2 - y1), 0.0d0) + sigma = sign(1.0d0, xh - xf) + ! + if (delta <= abs(xh-xf)) then + xt = xf + sigma*delta + else + xt = xh + end if + ! + if (abs(xt - xh) <= rr) then + x3 = xt + else + x3 = xh - sigma*rr + end if + ! + y3 = x3*x3*x3 + a1*x3*x3 + a2*x3 + a3 + ! + if (y3 > 0.0d0) then + x2 = x3 + y2 = y3 + elseif (y3 < 0.0d0) then + x1 = x3 + y1 = y3 + else + x1 = x3 + x2 = x3 + end if + ! + k = k + 1 + end do + ! + root = x3 + islv = 0 + end if + return + end subroutine mach_hetp_poly + + + + !############################################################################ + ! ## HETP Code + ! ## Adjusts to force mass balance for volatile species and sulfate + ! ## Calculate EXCESS mass only, remove excess, first from aerosol (liquid) + ! ## phase, second from the gas phase, and third from the solid phase + ! + ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) + ! ## Written by Stefan Miller + ! + ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality + ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) + !############################################################################ + subroutine mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & + nh4_t, gnh3, cl_t, ghcl, caso4) + ! + use mach_hetp_mod, only: tiny2 + implicit none + ! + real(kind=8), intent (in) :: so4 + real(kind=8), intent (in) :: nh4 + real(kind=8), intent (in) :: no3 + real(kind=8), intent (in) :: cl + real(kind=8), intent(inout) :: so4_t + real(kind=8), intent(inout) :: hso4 + real(kind=8), intent(inout) :: caso4 + real(kind=8), intent(inout) :: no3_t + real(kind=8), intent(inout) :: ghno3 + real(kind=8), intent(inout) :: nh4_t + real(kind=8), intent(inout) :: gnh3 + real(kind=8), intent(inout) :: cl_t + real(kind=8), intent(inout) :: ghcl + ! + ! ## Local variables: + real(kind=8) :: exnh4, exno3, exs4, excl + ! + exnh4 = 0.0d0 + exno3 = 0.0d0 + exs4 = 0.0d0 + excl = 0.0d0 + ! + ! ## Calculate excess as: solution - input (units mol/m3 for all species) + ! 1. Expected: NH4+(aq) + NH3(g) - TA = 0.0d0 + exnh4 = max(nh4_t + gnh3 - nh4, 0.0d0) + ! + ! 2. Expected: NO3-(aq) + HNO3(g) - TN = 0.0d0 + exno3 = max(no3_t + ghno3 - no3, 0.0d0) + ! + ! 3. Expected: Cl-(aq) + HCl(g) - TCl = 0.0d0 + excl = max(cl_t + ghcl - cl , 0.0d0) + ! + ! 4. Expected: SO4--(aq) + HSO4-(aq) + CaSO4(s) - TS = 0.0d0 + exs4 = max(so4_t + hso4 + caso4 - so4, 0.0d0) + ! + ! + ! ## 1. Adjust ammonium + if (exnh4 >= tiny2) then + if (nh4_t > exnh4) then + nh4_t = max(nh4_t - exnh4, 0.0d0) + else + exnh4 = max(exnh4 - nh4_t, 0.0d0) + nh4_t = 0.0d0 + gnh3 = max(gnh3 - exnh4, 0.0d0) + end if + end if + ! + ! ## 2. Adjust nitrate + if (exno3 >= tiny2) then + if (no3_t > exno3) then + no3_t = max(no3_t - exno3, 0.0d0) + else + exno3 = max(exno3 - no3_t, 0.0d0) + no3_t = 0.0d0 + ghno3 = max(ghno3 - exno3, 0.0d0) + end if + end if + ! + ! ## 3. Adjust chloride + if (excl >= tiny2) then + if (cl_t > excl) then + cl_t = max(cl_t - excl, 0.0d0) + else + excl = max(excl - cl_t, 0.0d0) + cl_t = 0.0d0 + ghcl = max(ghcl - excl, 0.0d0) + end if + end if + ! + ! ## 4. Adjust sulfate + if (exs4 >= tiny2) then + if (hso4 > exs4) then + hso4 = max(hso4 - exs4, 0.0d0) + else + exs4 = max(exs4 - hso4, 0.0d0) + hso4 = 0.0d0 + ! + if (so4_t > exs4) then + so4_t = max(so4_t - exs4, 0.0d0) + else + exs4 = max(exs4 - so4_t, 0.0d0) + so4_t = 0.0d0 + ! + if (caso4 > exs4) then + caso4 = max(caso4 - exs4, 0.0d0) + else + exs4 = max(exs4 - caso4, 0.0d0) + caso4 = 0.0d0 + end if + end if + end if + end if + ! + return + end subroutine mach_hetp_adjust +end module hetp_mod diff --git a/GeosCore/input_mod.F90 b/GeosCore/input_mod.F90 index 20c6b154f..14be7453a 100644 --- a/GeosCore/input_mod.F90 +++ b/GeosCore/input_mod.F90 @@ -1709,6 +1709,19 @@ SUBROUTINE Config_Aerosol( Config, Input_Opt, RC ) ENDIF Input_Opt%LDSTUP = v_bool + !------------------------------------------------------------------------ + ! Use HETP instead of ISORROPIA II for ATE? + !------------------------------------------------------------------------ + key = "aerosols%inorganic%use_hetp" + v_bool = MISSING_BOOL + CALL QFYAML_Add_Get( Config, TRIM( key ), v_bool, "", RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error parsing ' // TRIM( key ) // '!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + Input_Opt%LHETP = v_bool + !------------------------------------------------------------------------ ! Use online sea-salt aerosols? !------------------------------------------------------------------------ @@ -1895,6 +1908,7 @@ SUBROUTINE Config_Aerosol( Config, Input_Opt, RC ) ! Turn off switches for simulations that don't use aerosols IF ( ( .not. Input_Opt%ITS_A_FULLCHEM_SIM ) .and. & ( .not. Input_Opt%ITS_AN_AEROSOL_SIM ) ) THEN + Input_Opt%LHETP = .FALSE. Input_Opt%LSULF = .FALSE. Input_Opt%LMETALCATSO2 = .FALSE. Input_Opt%LCARB = .FALSE. @@ -1916,6 +1930,7 @@ SUBROUTINE Config_Aerosol( Config, Input_Opt, RC ) IF ( Input_Opt%amIRoot ) THEN WRITE( 6, 90 ) 'AEROSOL SETTINGS' WRITE( 6, 95 ) '----------------' + WRITE( 6, 100 ) 'Use HETP for equilibrium? : ', Input_Opt%LHETP WRITE( 6, 100 ) 'Online SULFATE AEROSOLS? : ', Input_Opt%LSULF WRITE( 6, 100 ) 'Metal catalyzed SO2 ox.? : ', Input_Opt%LMETALCATSO2 WRITE( 6, 100 ) 'Online CARBON AEROSOLS? : ', Input_Opt%LCARB diff --git a/GeosCore/mach_hetp_mod.F90 b/GeosCore/mach_hetp_mod.F90 new file mode 100644 index 000000000..e0864018e --- /dev/null +++ b/GeosCore/mach_hetp_mod.F90 @@ -0,0 +1,495 @@ +!######### HETP: AEROSOL THERMODYNAMIC EQUILIBRIUM OF THE ################### +!######### NH4-SO4-NO3-Na-Cl-Ca-Mg-K SYSTEM ################### +! +!Copyright (C) 2023 Stefan Miller, Environment and Climate Change Canada +! Contact: Stefan.Miller (at) ec.gc.ca +! +! This program is free software: you can redistribute it and/or modify +! it under the terms of the GNU General Public License as published by +! the Free Software Foundation, either version 3 of the License, or +! (at your option) any later version. +! +! This program is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU General Public License for more details. +! +! You should have received a copy of the GNU General Public License +! along with this program. If not, see . +! +!############################################################################ +! ## HETP Code +! ## Module file for HETP code +! ## Contains: (1) parameters related to ITP/activity coefficient calculations +! ## (2) ZSR data arrays +! ## (3) other parameters +! +! ## Copyright 2023, Environment and Climate Change Canada (ECCC) +! ## Written by Stefan Miller +!############################################################################ +module mach_hetp_mod + implicit none + save +! +! ################## +! ### Parameters ### +! ################## + real(kind=8), parameter :: tstd = 298.15d0 + real(kind=8), parameter :: smrt = 1.0d-05 + real(kind=8), parameter :: tiny = 1.0d-20 ! Lower limit for input species and ions + real(kind=8), parameter :: tiny2 = 1.0d-28 ! Lower limit for gas concentrations + real(kind=8), parameter :: r = 82.0567d-6 ! = 8.3144d0/1.01325d05, gas constant, atm->pa + real(kind=8), parameter :: log10of2 = 0.301029995663981195d0 ! = log10(2.0d0) +! +! +! ############################################### +! ### Activity coefficient and ITP parameters ### +! ############################################### + integer(kind=4), parameter :: ndiv = 5 ! Root bracketing: Number of subdivisions searched for sign change + integer(kind=4), parameter :: maxit = 100 ! Max number of iterations for ITP + real(kind=8), parameter :: eps = 1.0d-9 ! Convergence criteria: ITP + integer(kind=4), parameter :: nsweep = 4 ! Max number of iterations for activity coefficients + real(kind=8), parameter :: epsact = 1.0d-6 ! Convergence criteria: activity coefficients +! +! +! ####################################################### +! #### Define ZSR arrays (identical to ISORROPIA II) #### +! ####################################################### +! ### 1. Sodium Chloride + real(kind=8) :: awsc(100) = (/ & + 28.16d0, 28.16d0, 28.16d0, 28.16d0, 28.16d0, & + 28.16d0, 28.16d0, 28.16d0, 28.16d0, 28.16d0, & + 27.17d0, 26.27d0, 25.45d0, 24.69d0, 23.98d0, & + 23.33d0, 22.72d0, 22.14d0, 21.59d0, 21.08d0, & + 20.58d0, 20.12d0, 19.67d0, 19.24d0, 18.82d0, & + 18.43d0, 18.04d0, 17.67d0, 17.32d0, 16.97d0, & + 16.63d0, 16.31d0, 15.99d0, 15.68d0, 15.38d0, & + 15.08d0, 14.79d0, 14.51d0, 14.24d0, 13.97d0, & + 13.70d0, 13.44d0, 13.18d0, 12.93d0, 12.68d0, & + 12.44d0, 12.20d0, 11.96d0, 11.73d0, 11.50d0, & + 11.27d0, 11.05d0, 10.82d0, 10.60d0, 10.38d0, & + 10.16d0, 9.95d0, 9.74d0, 9.52d0, 9.31d0, & + 9.10d0, 8.89d0, 8.69d0, 8.48d0, 8.27d0, & + 8.07d0, 7.86d0, 7.65d0, 7.45d0, 7.24d0, & + 7.04d0, 6.83d0, 6.62d0, 6.42d0, 6.21d0, & + 6.00d0, 5.79d0, 5.58d0, 5.36d0, 5.15d0, & + 4.93d0, 4.71d0, 4.48d0, 4.26d0, 4.03d0, & + 3.80d0, 3.56d0, 3.32d0, 3.07d0, 2.82d0, & + 2.57d0, 2.30d0, 2.04d0, 1.76d0, 1.48d0, & + 1.20d0, 0.91d0, 0.61d0, 0.30d0, 0.1d0/) +! +! ### 2. Sodium Sulfate + real(kind=8) :: awss(100) = (/ & + 24.10d0, 24.10d0, 24.10d0, 24.10d0, 24.10d0, & + 24.10d0, 24.10d0, 24.10d0, 24.10d0, 24.10d0, & + 23.17d0, 22.34d0, 21.58d0, 20.90d0, 20.27d0, & + 19.69d0, 19.15d0, 18.64d0, 18.17d0, 17.72d0, & + 17.30d0, 16.90d0, 16.52d0, 16.16d0, 15.81d0, & + 15.48d0, 15.16d0, 14.85d0, 14.55d0, 14.27d0, & + 13.99d0, 13.73d0, 13.47d0, 13.21d0, 12.97d0, & + 12.73d0, 12.50d0, 12.27d0, 12.05d0, 11.84d0, & + 11.62d0, 11.42d0, 11.21d0, 11.01d0, 10.82d0, & + 10.63d0, 10.44d0, 10.25d0, 10.07d0, 9.89d0, & + 9.71d0, 9.53d0, 9.36d0, 9.19d0, 9.02d0, & + 8.85d0, 8.68d0, 8.51d0, 8.35d0, 8.19d0, & + 8.02d0, 7.86d0, 7.70d0, 7.54d0, 7.38d0, & + 7.22d0, 7.06d0, 6.90d0, 6.74d0, 6.58d0, & + 6.42d0, 6.26d0, 6.10d0, 5.94d0, 5.78d0, & + 5.61d0, 5.45d0, 5.28d0, 5.11d0, 4.93d0, & + 4.76d0, 4.58d0, 4.39d0, 4.20d0, 4.01d0, & + 3.81d0, 3.60d0, 3.39d0, 3.16d0, 2.93d0, & + 2.68d0, 2.41d0, 2.13d0, 1.83d0, 1.52d0, & + 1.19d0, 0.86d0, 0.54d0, 0.25d0, 0.1d0/) +! +! ### 3. Sodium Nitrate + real(kind=8) :: awsn(100) = (/ & + 394.54d0, 394.54d0, 394.54d0, 394.54d0, 394.54d0, & + 394.54d0, 394.54d0, 394.54d0, 394.54d0, 394.54d0, & + 338.91d0, 293.01d0, 254.73d0, 222.61d0, 195.56d0, & + 172.76d0, 153.53d0, 137.32d0, 123.65d0, 112.08d0, & + 102.26d0, 93.88d0, 86.68d0, 80.45d0, 75.02d0, & + 70.24d0, 66.02d0, 62.26d0, 58.89d0, 55.85d0, & + 53.09d0, 50.57d0, 48.26d0, 46.14d0, 44.17d0, & + 42.35d0, 40.65d0, 39.06d0, 37.57d0, 36.17d0, & + 34.85d0, 33.60d0, 32.42d0, 31.29d0, 30.22d0, & + 29.20d0, 28.22d0, 27.28d0, 26.39d0, 25.52d0, & + 24.69d0, 23.89d0, 23.12d0, 22.37d0, 21.65d0, & + 20.94d0, 20.26d0, 19.60d0, 18.96d0, 18.33d0, & + 17.72d0, 17.12d0, 16.53d0, 15.96d0, 15.40d0, & + 14.85d0, 14.31d0, 13.78d0, 13.26d0, 12.75d0, & + 12.25d0, 11.75d0, 11.26d0, 10.77d0, 10.29d0, & + 9.82d0, 9.35d0, 8.88d0, 8.42d0, 7.97d0, & + 7.52d0, 7.07d0, 6.62d0, 6.18d0, 5.75d0, & + 5.32d0, 4.89d0, 4.47d0, 4.05d0, 3.64d0, & + 3.24d0, 2.84d0, 2.45d0, 2.07d0, 1.70d0, & + 1.34d0, 0.99d0, 0.65d0, 0.31d0, 0.1d0/) +! +! ### 4. Ammonium Sulfate +! awas = ammonium sulfate + real(kind=8) :: awas(100) = (/ & + 187.72d0, 187.72d0, 187.72d0, 187.72d0, 187.72d0, & + 187.72d0, 187.72d0, 187.72d0, 187.72d0, 187.72d0, & + 158.13d0, 134.41d0, 115.37d0, 100.10d0, 87.86d0, & + 78.00d0, 70.00d0, 63.45d0, 58.02d0, 53.46d0, & + 49.59d0, 46.26d0, 43.37d0, 40.84d0, 38.59d0, & + 36.59d0, 34.79d0, 33.16d0, 31.67d0, 30.31d0, & + 29.07d0, 27.91d0, 26.84d0, 25.84d0, 24.91d0, & + 24.03d0, 23.21d0, 22.44d0, 21.70d0, 21.01d0, & + 20.34d0, 19.71d0, 19.11d0, 18.54d0, 17.99d0, & + 17.46d0, 16.95d0, 16.46d0, 15.99d0, 15.54d0, & + 15.10d0, 14.67d0, 14.26d0, 13.86d0, 13.47d0, & + 13.09d0, 12.72d0, 12.36d0, 12.01d0, 11.67d0, & + 11.33d0, 11.00d0, 10.68d0, 10.37d0, 10.06d0, & + 9.75d0, 9.45d0, 9.15d0, 8.86d0, 8.57d0, & + 8.29d0, 8.01d0, 7.73d0, 7.45d0, 7.18d0, & + 6.91d0, 6.64d0, 6.37d0, 6.10d0, 5.83d0, & + 5.56d0, 5.29d0, 5.02d0, 4.74d0, 4.47d0, & + 4.19d0, 3.91d0, 3.63d0, 3.34d0, 3.05d0, & + 2.75d0, 2.45d0, 2.14d0, 1.83d0, 1.51d0, & + 1.19d0, 0.87d0, 0.56d0, 0.26d0, 0.1d0/) +! +! ### 5. Ammonium Nitrate + real(kind=8) :: awan(100) = (/ & + 960.19d0, 960.19d0, 960.19d0, 960.19d0, 960.19d0, & + 960.19d0, 960.19d0, 960.19d0, 960.19d0, 960.19d0, & + 853.15d0, 763.85d0, 688.20d0, 623.27d0, 566.92d0, & + 517.54d0, 473.91d0, 435.06d0, 400.26d0, 368.89d0, & + 340.48d0, 314.63d0, 291.01d0, 269.36d0, 249.46d0, & + 231.11d0, 214.17d0, 198.50d0, 184.00d0, 170.58d0, & + 158.15d0, 146.66d0, 136.04d0, 126.25d0, 117.24d0, & + 108.97d0, 101.39d0, 94.45d0, 88.11d0, 82.33d0, & + 77.06d0, 72.25d0, 67.85d0, 63.84d0, 60.16d0, & + 56.78d0, 53.68d0, 50.81d0, 48.17d0, 45.71d0, & + 43.43d0, 41.31d0, 39.32d0, 37.46d0, 35.71d0, & + 34.06d0, 32.50d0, 31.03d0, 29.63d0, 28.30d0, & + 27.03d0, 25.82d0, 24.67d0, 23.56d0, 22.49d0, & + 21.47d0, 20.48d0, 19.53d0, 18.61d0, 17.72d0, & + 16.86d0, 16.02d0, 15.20d0, 14.41d0, 13.64d0, & + 12.89d0, 12.15d0, 11.43d0, 10.73d0, 10.05d0, & + 9.38d0, 8.73d0, 8.09d0, 7.47d0, 6.86d0, & + 6.27d0, 5.70d0, 5.15d0, 4.61d0, 4.09d0, & + 3.60d0, 3.12d0, 2.66d0, 2.23d0, 1.81d0, & + 1.41d0, 1.03d0, 0.67d0, 0.32d0, 0.1d0/) +! +! ### 6. Ammonium Chloride + real(kind=8) :: awac(100) = (/ & + 1209.00d0, 1209.00d0, 1209.00d0, 1209.00d0, 1209.00d0,& + 1209.00d0, 1209.00d0, 1209.00d0, 1209.00d0, 1209.00d0,& + 1067.60d0, 949.27d0, 848.62d0, 761.82d0, 686.04d0,& + 619.16d0, 559.55d0, 505.92d0, 457.25d0, 412.69d0,& + 371.55d0, 333.21d0, 297.13d0, 262.81d0, 229.78d0,& + 197.59d0, 165.98d0, 135.49d0, 108.57d0, 88.29d0,& + 74.40d0, 64.75d0, 57.69d0, 52.25d0, 47.90d0,& + 44.30d0, 41.27d0, 38.65d0, 36.36d0, 34.34d0,& + 32.52d0, 30.88d0, 29.39d0, 28.02d0, 26.76d0,& + 25.60d0, 24.51d0, 23.50d0, 22.55d0, 21.65d0,& + 20.80d0, 20.00d0, 19.24d0, 18.52d0, 17.83d0,& + 17.17d0, 16.54d0, 15.93d0, 15.35d0, 14.79d0,& + 14.25d0, 13.73d0, 13.22d0, 12.73d0, 12.26d0,& + 11.80d0, 11.35d0, 10.92d0, 10.49d0, 10.08d0,& + 9.67d0, 9.28d0, 8.89d0, 8.51d0, 8.14d0,& + 7.77d0, 7.42d0, 7.06d0, 6.72d0, 6.37d0,& + 6.03d0, 5.70d0, 5.37d0, 5.05d0, 4.72d0,& + 4.40d0, 4.08d0, 3.77d0, 3.45d0, 3.14d0,& + 2.82d0, 2.51d0, 2.20d0, 1.89d0, 1.57d0,& + 1.26d0, 0.94d0, 0.62d0, 0.31d0, 0.1d0/) +! +! ### 7. Sulfuric Acid + real(kind=8) :: awsa(100) = (/ & + 34.00d0, 33.56d0, 29.22d0, 26.55d0, 24.61d0, & + 23.11d0, 21.89d0, 20.87d0, 19.99d0, 18.45d0, & + 17.83d0, 17.26d0, 16.73d0, 16.25d0, 15.80d0, & + 15.38d0, 14.98d0, 14.61d0, 14.26d0, 13.93d0, & + 13.61d0, 13.30d0, 13.01d0, 12.73d0, 12.47d0, & + 12.21d0, 11.96d0, 11.72d0, 11.49d0, 11.26d0, & + 11.04d0, 10.83d0, 10.62d0, 10.42d0, 10.23d0, & + 10.03d0, 9.85d0, 9.67d0, 9.49d0, 9.31d0, & + 9.14d0, 8.97d0, 8.81d0, 8.65d0, 8.49d0, & + 8.33d0, 8.18d0, 8.02d0, 7.87d0, 7.73d0, & + 7.58d0, 7.44d0, 7.29d0, 7.15d0, 7.01d0, & + 6.88d0, 6.74d0, 6.61d0, 6.47d0, 6.34d0, & + 6.21d0, 6.07d0, 5.94d0, 5.81d0, 5.68d0, & + 5.55d0, 5.43d0, 5.30d0, 5.17d0, 5.04d0, & + 4.91d0, 4.78d0, 4.65d0, 4.52d0, 4.39d0, & + 4.26d0, 4.13d0, 4.00d0, 3.86d0, 3.73d0, & + 3.59d0, 3.45d0, 3.31d0, 3.17d0, 3.02d0, & + 2.87d0, 2.71d0, 2.56d0, 2.39d0, 2.22d0, & + 2.05d0, 1.87d0, 1.68d0, 1.48d0, 1.27d0, & + 1.04d0, 0.80d0, 0.55d0, 0.28d0, 0.1d0/) +! +! ### 8. Ammonium Bisulfate + real(kind=8) :: awab(100) = (/ & + 312.84d0, 312.84d0, 312.84d0, 312.84d0, 312.84d0, & + 312.84d0, 312.84d0, 312.84d0, 312.84d0, 312.84d0, & + 271.43d0, 237.19d0, 208.52d0, 184.28d0, 163.64d0, & + 145.97d0, 130.79d0, 117.72d0, 106.42d0, 96.64d0, & + 88.16d0, 80.77d0, 74.33d0, 68.67d0, 63.70d0, & + 59.30d0, 55.39d0, 51.89d0, 48.76d0, 45.93d0, & + 43.38d0, 41.05d0, 38.92d0, 36.97d0, 35.18d0, & + 33.52d0, 31.98d0, 30.55d0, 29.22d0, 27.98d0, & + 26.81d0, 25.71d0, 24.67d0, 23.70d0, 22.77d0, & + 21.90d0, 21.06d0, 20.27d0, 19.52d0, 18.80d0, & + 18.11d0, 17.45d0, 16.82d0, 16.21d0, 15.63d0, & + 15.07d0, 14.53d0, 14.01d0, 13.51d0, 13.02d0, & + 12.56d0, 12.10d0, 11.66d0, 11.24d0, 10.82d0, & + 10.42d0, 10.04d0, 9.66d0, 9.29d0, 8.93d0, & + 8.58d0, 8.24d0, 7.91d0, 7.58d0, 7.26d0, & + 6.95d0, 6.65d0, 6.35d0, 6.05d0, 5.76d0, & + 5.48d0, 5.20d0, 4.92d0, 4.64d0, 4.37d0, & + 4.09d0, 3.82d0, 3.54d0, 3.27d0, 2.99d0, & + 2.70d0, 2.42d0, 2.12d0, 1.83d0, 1.52d0, & + 1.22d0, 0.90d0, 0.59d0, 0.28d0, 0.1d0/) +! +! ### 9. Sodium Bisulfate + real(kind=8) :: awsb(100) = (/ & + 55.99d0, 55.99d0, 55.99d0, 55.99d0, 55.99d0, & + 55.99d0, 55.99d0, 55.99d0, 55.99d0, 55.99d0, & + 53.79d0, 51.81d0, 49.99d0, 48.31d0, 46.75d0, & + 45.28d0, 43.91d0, 42.62d0, 41.39d0, 40.22d0, & + 39.10d0, 38.02d0, 36.99d0, 36.00d0, 35.04d0, & + 34.11d0, 33.21d0, 32.34d0, 31.49d0, 30.65d0, & + 29.84d0, 29.04d0, 28.27d0, 27.50d0, 26.75d0, & + 26.01d0, 25.29d0, 24.57d0, 23.87d0, 23.17d0, & + 22.49d0, 21.81d0, 21.15d0, 20.49d0, 19.84d0, & + 19.21d0, 18.58d0, 17.97d0, 17.37d0, 16.77d0, & + 16.19d0, 15.63d0, 15.08d0, 14.54d0, 14.01d0, & + 13.51d0, 13.01d0, 12.53d0, 12.07d0, 11.62d0, & + 11.19d0, 10.77d0, 10.36d0, 9.97d0, 9.59d0, & + 9.23d0, 8.87d0, 8.53d0, 8.20d0, 7.88d0, & + 7.57d0, 7.27d0, 6.97d0, 6.69d0, 6.41d0, & + 6.14d0, 5.88d0, 5.62d0, 5.36d0, 5.11d0, & + 4.87d0, 4.63d0, 4.39d0, 4.15d0, 3.92d0, & + 3.68d0, 3.45d0, 3.21d0, 2.98d0, 2.74d0, & + 2.49d0, 2.24d0, 1.98d0, 1.72d0, 1.44d0, & + 1.16d0, 0.87d0, 0.57d0, 0.28d0, 0.1d0/) +! +! ### 10. (NH4)3H(SO4)2 + real(kind=8) :: awlc(100) = (/ & + 125.37d0, 125.37d0, 125.37d0, 125.37d0, 125.37d0, & + 125.37d0, 125.37d0, 125.37d0, 125.37d0, 125.37d0, & + 110.10d0, 97.50d0, 86.98d0, 78.08d0, 70.49d0, & + 63.97d0, 58.33d0, 53.43d0, 49.14d0, 45.36d0, & + 42.03d0, 39.07d0, 36.44d0, 34.08d0, 31.97d0, & + 30.06d0, 28.33d0, 26.76d0, 25.32d0, 24.01d0, & + 22.81d0, 21.70d0, 20.67d0, 19.71d0, 18.83d0, & + 18.00d0, 17.23d0, 16.50d0, 15.82d0, 15.18d0, & + 14.58d0, 14.01d0, 13.46d0, 12.95d0, 12.46d0, & + 11.99d0, 11.55d0, 11.13d0, 10.72d0, 10.33d0, & + 9.96d0, 9.60d0, 9.26d0, 8.93d0, 8.61d0, & + 8.30d0, 8.00d0, 7.72d0, 7.44d0, 7.17d0, & + 6.91d0, 6.66d0, 6.42d0, 6.19d0, 5.96d0, & + 5.74d0, 5.52d0, 5.31d0, 5.11d0, 4.91d0, & + 4.71d0, 4.53d0, 4.34d0, 4.16d0, 3.99d0, & + 3.81d0, 3.64d0, 3.48d0, 3.31d0, 3.15d0, & + 2.99d0, 2.84d0, 2.68d0, 2.53d0, 2.37d0, & + 2.22d0, 2.06d0, 1.91d0, 1.75d0, 1.60d0, & + 1.44d0, 1.28d0, 1.12d0, 0.95d0, 0.79d0, & + 0.62d0, 0.45d0, 0.29d0, 0.14d0, 0.1d0/) +! +! ### 11. Calcium Nitrate + real(kind=8) :: awcn(100) = (/ & + 32.89d0, 31.46d0, 30.12d0, 28.84d0, 27.64d0, & + 26.51d0, 25.44d0, 24.44d0, 23.49d0, 22.59d0, & + 21.75d0, 20.96d0, 20.22d0, 19.51d0, 18.85d0, & + 18.23d0, 17.64d0, 17.09d0, 16.56d0, 16.07d0, & + 15.61d0, 15.17d0, 14.75d0, 14.36d0, 13.99d0, & + 13.63d0, 13.30d0, 12.98d0, 12.68d0, 12.39d0, & + 12.11d0, 11.84d0, 11.59d0, 11.35d0, 11.11d0, & + 10.88d0, 10.66d0, 10.45d0, 10.24d0, 10.04d0, & + 9.84d0, 9.65d0, 9.46d0, 9.28d0, 9.10d0, & + 8.92d0, 8.74d0, 8.57d0, 8.40d0, 8.23d0, & + 8.06d0, 7.90d0, 7.73d0, 7.57d0, 7.41d0, & + 7.25d0, 7.10d0, 6.94d0, 6.79d0, 6.63d0, & + 6.48d0, 6.33d0, 6.18d0, 6.03d0, 5.89d0, & + 5.74d0, 5.60d0, 5.46d0, 5.32d0, 5.17d0, & + 5.04d0, 4.90d0, 4.76d0, 4.62d0, 4.49d0, & + 4.35d0, 4.22d0, 4.08d0, 3.94d0, 3.80d0, & + 3.66d0, 3.52d0, 3.38d0, 3.23d0, 3.08d0, & + 2.93d0, 2.77d0, 2.60d0, 2.43d0, 2.25d0, & + 2.07d0, 1.87d0, 1.67d0, 1.45d0, 1.22d0, & + 0.97d0, 0.72d0, 0.44d0, 0.14d0, 0.1d0/) +! +! ### 12. Calcium Chloride + real(kind=8) :: awcc(100) = (/ & + 19.90d0, 19.00d0, 18.15d0, 17.35d0, 16.60d0, & + 15.89d0, 15.22d0, 14.58d0, 13.99d0, 13.43d0, & + 12.90d0, 12.41d0, 11.94d0, 11.50d0, 11.09d0, & + 10.70d0, 10.34d0, 9.99d0, 9.67d0, 9.37d0, & + 9.09d0, 8.83d0, 8.57d0, 8.34d0, 8.12d0, & + 7.91d0, 7.71d0, 7.53d0, 7.35d0, 7.19d0, & + 7.03d0, 6.88d0, 6.74d0, 6.60d0, 6.47d0, & + 6.35d0, 6.23d0, 6.12d0, 6.01d0, 5.90d0, & + 5.80d0, 5.70d0, 5.61d0, 5.51d0, 5.42d0, & + 5.33d0, 5.24d0, 5.16d0, 5.07d0, 4.99d0, & + 4.91d0, 4.82d0, 4.74d0, 4.66d0, 4.58d0, & + 4.50d0, 4.42d0, 4.34d0, 4.26d0, 4.19d0, & + 4.11d0, 4.03d0, 3.95d0, 3.87d0, 3.79d0, & + 3.72d0, 3.64d0, 3.56d0, 3.48d0, 3.41d0, & + 3.33d0, 3.25d0, 3.17d0, 3.09d0, 3.01d0, & + 2.93d0, 2.85d0, 2.76d0, 2.68d0, 2.59d0, & + 2.50d0, 2.41d0, 2.32d0, 2.23d0, 2.13d0, & + 2.03d0, 1.93d0, 1.82d0, 1.71d0, 1.59d0, & + 1.47d0, 1.35d0, 1.22d0, 1.07d0, 0.93d0, & + 0.77d0, 0.61d0, 0.44d0, 0.25d0, 0.1d0/) +! +! ### 13. Potassium Sulfate + real(kind=8) :: awps(100) = (/ & + 1014.82d0, 969.72d0, 926.16d0, 884.11d0, 843.54d0, & + 804.41d0, 766.68d0, 730.32d0, 695.30d0, 661.58d0, & + 629.14d0, 597.93d0, 567.92d0, 539.09d0, 511.41d0, & + 484.83d0, 459.34d0, 434.89d0, 411.47d0, 389.04d0, & + 367.58d0, 347.05d0, 327.43d0, 308.69d0, 290.80d0, & + 273.73d0, 257.47d0, 241.98d0, 227.24d0, 213.22d0, & + 199.90d0, 187.26d0, 175.27d0, 163.91d0, 153.15d0, & + 142.97d0, 133.36d0, 124.28d0, 115.73d0, 107.66d0, & + 100.08d0, 92.95d0, 86.26d0, 79.99d0, 74.12d0, & + 68.63d0, 63.50d0, 58.73d0, 54.27d0, 50.14d0, & + 46.30d0, 42.74d0, 39.44d0, 36.40d0, 33.59d0, & + 31.00d0, 28.63d0, 26.45d0, 24.45d0, 22.62d0, & + 20.95d0, 19.43d0, 18.05d0, 16.79d0, 15.64d0, & + 14.61d0, 13.66d0, 12.81d0, 12.03d0, 11.33d0, & + 10.68d0, 10.09d0, 9.55d0, 9.06d0, 8.60d0, & + 8.17d0, 7.76d0, 7.38d0, 7.02d0, 6.66d0, & + 6.32d0, 5.98d0, 5.65d0, 5.31d0, 4.98d0, & + 4.64d0, 4.31d0, 3.96d0, 3.62d0, 3.27d0, & + 2.92d0, 2.57d0, 2.22d0, 1.87d0, 1.53d0, & + 1.20d0, 0.87d0, 0.57d0, 0.28d0, 0.1d0/) +! +! ### 14. Potassium Bisulfate + real(kind=8) :: awpb(100) = (/ & + 55.99d0, 55.99d0, 55.99d0, 55.99d0, 55.99d0, & + 55.99d0, 55.99d0, 55.99d0, 55.99d0, 55.99d0, & + 53.79d0, 51.81d0, 49.99d0, 48.31d0, 46.75d0, & + 45.28d0, 43.91d0, 42.62d0, 41.39d0, 40.22d0, & + 39.10d0, 38.02d0, 36.99d0, 36.00d0, 35.04d0, & + 34.11d0, 33.21d0, 32.34d0, 31.49d0, 30.65d0, & + 29.84d0, 29.04d0, 28.27d0, 27.50d0, 26.75d0, & + 26.01d0, 25.29d0, 24.57d0, 23.87d0, 23.17d0, & + 22.49d0, 21.81d0, 21.15d0, 20.49d0, 19.84d0, & + 19.21d0, 18.58d0, 17.97d0, 17.37d0, 16.77d0, & + 16.19d0, 15.63d0, 15.08d0, 14.54d0, 14.01d0, & + 13.51d0, 13.01d0, 12.53d0, 12.07d0, 11.62d0, & + 11.19d0, 10.77d0, 10.36d0, 9.97d0, 9.59d0, & + 9.23d0, 8.87d0, 8.53d0, 8.20d0, 7.88d0, & + 7.57d0, 7.27d0, 6.97d0, 6.69d0, 6.41d0, & + 6.14d0, 5.88d0, 5.62d0, 5.36d0, 5.11d0, & + 4.87d0, 4.63d0, 4.39d0, 4.15d0, 3.92d0, & + 3.68d0, 3.45d0, 3.21d0, 2.98d0, 2.74d0, & + 2.49d0, 2.24d0, 1.98d0, 1.72d0, 1.44d0, & + 1.16d0, 0.87d0, 0.57d0, 0.28d0, 0.1d0/) +! +! ### 15. Magnesium Sulfate + real(kind=8) :: awms(100) =(/ & + 0.93d0, 2.50d0, 3.94d0, 5.25d0, 6.45d0, & + 7.54d0, 8.52d0, 9.40d0, 10.19d0, 10.89d0, & + 11.50d0, 12.04d0, 12.51d0, 12.90d0, 13.23d0, & + 13.50d0, 13.72d0, 13.88d0, 13.99d0, 14.07d0, & + 14.10d0, 14.09d0, 14.05d0, 13.98d0, 13.88d0, & + 13.75d0, 13.60d0, 13.43d0, 13.25d0, 13.05d0, & + 12.83d0, 12.61d0, 12.37d0, 12.13d0, 11.88d0, & + 11.63d0, 11.37d0, 11.12d0, 10.86d0, 10.60d0, & + 10.35d0, 10.09d0, 9.85d0, 9.60d0, 9.36d0, & + 9.13d0, 8.90d0, 8.68d0, 8.47d0, 8.26d0, & + 8.07d0, 7.87d0, 7.69d0, 7.52d0, 7.35d0, & + 7.19d0, 7.03d0, 6.89d0, 6.75d0, 6.62d0, & + 6.49d0, 6.37d0, 6.26d0, 6.15d0, 6.04d0, & + 5.94d0, 5.84d0, 5.75d0, 5.65d0, 5.56d0, & + 5.47d0, 5.38d0, 5.29d0, 5.20d0, 5.11d0, & + 5.01d0, 4.92d0, 4.82d0, 4.71d0, 4.60d0, & + 4.49d0, 4.36d0, 4.24d0, 4.10d0, 3.96d0, & + 3.81d0, 3.65d0, 3.48d0, 3.30d0, 3.11d0, & + 2.92d0, 2.71d0, 2.49d0, 2.26d0, 2.02d0, & + 1.76d0, 1.50d0, 1.22d0, 0.94d0, 0.64d0/) +! +! ### 16. Magnesium Nitrate + real(kind=8) :: awmn(100)= (/ & + 12.00d0, 11.84d0, 11.68d0, 11.52d0, 11.36d0, & + 11.20d0, 11.04d0, 10.88d0, 10.72d0, 10.56d0, & + 10.40d0, 10.25d0, 10.09d0, 9.93d0, 9.78d0, & + 9.63d0, 9.47d0, 9.32d0, 9.17d0, 9.02d0, & + 8.87d0, 8.72d0, 8.58d0, 8.43d0, 8.29d0, & + 8.15d0, 8.01d0, 7.87d0, 7.73d0, 7.59d0, & + 7.46d0, 7.33d0, 7.20d0, 7.07d0, 6.94d0, & + 6.82d0, 6.69d0, 6.57d0, 6.45d0, 6.33d0, & + 6.21d0, 6.01d0, 5.98d0, 5.87d0, 5.76d0, & + 5.65d0, 5.55d0, 5.44d0, 5.34d0, 5.24d0, & + 5.14d0, 5.04d0, 4.94d0, 4.84d0, 4.75d0, & + 4.66d0, 4.56d0, 4.47d0, 4.38d0, 4.29d0, & + 4.21d0, 4.12d0, 4.03d0, 3.95d0, 3.86d0, & + 3.78d0, 3.69d0, 3.61d0, 3.53d0, 3.45d0, & + 3.36d0, 3.28d0, 3.19d0, 3.11d0, 3.03d0, & + 2.94d0, 2.85d0, 2.76d0, 2.67d0, 2.58d0, & + 2.49d0, 2.39d0, 2.30d0, 2.20d0, 2.10d0, & + 1.99d0, 1.88d0, 1.77d0, 1.66d0, 1.54d0, & + 1.42d0, 1.29d0, 1.16d0, 1.02d0, 0.88d0, & + 0.73d0, 0.58d0, 0.42d0, 0.25d0, 0.1d0/) +! +! ### 17. Magnesium Chloride + real(kind=8) :: awmc(100) = (/ & + 11.24d0, 10.99d0, 10.74d0, 10.5d0, 10.26d0, & + 10.03d0, 9.81d0, 9.59d0, 9.38d0, 9.18d0, & + 8.98d0, 8.79d0, 8.60d0, 8.42d0, 8.25d0, & + 8.07d0, 7.91d0, 7.75d0, 7.59d0, 7.44d0, & + 7.29d0, 7.15d0, 7.01d0, 6.88d0, 6.75d0, & + 6.62d0, 6.50d0, 6.38d0, 6.27d0, 6.16d0, & + 6.05d0, 5.94d0, 5.85d0, 5.75d0, 5.65d0, & + 5.56d0, 5.47d0, 5.38d0, 5.30d0, 5.22d0, & + 5.14d0, 5.06d0, 4.98d0, 4.91d0, 4.84d0, & + 4.77d0, 4.70d0, 4.63d0, 4.57d0, 4.50d0, & + 4.44d0, 4.37d0, 4.31d0, 4.25d0, 4.19d0, & + 4.13d0, 4.07d0, 4.01d0, 3.95d0, 3.89d0, & + 3.83d0, 3.77d0, 3.71d0, 3.65d0, 3.58d0, & + 3.52d0, 3.46d0, 3.39d0, 3.33d0, 3.26d0, & + 3.19d0, 3.12d0, 3.05d0, 2.98d0, 2.90d0, & + 2.82d0, 2.75d0, 2.67d0, 2.58d0, 2.49d0, & + 2.41d0, 2.32d0, 2.22d0, 2.13d0, 2.03d0, & + 1.92d0, 1.82d0, 1.71d0, 1.60d0, 1.48d0, & + 1.36d0, 1.24d0, 1.11d0, 0.98d0, 0.84d0, & + 0.70d0, 0.56d0, 0.41d0, 0.25d0, 0.1d0/) +! +! ### 18. Potassium Nitrate + real(kind=8) :: awpn(100) = (/ & + 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& + 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& + 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& + 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& + 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& + 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& + 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& + 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& + 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 953.05d0,& + 881.09d0, 813.39d0, 749.78d0, 690.09d0, 634.14d0,& + 581.77d0, 532.83d0, 487.16d0, 444.61d0, 405.02d0,& + 368.26d0, 334.18d0, 302.64d0, 273.51d0, 246.67d0,& + 221.97d0, 199.31d0, 178.56d0, 159.60d0, 142.33d0,& + 126.63d0, 112.40d0, 99.54d0, 87.96d0, 77.55d0,& + 68.24d0, 59.92d0, 52.53d0, 45.98d0, 40.20d0,& + 35.11d0, 30.65d0, 26.75d0, 23.35d0, 20.40d0,& + 17.85d0, 15.63d0, 13.72d0, 12.06d0, 10.61d0,& + 9.35d0, 8.24d0, 7.25d0, 6.37d0, 5.56d0,& + 4.82d0, 4.12d0, 3.47d0, 2.86d0, 2.28d0,& + 1.74d0, 1.24d0, 0.79d0, 0.40d0, 0.1d0/) +! +! ### 19. Potassium Chloride + real(kind=8) :: awpc(100) = (/ & + 172.62d0, 165.75d0, 159.10d0, 152.67d0, 146.46d0, & + 140.45d0, 134.64d0, 129.03d0, 123.61d0, 118.38d0, & + 113.34d0, 108.48d0, 103.79d0, 99.27d0, 94.93d0, & + 90.74d0, 86.71d0, 82.84d0, 79.11d0, 75.53d0, & + 72.09d0, 68.79d0, 65.63d0, 62.59d0, 59.68d0, & + 56.90d0, 54.23d0, 51.68d0, 49.24d0, 46.91d0, & + 44.68d0, 42.56d0, 40.53d0, 38.60d0, 36.76d0, & + 35.00d0, 33.33d0, 31.75d0, 30.24d0, 28.81d0, & + 27.45d0, 26.16d0, 24.94d0, 23.78d0, 22.68d0, & + 21.64d0, 20.66d0, 19.74d0, 18.86d0, 18.03d0, & + 17.25d0, 16.51d0, 15.82d0, 15.16d0, 14.54d0, & + 13.96d0, 13.41d0, 12.89d0, 12.40d0, 11.94d0, & + 11.50d0, 11.08d0, 10.69d0, 10.32d0, 9.96d0, & + 9.62d0, 9.30d0, 8.99d0, 8.69d0, 8.40d0, & + 8.12d0, 7.85d0, 7.59d0, 7.33d0, 7.08d0, & + 6.83d0, 6.58d0, 6.33d0, 6.08d0, 5.84d0, & + 5.59d0, 5.34d0, 5.09d0, 4.83d0, 4.57d0, & + 4.31d0, 4.04d0, 3.76d0, 3.48d0, 3.19d0, & + 2.90d0, 2.60d0, 2.29d0, 1.98d0, 1.66d0, & + 1.33d0, 0.99d0, 0.65d0, 0.30d0, 0.1d0/) +end module mach_hetp_mod diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index 81777dc85..21a89122e 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -108,6 +108,7 @@ MODULE Input_Opt_Mod LOGICAL :: LDEAD LOGICAL :: LSSALT LOGICAL :: LDSTUP + LOGICAL :: LHETP REAL(fp), POINTER :: SALA_REDGE_um(:) REAL(fp), POINTER :: SALC_REDGE_um(:) LOGICAL :: LGRAVSTRAT @@ -611,6 +612,7 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) Input_Opt%LDUST = .FALSE. Input_Opt%LDEAD = .FALSE. Input_Opt%LDSTUP = .FALSE. + Input_Opt%LHETP = .FALSE. Input_Opt%LSSALT = .FALSE. Input_Opt%SALA_REDGE_um = 0.0_fp Input_Opt%SALC_REDGE_um = 0.0_fp diff --git a/LICENSE.txt b/LICENSE.txt index 568f7df5e..d500767d3 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -38,6 +38,25 @@ Linked list code (used in v11-02 and later versions): Copyright © 2005 Arjen Markus http://flibs.sourceforge.net/linked_list.html +HETP +----------------------------------------------------------------------------- + Copyright (C) 2023 Stefan Miller, Environment and Climate Change Canada + Contact: Stefan.Miller (at) ec.gc.ca + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + See GPLv3 License text under The KineticPreProcessor (KPP). RRTM/RRTMG Copyright and Disclaimer: ----------------------------------------------------------------------------- From 2a191d2743858eb8a36f0518100f80bf1811bd2d Mon Sep 17 00:00:00 2001 From: "Sebastian D. Eastham" Date: Mon, 2 Oct 2023 14:17:55 -0400 Subject: [PATCH 212/331] Changed debug messages in aerosol thermodynamics to reflect new name --- GeosCore/aerosol_thermodynamics_mod.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GeosCore/aerosol_thermodynamics_mod.F90 b/GeosCore/aerosol_thermodynamics_mod.F90 index 4937544f0..c02270779 100644 --- a/GeosCore/aerosol_thermodynamics_mod.F90 +++ b/GeosCore/aerosol_thermodynamics_mod.F90 @@ -265,7 +265,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & ! Initialize RC = GC_SUCCESS ErrMsg = '' - ThisLoc = ' -> at DO_ISORROPIAII (in module GeosCore/isorropiaII_mod.F90)' + ThisLoc = ' -> at DO_ATE (in module GeosCore/aerosol_thermodynamics_mod.F90)' ! Copy fields from INPUT_OPT to local variables for use below IT_IS_AN_AEROSOL_SIM = Input_Opt%ITS_AN_AEROSOL_SIM @@ -440,7 +440,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & ENDIF 100 FORMAT( a ) -110 FORMAT( 'Successfully initialized ISORROPIA code II' ) +110 FORMAT( 'Successfully initialized aerosol thermo. ' ) ! Reset first-time flag FIRST = .FALSE. @@ -1038,7 +1038,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & !### Debug IF ( Input_Opt%Verbose ) THEN - CALL DEBUG_MSG( '### ISORROPIAII: a DO_ISORROPIAII' ) + CALL DEBUG_MSG( '### AEROSOL_THERMODYNAMICS: a DO_ATE' ) ENDIF END SUBROUTINE DO_ATE From 6ff9bca90cafae25f6e94f9174c1daae1cb8b1db Mon Sep 17 00:00:00 2001 From: "Sebastian D. Eastham" Date: Mon, 2 Oct 2023 14:38:14 -0400 Subject: [PATCH 213/331] Resolved erroneous logical comparisons in adapted HETP code --- GeosCore/hetp_mod.F90 | 384 +++++++++++++++++++++--------------------- 1 file changed, 192 insertions(+), 192 deletions(-) diff --git a/GeosCore/hetp_mod.F90 b/GeosCore/hetp_mod.F90 index 8a2e0f0e2..12086d52f 100644 --- a/GeosCore/hetp_mod.F90 +++ b/GeosCore/hetp_mod.F90 @@ -596,7 +596,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, end if y1 = y2 ! - if (earlyexit .EQV. .true.) then + if (earlyexit) then dx = 0.0d0 else dx = (omehi - tiny)/float(ndiv) @@ -624,7 +624,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, frst = .true. calain = .true. ! - if (soln .EQV. .false.) then + if (( .not. soln)) then h = omehi so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/omehi + 1.0d0)), tiny) nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/omehi + 1.0d0), 2.0d0*so4_t) @@ -640,7 +640,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, k = k + 1 ! ## Reset gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if (( .not. soln) .and. frst) then gamou(4) = gama(4) gamou(7) = gama(7) gamou(8) = gama(8) @@ -649,7 +649,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, end if ! ## Reset gamin - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(4) = gama(4) gamin(7) = gama(7) gamin(8) = gama(8) @@ -660,7 +660,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, call mach_hetp_calcact1b(h, nh4_t, so4_t, hso4, lwn, gama, t, soln, & frst, calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 errouloc = max(errouloc, abs(gamou(7) - gama(7)) / gamou(7)) errouloc = max(errouloc, abs(gamou(8) - gama(8)) / gamou(8)) @@ -689,7 +689,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) ! ! ## Solve system of equations, using new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then h = omehi so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/omehi + 1.0d0)), tiny) nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/omehi + 1.0d0), 2.0d0*so4_t) @@ -707,16 +707,16 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, ! ## AFTER iterating through ALL ndiv subdivided intervals if (rooteval == ndiv + 1) then ! ## (1) No solution; reset x-value to 'tiny' and use to solve system - if (loccondition > 0.0d0 .and. abs(y2) > eps .and. earlyexit .EQV. .false.) then + if (loccondition > 0.0d0 .and. abs(y2) > eps .and. ( .not. earlyexit)) then noroot = .true. ! write(*,*), 'Warning in CALCA2: no solution found; no interval with sign change' omehi = tiny ! Reset to tiny omebe = omehi - else if (loccondition > 0.0d0 .and. abs(y2) <= eps .and. earlyexit .EQV. .false.) then + else if (loccondition > 0.0d0 .and. abs(y2) <= eps .and. ( .not. earlyexit)) then ! ## (2) Solution is assumed and ITP is not required noroot = .true. soln = .true. - else if (earlyexit .EQV. .true.) then + else if (earlyexit) then ! ## (3) Solution is assumed and ITP is not required noroot = .true. omehi = tiny ! Reset to tiny @@ -726,7 +726,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, ! ! ## Test for criteria to exit root tracking condition = .false. - if (loccondition > 0.0d0 .and. noroot .EQV. .false.) then + if (loccondition > 0.0d0 .and. ( .not. noroot)) then condition = .true. else soln = .true. @@ -735,7 +735,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, ! ! ## The root tracking did not iterate until ndiv ! ## Check if an x-value of tiny was a solution, if so reset x-value to tiny - if (rooteval < ndiv + 1 .and. earlyexit .EQV. .true.) then + if (rooteval < ndiv + 1 .and. earlyexit) then ! Solution has been assumed noroot = .true. omehi = tiny ! Reset to tiny @@ -743,14 +743,14 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, soln = .true. end if ! - if (earlyexit .EQV. .false. .and. noroot .EQV. .false.) then + if (( .not. earlyexit) .and. ( .not. noroot)) then soln = .false. end if ! ! ! ### STAGE 2: modified bisection search (using ITP algorithm) ### ! ## Initialize static ITP variables - if (noroot .EQV. .false.) then + if (( .not. noroot)) then yb = y1 ya = y2 ! @@ -779,7 +779,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, condition = .true. do while (j < maxit .and. condition) ! ## Set dynamic ITP variables - if (noroot .EQV. .false. .and. soln .EQV. .false.) then + if (( .not. noroot) .and. ( .not. soln)) then gx = xb - xa xh = 0.5d0*(xa + xb) rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) @@ -802,7 +802,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, ! j = j + 1 ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gmax = 0.1d0 gmax = max(gmax, gama(7)) gmax = max(gmax, gama(8)) @@ -812,7 +812,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, end if ! ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. soln .EQV. .false.) then + if (gmax > 100.0d0 .and. ( .not. soln)) then gama(7) = 0.1d0 gama(8) = 0.1d0 gama(9) = 0.1d0 @@ -830,7 +830,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, ! ## Solve system of equations frst = .true. calain = .true. - if (soln .EQV. .false.) then + if (( .not. soln)) then h = x3 so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/x3 + 1.0d0)), tiny) nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/x3 + 1.0d0), 2.0d0*so4_t) @@ -846,7 +846,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, k = k + 1 ! ! ## Reset gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if (( .not. soln) .and. frst) then gamou(4) = gama(4) gamou(7) = gama(7) gamou(8) = gama(8) @@ -855,7 +855,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, end if ! ! ## Reset gamin - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(4) = gama(4) gamin(7) = gama(7) gamin(8) = gama(8) @@ -866,7 +866,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, call mach_hetp_calcact1b(h, nh4_t, so4_t, hso4, lwn, gama, t, soln, & frst, calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 errouloc = max(errouloc, abs(gamou(7) - gama(7)) / gamou(7)) errouloc = max(errouloc, abs(gamou(8) - gama(8)) / gamou(8)) @@ -895,7 +895,7 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) ! ! ## Solve system of equations, with new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then h = x3 so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/x3 + 1.0d0)), tiny) nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/x3 + 1.0d0), 2.0d0*so4_t) @@ -908,23 +908,23 @@ subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, y3 = (nh4_t/(2.0d0*so4_t + hso4) - 1.0d0) + h/(2.0d0*so4_t + hso4) ! condition = .false. - if (noroot .EQV. .true.) then + if (noroot) then ! ## If no root on interval then do not perform ITP xa = x3 xb = x3 - else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + else if (y3 > 0.0d0 .and. ( .not. soln)) then xb = x3 yb = y3 - else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + else if (y3 < 0.0d0 .and. ( .not. soln)) then xa = x3 ya = y3 - else if (soln .EQV. .false.) then + else if (( .not. soln)) then xa = x3 xb = x3 end if ! ! ## Check for convergence criteria to exit ITP: - if (abs(xb - xa) > abs(xa*eps) .and. noroot .EQV. .false.) then + if (abs(xb - xa) > abs(xa*eps) .and. ( .not. noroot)) then condition = .true. soln = .false. else @@ -1567,7 +1567,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, ! ## Begin search on subinterval if (rooteval == 2) then soln = .false. - if (count_rt == 1 .or. redo .EQV. .true.) then + if (count_rt == 1 .or. redo) then ylo = y2 end if ! @@ -1581,7 +1581,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, gmax = max(gmax, gama(13)) ! ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. soln .EQV. .false.) then + if (gmax > 100.0d0 .and. ( .not. soln)) then gama = 0.1d0 gamin = 1.0d10 gamou = 1.0d10 @@ -1589,15 +1589,15 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, frst = .true. end if ! - if (abs(y2) <= eps .and. (count_rt == 1 .or. redo .EQV. .true.)) then + if (abs(y2) <= eps .and. (count_rt == 1 .or. redo)) then earlyexit = .true. end if ! y1 = y2 ! - if (earlyexit .EQV. .true. .or. (count_rt > 1 .and. redo .EQV. .false.)) then + if (earlyexit .or. (count_rt > 1 .and. ( .not. redo))) then dx = 0.0d0 - else if (count_rt > 1 .and. redo .EQV. .true.) then + else if (count_rt > 1 .and. redo) then dx = (max(pshi-omehi, tiny))/float(ndiv) omebe = omehi ! Lower bound of subinterval (xa) elseif (count_rt == 1) then @@ -1612,7 +1612,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, ! ! ## Continue search if (rooteval > 2) then - if (soln .EQV. .false.) then + if (( .not. soln)) then gmax = 0.1d0 gmax = max(gmax, gama( 4)) gmax = max(gmax, gama( 5)) @@ -1624,7 +1624,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, end if ! ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. soln .EQV. .false.) then + if (gmax > 100.0d0 .and. ( .not. soln)) then gama = 0.1d0 gamin = 1.0d10 gamou = 1.0d10 @@ -1632,12 +1632,12 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, frst = .true. end if - if (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0 .and. (count_rt == 1 .or. redo .EQV. .true.)) then + if (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0 .and. (count_rt == 1 .or. redo)) then ! ## 1. Root has been found on the subinterval; save x values for ITP search y1 = y1 omebe = omebe omehi = omehi - elseif (count_rt == 1 .or. redo .EQV. .true.) then + elseif (count_rt == 1 .or. redo) then ! ## 2. No root has been found, continue searching in the next subinterval y1 = y2 omebe = omehi @@ -1648,7 +1648,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, ! ## Solve the system of equations frst = .true. calain = .true. - if (soln .EQV. .false. .and. (count_rt == 1 .or. redo .EQV. .true.)) then + if (( .not. soln) .and. (count_rt == 1 .or. redo)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) a3 = k1*lwnsq/gama10sq @@ -1691,7 +1691,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, k = k + 1 ! ! ## Reset gamou - if (soln .EQV. .false. .and. frst .EQV. .true. .and. (count_rt == 1 .or. redo .EQV. .true.)) then + if (( .not. soln) .and. frst .and. (count_rt == 1 .or. redo)) then gamou( 4) = gama( 4) gamou( 5) = gama( 5) gamou( 7) = gama( 7) @@ -1702,7 +1702,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, end if ! ! ## Reset gamin - if (soln .EQV. .false. .and. (count_rt == 1 .or. redo .EQV. .true.)) then + if (( .not. soln) .and. (count_rt == 1 .or. redo)) then gamin( 4) = gama( 4) gamin( 5) = gama( 5) gamin( 7) = gama( 7) @@ -1715,7 +1715,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, call mach_hetp_calcact2b(h, nh4_t, so4_t, hso4, no3_t, lwn, gama, t, soln, & frst, calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 errouloc = max(errouloc, abs(gamou(4 ) - gama(4 )) / gamou(4 )) errouloc = max(errouloc, abs(gamou(5 ) - gama(5 )) / gamou(5 )) @@ -1745,7 +1745,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, end do ! ! ## Solve system of equations, with new activity coefficients - if (soln .EQV. .false. .and. (count_rt == 1 .or. redo .EQV. .true.)) then + if (( .not. soln) .and. (count_rt == 1 .or. redo)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) a3 = k1*lwnsq/gama10sq @@ -1785,7 +1785,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, ! ! ## Check for criteria to exit root tracking condition = .false. - if (sign(1.0d0,y1)*sign(1.0d0,y2) > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps) then + if (sign(1.0d0,y1)*sign(1.0d0,y2) > 0.0d0 .and. ( .not. noroot) .and. abs(y2) > eps) then condition = .true. elseif (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0 .and. abs(y2) > eps) then ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP @@ -1800,7 +1800,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, if (rooteval == ndiv+1) then count_rt = count_rt + 1 ! - if (redo .EQV. .true. .or. count_rt == 2) then + if (redo .or. count_rt == 2) then yhi = y2 redo = .false. end if @@ -1856,7 +1856,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, ! ! ### STAGE 2: modified bisection search (using ITP algorithm) ### ! ## Initialize static ITP variables - if (noroot .EQV. .false.) then + if (( .not. noroot)) then ya = y1 yb = y2 xa = omebe @@ -1887,7 +1887,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, j = 0 condition = .true. ! - if (earlye .EQV. .true.) then + if (earlye) then soln = .true. else soln = .false. @@ -1916,7 +1916,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, gama_min = gama end if ! - if (noroot .EQV. .false. .and. soln .EQV. .false.) then + if (( .not. noroot) .and. ( .not. soln)) then if (yb - ya == 0.0d0) then write(*,*), '###### ABORT ######' write(*,*), 'Zero divide in ITP reset: CALCD3' @@ -1950,7 +1950,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, ! j = j + 1 ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gmax = 0.1d0 gmax = max(gmax, gama( 4)) gmax = max(gmax, gama( 5)) @@ -1962,7 +1962,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, end if ! ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. soln .EQV. .false.) then + if (gmax > 100.0d0 .and. ( .not. soln)) then gama = 0.1d0 gamin = 1.0d10 gamou = 1.0d10 @@ -1973,7 +1973,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, ! ## Solve system of equations frst = .true. calain = .true. - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) a3 = k1*lwnsq/gama10sq @@ -2015,7 +2015,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, k = k + 1 ! ! ## Reset gamin and gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if (( .not. soln) .and. frst) then gamou( 4) = gama( 4) gamou( 5) = gama( 5) gamou( 7) = gama( 7) @@ -2025,7 +2025,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, gamou(13) = gama(13) end if ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin( 4) = gama( 4) gamin( 5) = gama( 5) gamin( 7) = gama( 7) @@ -2038,7 +2038,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, call mach_hetp_calcact2b(h, nh4_t, so4_t, hso4, no3_t, lwn, gama, t, soln, & frst, calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0.0d0 errouloc = max(errouloc, abs(gamou(4 ) - gama(4 )) / gamou(4 )) errouloc = max(errouloc, abs(gamou(5 ) - gama(5 )) / gamou(5 )) @@ -2068,7 +2068,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, end do ! ! ## Solve system of equations, with new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) a3 = k1*lwnsq/gama10sq @@ -2107,11 +2107,11 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, y3 = nh4_t/h/max(gnh3, tiny)/a4 - 1.0d0 ! condition = .false. - if (noroot .EQV. .true.) then + if (noroot) then ! ## If no root on interval, then do not perform ITP xa = x3 xb = x3 - else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + else if (y3 > 0.0d0 .and. ( .not. soln)) then if (ya < 0.0d0) then yb = y3 xb = x3 @@ -2119,7 +2119,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, ya = y3 xa = x3 end if - else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + else if (y3 < 0.0d0 .and. ( .not. soln)) then if (ya < 0.0d0) then ya = y3 xa = x3 @@ -2127,13 +2127,13 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, yb = y3 xb = x3 end if - else if (soln .EQV. .false.) then + else if (( .not. soln)) then xa = x3 xb = x3 end if ! ! ## Check for convergence criteria to exit ITP: - if (xb - xa > abs(xa*eps) .and. noroot .EQV. .false.) then + if (xb - xa > abs(xa*eps) .and. ( .not. noroot)) then condition = .true. soln = .false. else @@ -2141,7 +2141,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, end if ! ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if (abs(y3) <= eps .and. noroot .EQV. .false.) then + if (abs(y3) <= eps .and. ( .not. noroot)) then soln = .true. condition = .false. end if @@ -2150,7 +2150,7 @@ subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if (( .not. condition) .and. ( .not. noroot) .and. abs(y3) > 0.1d0) then if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then ! write(*,*), 'Warning: oscillatory behavior; possibility of no valid solution!' x3 = x3_min @@ -2872,7 +2872,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, ! ## Solve the system of equations frst = .true. calain = .true. - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -2976,7 +2976,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, k = k + 1 ! ! ## Reset gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if (( .not. soln) .and. frst) then gamou(1) = gama(1) gamou(2) = gama(2) gamou(3) = gama(3) @@ -2993,7 +2993,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, end if ! ! ## Reset gamin - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(1) = gama(1) gamin(2) = gama(2) gamin(3) = gama(3) @@ -3012,7 +3012,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & lwn, gama, t, soln, frst, calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 do ii = 1, 13 errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) @@ -3034,7 +3034,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, end do ! ! ## Solve system of equations, using new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -3137,7 +3137,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, ! ## Check for criteria to exit root tracking before ndiv iterations of root tracking condition = .false. loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps) then + if (loccon > 0.0d0 .and. ( .not. noroot) .and. abs(y2) > eps) then condition = .true. elseif (loccon < 0.0d0 .and. abs(y2) > eps) then ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP @@ -3184,7 +3184,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, ! ! ### STAGE 2: modified bisection search (using ITP algorithm) ### ! ## Initialize static ITP variables - if (noroot .EQV. .false.) then + if (( .not. noroot)) then ya = y1 yb = y2 xa = omebe @@ -3216,7 +3216,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, j = 0 condition = .true. ! - if (earlyexit .EQV. .false.) then + if (( .not. earlyexit)) then soln = .false. end if ! @@ -3243,7 +3243,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, gama_min = gama end if ! - if (noroot .EQV. .false. .and. soln .EQV. .false.) then + if (( .not. noroot) .and. ( .not. soln)) then if (yb - ya == 0.0d0) then write(*,*), '###### ABORT ######' write(*,*), 'Zero divide in ITP reset: CALCG5' @@ -3279,7 +3279,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, ! j = j + 1 ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gmax = 0.1d0 gmax = max(gmax, gama(1)) gmax = max(gmax, gama(2)) @@ -3297,7 +3297,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, end if ! ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. soln .EQV. .false.) then + if (gmax > 100.0d0 .and. ( .not. soln)) then gama = 0.1d0 gamin = 1.0d10 gamou = 1.0d10 @@ -3308,7 +3308,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, ! ## Solve system of equations frst = .true. calain = .true. - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -3412,7 +3412,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, do while ( k < nsweep-1 .and. errin >= epsact) k = k + 1 ! ## Reset gamin and gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if (( .not. soln) .and. frst) then gamou(1) = gama(1) gamou(2) = gama(2) gamou(3) = gama(3) @@ -3428,7 +3428,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, gamou(13) = gama(13) end if ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(1) = gama(1) gamin(2) = gama(2) gamin(3) = gama(3) @@ -3447,7 +3447,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & lwn, gama, t, soln, frst, calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 do ii = 1, 13 errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) @@ -3469,7 +3469,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, end do ! ! ## Solve system of equations, with new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -3570,23 +3570,23 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, y3 = h*cl_t/ghcl/a6 - 1.0d0 ! condition = .false. - if (noroot .EQV. .true.) then + if (noroot) then ! ## If no root on interval then do not perform ITP xa = x3 xb = x3 - else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + else if (y3 > 0.0d0 .and. ( .not. soln)) then xb = x3 yb = y3 - else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + else if (y3 < 0.0d0 .and. ( .not. soln)) then xa = x3 ya = y3 - else if (soln .EQV. .false.) then + else if (( .not. soln)) then xa = x3 xb = x3 end if ! ! ## Check for convergence criteria to exit ITP: - if (xb - xa > abs(xa*eps) .and. noroot .EQV. .false.) then + if (xb - xa > abs(xa*eps) .and. ( .not. noroot)) then condition = .true. soln = .false. else @@ -3594,7 +3594,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, end if ! ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if (abs(y3) <= eps .and. noroot .EQV. .false.) then + if (abs(y3) <= eps .and. ( .not. noroot)) then soln = .true. condition = .false. end if @@ -3603,7 +3603,7 @@ subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if (( .not. condition) .and. ( .not. noroot) .and. abs(y3) > 0.1d0) then if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then x3 = x3_min cl_t = cl_min @@ -3839,7 +3839,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if y1 = y2 ! - if (earlyexit .EQV. .true.) then + if (earlyexit) then dx = 0.0d0 else dx = (c6-tiny-tiny)/float(ndiv) @@ -3866,7 +3866,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## Solve the system of equations frst = .true. calain = .true. - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -3969,7 +3969,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, k = k + 1 ! ! ## Reset gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if (( .not. soln) .and. frst) then gamou(1) = gama(1) gamou(2) = gama(2) gamou(3) = gama(3) @@ -3986,7 +3986,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Reset gamin - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(1) = gama(1) gamin(2) = gama(2) gamin(3) = gama(3) @@ -4005,7 +4005,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & lwn, gama, t, soln, frst, calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 do ii = 1, 13 errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) @@ -4027,7 +4027,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end do ! ! ## Solve system of equations, using new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -4130,7 +4130,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## Check for criteria to exit root tracking condition = .false. loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps .and. c6 > tiny) then + if (loccon > 0.0d0 .and. ( .not. noroot) .and. abs(y2) > eps .and. c6 > tiny) then condition = .true. elseif (loccon < 0.0d0 .and. abs(y2) > eps) then ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP @@ -4152,13 +4152,13 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ! ### AFTER iterating through ALL ndiv subdivided intervals if (rooteval == ndiv + 1) then - if (loccon > 0.0d0 .and. abs(y2) > eps .and. c6 > tiny .and. earlyexit .EQV. .false.) then + if (loccon > 0.0d0 .and. abs(y2) > eps .and. c6 > tiny .and. ( .not. earlyexit)) then ! ## (1) No solution noroot = .true. omehi = tiny ! Reset to tiny omebe = omehi ! write(*,*), 'Warning in CALCH6: no solution found' - else if (loccon > 0.0d0 .and. abs(y2) <= eps .and. c6 > tiny .and. earlyexit .EQV. .false.) then + else if (loccon > 0.0d0 .and. abs(y2) <= eps .and. c6 > tiny .and. ( .not. earlyexit)) then ! ## (2) Solution is assumed and ITP is not required noroot = .true. !soln = .true. @@ -4170,7 +4170,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ! ### STAGE 2: modified bisection search (using ITP algorithm) ### ! ## Initialize static ITP variables - if (noroot .EQV. .false.) then + if (( .not. noroot)) then ya = y1 yb = y2 xa = omebe @@ -4225,7 +4225,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, gama_min = gama end if ! - if (noroot .EQV. .false. .and. soln .EQV. .false.) then + if ((.not. noroot) .and. (.not. soln)) then if (yb - ya == 0.0d0) then write(*,*), '###### ABORT ######' write(*,*), 'Zero divide in ITP reset: CALCH6' @@ -4261,7 +4261,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! j = j + 1 ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gmax = 0.1d0 gmax = max(gmax, gama(1)) gmax = max(gmax, gama(2)) @@ -4279,7 +4279,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. soln .EQV. .false.) then + if ((gmax > 100.0d0) .and. (( .not. soln))) then gama = 0.1d0 gamin = 1.0d10 gamou = 1.0d10 @@ -4290,7 +4290,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## Solve system of equations frst = .true. calain = .true. - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -4393,7 +4393,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, k = k + 1 ! ! ## Reset gamin and gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if ((( .not. soln)) .and. (frst)) then gamou(1) = gama(1) gamou(2) = gama(2) gamou(3) = gama(3) @@ -4409,7 +4409,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, gamou(13) = gama(13) end if ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(1) = gama(1) gamin(2) = gama(2) gamin(3) = gama(3) @@ -4428,7 +4428,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & lwn, gama, t, soln, frst, calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 do ii = 1, 13 errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) @@ -4450,7 +4450,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end do ! ! ## Solve system of equations, with new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -4549,23 +4549,23 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, y3 = nh4_t*cl_t/ghcl/gnh3/a6/a4 - 1.0d0 !Function value ! condition = .false. - if (noroot .EQV. .true.) then + if (noroot) then ! ## If no root on interval then do not perform ITP xa = x3 xb = x3 - else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + else if ((y3 > 0.0d0) .and. (( .not. soln))) then xb = x3 yb = y3 - else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + else if ((y3 < 0.0d0) .and. (( .not. soln))) then xa = x3 ya = y3 - else if (soln .EQV. .false.) then + else if (( .not. soln)) then xa = x3 xb = x3 end if ! ! ## Check for convergence criteria to exit ITP: - if (xb - xa > abs(xa*eps) .and. noroot .EQV. .false.) then + if ((xb - xa > abs(xa*eps)) .and. (( .not. noroot))) then condition = .true. soln = .false. else @@ -4573,7 +4573,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if (abs(y3) <= eps .and. noroot .EQV. .false.) then + if ((abs(y3) <= eps) .and. (( .not. noroot))) then soln = .true. condition = .false. end if @@ -4582,7 +4582,7 @@ subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if ((( .not. condition)) .and. (( .not. noroot)) .and. (abs(y3) > 0.1d0)) then if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then x3 = x3_min cl_t = cl_min @@ -5676,7 +5676,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, frst = .true. calain = .true. ! - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -5784,7 +5784,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, k = k + 1 ! ! ## Reset gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if ((.not. soln) .and. (frst)) then gamou(1) = gama(1) gamou(2) = gama(2) gamou(3) = gama(3) @@ -5811,7 +5811,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Reset gamin - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(1) = gama(1) gamin(2) = gama(2) gamin(3) = gama(3) @@ -5841,7 +5841,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 do ii = 1, 23 errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) @@ -5863,7 +5863,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end do ! ! ## Solve system of equations, using new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -5968,7 +5968,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## Check for criteria to exit root tracking condition = .false. loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps .and. cl > tiny) then + if ((loccon > 0.0d0) .and. (( .not. noroot)) .and. (abs(y2) > eps) .and. (cl > tiny)) then condition = .true. elseif (loccon < 0.0d0 .and. abs(y2) > eps) then ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP @@ -6013,7 +6013,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ! ### STAGE 2: modified bisection search (using ITP algorithm) ### ! ## Initialize static ITP variables - if (noroot .EQV. .false.) then + if (( .not. noroot)) then ya = y1 yb = y2 xa = omebe @@ -6044,7 +6044,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, j = 0 condition = .true. ! - if (earlye .EQV. .true.) then + if (earlye) then soln = .true. else soln = .false. @@ -6072,7 +6072,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, gama_min = gama end if ! - if (noroot .EQV. .false. .and. soln .EQV. .false.) then + if ((.not. noroot) .and. (.not. soln)) then ! ## Set dynamic ITP variables if (yb - ya == 0.0d0) then write(*,*), '###### ABORT ######' @@ -6112,7 +6112,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! j = j + 1 ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gmax = 0.1d0 gmax = max(gmax, gama(1)) gmax = max(gmax, gama(2)) @@ -6140,7 +6140,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. soln .EQV. .false.) then + if (gmax > 100.0d0 .and. ( .not. soln)) then gama = 0.1d0 gamin = 1.0d10 gamou = 1.0d10 @@ -6150,7 +6150,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! frst = .true. calain = .true. - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -6255,7 +6255,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, k = k + 1 ! ! ## Reset gamin and gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if (( .not. soln) .and. frst) then gamou(1) = gama(1) gamou(2) = gama(2) gamou(3) = gama(3) @@ -6281,7 +6281,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, gamou(23) = gama(23) end if ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(1) = gama(1) gamin(2) = gama(2) gamin(3) = gama(3) @@ -6311,7 +6311,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 do ii = 1, 23 errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) @@ -6333,7 +6333,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end do ! ! ## Solve system of equations, with new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -6435,23 +6435,23 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, y3 = h*cl_t/ghcl/a6 - 1.0d0 !Function value ! condition = .false. - if (noroot .EQV. .true.) then + if (noroot) then ! ## If no root on interval then do not perform ITP xa = x3 xb = x3 - else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + else if (y3 > 0.0d0 .and. ( .not. soln)) then xb = x3 yb = y3 - else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + else if (y3 < 0.0d0 .and. ( .not. soln)) then xa = x3 ya = y3 - else if (soln .EQV. .false.) then + else if (( .not. soln)) then xa = x3 xb = x3 end if ! ! ## Test for convergence criteria to exit ITP: - if (xb - xa > abs(xa*eps) .and. cl > tiny .and. noroot .EQV. .false.) then + if (xb - xa > abs(xa*eps) .and. cl > tiny .and. ( .not. noroot)) then condition = .true. soln = .false. else @@ -6459,7 +6459,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if (abs(y3) <= eps .and. noroot .EQV. .false.) then + if (abs(y3) <= eps .and. ( .not. noroot)) then soln = .true. condition = .false. end if @@ -6468,7 +6468,7 @@ subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if (( .not. condition) .and. ( .not. noroot) .and. abs(y3) > 0.1d0) then if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then x3 = x3_min cl_t = cl_min @@ -6786,7 +6786,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## Solve the system of equations frst = .true. calain = .true. - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -6876,7 +6876,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, k = k + 1 ! ! ## Reset gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if (( .not. soln) .and. frst) then gamou(1) = gama(1) gamou(2) = gama(2) gamou(3) = gama(3) @@ -6903,7 +6903,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Reset gamin - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(1) = gama(1) gamin(2) = gama(2) gamin(3) = gama(3) @@ -6933,7 +6933,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 do ii = 1, 23 errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) @@ -6955,7 +6955,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end do ! ! ## Solve system of equations, with new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -7044,7 +7044,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, condition = .false. ! loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps .and. chi6 > tiny) then + if (loccon > 0.0d0 .and. ( .not. noroot) .and. abs(y2) > eps .and. chi6 > tiny) then condition = .true. elseif (loccon < 0.0d0 .and. abs(y2) > eps) then ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP @@ -7057,7 +7057,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Too little frcl, or 'tiny' is a root; reset x-value to tiny and exit root tracking - if (chi6 <= tiny .or. earlyexit .EQV. .true.) then + if (chi6 <= tiny .or. earlyexit) then condition = .false. rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking noroot = .true. @@ -7085,7 +7085,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ! ### STAGE 2: modified bisection search (using ITP algorithm) ### ! ## Initialize static ITP variables - if (noroot .EQV. .false.) then + if (( .not. noroot)) then ya = y1 yb = y2 xa = omebe @@ -7117,7 +7117,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, j = 0 condition = .true. ! - if (earlye .EQV. .true.) then + if (earlye) then soln = .true. else soln = .false. @@ -7145,7 +7145,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, gama_min = gama end if ! - if (noroot .EQV. .false. .and. soln .EQV. .false.) then + if (( .not. noroot) .and. ( .not. soln)) then ! ## Set dynamic ITP variables if (yb - ya == 0.0d0) then write(*,*), '###### ABORT ######' @@ -7185,7 +7185,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! j = j + 1 ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gmax = 0.1d0 gmax = max(gmax, gama(1)) gmax = max(gmax, gama(2)) @@ -7213,7 +7213,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. soln .EQV. .false.) then + if (gmax > 100.0d0 .and. ( .not. soln)) then gama = 0.1d0 gamin = 1.0d10 gamou = 1.0d10 @@ -7224,7 +7224,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## Solve system of equations frst = .true. calain = .true. - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -7313,7 +7313,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, k = k + 1 ! ! ## Reset gamin and gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if (( .not. soln) .and. frst) then gamou(1) = gama(1) gamou(2) = gama(2) gamou(3) = gama(3) @@ -7339,7 +7339,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, gamou(23) = gama(23) end if ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(1) = gama(1) gamin(2) = gama(2) gamin(3) = gama(3) @@ -7369,7 +7369,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 do ii = 1, 23 errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) @@ -7391,7 +7391,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end do ! ! ## Solve system of equations, with new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -7478,23 +7478,23 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, y3 = h*cl_t/ghcl/a6 - 1.0d0 !Function value ! condition = .false. - if (noroot .EQV. .true.) then + if (noroot) then ! ## If no root on interval then do not perform ITP xa = x3 xb = x3 - else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + else if (y3 > 0.0d0 .and. ( .not. soln)) then xb = x3 yb = y3 - else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + else if (y3 < 0.0d0 .and. ( .not. soln)) then xa = x3 ya = y3 - else if (soln .EQV. .false.) then + else if (( .not. soln)) then xa = x3 xb = x3 end if ! ! ## Check for convergence criteria to exit ITP - if (xb - xa > abs(xa*eps) .and. chi6 > tiny .and. noroot .EQV. .false.) then + if (xb - xa > abs(xa*eps) .and. chi6 > tiny .and. ( .not. noroot)) then condition = .true. soln = .false. else @@ -7502,7 +7502,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if (abs(y3) <= eps .and. noroot .EQV. .false.) then + if (abs(y3) <= eps .and. ( .not. noroot)) then soln = .true. condition = .false. end if @@ -7511,7 +7511,7 @@ subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if (( .not. condition) .and. ( .not. noroot) .and. abs(y3) > 0.1d0) then if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then x3 = x3_min cl_t = cl_min @@ -7805,7 +7805,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! y1 = y2 ! - if (earlyexit .EQV. .true.) then + if (earlyexit) then dx = 0.0d0 else dx = (chi6-tiny-tiny)/float(ndiv) @@ -7833,7 +7833,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## Solve the system of equations frst = .true. calain = .true. - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -7937,7 +7937,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, k = k + 1 ! ! ## Reset gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if (( .not. soln) .and. frst) then gamou(1) = gama(1) gamou(2) = gama(2) gamou(3) = gama(3) @@ -7964,7 +7964,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Reset gamin - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(1) = gama(1) gamin(2) = gama(2) gamin(3) = gama(3) @@ -7994,7 +7994,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 do ii = 1, 23 errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) @@ -8016,7 +8016,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end do ! ! ## Solve system of equations, using new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -8119,7 +8119,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## Check for criteria to exit root tracking condition = .false. loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. noroot .EQV. .false. .and. abs(y2) > eps .and. chi6 > tiny) then + if (loccon > 0.0d0 .and. ( .not. noroot) .and. abs(y2) > eps .and. chi6 > tiny) then condition = .true. elseif (loccon < 0.0d0 .and. abs(y2) > eps) then ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP @@ -8132,7 +8132,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Too little frcl, or 'tiny' is a root; reset x-value to tiny and exit root tracking - if (chi6 <= tiny .or. earlyexit .EQV. .true.) then + if (chi6 <= tiny .or. earlyexit) then condition = .false. rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking noroot = .true. @@ -8160,7 +8160,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ! ### STAGE 2: modified bisection search (using ITP algorithm) ### ! ## Initialize static ITP variables - if (noroot .EQV. .false.) then + if (( .not. noroot)) then ya = y1 yb = y2 xa = omebe @@ -8191,7 +8191,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, j = 0 condition = .true. ! - if (earlye .EQV. .true.) then + if (earlye) then soln = .true. else soln = .false. @@ -8220,7 +8220,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, gama_min = gama end if ! - if (noroot .EQV. .false. .and. soln .EQV. .false.) then + if (( .not. noroot) .and. ( .not. soln)) then if (yb - ya == 0.0d0) then write(*,*), '###### ABORT ######' write(*,*), 'Zero divide in ITP reset: CALCP13' @@ -8256,7 +8256,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! j = j + 1 ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gmax = 0.1d0 gmax = max(gmax, gama(1)) gmax = max(gmax, gama(2)) @@ -8284,7 +8284,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. soln .EQV. .false.) then + if (gmax > 100.0d0 .and. ( .not. soln)) then gama = 0.1d0 gamin = 1.0d10 gamou = 1.0d10 @@ -8295,7 +8295,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## Solve system of equations frst = .true. calain = .true. - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -8399,7 +8399,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, k = k + 1 ! ! ## Reset gamin and gamou - if (soln .EQV. .false. .and. frst .EQV. .true.) then + if (( .not. soln) .and. frst) then gamou(1) = gama(1) gamou(2) = gama(2) gamou(3) = gama(3) @@ -8425,7 +8425,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, gamou(23) = gama(23) end if ! - if (soln .EQV. .false.) then + if (( .not. soln)) then gamin(1) = gama(1) gamin(2) = gama(2) gamin(3) = gama(3) @@ -8455,7 +8455,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & calain, calou) ! - if (frst .EQV. .true.) then + if (frst) then errouloc = 0 do ii = 1, 23 errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) @@ -8477,7 +8477,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end do ! ! ## Solve system of equations, with new activity coefficients - if (soln .EQV. .false.) then + if (( .not. soln)) then lwnsq = lwn*lwn gama10sq = gama(10)*gama(10) ! @@ -8578,23 +8578,23 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, y3 = h*cl_t/ghcl/a6 - 1.0d0 !Function value ! condition = .false. - if (noroot .EQV. .true.) then + if (noroot) then ! ## If no root on interval then do not perform ITP xa = x3 xb = x3 - else if (y3 > 0.0d0 .and. soln .EQV. .false.) then + else if (y3 > 0.0d0 .and. ( .not. soln)) then xb = x3 yb = y3 - else if (y3 < 0.0d0 .and. soln .EQV. .false.) then + else if (y3 < 0.0d0 .and. ( .not. soln)) then xa = x3 ya = y3 - else if (soln .EQV. .false.) then + else if (( .not. soln)) then xa = x3 xb = x3 end if ! ! ## Check for convergence criteria to exit ITP: - if (xb - xa > abs(xa*eps) .and. chi6 > tiny .and. noroot .EQV. .false.) then + if (xb - xa > abs(xa*eps) .and. chi6 > tiny .and. ( .not. noroot)) then condition = .true. soln = .false. else @@ -8602,7 +8602,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, end if ! ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if (abs(y3) <= eps .and. noroot .EQV. .false.) then + if (abs(y3) <= eps .and. ( .not. noroot)) then soln = .true. condition = .false. end if @@ -8611,7 +8611,7 @@ subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if (condition .EQV. .false. .and. noroot .EQV. .false. .and. abs(y3) > 0.1d0) then + if (( .not. condition) .and. ( .not. noroot) .and. abs(y3) > 0.1d0) then if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then x3 = x3_min cl_t = cl_min @@ -9780,9 +9780,9 @@ subroutine mach_hetp_calcact1b(h, nh4_t, so4_t, hso4, lwn, gama, t, soln, & real(kind=8) :: h2, k1, k2, f11, f12 real(kind=8) :: g04, g06, g07, g08, g09, g11 ! - if ((soln .EQV. .false.).and. & - ((frst .EQV. .true. .and. calou .EQV. .true.) .or. & - (frst .EQV. .false. .and. calain .EQV. .true.))) then + if ((( .not. soln)).and. & + ((frst .and. calou) .or. & + (( .not. frst) .and. calain))) then ! ## Calculate ionic strength of solution ionic = h + nh4_t + 4.0d0*so4_t + hso4 ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) @@ -10101,9 +10101,9 @@ subroutine mach_hetp_calcact2b(h, nh4_t, so4_t, hso4, no3, lwn, gama, t, soln, real(kind=8) :: h2, k1, k2, k3, f11, f12, f13 real(kind=8) :: g04, g05, g06, g07, g08, g09, g10, g11 ! - if ((soln .EQV. .false.) .and. & - ((frst .EQV. .true. .and. calou .EQV. .true.) .or. & - (frst .EQV. .false. .and. calain .EQV. .true.)) ) then + if ((( .not. soln)) .and. & + ((frst .and. calou) .or. & + (( .not. frst) .and. calain)) ) then ! ## Calculate ionic strength of solution ionic = h + nh4_t + 4.0d0*so4_t + hso4 + no3 ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) @@ -10511,9 +10511,9 @@ subroutine mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3, cl, na, & logical(kind=4) :: tc ! ! - if ((soln .EQV. .false.) .and. & - ((frst .EQV. .true. .and. calou .EQV. .true.) .or. & - (frst .EQV. .false. .and. calain .EQV. .true.)) ) then + if ((( .not. soln)) .and. & + ((frst .and. calou) .or. & + (( .not. frst) .and. calain)) ) then ! ## Calculate ionic strength of solution ionic = h + na + nh4_t + cl + 4.0d0*so4_t + hso4 + no3 ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) @@ -11104,9 +11104,9 @@ subroutine mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3, cl, na, & real(kind=8) :: g21, g22, g23 ! ! - if ((soln .EQV. .false.) .and. & - ((frst .EQV. .true. .and. calou .EQV. .true.) .or. & - (frst .EQV. .false. .and. calain .EQV. .true.)) ) then + if ((( .not. soln)) .and. & + ((frst .and. calou ) .or. & + (( .not. frst) .and. calain)) ) then ! ! ## Calculate ionic strength of solution ionic = h + na + nh4_t + cl + 4.0d0*so4_t + hso4 & @@ -11658,7 +11658,7 @@ subroutine mach_hetp_poly(a1, a2, a3, cl, root, islv) condition= .false. ! ! ## Subdivision search for a root - do while (rooteval < 5 .and. condition .EQV. .false.) + do while (rooteval < 5 .and. ( .not. condition)) x2 = x1 + dx y2 = x2*x2*x2 + a1*x2*x2 + a2*x2 + a3 ! From cf74d995ed6a4d0774d162956e00ca8fdbe185c9 Mon Sep 17 00:00:00 2001 From: "Sebastian D. Eastham" Date: Mon, 2 Oct 2023 17:11:42 -0400 Subject: [PATCH 214/331] Fixed issues where totals were not transferred to ATE output after running HETP --- GeosCore/aerosol_thermodynamics_mod.F90 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/GeosCore/aerosol_thermodynamics_mod.F90 b/GeosCore/aerosol_thermodynamics_mod.F90 index c02270779..9238fec5d 100644 --- a/GeosCore/aerosol_thermodynamics_mod.F90 +++ b/GeosCore/aerosol_thermodynamics_mod.F90 @@ -852,6 +852,8 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & AERLIQ( 6) = HETP_HSO4 AERLIQ( 7) = HETP_NO3 AERLIQ( 8) = HETP_LWC + ! WT is used below but is identical to WI for a forward case + WT(:) = WI(:) Else ! ISORROPIA can be found in ISORROPIAIICODE.F ! inputs are WI, RHI, TEMPI, CNTRL From b8bbaf0a47bf88dcaeb8e1c9fa2a9520f0a6ef63 Mon Sep 17 00:00:00 2001 From: "Sebastian D. Eastham" Date: Thu, 5 Oct 2023 14:56:54 -0400 Subject: [PATCH 215/331] Updated default geoschem_config.yml files to include HETP option --- run/CESM/geoschem_config.yml | 3 +++ .../geoschem_config.yml.templates/geoschem_config.yml.fullchem | 3 +++ .../geoschem_config.yml.templates/geoschem_config.yml.fullchem | 3 +++ run/GEOS/geoschem_config.yml | 3 +++ run/WRF/fullchem/geoschem_config.yml | 3 +++ 5 files changed, 15 insertions(+) diff --git a/run/CESM/geoschem_config.yml b/run/CESM/geoschem_config.yml index d7a8a5270..415a538e2 100644 --- a/run/CESM/geoschem_config.yml +++ b/run/CESM/geoschem_config.yml @@ -365,3 +365,6 @@ aerosols: sulfate: activate: true metal_cat_SO2_oxidation: true + + inorganic: + use_hetp: false diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem index 0f09865e2..8314e1b3d 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -388,6 +388,9 @@ aerosols: activate: true metal_cat_SO2_oxidation: true + inorganic: + use_hetp: false + #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) #============================================================================ diff --git a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem index c322f1d6e..87b5d20af 100644 --- a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -368,3 +368,6 @@ aerosols: sulfate: activate: true metal_cat_SO2_oxidation: true + + inorganic: + use_hetp: false diff --git a/run/GEOS/geoschem_config.yml b/run/GEOS/geoschem_config.yml index a30a4e96d..207c130d1 100644 --- a/run/GEOS/geoschem_config.yml +++ b/run/GEOS/geoschem_config.yml @@ -349,3 +349,6 @@ aerosols: sulfate: activate: true metal_cat_SO2_oxidation: true + + inorganic: + use_hetp: false diff --git a/run/WRF/fullchem/geoschem_config.yml b/run/WRF/fullchem/geoschem_config.yml index 50d7d7520..7b8957c49 100644 --- a/run/WRF/fullchem/geoschem_config.yml +++ b/run/WRF/fullchem/geoschem_config.yml @@ -355,6 +355,9 @@ aerosols: activate: true metal_cat_SO2_oxidation: true + inorganic: + use_hetp: false + #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) #============================================================================ From f9c9324fdfc3466f9df8e531d3c7254f5bc984fa Mon Sep 17 00:00:00 2001 From: "Sebastian D. Eastham" Date: Mon, 16 Oct 2023 11:47:07 -0400 Subject: [PATCH 216/331] Fixed erroneous comment in aerosol thermodynamics --- GeosCore/aerosol_thermodynamics_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeosCore/aerosol_thermodynamics_mod.F90 b/GeosCore/aerosol_thermodynamics_mod.F90 index 9238fec5d..91a5be487 100644 --- a/GeosCore/aerosol_thermodynamics_mod.F90 +++ b/GeosCore/aerosol_thermodynamics_mod.F90 @@ -843,7 +843,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & GAS(1) = HETP_NH3 GAS(2) = HETP_HNO3 GAS(3) = HETP_HCl - ! Only used for diagnostics + ! Mostly used for diagnostics AERLIQ( 1) = HETP_H AERLIQ( 2) = HETP_Na AERLIQ( 3) = HETP_NH4 From 5decf9ed17dccdf83ec90c54972c4e8548d162b5 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 11 Apr 2024 11:17:23 -0400 Subject: [PATCH 217/331] Replace hard-coded HETP with use of external submodule Note that with this change HETP_num goes from real4 to real8. Signed-off-by: Lizzie Lundgren --- GeosCore/CMakeLists.txt | 7 +- GeosCore/aerosol_thermodynamics_mod.F90 | 5 +- GeosCore/hetp_mod.F90 | 11863 ---------------------- GeosCore/mach_hetp_mod.F90 | 495 - 4 files changed, 5 insertions(+), 12365 deletions(-) delete mode 100644 GeosCore/hetp_mod.F90 delete mode 100644 GeosCore/mach_hetp_mod.F90 diff --git a/GeosCore/CMakeLists.txt b/GeosCore/CMakeLists.txt index a9c7d883b..370cb5404 100755 --- a/GeosCore/CMakeLists.txt +++ b/GeosCore/CMakeLists.txt @@ -4,10 +4,10 @@ # only for file tpcore_window_mod.F90 if(${USE_REAL8}) if("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "Intel") - set_source_files_properties(tpcore_window_mod.F90 mach_hetp_mod.F90 hetp_mod.F90 + set_source_files_properties(tpcore_window_mod.F90 PROPERTIES COMPILE_FLAGS "-r8") elseif("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU") - set_source_files_properties(tpcore_window_mod.F90 mach_hetp_mod.F90 hetp_mod.F90 + set_source_files_properties(tpcore_window_mod.F90 PROPERTIES COMPILE_FLAGS "-fdefault-real-8 -fdefault-double-8") endif() endif() @@ -82,8 +82,6 @@ add_library(GeosCore vdiff_mod.F90 wetscav_mod.F90 YuIMN_Code.F90 - mach_hetp_mod.F90 - hetp_mod.F90 # Files only included for special cases $<$:flexgrid_read_mod.F90 get_met_mod.F90 set_boundary_conditions_mod.F90> @@ -107,6 +105,7 @@ target_link_libraries(GeosCore PUBLIC History Isorropia KPP + HETP_core $ # link only to avoid gathering the rest of the TURs $<$:APM> # depends on APM iff APM is true $<$:GeosRad> # depends on GeosRad iff RRTMG is true diff --git a/GeosCore/aerosol_thermodynamics_mod.F90 b/GeosCore/aerosol_thermodynamics_mod.F90 index 91a5be487..0a91d4572 100644 --- a/GeosCore/aerosol_thermodynamics_mod.F90 +++ b/GeosCore/aerosol_thermodynamics_mod.F90 @@ -139,7 +139,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & USE TIME_MOD, ONLY : ITS_A_NEW_MONTH USE TIME_MOD, ONLY : GET_ELAPSED_SEC USE IsorropiaII_Main_Mod, ONLY : Isorropia - USE HETP_Mod, ONLY : mach_hetp_main_15cases + USE HETP_mod, ONLY : mach_hetp_main_15cases ! ! !INPUT PARAMETERS: ! @@ -217,8 +217,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & REAL(f8) :: HETP_HCl, HETP_Na, HETP_Ca, HETP_K REAL(f8) :: HETP_Mg, HETP_H, HETP_OH, HETP_LWC REAL(f8) :: HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg - REAL(f8) :: HETP_frSO4 - REAL(f4) :: HETP_num + REAL(f8) :: HETP_frSO4, HETP_num ! Strings CHARACTER(LEN=15) :: SCASI diff --git a/GeosCore/hetp_mod.F90 b/GeosCore/hetp_mod.F90 deleted file mode 100644 index 12086d52f..000000000 --- a/GeosCore/hetp_mod.F90 +++ /dev/null @@ -1,11863 +0,0 @@ -!######### HETP: AEROSOL THERMODYNAMIC EQUILIBRIUM OF THE ################### -!######### NH4-SO4-NO3-Na-Cl-Ca-Mg-K SYSTEM ################### -! -!Copyright (C) 2023 Stefan Miller, Environment and Climate Change Canada -! Contact: Stefan.Miller (at) ec.gc.ca -! -! This program is free software: you can redistribute it and/or modify -! it under the terms of the GNU General Public License as published by -! the Free Software Foundation, either version 3 of the License, or -! (at your option) any later version. -! -! This program is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU General Public License for more details. -! -! You should have received a copy of the GNU General Public License -! along with this program. If not, see . -! -!############################################################################ -! ## HETP Code -! ## Module file for HETP code -! ## Contains: (1) parameters related to ITP/activity coefficient calculations -! ## (2) ZSR data arrays -! ## (3) other parameters -! -! ## Copyright 2023, Environment and Climate Change Canada (ECCC) -! ## Written by Stefan Miller -!############################################################################ -module hetp_mod - - IMPLICIT NONE - PRIVATE - - PUBLIC :: mach_hetp_main_15cases - PRIVATE :: mach_hetp_calca2 - PRIVATE :: mach_hetp_calcb4 - PRIVATE :: mach_hetp_calcc2 - PRIVATE :: mach_hetp_calcd3 - PRIVATE :: mach_hetp_calce4 - PRIVATE :: mach_hetp_calcf2 - PRIVATE :: mach_hetp_calcg5 - PRIVATE :: mach_hetp_calch6 - PRIVATE :: mach_hetp_calci6 - PRIVATE :: mach_hetp_calcj3 - PRIVATE :: mach_hetp_calco7 - PRIVATE :: mach_hetp_calcm8 - PRIVATE :: mach_hetp_calcp13 - PRIVATE :: mach_hetp_calcl9 - PRIVATE :: mach_hetp_calck4 - PRIVATE :: mach_hetp_calcact1 - PRIVATE :: mach_hetp_calcact1b - PRIVATE :: mach_hetp_calcact2 - PRIVATE :: mach_hetp_calcact2b - PRIVATE :: mach_hetp_calcact3 - PRIVATE :: mach_hetp_calcact3b - PRIVATE :: mach_hetp_calcact4 - PRIVATE :: mach_hetp_calcact4b - PRIVATE :: mach_hetp_poly3v - PRIVATE :: mach_hetp_poly - PRIVATE :: mach_hetp_adjust - - CONTAINS - - !################################################################################### - ! ## HETP Code - ! ## Branch/subcase determination for metastable state - ! AEROSOL THERMODYNAMIC EQUILIBRIUM OF THE NH4-SO4-NO3-Na-Cl-Ca-Mg-K system - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - !################################################################################### - subroutine mach_hetp_main_15cases(TS, TA, TN, TNa, TCl, TCa, TK, TMg, temp, rh, & - so4, hso4, caso4, nh4, nh3, no3, hno3, cl, hcl, & - na, ca, k, mg, h, oh, lwc, frna, frca, frk, frmg,& - frso4, case_number) - ! - use mach_hetp_mod - implicit none - ! - ! INPUT VARIABLES (total gas + aerosol, input as mol/m3 air) - real(kind=8), intent(in) :: TS ! Total sulfate - real(kind=8), intent(in) :: TA ! Total ammonium - real(kind=8), intent(in) :: TN ! Total nitrate - real(kind=8), intent(in) :: TNa ! Total sodium - real(kind=8), intent(in) :: TCl ! Total chloride - real(kind=8), intent(in) :: TCa ! Total calcium - real(kind=8), intent(in) :: TK ! Total potassium - real(kind=8), intent(in) :: TMg ! Total magnesium - real(kind=8), intent(in) :: temp ! Air temperature (K) - real(kind=8), intent(in) :: rh ! Relative humidity (0-1 scale; zero allowed) - ! - ! OUTPUT VARIABLES (output as mol/m3 air) - real(kind=8), intent(out) :: so4 ! SO4-- (aq) - real(kind=8), intent(out) :: hso4 ! HSO4- (aq) - real(kind=8), intent(out) :: caso4 ! CaSO4 (s) - real(kind=8), intent(out) :: nh4 ! NH4+ (aq) - real(kind=8), intent(out) :: nh3 ! NH3 (g) - real(kind=8), intent(out) :: no3 ! NO3- (aq) - real(kind=8), intent(out) :: hno3 ! HNO3 (g) - real(kind=8), intent(out) :: cl ! Cl- (aq) - real(kind=8), intent(out) :: hcl ! HCl (g) - real(kind=8), intent(out) :: na ! Na+ (aq) - real(kind=8), intent(out) :: ca ! Ca2+ (aq) - real(kind=8), intent(out) :: k ! K+ (aq) - real(kind=8), intent(out) :: mg ! Mg2+ (aq) - real(kind=8), intent(out) :: h ! H+ (aq) - real(kind=8), intent(out) :: oh ! OH- (aq) - real(kind=8), intent(out) :: lwc ! Aerosol liquid water content - real(kind=8), intent(out) :: frna ! Free Na - real(kind=8), intent(out) :: frca ! Free Ca - real(kind=8), intent(out) :: frk ! Free K - real(kind=8), intent(out) :: frmg ! Free Mg - real(kind=8), intent(out) :: frso4 ! Free SO4 - real(kind=4), intent(out) :: case_number - !!if_off - ! - ! ## Local variables ## - integer(kind=4), parameter :: nr = 15 !number of eq reactions - ! - real(kind=8), dimension(nr) :: k0 = (/3569119.63798333d0, 0.983992783234808d0, 57.639d0, & - 1.805d-5, 1.015d-2, 141.166162470542d0, & - 1.71700241471167d0, 30.9720858820060d0, 5.746d-17, & - 1.010d-14, 1.971d6, 37.6654800230020d0, & - 12.2216391328847d0, 0.474106585740804d0, 2.511d6/) - ! - real(kind=8), dimension(nr) :: p1 = (/29.4737118977339d0, 1.613671606774050d-2, 13.79d0, & - -1.50d0, 8.85d0, -2.88443799710923d0, & - -2.63431889805915d0, -5.19198839479649d0,-74.38d0, & - -22.52d0, 30.20d0, -1.56284095116099d0, & - -8.20148594143076d0, 0.992408038166253d0, 29.17d0/) - ! - real(kind=8), dimension(nr) :: p2 = (/16.8318498917489d0, 0.0d0, -5.393d0, 26.920d0, & - 25.140d0, 15.8287226365167d0, 38.5722877074814d0, & - 54.4022131344720d0, 6.120d0, 26.920d0, & - 19.910d0, 16.8992061582872d0, 16.0067356266538d0, & - 39.4996391628578d0, 16.830d0/) - ! - ! - real(kind=8) :: sulrat, sodrat, so4rat, crnarat, crrat, rest - real(kind=8) :: ccaso4i, cafri, ccano32i, cnacli, cmgno32i, ccacl2i, rest1 - real(kind=8) :: cna2so4i, frso4i, nafri, cnano3i, no3fr, rest2, cmgso4i - real(kind=8) :: frmgi, no3fri, cmgcl2i, clfri, rest3 - real(kind=8) :: frnh4, frno3, frcl, frca_init, frna_init, frk_init, frmg_init - ! - ! - ! On input, set output aqueous phase species to the total gas + aerosol concentration; - ! the output speciation will be partitioned and these variables reused - so4 = TS - nh4 = TA - no3 = TN - na = TNa - cl = TCl - ca = TCa - k = TK - mg = TMg - ! - ! Set other output species to 0.0d0 - hso4 = 0.0d0 - caso4 = 0.0d0 - nh3 = 0.0d0 - hno3 = 0.0d0 - hcl = 0.0d0 - h = 0.0d0 - oh = 0.0d0 - lwc = 0.0d0 - frna = 0.0d0 - frca = 0.0d0 - frk = 0.0d0 - frmg = 0.0d0 - ! - frso4 = 0.0d0 - frnh4 = 0.0d0 - frno3 = 0.0d0 - frcl = 0.0d0 - frca_init = 0.0d0 - frna_init = 0.0d0 - frk_init = 0.0d0 - frmg_init = 0.0d0 - ! - ! Sulfate ratios; initialize to 0.0d0 - sulrat = 0.0d0 - sodrat = 0.0d0 - so4rat = 0.0d0 - crnarat = 0.0d0 - crrat = 0.0d0 - ! - ! ####################### - ! ### SORTING SECTION ### - ! ####################### - ! - ! ### Branch 0 ### - ! ### No cases, all species < tiny: do nothing - if (TS + TA + TN + TNa + TCl + TCa + TK + TMg <= tiny) then - case_number = 0.0d0 - ! - ! ### Branch 1 ### - ! ISRP1F: Only sulfate and ammonium - else if (TN + TNa + TCl + TCa + TK + TMg <= tiny) then - so4 = max(so4, tiny) - nh4 = max(nh4, tiny) - no3 = 0.0d0 - na = 0.0d0 - cl = 0.0d0 - ca = 0.0d0 - k = 0.0d0 - mg = 0.0d0 - ! - ! ## Calculate sulfate ratio - sulrat = nh4 / so4 - ! - ! ## 1. Sulfate poor (case: calca2) - if (2.0 <= sulrat) then - case_number = 1.0d0 - call mach_hetp_calca2(so4, nh4, nh3, hso4, h, oh, & - lwc, rh, temp, k0, p1, p2, nr) - ! - ! ## 2. Sulfate rich, no acid (case: calcb4) - else if (1.0 <= sulrat .and. sulrat < 2.0) then - case_number = 2.0d0 - call mach_hetp_calcb4(so4, nh4, nh3, hso4, h, lwc, & - rh, temp, k0, p1, p2, nr) - ! - ! ## 3. Sulfate rich, free acid (case: calcc2) - else if (sulrat < 1.0) then - case_number = 3.0d0 - call mach_hetp_calcc2(so4, nh4, nh3, hso4, h, lwc, & - rh, temp, k0, p1, p2, nr) - end if - ! - ! ### Branch 2 ### - ! ISRP2F: Only sulfate, ammonium and nitrate - else if (TNa + TCl + TCa + TK + TMg <= tiny) then - so4 = max(so4, tiny) - nh4 = max(nh4, tiny) - no3 = max(no3, tiny) - na = 0.0d0 - cl = 0.0d0 - ca = 0.0d0 - k = 0.0d0 - mg = 0.0d0 - ! - ! ## Calculate sulfate ratio - sulrat = nh4 / so4 - ! - ! ## 4. Sulfate poor (case: calcd3) - if (2.0 <= sulrat) then - case_number = 4.0d0 - call mach_hetp_calcd3(so4, nh4, hno3, nh3, hso4, h, no3, & - lwc, rh, temp, k0, p1, p2, nr) - ! - ! ## 5. Sulfate rich, no acid (case: calce4) - else if (1.0 <= sulrat .and. sulrat < 2.0) then - case_number = 5.0d0 - call mach_hetp_calce4(so4, nh4, hno3, hso4, h, no3, & - lwc, rh, temp, k0, p1, p2, nr) - ! - ! ## 6. Sulfate rich, free acid (case: calcf2) - elseif (sulrat < 1.0) then - case_number = 6.0d0 - call mach_hetp_calcf2(so4, nh4, hno3, hso4, h, no3, & - lwc, rh, temp, k0, p1, p2, nr) - end if - ! - ! ### Branch 3 ### - ! ISRP3F: Only sulfate, ammonium, nitrate, chloride and calcium - else if (TCa + TK + TMg <= tiny) then - ! ## Adjust for too little ammonium and chloride - nh4 = max(nh4, tiny) ! In ISORROPIA II nh4 and cl are set to 1.0d-10 (not tiny) - cl = max(cl, tiny) ! creating 'excess mass', HETP uses tiny for mass conservation - ! - ! ## Adjust for too little sodium, sulfate and nitrate combined - if (na + so4 + no3 <= tiny) then - na = 1.0d-20 ! In ISORROPIA II na and so4 are set to 1.0d-10 (not tiny) - so4 = 1.0d-20 ! creating 'excess mass', HETP uses tiny for mass conservation - end if - ! - na = max(na, tiny) - so4 = max(so4, tiny) - no3 = max(no3, tiny) - ca = 0.0d0 - k = 0.0d0 - mg = 0.0d0 - ! - ! ## Check if too much sodium, if too much sodium adjust - ! Keep track of free amount that results after adjustment - if (na > 2.0d0*so4 + no3 + cl) then - frna_init = na - (1.0 - 1.0d-6)*(2.0d0*so4 + no3 + cl) - na = (1.0 - 1.0d-6)*(2.0d0*so4 + no3 + cl) - ! write(*,*), 'Warning error: Na adjusted' - end if - ! - ! ## Calculate sulfate ratios - sulrat = (na + nh4) / so4 - sodrat = na / so4 - ! - ! ## 7. Sulfate poor and sodium poor (case: calcg5) - if (2.0 <= sulrat .and. sodrat < 2.0) then - case_number = 7.0d0 - call mach_hetp_calcg5(so4, nh4, nh3, hno3, hcl, hso4, & - na, cl, no3, h, lwc, rh, temp, k0, & - p1, p2, nr) - ! - ! ## 8. Sulfate poor and sodium rich (case: calch6) - else if (sulrat >= 2.0 .and. sodrat >= 2.0) then - case_number = 8.0d0 - call mach_hetp_calch6(so4, nh4, nh3, hno3, hcl, hso4, & - na, cl, no3, h, lwc, frna, rh, & - temp, k0, p1, p2, nr) - ! - ! ## 9. Sulfate rich, no acid (case: calci6) - else if (1.0 <= sulrat .and. sulrat < 2.0) then - case_number = 9.0d0 - call mach_hetp_calci6(so4, nh4, nh3, hno3, hcl, hso4, & - na, cl, no3, h, lwc, frna, rh, & - temp, k0, p1, p2, nr) - ! - ! ## 10. Sulfate rich, free acid (case: calcj3) - else if (sulrat < 1.0) then - case_number = 10.0d0 - call mach_hetp_calcj3(so4, nh4, nh3, hno3, hcl, hso4, & - na, cl, no3, h, lwc, rh, temp, k0, & - p1, p2, nr) - end if - ! - ! ### Branch 4 ### - ! ISRP4F: All species are possibly present, at least one crustal species - ! (Ca, K, Mg) is present; Na and Cl are not necessarily present - else - ! ######In HETP; do not perform the below mass adjustments############ - ! #################################################################### - ! ## Adjust for too little ammonium and chloride - ! nh4 = max(nh4, 1.0d-10) - ! cl = max(cl, 1.0d-10) - ! - ! ## Adjust for too little sodium, sulfate and nitrate combined - ! if (na + so4 + no3 <= 1.0d-10) then - ! na = 1.0d-10 - ! so4 = 1.0d-10 - ! end if - ! #################################################################### - ! - na = max(na, tiny) - so4 = max(so4, tiny) - nh4 = max(nh4, tiny) - no3 = max(no3, tiny) - cl = max(cl, tiny) - ca = max(ca, tiny) - k = max(k, tiny) - mg = max(mg, tiny) - ! - ! ## Check if too much sodium + crustals; if too much adjust - rest = 2.0*so4 + no3 + cl - if (na + ca + k + mg > rest) then - ccaso4i = min(so4, ca) - frso4i = max(so4 - ccaso4i, 0.0d0) - cafri = max(ca - ccaso4i, 0.0d0) - ccano32i = min(cafri, 0.5d0*no3) - cafri = max(cafri - ccano32i, 0.0d0) - no3fri = max(no3 - 2.0d0*ccano32i, 0.0d0) - ccacl2i = min(cafri, 0.5d0*cl) - clfri = max(cl - 2.0d0*ccacl2i, 0.0d0) - rest1 = 2.0d0*frso4i + no3fri + clfri - ! - cna2so4i = min(frso4i, 0.5d0*na) - frso4i = max(frso4i - cna2so4i, 0.0d0) - nafri = max(na - 2.0d0*cna2so4i, 0.0d0) - cnacli = min(nafri, clfri) - nafri = max(nafri - cnacli, 0.0d0) - clfri = max(clfri - cnacli, 0.0d0) - cnano3i = min(nafri, no3fri) - no3fr = max(no3fri - cnano3i, 0.0d0) - rest2 = 2.0d0*frso4i + no3fri + clfri - ! - cmgso4i = min(frso4i, mg) - frmgi = max(mg - cmgso4i, 0.0d0) - frso4i = max(frso4i - cmgso4i, 0.0d0) - cmgno32i = min(frmgi, 0.5d0*no3fri) - frmgi = max(frmgi - cmgno32i, 0.0d0) - no3fri = max(no3fri - 2.0d0*cmgno32i, 0.0d0) - cmgcl2i = min(frmgi, 0.5d0*clfri) - clfri = max(clfri - 2.0d0*cmgcl2i, 0.0d0) - rest3 = 2.0d0*frso4i + no3fri + clfri - ! - if (ca > rest) then ! Ca > 2*SO4 + Cl + NO3? - frca_init = max(ca - (1.0 - 1.0d-6)*rest, 0.0d0) - frna_init = na - frk_init = k - frmg_init = mg - ca = (1.0 - 1.0d-6)*rest - na = 0.0d0 - k = 0.0d0 - mg = 0.0d0 - ! write(*,*), 'Warning error: Ca, Na, K, Mg in excess' - ! - else if (na > rest1) then ! Na > 2*frso4 + frcl + frno3? - frna_init = max(na - (1.0 - 1.0d-6)*rest1, 0.0d0) - frk_init = k - frmg_init = mg - na = (1.0 - 1.0d-6)*rest1 - k = 0.0d0 - mg = 0.0d0 - ! write(*,*), 'Warning error: Na, K, Mg in excess' - ! - else if (mg > rest2) then ! Mg > 2*frso4 + frcl + frno3? - frk_init = k - frmg_init = max(mg - (1.0 - 1.0d-6)*rest2, 0.0d0) - mg = (1.0 - 1.0d-6)*rest2 - k = 0.0d0 - ! write(*,*), 'Warning error: K, Mg in excess' - ! - else if (k > rest3) then ! K > 2*frso4 + frcl + frno3? - frk_init = max(k - (1.0 - 1.0d-6)*rest3, 0.0d0) - k = (1.0 - 1.0d-6)*rest3 - ! write(*,*), 'Warning error: K in excess' - end if - end if - ! - ! ## Calculate sulfate ratios - so4rat = (na + nh4 + ca + k + mg) / so4 - crnarat = (na + ca + k + mg) / so4 - crrat = (ca + k + mg) / so4 - ! - ! ## 11. Sulfate poor and dust + sodium poor - if (2.0 <= so4rat .and. crnarat < 2.0) then - case_number = 11.0d0 - call mach_hetp_calco7(so4, nh4, nh3, hno3, hcl, hso4, & - na, cl, no3, h, lwc, ca, k, mg, & - caso4, frmg, frna, frca, frk, rh, & - temp, k0, p1, p2, nr) - ! - ! ## 12-13. Sulfate poor and dust + sodium rich - else if (so4rat >= 2.0 .and. crnarat >= 2.0) then - if (crrat <= 2.0) then - case_number = 12.0d0 - call mach_hetp_calcm8(so4, nh4, nh3, hno3, hcl, hso4, & - na, cl, no3, h, lwc, ca, k, mg, & - caso4, frca, frmg, frk, frna, & - rh, temp, k0, p1, p2, nr) - ! - else if (crrat > 2.0) then - case_number = 13.0d0 - call mach_hetp_calcp13(so4, nh4, nh3, hno3, hcl, hso4, & - na, cl, no3, h, lwc, ca, k, mg, & - caso4, frso4, frmg, frk, frca, & - frna, rh, temp, k0, p1, p2, nr) - end if - ! - ! ## 14. Sulfate rich (no acid) - else if (1.0 <= so4rat .and. so4rat < 2.0) then - case_number = 14.0d0 - call mach_hetp_calcl9(so4, nh4, nh3, hno3, hcl, hso4, & - na, cl, no3, h, lwc, ca, k, mg, & - caso4, frmg, frk, frca, frna, & - frso4, rh, temp, k0, p1, p2, nr) - ! - ! ## 15. Sulfate super rich (free acid) - else if (so4rat < 1.0) then - case_number = 15.0d0 - call mach_hetp_calck4(so4, nh4, nh3, hno3, hcl, hso4, & - na, cl, no3, h, lwc, ca, k, mg, & - caso4, rh, temp, k0, p1, p2, nr) - end if - end if - ! - ! ### Return output ### - ! Add up free amounts after chemical partitioning at thermodynamic equilibrium - frca = frca + frca_init - frna = frna + frna_init - frk = frk + frk_init - frmg = frmg + frmg_init - lwc = lwc * 1.0d3 / 18.0d0 ! kg/m3 air -> mol/m3 air - ! - return - end subroutine mach_hetp_main_15cases - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: A2; Sulfate poor - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calca2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, oh_i, & - lwn_i, rh, temp, k0, p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: oh_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, gnh3, h, oh, lwn, t, aw, so4_t, nh4_t - real(kind=8) :: khso4, knh3, kh2o, errin, errouloc, errinlocb - real(kind=8) :: omebe, omehi, y1, y2, y3, x3, c1, k1, k2, k3, k4, ya, yb, xa, xb - real(kind=8) :: dx, tt1, tt2, lwnsq, gmax, loccondition - real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, u1 - integer(kind=4) :: j, k, rooteval, irh, nmax - logical(kind=4) :: condition, noroot, earlyexit, soln, frst, calain, calou - real(kind=8), dimension(13) :: gama, gamin, gamou - ! - so4 = so4_i - nh4 = nh4_i - aw = rh - t = temp - hso4 = 0.0d0 - gnh3 = 0.0d0 - h = 0.0d0 - oh = 0.0d0 - lwn = 0.0d0 - so4_t = 0.0d0 - nh4_t = nh4 - noroot =.false. - earlyexit = .false. - soln = .false. - frst = .true. - calain = .true. - calou = .true. - loccondition = 0.0d0 - gama = 0.1d0 - gamou = 0.1d0 - gamin = 1.0d10 - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt1 = tstd / t - 1.0d0 - tt2 = 1.0d0 + log(tstd / t) - tstd / t - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Aerosol liquid water content - so4_t = so4 - lwn = max(so4_t/awas(irh), tiny) - ! - ! ## Constant values - lwnsq = aw*lwn*lwn - c1 = r*t - k1 = kh2o*lwnsq - k2 = knh3*c1 - k3 = khso4*lwn - k4 = k2/kh2o - ! - ! - ! ### STAGE 1: Root tracking ### - ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs - rooteval = 0 - condition = .true. - do while (rooteval < 2 .or. (condition .and. rooteval < ndiv+1)) - rooteval = rooteval + 1 - ! - ! ## Set low limit and high limit - if (rooteval == 1) then - omehi = 2.0d0*so4 ! high limit: from NH4+ -> NH3(g) + H+(aq) - y1 = 1.0d0 - end if - ! - ! ## Begin search on subinterval - if (rooteval == 2) then - soln = .false. - if (abs(y2) <= eps) then - earlyexit = .true. - end if - y1 = y2 - ! - if (earlyexit) then - dx = 0.0d0 - else - dx = (omehi - tiny)/float(ndiv) - end if - ! - omehi = max(omehi - dx, tiny) - end if - ! - ! ## Continue search - if (rooteval > 2) then - if (loccondition < 0.0d0) then - ! ## 1. Root has been found on the subinterval; save x values for ITP search - y1 = y1 - omebe = omebe - omehi = omehi - else - ! ## 2. No root has been found; continue searching in the next subinterval - y1 = y2 - omebe = omehi - omehi = max(omehi - dx, tiny) - end if - end if - ! - ! ## Solve the system of equations - frst = .true. - calain = .true. - ! - if (( .not. soln)) then - h = omehi - so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/omehi + 1.0d0)), tiny) - nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/omehi + 1.0d0), 2.0d0*so4_t) - hso4 = so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/omehi + 1.0d0) - gnh3 = max(nh4 - nh4_t, tiny) - oh = k1/omehi - end if - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 0 - do while ( k < nsweep-1 .and. errin >= epsact) - k = k + 1 - - ! ## Reset gamou - if (( .not. soln) .and. frst) then - gamou(4) = gama(4) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(13) = gama(13) - end if - - ! ## Reset gamin - if (( .not. soln)) then - gamin(4) = gama(4) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(13) = gama(13) - end if - ! - call mach_hetp_calcact1b(h, nh4_t, so4_t, hso4, lwn, gama, t, soln, & - frst, calain, calou) - ! - if (frst) then - errouloc = 0 - errouloc = max(errouloc, abs(gamou(7) - gama(7)) / gamou(7)) - errouloc = max(errouloc, abs(gamou(8) - gama(8)) / gamou(8)) - errouloc = max(errouloc, abs(gamou(9) - gama(9)) / gamou(9)) - errouloc = max(errouloc, abs(gamou(4) - gama(4)) / gamou(4)) - errouloc = max(errouloc, abs(gamou(13) - gama(13)) / gamou(13)) - calou = errouloc .ge. epsact - frst = .false. - end if - ! - errinlocb = 0 - errinlocb = max(errinlocb, abs(gamin(7) - gama(7)) / gamin(7)) - errinlocb = max(errinlocb, abs(gamin(8) - gama(8)) / gamin(8)) - errinlocb = max(errinlocb, abs(gamin(9) - gama(9)) / gamin(9)) - errinlocb = max(errinlocb, abs(gamin(4) - gama(4)) / gamin(4)) - errinlocb = max(errinlocb, abs(gamin(13) - gama(13)) / gamin(13)) - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - errin = max(errin, 0.0d0) - errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) - errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) - errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) - errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) - errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) - ! - ! ## Solve system of equations, using new activity coefficients - if (( .not. soln)) then - h = omehi - so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/omehi + 1.0d0)), tiny) - nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/omehi + 1.0d0), 2.0d0*so4_t) - hso4 = so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/omehi + 1.0d0) - gnh3 = max(nh4 - nh4_t, tiny) - oh = k1/omehi - end if - end do - ! - y2 = (nh4_t/(2.0d0*so4_t + hso4) - 1.0d0) + h/(2.0d0*so4_t + hso4) - ! - ! ## Check for criteria to exit root tracking - loccondition = sign(1.0d0,y1)*sign(1.0d0,y2) - ! - ! ## AFTER iterating through ALL ndiv subdivided intervals - if (rooteval == ndiv + 1) then - ! ## (1) No solution; reset x-value to 'tiny' and use to solve system - if (loccondition > 0.0d0 .and. abs(y2) > eps .and. ( .not. earlyexit)) then - noroot = .true. - ! write(*,*), 'Warning in CALCA2: no solution found; no interval with sign change' - omehi = tiny ! Reset to tiny - omebe = omehi - else if (loccondition > 0.0d0 .and. abs(y2) <= eps .and. ( .not. earlyexit)) then - ! ## (2) Solution is assumed and ITP is not required - noroot = .true. - soln = .true. - else if (earlyexit) then - ! ## (3) Solution is assumed and ITP is not required - noroot = .true. - omehi = tiny ! Reset to tiny - omebe = omehi - end if - end if - ! - ! ## Test for criteria to exit root tracking - condition = .false. - if (loccondition > 0.0d0 .and. ( .not. noroot)) then - condition = .true. - else - soln = .true. - end if - end do - ! - ! ## The root tracking did not iterate until ndiv - ! ## Check if an x-value of tiny was a solution, if so reset x-value to tiny - if (rooteval < ndiv + 1 .and. earlyexit) then - ! Solution has been assumed - noroot = .true. - omehi = tiny ! Reset to tiny - omebe = omehi - soln = .true. - end if - ! - if (( .not. earlyexit) .and. ( .not. noroot)) then - soln = .false. - end if - ! - ! - ! ### STAGE 2: modified bisection search (using ITP algorithm) ### - ! ## Initialize static ITP variables - if (( .not. noroot)) then - yb = y1 - ya = y2 - ! - xa = omehi - xb = omebe - x3 = omebe - ! - if (xa == xb) then - noroot = .true. - gx = tiny - else - gx = xb - xa - end if - ! - gx2 = (xa+xb)*0.5d0 - u1 = 0.2d0/gx - nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 - nmax = int(nh) + 2 - else - x3 = omehi - soln = .true. - end if - ! - ! ## Start search - j = 0 - condition = .true. - do while (j < maxit .and. condition) - ! ## Set dynamic ITP variables - if (( .not. noroot) .and. ( .not. soln)) then - gx = xb - xa - xh = 0.5d0*(xa + xb) - rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) - delta= u1*(max(gx, 0.0d0))**2.0d0 - xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) - ! - sigma = sign(1.0d0, xh - xf) - if (delta <= abs(xh - xf)) then - xt = xf + sigma*delta - else - xt = xh - end if - ! - if (abs(xt - xh) <= rr) then - x3 = xt - else - x3 = xh - sigma*rr - end if - end if - ! - j = j + 1 - ! - if (( .not. soln)) then - gmax = 0.1d0 - gmax = max(gmax, gama(7)) - gmax = max(gmax, gama(8)) - gmax = max(gmax, gama(9)) - gmax = max(gmax, gama(4)) - gmax = max(gmax, gama(13)) - end if - ! - ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. ( .not. soln)) then - gama(7) = 0.1d0 - gama(8) = 0.1d0 - gama(9) = 0.1d0 - gama(4) = 0.1d0 - gama(13) = 0.1d0 - gamin(7) = 1.0d10 - gamin(8) = 1.0d10 - gamin(9) = 1.0d10 - gamin(4) = 1.0d10 - gamin(13)= 1.0d10 - calou = .true. - frst = .true. - end if - ! - ! ## Solve system of equations - frst = .true. - calain = .true. - if (( .not. soln)) then - h = x3 - so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/x3 + 1.0d0)), tiny) - nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/x3 + 1.0d0), 2.0d0*so4_t) - hso4 = so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/x3 + 1.0d0) - gnh3 = max(nh4 - nh4_t, tiny) - oh = k1/x3 - end if - ! - ! ## Iterate until convergence of activity coefficients - k = 0 - errin = 1.0d0 - do while ( k < nsweep-1 .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamou - if (( .not. soln) .and. frst) then - gamou(4) = gama(4) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(13) = gama(13) - end if - ! - ! ## Reset gamin - if (( .not. soln)) then - gamin(4) = gama(4) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(13) = gama(13) - end if - ! - call mach_hetp_calcact1b(h, nh4_t, so4_t, hso4, lwn, gama, t, soln, & - frst, calain, calou) - ! - if (frst) then - errouloc = 0 - errouloc = max(errouloc, abs(gamou(7) - gama(7)) / gamou(7)) - errouloc = max(errouloc, abs(gamou(8) - gama(8)) / gamou(8)) - errouloc = max(errouloc, abs(gamou(9) - gama(9)) / gamou(9)) - errouloc = max(errouloc, abs(gamou(4) - gama(4)) / gamou(4)) - errouloc = max(errouloc, abs(gamou(13) - gama(13)) / gamou(13)) - calou = errouloc .ge. epsact - frst = .false. - end if - ! - errinlocb = 0 - errinlocb = max(errinlocb, abs(gamin(7) - gama(7)) / gamin(7)) - errinlocb = max(errinlocb, abs(gamin(8) - gama(8)) / gamin(8)) - errinlocb = max(errinlocb, abs(gamin(9) - gama(9)) / gamin(9)) - errinlocb = max(errinlocb, abs(gamin(4) - gama(4)) / gamin(4)) - errinlocb = max(errinlocb, abs(gamin(13) - gama(13)) / gamin(13)) - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - errin = max(errin, 0.0d0) - errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) - errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) - errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) - errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) - errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) - ! - ! ## Solve system of equations, with new activity coefficients - if (( .not. soln)) then - h = x3 - so4_t = max(so4 - (so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/x3 + 1.0d0)), tiny) - nh4_t = max(nh4/(1.0d0/(k4*(gama(8)/gama(9))**2.0)/x3 + 1.0d0), 2.0d0*so4_t) - hso4 = so4/((k3/gama(7)*(gama(8)/gama(7))**2.0)/x3 + 1.0d0) - gnh3 = max(nh4 - nh4_t, tiny) - oh = k1/x3 - end if - end do - ! - y3 = (nh4_t/(2.0d0*so4_t + hso4) - 1.0d0) + h/(2.0d0*so4_t + hso4) - ! - condition = .false. - if (noroot) then - ! ## If no root on interval then do not perform ITP - xa = x3 - xb = x3 - else if (y3 > 0.0d0 .and. ( .not. soln)) then - xb = x3 - yb = y3 - else if (y3 < 0.0d0 .and. ( .not. soln)) then - xa = x3 - ya = y3 - else if (( .not. soln)) then - xa = x3 - xb = x3 - end if - ! - ! ## Check for convergence criteria to exit ITP: - if (abs(xb - xa) > abs(xa*eps) .and. ( .not. noroot)) then - condition = .true. - soln = .false. - else - soln = .true. - end if - end do - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - hso4_i = hso4 - h_i = h - nh3g_i = gnh3 - lwn_i = lwn - oh_i = oh - ! - return - end subroutine mach_hetp_calca2 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: B4; Sulfate rich, no free acid - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcb4(so4_i, nh4_i, nh3g_i, hso4_i, h_i, lwn_i, & - rh, temp, k0, p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables: - real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, t, aw, tt1, tt2, c1, so4_t, nh4_t - real(kind=8) :: khso4, knh3, kh2o, bb, cc, dd, hh, ff, v, ak1, errin, tt0 - real(kind=8) :: m4, m9, m13, a3, c2, c3, c4 - integer(kind=4) :: j, irh - logical(kind=4) :: gg - real(kind=8), dimension(13) :: gama, gamin - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - aw = rh - t = temp - hso4 = 0.0d0 - gnh3 = 0.0d0 - h = 0.0d0 - lwn = 0.0d0 - so4_t = 0.0d0 - nh4_t = nh4 - gama = 0.1d0 - gamin = 1.0d10 - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Calculate dry composition; used to calculate initial aerosol liquid water - gg = 2.0*so4 - nh4 <= nh4 - so4 - ! - if (gg) then - ! NH4HSO4 >= (NH4)2SO4 - m4 = 2.0d0*nh4 - 3.0d0*so4 ! clc - m9 = 0.0d0 ! nh4hs4 - m13 = 2.0d0*so4 - nh4 ! nh42s4 - else - ! NH4HSO4 < (NH4)2SO4 - m4 = 0.0d0 ! clc - m9 = 3.0d0*so4 - 2.0d0*nh4 ! nh4hs4 - m13 = nh4 - so4 ! nh42s4 - end if - ! - ! ## Save ZSR parameters as variables to limit indirect addressing in loops - c2 = awlc(irh) - c3 = awab(irh) - c4 = awas(irh) - ! - ! ## Initial aerosol liquid water content - lwn = max(m13/c2 + m9/c3 + m4/c4, tiny) - c1 = khso4*(lwn/0.1d0) - ! - ! - ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### - ! ## Setup initial conditions - ! ## 1. Calculate initial concentrations of H+/HSO4-/SO42- - bb = so4 + c1 - nh4 - cc = -c1*so4 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root - end if - ! - ! ## 2. Speciation - so4_t = max(tiny, min(hh, so4)) - hso4 = max(tiny, min(so4 - so4_t, so4)) - h = max(tiny, min(c1*hso4/so4_t, so4)) - ! - ! ## 3. Aerosol liquid water content - ! ## Correct for HSO4 dissociation - gg = so4_t - h < hso4 + h - if (gg) then - m4 = 0.0d0 - m13 = so4_t - h - m9 = max((hso4 + h) - (so4_t - h), 0.0d0) - else - m13 = hso4 + h - m9 = 0.0d0 - m4 = max((so4_t - h) - (hso4 + h), 0.0d0) - end if - lwn = max(m13/c2 + m9/c3 + m4/c4, tiny) - ! - ! ## Iterative search for solution with convergence of activity coefficients - j = 0 - errin = 1.0d0 - do while (j < nsweep-1 .and. errin >= epsact) - j = j + 1 - ! - ! ## Reset gamin - gamin(4) = gama(4) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(13) = gama(13) - ! - call mach_hetp_calcact1(h, nh4_t, so4_t, hso4, lwn, gama, t) - ! - ! ## Test convergence criterion: max change in the activity coefficients - errin = 0.0d0 - errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) - errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) - errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) - errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) - errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) - - ! ## 1. Solve system of equations - ak1 = khso4*((gama(8)/gama(7))*(gama(8)/gama(7)))*(lwn/gama(7)) - bb = so4 + ak1 - nh4_t - cc = -ak1*so4 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root - end if - ! - ! ## 2. Speciation - so4_t = max(tiny, min(hh, so4)) - hso4 = max(tiny, min(so4 - so4_t, so4)) - h = max(tiny, min(ak1*hso4/so4_t, so4)) - ! - ! ## 3. Aerosol liquid water content - ! ## Correct for HSO4 dissociation - gg = so4_t - h < hso4 + h - if (gg) then - m4 = 0.0d0 - m13 = so4_t - h - m9 = max((hso4 + h) - (so4_t - h), 0.0d0) ! NH4HSO4 - else - m13 = hso4 + h - m9 = 0.0d0 - m4 = max((so4_t - h) - (hso4 + h), 0.0d0) ! (NH4)2SO4 - end if - ! - lwn = max(m13/c2 + m9/c3 + m4/c4, tiny) - end do - ! - ! - ! ### MINOR SYSTEM: NH4+/NH3/H+ ### - ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb - ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major - ! system (solved above) is used initially. - if (lwn > tiny) then - ! ## 1. Calculate NH3 sublimation - ff = 0.0d0 - a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 - bb = h + 1.0d0/a3 ! bb always > 0 - cc = -nh4_t/a3 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ! ## 2. Speciation - ! ## Due to round-off, ff may be .gt. nh4_t giving negative nh4_t - ! ## If this condition is true, then set ff = nh4_t - ff = max(tiny, min(ff, nh4_t)) - gnh3 = ff - nh4_t = max(nh4_t - ff, 0.0d0) - h = h + ff - end if - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - hso4_i = hso4 - h_i = h - nh3g_i = gnh3 - lwn_i = lwn - ! - return - end subroutine mach_hetp_calcb4 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: C2; Sulfate rich, free acid - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcc2(so4_i, nh4_i, nh3g_i, hso4_i, h_i, lwn_i, & - rh, temp, k0, p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, frh2so4, t, aw - real(kind=8) :: khso4, knh3, kh2o, bb, cc, dd, hh, v, errin, tt0 - real(kind=8) :: so4_t, nh4_t, tt1, tt2, c1, c2, c3, ff, a3 - integer(kind=4) :: j, irh - real(kind=8), dimension(13) :: gama, gamin - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - aw = rh - t = temp - hso4 = 0.0d0 - gnh3 = 0.0d0 - h = 0.0d0 - lwn = 1.0d-20 - so4_t = 0.0d0 - nh4_t = 0.0d0 - gama = 0.1d0 - gamin = 1.0d10 - frh2so4 = 0.0d0 - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Aerosol liquid water content - c3 = so4 - nh4 - lwn = max(max(c3, 0.0d0)/awsa(irh) + nh4/awab(irh), tiny) - ! - ! ## Constant values - c1 = khso4*1.0d-19 - c2 = khso4*lwn - ! - ! - ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### - ! ## Setup initial conditions - ! ## 1. Calculate initial concentrations of H+/HSO4-/SO42- - bb = c3 + c1 - cc = -c1*so4 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root - end if - ! - ! ## 2. Speciation - nh4_t = nh4 - so4_t = hh - hso4 = max(so4 - hh, tiny) - h = c3 + hh - frh2so4 = max(so4_t + hso4 - nh4_t, 0.0d0) ! Free H2SO4 - ! - ! ## Iterative search for solution with convergence of activity coefficients - j = 0 - errin = 1.0d0 - do while (j < nsweep-1 .and. errin >= epsact) - j = j + 1 - ! - ! ## Reset gamin - gamin(4) = gama(4) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(13) = gama(13) - ! - call mach_hetp_calcact1(h, nh4_t, so4_t, hso4, lwn, gama, t) - ! - ! ## Test convergence criterion: max change in the activity coefficients - errin = 0.0d0 - errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) - errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) - errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) - errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) - errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) - ! - ! ## 1. Solve system of equations - bb = c3 + c2/gama(7)*(gama(8)/gama(7))**2.0 - cc = -(c2/gama(7)*(gama(8)/gama(7))**2.0)*so4 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root - end if - ! - ! ## 2. Speciation - so4_t = hh - hso4 = max(so4 - hh, tiny) - h = c3 + hh - frh2so4 = max(so4_t + hso4 - nh4_t, 0.0d0) - end do - ! - ! - ! ### MINOR SYSTEM: NH4+/NH3/H+ ### - ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb - ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major - ! system (solved above) is used initially. - if (lwn > tiny) then - ! Calculate NH3 sublimation - ff = 0.0d0 - a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 - bb = h + 1.0d0/a3 ! bb always > 0 - cc = -nh4_t/a3 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ! Speciation - ! Due to round-off, ff may be .gt. nh4_t giving negative nh4_t - ! If this condition is true, then set ff = nh4_t - ff = max(tiny, min(ff, nh4_t)) - gnh3 = ff - nh4_t = max(nh4_t - ff, 0.0d0) - h = h + ff - end if - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - hso4_i = hso4 - h_i = h - nh3g_i = gnh3 - lwn_i = lwn - ! - return - end subroutine mach_hetp_calcc2 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: D3; Sulfate poor - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcd3(so4_i, nh4_i, hno3g_i, nh3g_i, hso4_i, h_i, no3_i, & - lwn_i, rh, temp, k0, p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, ghno3, gnh3, gnh3_i, ghno3_i, no3, h, lwn, t, aw, nh4no3, nh42s4 - real(kind=8) :: knh3, khso4, kh2o, khno3, knh4no3, k1, k2, k3, c1, c1a, c1b, c2, c3, c4, c10, c11 - real(kind=8) :: bb, cc, dd, hh, v, ak1, errin, tt0, a3, a7, psi3, denm, m1, m2 - real(kind=8) :: so4_t, nh4_t, no3_t, tt1, tt2, x3, gmax, y3, psilo, psihi, k4, k5, k6 - real(kind=8) :: omehi, omebe, y1, y2, dx, a4, ylo, yhi, pshi, ya, yb, xa, xb - real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, u1, errouloc, errinlocb - real(kind=8) :: cl, cl_t, ghcl, caso4, gama10sq, lwnsq - integer(kind=4) :: ii, j, k, rooteval, count_rt, irh, nmax - logical(kind=4) :: condition, soln, earlyexit, frst, calain, calou, noroot, redo, earlye - real(kind=8), dimension(13) :: gama, gamin, gamou, gama_min - real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter - real(kind=8) :: no3_min, nh4_min, h_min, lwn_min, gnh3_min, ghno3_min - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - aw = rh - t = temp - hso4 = 0.0d0 - ghno3 = 0.0d0 - gnh3 = 0.0d0 - gnh3_i= 0.0d0 - ghno3_i=0.0d0 - h = 0.0d0 - lwn = 0.0d0 - nh4no3= 0.0d0 - nh42s4= 0.0d0 - so4_t = 0.0d0 - nh4_t = nh4 - no3_t = 0.0d0 - cl = 0.0d0 - cl_t = 0.0d0 - ghcl = 0.0d0 - caso4 = 0.0d0 - soln = .false. - frst = .true. - calain= .true. - calou = .true. - redo = .false. - noroot= .false. - count_rt = 1 - earlyexit = .false. - gama = 0.1d0 - gamou = 0.1d0 - gamin = 1.0d10 - earlye = .false. - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3= k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## 6. NH4NO3(s) <==> NH3(g) + HNO3(g) (xk10) - knh4no3 = k0(9) * exp(p1(9)*tt1 + p2(9)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Calculate NH4NO3 that volatizes (ISORROPIA II: subroutine 'CALCD1A') - nh42s4 = so4 - c1 = max(0.0d0, min(nh4 - 2.0d0*nh42s4, no3)) - c1a = max(no3 - c1, 0.0d0) - c1b = max(nh4 - c1 - 2.0d0*nh42s4, 0.0d0) - c2 = c1a + c1b - c3 = sqrt(c2*c2 + 4.0d0*(knh4no3/(r*t)/(r*t))) - c4 = min(c1, 0.5d0*(-c2 + c3)) - ! - ! ## Initial speciation - nh4no3 = max(c1 - c4, 0.0d0) ! NH4NO3 (s) - gnh3 = c1b + c4 ! NH3 (g) - ghno3 = c1a + c4 ! HNO3 (g) - gnh3_i = gnh3 - ghno3_i= ghno3 - so4_t = nh42s4 - hso4 = 0.0d0 - nh4_t = nh4no3 - no3_t = nh4no3 - ! - ! ## Initial aerosol liquid water content - m1 = (so4_t + hso4) ! (NH4)2SO4 - m2 = (nh4_t - 2.0d0*m1) ! free NH4 - ! - ! ## Save ZSR allocations to limit indirect addressing - c10 = awas(irh) - c11 = awan(irh) - lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) - ! - ! ## Constant values - k1 = khno3*r*t - k2 = (knh3/kh2o)*r*t - k3 = kh2o*aw - pshi= gnh3 - k4 = nh4no3*2.0d0*nh42s4 + nh4no3*nh4no3 - k5 = 2.0d0*nh42s4 + nh4no3 - ! - ! - ! ### STAGE 1: Root tracking ### - ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs - rooteval = 0 - condition = .true. - do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking - rooteval = rooteval + 1 - ! - ! ## Set high limit for root tracking (i.e. lower bound) - if (rooteval == 1 .and. count_rt == 1) then - omehi = tiny - y1 = 1.0d0 - end if - ! - ! ## Begin search on subinterval - if (rooteval == 2) then - soln = .false. - if (count_rt == 1 .or. redo) then - ylo = y2 - end if - ! - gmax = 0.1d0 - gmax = max(gmax, gama( 4)) - gmax = max(gmax, gama( 5)) - gmax = max(gmax, gama( 7)) - gmax = max(gmax, gama( 8)) - gmax = max(gmax, gama( 9)) - gmax = max(gmax, gama(10)) - gmax = max(gmax, gama(13)) - ! - ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. ( .not. soln)) then - gama = 0.1d0 - gamin = 1.0d10 - gamou = 1.0d10 - calou = .true. - frst = .true. - end if - ! - if (abs(y2) <= eps .and. (count_rt == 1 .or. redo)) then - earlyexit = .true. - end if - ! - y1 = y2 - ! - if (earlyexit .or. (count_rt > 1 .and. ( .not. redo))) then - dx = 0.0d0 - else if (count_rt > 1 .and. redo) then - dx = (max(pshi-omehi, tiny))/float(ndiv) - omebe = omehi ! Lower bound of subinterval (xa) - elseif (count_rt == 1) then - dx = (pshi-tiny)/float(ndiv) - omebe = omehi ! Lower bound of subinterval (xa) - else - dx = 0.0d0 - end if - ! - omehi = omehi + dx ! Upper bound of subinterval (xb) - end if - ! - ! ## Continue search - if (rooteval > 2) then - if (( .not. soln)) then - gmax = 0.1d0 - gmax = max(gmax, gama( 4)) - gmax = max(gmax, gama( 5)) - gmax = max(gmax, gama( 7)) - gmax = max(gmax, gama( 8)) - gmax = max(gmax, gama( 9)) - gmax = max(gmax, gama(10)) - gmax = max(gmax, gama(13)) - end if - ! - ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. ( .not. soln)) then - gama = 0.1d0 - gamin = 1.0d10 - gamou = 1.0d10 - calou = .true. - frst = .true. - end if - - if (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0 .and. (count_rt == 1 .or. redo)) then - ! ## 1. Root has been found on the subinterval; save x values for ITP search - y1 = y1 - omebe = omebe - omehi = omehi - elseif (count_rt == 1 .or. redo) then - ! ## 2. No root has been found, continue searching in the next subinterval - y1 = y2 - omebe = omehi - omehi = omehi + dx - end if - end if - ! - ! ## Solve the system of equations - frst = .true. - calain = .true. - if (( .not. soln) .and. (count_rt == 1 .or. redo)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - a3 = k1*lwnsq/gama10sq - a4 = k2*gama10sq/(gama(5)*gama(5)) - a7 = k3*lwnsq - ! - ! ## 1. Calculate dissociation quantities - k6 = a3*a4*(gnh3_i - omehi) - psi3 = k6*ghno3_i - k4 - nh4no3*omehi - psi3 = psi3 / (k6 + k5 + omehi) - psi3 = min(max(psi3, 0.0d0), ghno3_i) - ! - ! ## 2. Calculate H+ - bb = omehi - psi3 - ! Use ISORROPIA II current scheme - denm = bb + sqrt(bb*bb + 4.0d0*a7) - if (denm <= tiny) then - denm = (bb + abs(bb)) + 2.0d0*a7/abs(bb) - end if - h = 2.0d0*a7/denm - ! - ! ## 3. Speciation - nh4_t = omehi + k5 - so4_t = nh42s4 - no3_t = psi3 + nh4no3 - ghno3 = max(ghno3_i - psi3, tiny2) - gnh3 = max(gnh3_i - omehi, tiny2) - ! - ! ## 4. Aerosol liquid Water content - m1 = so4_t + hso4 ! (NH4)2SO4 - m2 = nh4_t - 2.0d0*m1 ! free NH4 - lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) - end if - ! - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 0 - do while ( k < nsweep-1 .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamou - if (( .not. soln) .and. frst .and. (count_rt == 1 .or. redo)) then - gamou( 4) = gama( 4) - gamou( 5) = gama( 5) - gamou( 7) = gama( 7) - gamou( 8) = gama( 8) - gamou( 9) = gama( 9) - gamou(10) = gama(10) - gamou(13) = gama(13) - end if - ! - ! ## Reset gamin - if (( .not. soln) .and. (count_rt == 1 .or. redo)) then - gamin( 4) = gama( 4) - gamin( 5) = gama( 5) - gamin( 7) = gama( 7) - gamin( 8) = gama( 8) - gamin( 9) = gama( 9) - gamin(10) = gama(10) - gamin(13) = gama(13) - end if - ! - call mach_hetp_calcact2b(h, nh4_t, so4_t, hso4, no3_t, lwn, gama, t, soln, & - frst, calain, calou) - ! - if (frst) then - errouloc = 0 - errouloc = max(errouloc, abs(gamou(4 ) - gama(4 )) / gamou(4 )) - errouloc = max(errouloc, abs(gamou(5 ) - gama(5 )) / gamou(5 )) - errouloc = max(errouloc, abs(gamou(7 ) - gama(7 )) / gamou(7 )) - errouloc = max(errouloc, abs(gamou(8 ) - gama(8 )) / gamou(8 )) - errouloc = max(errouloc, abs(gamou(9 ) - gama(9 )) / gamou(9 )) - errouloc = max(errouloc, abs(gamou(10) - gama(10)) / gamou(10)) - errouloc = max(errouloc, abs(gamou(13) - gama(13)) / gamou(13)) - calou = errouloc .ge. epsact - frst = .false. - end if - ! - errinlocb = 0 - errinlocb = max(errinlocb, abs(gamin(4 ) - gama(4 )) / gamin(4 )) - errinlocb = max(errinlocb, abs(gamin(5 ) - gama(5 )) / gamin(5 )) - errinlocb = max(errinlocb, abs(gamin(7 ) - gama(7 )) / gamin(7 )) - errinlocb = max(errinlocb, abs(gamin(8 ) - gama(8 )) / gamin(8 )) - errinlocb = max(errinlocb, abs(gamin(9 ) - gama(9 )) / gamin(9 )) - errinlocb = max(errinlocb, abs(gamin(10) - gama(10)) / gamin(10)) - errinlocb = max(errinlocb, abs(gamin(13) - gama(13)) / gamin(13)) - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 13 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, with new activity coefficients - if (( .not. soln) .and. (count_rt == 1 .or. redo)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - a3 = k1*lwnsq/gama10sq - a4 = k2*gama10sq/(gama(5)*gama(5)) - a7 = k3*lwnsq - ! - ! ## 1. Calculate dissociation quantities - k6 = a3*a4*(gnh3_i - omehi) - psi3 = k6*ghno3_i - k4 - nh4no3*omehi - psi3 = psi3 / (k6 + k5 + omehi) - psi3 = min(max(psi3, 0.0d0), ghno3_i) - ! - ! ## 2. Calculate H+ - bb = (omehi - psi3) - ! Use ISORROPIA II current scheme - denm = bb + sqrt(bb*bb + 4.0d0*a7) - if (denm <= tiny) then - denm = (bb + abs(bb)) + 2.0d0*a7/abs(bb) - end if - h = 2.0d0*a7/denm - ! - ! ## 3. Speciation - nh4_t = omehi + k5 - so4_t = nh42s4 - no3_t = psi3 + nh4no3 - ghno3 = max(ghno3_i - psi3, tiny2) - gnh3 = max(gnh3_i - omehi, tiny2) - ! - ! ## 4. Aerosol liquid water content - m1 = (so4_t + hso4) ! (NH4)2SO4 - m2 = (nh4_t - 2.0d0*m1) ! free NH4 - lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) - end if - end do - ! - y2 = nh4_t/h/max(gnh3, tiny)/a4 - 1.0d0 !Function value - ! - ! ## Check for criteria to exit root tracking - condition = .false. - if (sign(1.0d0,y1)*sign(1.0d0,y2) > 0.0d0 .and. ( .not. noroot) .and. abs(y2) > eps) then - condition = .true. - elseif (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0 .and. abs(y2) > eps) then - ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP - soln = .true. - else - ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) - soln = .true. - noroot = .true. - earlye = .true. - end if - ! - if (rooteval == ndiv+1) then - count_rt = count_rt + 1 - ! - if (redo .or. count_rt == 2) then - yhi = y2 - redo = .false. - end if - ! - if (abs(y2) < eps) then - redo = .false. - noroot = .true. - else if (ylo < 0.0d0 .and. yhi < 0.0d0) then - redo = .false. - omehi = tiny - noroot = .true. - else if (ylo > 0.0d0 .and. yhi > 0.0d0) then - if (count_rt == 2) then - pshi = tiny - omebe = tiny - omehi = tiny - 0.1d0*(nh4no3 + nh42s4) !psi4lo - psihi = omebe - psilo = omehi - elseif (count_rt > 2) then - psihi = psilo - psilo = psihi - 0.1d0*(nh4no3 + nh42s4) - pshi = psihi - omebe = psihi - omehi = psilo - end if - ! - if (omehi < -1.0d0*(nh4no3 + nh42s4)) then - ! ## No solution - omehi = tiny - omebe = tiny - redo = .false. - noroot = .true. - else - ! ## Include sulfate in initial calculation of liquid water content - so4_t = nh42s4 - hso4 = 0.0d0 - nh4_t = nh4no3 - no3_t = nh4no3 - ! - m1 = (so4_t + hso4) ! (NH4)2SO4 - m2 = (nh4_t - 2.0d0*m1) ! free NH4 - lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) ! Water content - ! - redo = .true. - rooteval = 0 - end if - else - redo = .false. - end if - end if - end do - ! - ! - ! ### STAGE 2: modified bisection search (using ITP algorithm) ### - ! ## Initialize static ITP variables - if (( .not. noroot)) then - ya = y1 - yb = y2 - xa = omebe - xb = omehi - x3 = omehi - ! - if (xa == xb) then - noroot = .true. - gx = tiny - else - gx = xb - xa - end if - ! - gx2 = (xa+xb)*0.5d0 - u1 = 0.2d0/gx - nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 - nmax = int(nh) + 2 - else - x3 = omehi - end if - ! - ! ## Start search - y3_lastiter = 0.0d0 - x3_lastiter = 0.0d0 - y3_min = 1.0d20 - x3_min = 0.0d0 - ! - j = 0 - condition = .true. - ! - if (earlye) then - soln = .true. - else - soln = .false. - end if - ! - do while (j < maxit .and. condition) ! Begin outer loop for ITP search - ! ## Set dynamic ITP variables - ! 1. Track x3 and y3 of the previous iteration - if (j > 0) then - y3_lastiter = y3 - x3_lastiter = x3 - end if - ! - - ! 2. Track the minimum y3 that is found before ending - ! This is for a post-convergence correction, in case of an oscillatory solution - if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then - y3_min = y3_lastiter - x3_min = x3_lastiter - ghno3_min = ghno3 - no3_min = no3_t - h_min = h - gnh3_min = gnh3 - nh4_min = nh4_t - lwn_min = lwn - gama_min = gama - end if - ! - if (( .not. noroot) .and. ( .not. soln)) then - if (yb - ya == 0.0d0) then - write(*,*), '###### ABORT ######' - write(*,*), 'Zero divide in ITP reset: CALCD3' - write(*,*), 'SO4 in = ', so4 - write(*,*), 'NH4 in = ', nh4 - write(*,*), 'NO3 in = ', no3 - write(*,*), 'Temp in= ', t - write(*,*), 'RH in = ', aw - return - end if - ! - gx = xb - xa - xh = 0.5d0*(xa + xb) - rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) - delta= u1*(max(gx, 0.0d0))**2.0d0 - xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) - ! - sigma = sign(1.0d0, xh - xf) - if (delta <= abs(xh - xf)) then - xt = xf + sigma*delta - else - xt = xh - end if - ! - if (abs(xt - xh) <= rr) then - x3 = xt - else - x3 = xh - sigma*rr - end if - end if - ! - j = j + 1 - ! - if (( .not. soln)) then - gmax = 0.1d0 - gmax = max(gmax, gama( 4)) - gmax = max(gmax, gama( 5)) - gmax = max(gmax, gama( 7)) - gmax = max(gmax, gama( 8)) - gmax = max(gmax, gama( 9)) - gmax = max(gmax, gama(10)) - gmax = max(gmax, gama(13)) - end if - ! - ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. ( .not. soln)) then - gama = 0.1d0 - gamin = 1.0d10 - gamou = 1.0d10 - calou = .true. - frst = .true. - end if - ! - ! ## Solve system of equations - frst = .true. - calain = .true. - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - a3 = k1*lwnsq/gama10sq - a4 = k2*gama10sq/(gama(5)*gama(5)) - a7 = k3*lwnsq - ! - ! ## 1. Calculate dissociation quantities - k6 = a3*a4*(gnh3_i - x3) - psi3 = k6*ghno3_i - k4 - nh4no3*x3 - psi3 = psi3 / (k6 + k5 + x3) - psi3 = min(max(psi3, 0.0d0), ghno3_i) - ! - ! ## 2. Calculate H+ - bb = x3 - psi3 - ! Use ISORROPIA II current scheme - denm = bb + sqrt(bb*bb + 4.0d0*a7) - if (denm <= tiny) then - denm = (bb + abs(bb)) + 2.0d0*a7/abs(bb) - end if - h = 2.0d0*a7/denm - ! - ! ## 3. Speciation - nh4_t = x3 + k5 - so4_t = nh42s4 - no3_t = psi3 + nh4no3 - ghno3 = max(ghno3_i - psi3, tiny2) - gnh3 = max(gnh3_i - x3, tiny2) - ! - ! ## 4. Aerosol liquid water content - m1 = (so4_t + hso4) ! (NH4)2SO4 - m2 = (nh4_t - 2.0d0*m1) ! free NH4 - lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) - end if - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 0 - do while ( k < nsweep-1 .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamin and gamou - if (( .not. soln) .and. frst) then - gamou( 4) = gama( 4) - gamou( 5) = gama( 5) - gamou( 7) = gama( 7) - gamou( 8) = gama( 8) - gamou( 9) = gama( 9) - gamou(10) = gama(10) - gamou(13) = gama(13) - end if - ! - if (( .not. soln)) then - gamin( 4) = gama( 4) - gamin( 5) = gama( 5) - gamin( 7) = gama( 7) - gamin( 8) = gama( 8) - gamin( 9) = gama( 9) - gamin(10) = gama(10) - gamin(13) = gama(13) - end if - ! - call mach_hetp_calcact2b(h, nh4_t, so4_t, hso4, no3_t, lwn, gama, t, soln, & - frst, calain, calou) - ! - if (frst) then - errouloc = 0.0d0 - errouloc = max(errouloc, abs(gamou(4 ) - gama(4 )) / gamou(4 )) - errouloc = max(errouloc, abs(gamou(5 ) - gama(5 )) / gamou(5 )) - errouloc = max(errouloc, abs(gamou(7 ) - gama(7 )) / gamou(7 )) - errouloc = max(errouloc, abs(gamou(8 ) - gama(8 )) / gamou(8 )) - errouloc = max(errouloc, abs(gamou(9 ) - gama(9 )) / gamou(9 )) - errouloc = max(errouloc, abs(gamou(10) - gama(10)) / gamou(10)) - errouloc = max(errouloc, abs(gamou(13) - gama(13)) / gamou(13)) - calou = errouloc .ge. epsact - frst = .false. - end if - ! - errinlocb = 0.0d0 - errinlocb = max(errinlocb, abs(gamin(4 ) - gama(4 )) / gamin(4 )) - errinlocb = max(errinlocb, abs(gamin(5 ) - gama(5 )) / gamin(5 )) - errinlocb = max(errinlocb, abs(gamin(7 ) - gama(7 )) / gamin(7 )) - errinlocb = max(errinlocb, abs(gamin(8 ) - gama(8 )) / gamin(8 )) - errinlocb = max(errinlocb, abs(gamin(9 ) - gama(9 )) / gamin(9 )) - errinlocb = max(errinlocb, abs(gamin(10) - gama(10)) / gamin(10)) - errinlocb = max(errinlocb, abs(gamin(13) - gama(13)) / gamin(13)) - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 13 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, with new activity coefficients - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - a3 = k1*lwnsq/gama10sq - a4 = k2*gama10sq/(gama(5)*gama(5)) - a7 = k3*lwnsq - ! - ! ## 1. Calculate dissociation quantities - k6 = a3*a4*(gnh3_i - x3) - psi3 = k6*ghno3_i - k4 - nh4no3*x3 - psi3 = psi3 / (k6 + k5 + x3) - psi3 = min(max(psi3, 0.0d0), ghno3_i) - ! - ! ## 2. Calculate H+ - bb = x3 - psi3 - ! Use ISORROPIA II current scheme - denm = bb + sqrt(bb*bb + 4.0d0*a7) - if (denm <= tiny) then - denm = (bb + abs(bb)) + 2.0d0*a7/abs(bb) - end if - h = 2.0d0*a7/denm - ! - ! ## 3. Speciation - nh4_t = x3 + k5 - so4_t = nh42s4 - no3_t = psi3 + nh4no3 - ghno3 = max(ghno3_i - psi3, tiny2) - gnh3 = max(gnh3_i - x3, tiny2) - ! - ! ## 4. Aerosol liquid Water content - m1 = (so4_t + hso4) ! (NH4)2SO4 - m2 = (nh4_t - 2.0d0*m1) ! free NH4 - lwn = max(m1/c10 + max(min(m2, no3_t), 0.0d0)/c11, tiny) - end if - end do - ! - y3 = nh4_t/h/max(gnh3, tiny)/a4 - 1.0d0 - ! - condition = .false. - if (noroot) then - ! ## If no root on interval, then do not perform ITP - xa = x3 - xb = x3 - else if (y3 > 0.0d0 .and. ( .not. soln)) then - if (ya < 0.0d0) then - yb = y3 - xb = x3 - elseif (ya > 0.0d0) then - ya = y3 - xa = x3 - end if - else if (y3 < 0.0d0 .and. ( .not. soln)) then - if (ya < 0.0d0) then - ya = y3 - xa = x3 - elseif (ya > 0.0d0) then - yb = y3 - xb = x3 - end if - else if (( .not. soln)) then - xa = x3 - xb = x3 - end if - ! - ! ## Check for convergence criteria to exit ITP: - if (xb - xa > abs(xa*eps) .and. ( .not. noroot)) then - condition = .true. - soln = .false. - else - soln = .true. - end if - ! - ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if (abs(y3) <= eps .and. ( .not. noroot)) then - soln = .true. - condition = .false. - end if - ! - ! ## Post-convergence correction: - ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration - ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize - ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if (( .not. condition) .and. ( .not. noroot) .and. abs(y3) > 0.1d0) then - if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then - ! write(*,*), 'Warning: oscillatory behavior; possibility of no valid solution!' - x3 = x3_min - nh4_t = nh4_min - no3_t = no3_min - h = h_min - lwn = lwn_min - ghno3 = ghno3_min - gnh3 = gnh3_min - ! - ! ## Reset activity coefficients - gama = gama_min - a4 = k2*(gama(10)/gama(5))*(gama(10)/gama(5)) - y3 = nh4_t/h/max(gnh3, tiny)/a4 - 1.0d0 - end if - end if - end do - ! - ! - ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### - hso4 = 0.0d0 - if (h > tiny) then - ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) - bb =-(h + so4_t + ak1) - cc = h*so4_t - dd = bb*bb - 4.d0*cc - ! - if (dd >= 0.0d0) then - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - hh = 0.5d0*(-bb - sqrt(bb*bb - 4.d0*cc)) - end if - ! - hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) - h = max(h - hh, 0.0d0) - so4_t = max(so4_t - hh, 0.0d0) - hso4 = hh - end if - end if - ! - ! - ! ### Perform mass adjustment if excess exists ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - no3_i = no3_t - hso4_i = hso4 - h_i = h - hno3g_i = ghno3 - nh3g_i = gnh3 - lwn_i = lwn - ! - return - end subroutine mach_hetp_calcd3 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: E4; Sulfate rich, no acid - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calce4(so4_i, nh4_i, hno3g_i, hso4_i, h_i, no3_i, & - lwn_i, rh, temp, k0, p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, ghno3, no3, h, lwn, t, aw - real(kind=8) :: khso4, kh2o, khno3, bb, cc, dd, hh, v, ak1, errin, tt0 - real(kind=8) :: so4_t, nh4_t, no3_t, m4, m9, m13, tt1, tt2, c1, c2 - real(kind=8) :: gnh3, cl, cl_t, ghcl, caso4, c3, c4, c5 - integer(kind=4) :: j, irh - logical(kind=4) :: gg - real(kind=8), dimension(13) :: gama, gamin - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - aw = rh - t = temp - hso4 = 0.0d0 - ghno3 = 0.0d0 - h = 0.0d0 - lwn = 0.0d0 - so4_t = 0.0d0 - nh4_t = nh4 - no3_t = 0.0d0 - gnh3 = 0.0d0 - cl = 0.0d0 - cl_t = 0.0d0 - ghcl = 0.0d0 - caso4 = 0.0d0 - gama = 0.1d0 - gamin = 1.0d10 - ! - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Calculate dry composition - gg = 2.0*so4 - nh4 <= nh4 - so4 - ! - if (gg) then - ! NH4HSO4 >= (NH4)2SO4 - m4 = 2.0d0*nh4 - 3.0d0*so4 - m9 = 0.0d0 - m13 = 2.0d0*so4 - nh4 - else - ! NH4HSO4 < (NH4)2SO4 - m4 = 0.0d0 - m9 = 3.0d0*so4 - 2.0d0*nh4 - m13 = nh4 - so4 - end if - ! - ! ## Aerosol liquid water content (initial) - ! Save ZSR arrays as variables to limit indirect addressing - c3 = awlc(irh) - c4 = awab(irh) - c5 = awas(irh) - lwn = m13/c3 + m9/c4 + m4/c5 - ! - ! Constant variables - c1 = khno3*r*t - c2 = khso4*(lwn/0.1d0) - ! - ! - ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### - ! ## Setup initial conditions - bb = so4 + c2 - nh4 - cc = -c2*so4 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root - end if - ! - ! ## 2. Speciation - so4_t = max(tiny, min(hh, so4)) - hso4 = max(tiny, min(so4 - so4_t, so4)) - h = max(tiny, min(c2*hso4/so4_t, so4)) - ! - ! ## 3. Aerosol liquid water content - gg = so4_t - h < hso4 + h - if (gg) then - m4 = 0.0d0 - m13 = so4_t - h - m9 = max((hso4 + h) - (so4_t - h), 0.0d0) - else - m13 = hso4 + h - m9 = 0.0d0 - m4 = max((so4_t - h) - (hso4 + h), 0.0d0) - end if - lwn = max(m13/c3 + m9/c4 + m4/c5, tiny) - ! - ! - ! ## Iterative search for solution with convergence of activity coefficients - j = 0 - errin = 1.0d0 - do while (j < nsweep-1 .and. errin >= epsact) - j = j + 1 - - ! ## Reset gamin - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(13) = gama(13) - ! - call mach_hetp_calcact2(h, nh4_t, so4_t, hso4, no3_t, lwn, gama, t) - ! - ! ## Test convergence criterion: max change in the activity coefficients - errin = 0.0d0 - errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) - errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) - errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) - errin = max(errin, abs((gamin(10)- gama(10)) / gamin(10))) - errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) - errin = max(errin, abs((gamin(5) - gama(5)) / gamin(5))) - errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) - - ! ## 1. Solve system of equations - ak1 = khso4*((gama(8)/gama(7))*(gama(8)/gama(7)))*(lwn/gama(7)) - bb = so4 + ak1 - nh4_t - cc = -ak1*so4 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root - end if - ! - ! ## 2. Speciation - so4_t = max(tiny, min(hh, so4)) - hso4 = max(tiny, min(so4 - so4_t, so4)) - h = max(tiny, min(ak1*hso4/so4_t, so4)) - ! - ! ## 3. Aerosol liquid water content - gg = so4_t - h < hso4 + h - if (gg) then - m4 = 0.0d0 - m13 = so4_t - h - m9 = max((hso4 + h) - (so4_t - h), 0.0d0) ! NH4HSO4 - else - m9 = 0.0d0 - m13 = hso4 + h - m4 = max((so4_t - h) - (hso4 + h), 0.0d0) ! (NH4)2SO4 - end if - lwn = max(m13/c3 + m9/c4 + m4/c5, tiny) - end do - ! - ! - ! ### MINOR SYSTEM: NO3-/HNO3/H+ ### - ! Nitric acid in the liquid phase assumed a minor species; nitric acid is dissolved - ! from the [HNO3(g)] -> [H+] + [NO3-] equilibrium using the [H+] from the major system - hh = 0.0d0 - if (lwn > tiny) then - bb = c1*(lwn/gama(10))*(lwn/gama(10)) + h !!bb always > 0 - cc = c1*(lwn/gama(10))*(lwn/gama(10))*no3 - - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) - end if - end if - ! - ghno3 = max(no3 - hh, 0.0d0) - no3_t = hh - h = h + hh - ! - ! - ! ### Perform mass adjustment if excess exists ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - hso4_i = hso4 - no3_i = no3_t - h_i = h - hno3g_i = ghno3 - lwn_i = lwn - ! - return - end subroutine mach_hetp_calce4 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: F2; Sulfate rich, free acid - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcf2(so4_i, nh4_i, hno3g_i, hso4_i, h_i, no3_i, & - lwn_i, rh, temp, k0, p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, no3, hso4, ghno3, h, lwn, frh2so4, t, aw - real(kind=8) :: khso4, kh2o, khno3, bb, cc, dd, hh, v, errin, tt0 - real(kind=8) :: so4_t, nh4_t, no3_t, tt1, tt2, c1, c2, c3, c4 - real(kind=8) :: gnh3, cl, cl_t, ghcl, caso4 - integer(kind=4) :: j, irh - real(kind=8), dimension(13) :: gama, gamin - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - aw = rh - t = temp - hso4 = 0.0d0 - ghno3 = 0.0d0 - h = 0.0d0 - lwn = 1.0d-20 - so4_t = 0.0d0 - nh4_t = 0.0d0 - no3_t = 0.0d0 - frh2so4 = 0.0d0 - gnh3 = 0.0d0 - cl = 0.0d0 - cl_t = 0.0d0 - ghcl = 0.0d0 - caso4 = 0.0d0 - gama = 0.1d0 - gamin = 1.0d10 - ! - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - - ! ## Aerosol liquid water content - c3 = so4 - nh4 - lwn = max(max(c3, 0.0d0)/awsa(irh) + nh4/awab(irh), tiny) - ! - ! ## Constant values - c1 = khno3*r*t - c2 = khso4*1.0d-19 - c4 = khso4*lwn - ! - ! - ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### - ! ## Setup initial conditions - bb = c3 + c2 - cc = -c2*so4 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root - end if - ! - ! ## 2. Speciation - nh4_t = nh4 - so4_t = hh - hso4 = max(so4-hh, tiny) - h = c3 + hh - frh2so4 = max(so4_t + hso4 - nh4_t, 0.0d0) - ! - ! - ! ## Iterative search for solution with convergence of activity coefficients - j = 0 - errin = 1.0d0 - do while (j < nsweep-1 .and. errin >= epsact) - j = j + 1 - ! - ! ## Reset gamin - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(13) = gama(13) - ! - call mach_hetp_calcact2(h, nh4_t, so4_t, hso4, no3_t, lwn, gama, t) - ! - ! ## Test convergence criterion: max change in the activity coefficients - errin = 0.0d0 - errin = max(errin, abs((gamin(7) - gama(7)) / gamin(7))) - errin = max(errin, abs((gamin(8) - gama(8)) / gamin(8))) - errin = max(errin, abs((gamin(9) - gama(9)) / gamin(9))) - errin = max(errin, abs((gamin(10)- gama(10)) / gamin(10))) - errin = max(errin, abs((gamin(4) - gama(4)) / gamin(4))) - errin = max(errin, abs((gamin(5) - gama(5)) / gamin(5))) - errin = max(errin, abs((gamin(13)- gama(13)) / gamin(13))) - ! - ! ## 1. Solve system of equations - bb = c3 + c4/gama(7)*(gama(8)/gama(7))**2.0 - cc = -(c4/gama(7)*(gama(8)/gama(7))**2.0)*so4 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) !positive root - end if - ! - ! ## 2. Speciation - so4_t = hh - hso4 = max(so4 - hh, tiny) - h = c3 + hh - frh2so4 = max(so4_t + hso4 - nh4_t, 0.0d0) - end do - ! - ! - ! ### MINOR SYSTEM: NO3-/HNO3/H+ ### - ! Nitric acid in the liquid phase assumed a minor species; nitric acid is dissolved - ! from the [HNO3(g)] -> [H+] + [NO3-] equilibrium using the [H+] from the major system - hh = 0.0d0 - if (lwn > tiny) then - bb = c1*(lwn/gama(10))*(lwn/gama(10)) + h !!bb always > 0 - cc = c1*(lwn/gama(10))*(lwn/gama(10))*no3 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) - end if - end if - ! - ghno3 = max(no3 - hh, 0.0d0) - no3_t = hh - h = h + hh - ! - ! - ! ### Perform mass adjustment if excess exists ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - no3_i = no3_t - hso4_i = hso4 - h_i = h - hno3g_i = ghno3 - lwn_i = lwn - ! - return - end subroutine mach_hetp_calcf2 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: G5; Sulfate poor; sodium poor - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcg5(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, na_i, & - cl_i, no3_i, h_i, lwn_i, rh, temp, k0, p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: na_i - real(kind=8), intent(inout) :: cl_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: hclg_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, no3, cl, na, ghno3, ghcl, caso4, t, aw - real(kind=8) :: khso4, knh3, kh2o, khno3, khcl, bb, cc, dd, hh, v, ak1, frnh4, tt0 - real(kind=8) :: errouloc, errinlocb, errin, ohi, smin, scon, m4, m5, m6 - real(kind=8) :: a4, a5, psi4, psi5, nh, sigma, xt, xf, xh, delta, rr, gx, gx2 - real(kind=8) :: u1, ya, yb, xa, xb, c1, c2, c3, c3a, c4, c5, k1, k2, k3, k4, loccon - real(kind=8) :: omehi, omebe, y1, y2, y3, x3, dx, a6, gmax, zsr2 - real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, tt1, tt2, zsr3, zsr4 - real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter, lwnsq, gama10sq - real(kind=8) :: no3_min, nh4_min, cl_min, h_min, lwn_min, ghcl_min, gnh3_min, ghno3_min - integer(kind=4) :: j, k, ii, rooteval, irh, nmax - logical(kind=4) :: condition, noroot, soln, frst, calain, calou, earlyexit - real(kind=8), dimension(13) :: gama, gamin, gamou, gama_min - ! - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - na = na_i - cl = cl_i - aw = rh - t = temp - caso4 = 0.0d0 - hso4 = 0.0d0 - gnh3 = 0.0d0 - ghno3 = 0.0d0 - ghcl = 0.0d0 - h = 0.0d0 - lwn = 0.0d0 - so4_t = 0.0d0 - nh4_t = 0.0d0 - no3_t = 0.0d0 - na_t = 0.0d0 - cl_t = 0.0d0 - noroot=.false. - soln =.false. - gmax = 0.0d0 - calou =.true. - gama = 0.1d0 - gamin = 1.0d10 - gamou = 0.1d0 - earlyexit = .false. - ! - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) - khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Create variables to hold ZSR variables (to limit indirect addressing) - zsr2 = awas(irh) - zsr3 = awan(irh) - zsr4 = awac(irh) - ! - ! ## Constant values - c1 = r*t - c2 = 0.5d0*na !na2so4 - c5 = c2/awss(irh) - c3 = max(so4 - c2, 0.0d0) !frso4 - c3a= 2.0d0*c3 - c4 = max(nh4 - c3a, 0.0d0) !frnh4 - k1 = knh3/kh2o*c1 - k2 = khno3*c1 - k3 = khcl*c1 - k4 = kh2o*aw - ! - ! ## Initial speciation - na_t = na - so4_t = c3 + c2 - ! - ! ## Initial aerosol liquid water content - lwn = c3/zsr2 + c5 - ! - ! - ! ### STAGE 1: Root tracking ### - ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs - rooteval = 0 - condition = .true. - do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking - rooteval = rooteval + 1 - ! - ! ## Set high limit for root tracking (i.e. lower bound) - if (rooteval == 1) then - omehi = tiny - y1 = 0.0d0 - end if - ! - ! ## Begin search on subinterval - if (rooteval == 2) then - soln = .false. - y1 = y2 - ! - dx = (cl-tiny-tiny)/float(ndiv) - ! - omebe = omehi ! Lower bound of subinterval (xa) - omehi = omehi + dx ! Upper bound of subinterval (xb) - end if - ! - ! ## Continue search - if (rooteval > 2) then - if (loccon < 0.0d0) then - ! ## 1. Root has been found on the subinterval; save x values for ITP search - y1 = y1 - omebe = omebe - omehi = omehi - else - ! ## 2. No root has been found, continue searching in the next subinterval - y1 = y2 - omebe = omehi - omehi = omehi + dx - end if - end if - ! - ! ## Solve the system of equations - frst = .true. - calain = .true. - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - if (no3 >= tiny) then - psi5 = omehi*no3/(a6/a5*(cl-omehi) + omehi) - else - psi5 = tiny - end if - ! - ! ## 2. Account for NH3 evaporation - if (so4 > tiny) then - bb = -(c4 + omehi + psi5 + 1.0d0/a4) - cc = c4*(psi5 + omehi) - c3a/a4 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - else - psi4 = tiny - end if - ! - ! ## 3. Speciation - nh4_t = c3a + psi4 - cl_t = omehi - no3_t = psi5 - gnh3 = max(c4 - psi4, tiny2) - ghno3 = max(no3 - psi5, tiny2) - ghcl = max(cl - omehi, tiny2) - ! - ! ## 4. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 5. Aerosol liquid water content - m4 = max(so4_t - c2, 0.0d0) ! (NH4)2SO4 - frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) - m5 = min(no3_t, frnh4) ! NH4NO3 - frnh4 = max(frnh4 - m5, 0.0d0) - m6 = min(cl_t, frnh4) ! NH4Cl - lwn = max(c5 + m4/zsr2 + m5/zsr3 + m6/zsr4, tiny) - end if - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 0 - do while ( k < nsweep-1 .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamou - if (( .not. soln) .and. frst) then - gamou(1) = gama(1) - gamou(2) = gama(2) - gamou(3) = gama(3) - gamou(4) = gama(4) - gamou(5) = gama(5) - gamou(6) = gama(6) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(10) = gama(10) - gamou(11) = gama(11) - gamou(12) = gama(12) - gamou(13) = gama(13) - end if - ! - ! ## Reset gamin - if (( .not. soln)) then - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - end if - ! - call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - lwn, gama, t, soln, frst, calain, calou) - ! - if (frst) then - errouloc = 0 - do ii = 1, 13 - errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) - end do - calou = errouloc .ge. epsact - frst = .false. - end if - ! - errinlocb = 0 - do ii = 1, 13 - errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) - end do - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 13 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, using new activity coefficients - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - if (no3 >= tiny) then - psi5 = omehi*no3/(a6/a5*(cl - omehi) + omehi) - else - psi5 = tiny - end if - ! - ! ## 2. Account for NH3 evaporation - if (so4 > tiny) then - bb = -(c4 + omehi + psi5 + 1.0d0/a4) - cc = c4*(psi5 + omehi) - c3a/a4 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - else - psi4 = tiny - end if - ! - ! ## 3. Speciation - nh4_t = c3a + psi4 - cl_t = omehi - no3_t = psi5 - gnh3 = max(c4 - psi4, tiny2) - ghno3 = max(no3 - psi5, tiny2) - ghcl = max(cl - omehi, tiny2) - ! - ! ## 4. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 5. Aerosol liquid water content - m4 = max(so4_t - c2, 0.0d0) ! (NH4)2SO4 - frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) - m5 = min(no3_t, frnh4) ! NH4NO3 - frnh4 = max(frnh4 - m5, 0.0d0) - m6 = min(cl_t, frnh4) ! NH4Cl - lwn = max(c5 + m4/zsr2 + m5/zsr3 + m6/zsr4, tiny) - end if - end do - ! - y2 = h*cl_t/ghcl/a6 - 1.0d0 ! Function value - ! - ! ## Check for criteria to exit root tracking before ndiv iterations of root tracking - condition = .false. - loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. ( .not. noroot) .and. abs(y2) > eps) then - condition = .true. - elseif (loccon < 0.0d0 .and. abs(y2) > eps) then - ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP - soln = .true. - else - ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) - if (rooteval >= 2) then - ! ## Root has been found on the end of a subinterval - soln = .true. - noroot = .true. - earlyexit = .true. - else - ! ## Root is found at the start of larger interval, but still proceed - condition = .true. - end if - end if - ! - ! ## Too little Cl; reset x-value to tiny and exit root tracking - if (cl <= tiny) then - condition = .false. - rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking - noroot = .true. - omehi = tiny ! Reset x-value to tiny, and solve system with this value - omebe = omehi - end if - ! - ! ### AFTER iterating through ALL ndiv subdivided intervals - if (rooteval == ndiv + 1) then - if (loccon > 0.0d0 .and. abs(y2) > eps) then - ! ## (1) No solution - noroot = .true. - omehi = tiny ! Reset to tiny - omebe = omehi - ! write(*,*), 'Warning in CALCG5: no solution found' - else if (loccon > 0.0d0 .and. abs(y2) <= eps) then - ! ## (2) Solution is assumed and ITP is not required - noroot = .true. - soln = .true. - end if - end if - end do !End outer loop for root tracking - ! - ! - ! - ! ### STAGE 2: modified bisection search (using ITP algorithm) ### - ! ## Initialize static ITP variables - if (( .not. noroot)) then - ya = y1 - yb = y2 - xa = omebe - xb = omehi - x3 = omehi - ! - if (xa == xb) then - noroot = .true. - gx = tiny - else - gx = xb - xa - end if - ! - gx2 = (xa+xb)*0.5d0 - u1 = 0.2d0/gx - nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 - nmax = int(nh) + 2 - else - x3 = omehi - end if - ! - ! ## Start search - ! 1. Store value of previous y3 for later use - y3_lastiter = 0.0d0 - x3_lastiter = 0.0d0 - y3_min = 1.0d20 - x3_min = 0.0d0 - ! - j = 0 - condition = .true. - ! - if (( .not. earlyexit)) then - soln = .false. - end if - ! - do while (j < maxit .and. condition) - ! ## Set dynamic ITP variables - ! 1. Track x3 and y3 of the previous iteration - if (j > 0) then - y3_lastiter = y3 - x3_lastiter = x3 - end if - ! - ! 2. Track the minimum y3 that is found before ending - if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then - y3_min = y3_lastiter - x3_min = x3_lastiter - ghno3_min = ghno3 - no3_min = no3_t - h_min = h - ghcl_min = ghcl - cl_min = cl_t - gnh3_min = gnh3 - nh4_min = nh4_t - lwn_min = lwn - gama_min = gama - end if - ! - if (( .not. noroot) .and. ( .not. soln)) then - if (yb - ya == 0.0d0) then - write(*,*), '###### ABORT ######' - write(*,*), 'Zero divide in ITP reset: CALCG5' - write(*,*), 'SO4 in = ', so4 - write(*,*), 'NH4 in = ', nh4 - write(*,*), 'NO3 in = ', no3 - write(*,*), 'Na in = ', na - write(*,*), 'Cl in = ', cl - write(*,*), 'Temp in= ', t - write(*,*), 'RH in = ', aw - return - end if - ! - gx = xb - xa - xh = 0.5d0*(xa + xb) - rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) - delta= u1*(max(gx, 0.0d0))**2.0d0 - xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) - ! - sigma = sign(1.0d0, xh - xf) - if (delta <= abs(xh - xf)) then - xt = xf + sigma*delta - else - xt = xh - end if - ! - if (abs(xt - xh) <= rr) then - x3 = xt - else - x3 = xh - sigma*rr - end if - end if - ! - j = j + 1 - ! - if (( .not. soln)) then - gmax = 0.1d0 - gmax = max(gmax, gama(1)) - gmax = max(gmax, gama(2)) - gmax = max(gmax, gama(3)) - gmax = max(gmax, gama(4)) - gmax = max(gmax, gama(5)) - gmax = max(gmax, gama(6)) - gmax = max(gmax, gama(7)) - gmax = max(gmax, gama(8)) - gmax = max(gmax, gama(9)) - gmax = max(gmax, gama(10)) - gmax = max(gmax, gama(11)) - gmax = max(gmax, gama(12)) - gmax = max(gmax, gama(13)) - end if - ! - ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. ( .not. soln)) then - gama = 0.1d0 - gamin = 1.0d10 - gamou = 1.0d10 - calou = .true. - frst = .true. - end if - ! - ! ## Solve system of equations - frst = .true. - calain = .true. - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - if (no3 >= tiny) then - psi5 = x3*no3/(a6/a5*(cl-x3) + x3) - else - psi5 = tiny - end if - ! - ! ## 2. Account for NH3 evaporation - if (so4 > tiny) then - bb = -(c4 + x3 + psi5 + 1.0d0/a4) - cc = c4*(psi5 + x3) - c3a/a4 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - else - psi4 = tiny - end if - ! - ! ## 3. Speciation - nh4_t = c3a + psi4 - cl_t = x3 - no3_t = psi5 - gnh3 = max(c4 - psi4, tiny2) - ghno3 = max(no3 - psi5, tiny2) - ghcl = max(cl - x3, tiny2) - ! - ! ## 4. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 5. Aerosol liquid water content - m4 = max(so4_t - c2, 0.0d0) ! (NH4)2SO4 - frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) - m5 = min(no3_t, frnh4) ! NH4NO3 - frnh4 = max(frnh4 - m5, 0.0d0) - m6 = min(cl_t, frnh4) ! NH4Cl - lwn = max(c5 + m4/zsr2 + m5/zsr3 + m6/zsr4, tiny) - end if - ! - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 0 - do while ( k < nsweep-1 .and. errin >= epsact) - k = k + 1 - ! ## Reset gamin and gamou - if (( .not. soln) .and. frst) then - gamou(1) = gama(1) - gamou(2) = gama(2) - gamou(3) = gama(3) - gamou(4) = gama(4) - gamou(5) = gama(5) - gamou(6) = gama(6) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(10) = gama(10) - gamou(11) = gama(11) - gamou(12) = gama(12) - gamou(13) = gama(13) - end if - ! - if (( .not. soln)) then - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - end if - ! - call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - lwn, gama, t, soln, frst, calain, calou) - ! - if (frst) then - errouloc = 0 - do ii = 1, 13 - errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) - end do - calou = errouloc .ge. epsact - frst = .false. - end if - ! - errinlocb = 0 - do ii = 1, 13 - errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) - end do - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 13 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, with new activity coefficients - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - if (no3 >= tiny) then - psi5 = x3*no3/(a6/a5*(cl-x3) + x3) - else - psi5 = tiny - end if - ! - ! ## 2. Account for NH3 evaporation - if (so4 > tiny) then - bb = -(c4 + x3 + psi5 + 1.0d0/a4) - cc = c4*(psi5 + x3) - c3a/a4 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - else - psi4 = tiny - end if - ! - ! ## 3. Speciation - nh4_t = c3a + psi4 - cl_t = x3 - no3_t = psi5 - gnh3 = max(c4 - psi4, tiny2) - ghno3 = max(no3 - psi5, tiny2) - ghcl = max(cl - x3, tiny2) - ! - ! ## 4. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 5. Aerosol liquid water content - m4 = max(so4_t - c2, 0.0d0) ! (NH4)2SO4 - frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) - m5 = min(no3_t, frnh4) ! NH4NO3 - frnh4 = max(frnh4 - m5, 0.0d0) - m6 = min(cl_t, frnh4) ! NH4Cl - lwn = max(c5 + m4/zsr2 + m5/zsr3 + m6/zsr4, tiny) - end if - end do - ! - y3 = h*cl_t/ghcl/a6 - 1.0d0 - ! - condition = .false. - if (noroot) then - ! ## If no root on interval then do not perform ITP - xa = x3 - xb = x3 - else if (y3 > 0.0d0 .and. ( .not. soln)) then - xb = x3 - yb = y3 - else if (y3 < 0.0d0 .and. ( .not. soln)) then - xa = x3 - ya = y3 - else if (( .not. soln)) then - xa = x3 - xb = x3 - end if - ! - ! ## Check for convergence criteria to exit ITP: - if (xb - xa > abs(xa*eps) .and. ( .not. noroot)) then - condition = .true. - soln = .false. - else - soln = .true. - end if - ! - ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if (abs(y3) <= eps .and. ( .not. noroot)) then - soln = .true. - condition = .false. - end if - ! - ! ## Post-convergence correction: - ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration - ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize - ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if (( .not. condition) .and. ( .not. noroot) .and. abs(y3) > 0.1d0) then - if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then - x3 = x3_min - cl_t = cl_min - nh4_t = nh4_min - no3_t = no3_min - h = h_min - lwn = lwn_min - ghcl = ghcl_min - ghno3 = ghno3_min - gnh3 = gnh3_min - ! - ! ## Reset activity coefficients - gama = gama_min - a6 = k3*(lwn/gama(11))*(lwn/gama(11)) - y3 = h*cl_t/ghcl/a6 - 1.0d0 - end if - end if - end do ! End outer loop of ITP search - ! - ! - ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### - hso4 = 0.0d0 - if (h > tiny .and. so4_t > tiny .and. lwn >= 1.0d-19) then - ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) - bb =-(h + so4_t + ak1) - cc = h*so4_t - dd = bb*bb - 4.d0*cc - ! - if (dd >= 0.0d0) then - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - hh = 0.5d0*(-bb - sqrt(bb*bb - 4.d0*cc)) - end if - ! - hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) - h = max(h - hh, 0.0d0) - so4_t = max(so4_t - hh, 0.0d0) - hso4 = hh - end if - end if - ! - ! - ! ### Perform mass adjustment if excess exists ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - no3_i = no3_t - hso4_i = hso4 - na_i = na_t - cl_i = cl_t - nh3g_i = gnh3 - hno3g_i = ghno3 - hclg_i = ghcl - h_i = h - lwn_i = lwn - ! - return - end subroutine mach_hetp_calcg5 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: H6; Sulfate poor; sodium rich - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calch6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & - na_i, cl_i, no3_i, h_i, lwn_i, frna_d, rh, temp, k0, & - p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: na_i - real(kind=8), intent(inout) :: cl_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: hclg_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent (out) :: frna_d - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, no3, cl, na, ghno3, ghcl, caso4 - real(kind=8) :: t, aw, khso4, knh3, kh2o, khno3, khcl, frnh4, frno3, frcl, tt0 - real(kind=8) :: bb, cc, dd, hh, v, ak1, errin, ohi, smin, scon, a5, psi4, psi5 - real(kind=8) :: m5, m6, omehi, omebe, y1, y2, y3, x3, dx, a6, a4, u1, ya, yb - real(kind=8) :: xa, xb, so4_t, nh4_t, no3_t, na_t, cl_t, c5, c6, c7, sumzsr - real(kind=8) :: zsr1, zsr2, tt1, tt2, gmax, c1, c2, c3, k1, k2, k3, k4, loccon - real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, errouloc, errinlocb - real(kind=8) :: frno3_d, frcl_d, lwnsq, gama10sq - integer(kind=4) :: irh, nmax, j, k, ii, rooteval - logical(kind=4) :: condition, noroot, earlyexit, soln, frst, calain, calou - real(kind=8), dimension(13) :: gama, gamin, gamou, gama_min - real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter - real(kind=8) :: no3_min, nh4_min, cl_min, h_min, lwn_min, ghcl_min, gnh3_min, ghno3_min - ! - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - na = na_i - cl = cl_i - aw = rh - t = temp - hso4 = 0.0d0 - caso4 = 0.0d0 - gnh3 = 0.0d0 - ghno3 = 0.0d0 - ghcl = 0.0d0 - h = 0.0d0 - lwn = tiny - so4_t = so4 - nh4_t = 0.0d0 - no3_t = 0.0d0 - na_t = 0.0d0 - cl_t = 0.0d0 - frna_d= 0.0d0 - frcl_d= 0.0d0 - frno3_d= 0.0d0 - noroot=.false. - soln =.false. - gama = 0.1d0 - gamin = 1.0d10 - gamou = 1.0d10 - gmax = 0.0d0 - earlyexit = .false. - calou = .true. - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*(tt2)) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*(tt2)))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*(tt2)) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) - khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*(tt2)) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - - ! ## Calculate constant parameters - c1 = r*t - c3 = 2.0d0*so4 !na2so4 - frna_d = max(na - c3, 0.0d0) - c2 = min(frna_d, no3) !nano3 - c5 = max(no3-c2, 0.0d0) !frno3 - frno3_d= c5 - frna_d = max(frna_d - c2, 0.0d0) - c7 = min(frna_d, cl) !nacl - c6 = max(cl - c7, 0.0d0) !frcl - frcl_d = c6 - frna_d = max(frna_d - c7, 0.0d0) - k1 = knh3/kh2o*c1 - k2 = khno3*c1 - k3 = khcl*c1 - k4 = kh2o*aw - ! - ! ## Constant ZSR parameter - sumzsr = c7/awsc(irh) + so4/awss(irh) + c2/awsn(irh) - zsr1 = awan(irh) - zsr2 = awac(irh) - ! - ! ## Initial speciation - na_t = c2 + c7 + c3 - ! - ! - ! ### STAGE 1: Root tracking ### - ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs - rooteval = 0 - condition = .true. - do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking - rooteval = rooteval + 1 - ! - ! ## Set high limit for root tracking (i.e. lower bound) - if (rooteval == 1) then - omehi = tiny - y1 = 1.0d0 - end if - ! - ! ## Begin search on subinterval - if (rooteval == 2) then - soln = .false. - if (abs(y2) <= eps) then - earlyexit = .true. - end if - y1 = y2 - ! - if (earlyexit) then - dx = 0.0d0 - else - dx = (c6-tiny-tiny)/float(ndiv) - end if - omebe = omehi ! Lower bound of subinterval (xa) - omehi = omehi + dx ! Upper bound of subinterval (xb) - end if - ! - ! ## Continue search - if (rooteval > 2) then - if (loccon < 0.0d0) then - ! ## 1. Root has been found on the subinterval; save x values for ITP search - y1 = y1 - omebe = omebe - omehi = omehi - else - ! ## 2. No root has been found, continue searching in the next subinterval - y1 = y2 - omebe = omehi - omehi = omehi + dx - end if - end if - ! - ! ## Solve the system of equations - frst = .true. - calain = .true. - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = c5*(omehi + c7) - a6/a5*c2*(c6-omehi) - psi5 = max(psi5 / (a6/a5*(c6 - omehi) + omehi + c7), tiny) - ! - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + omehi + psi5 + 1.0d0/a4) - cc = nh4*(psi5 + omehi) - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - psi4 = min(psi4, nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = omehi + c7 - no3_t = psi5 + c2 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(c5 - psi5, tiny2) - ghcl = max(c6 - omehi, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t - c2, 0.0d0) - frcl = max(cl_t - c7, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5 , 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(sumzsr + m5/zsr1 + m6/zsr2, tiny) - end if - ! - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 0 - do while ( k < nsweep-1 .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamou - if (( .not. soln) .and. frst) then - gamou(1) = gama(1) - gamou(2) = gama(2) - gamou(3) = gama(3) - gamou(4) = gama(4) - gamou(5) = gama(5) - gamou(6) = gama(6) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(10) = gama(10) - gamou(11) = gama(11) - gamou(12) = gama(12) - gamou(13) = gama(13) - end if - ! - ! ## Reset gamin - if (( .not. soln)) then - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - end if - ! - call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - lwn, gama, t, soln, frst, calain, calou) - ! - if (frst) then - errouloc = 0 - do ii = 1, 13 - errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) - end do - calou = errouloc .ge. epsact - frst = .false. - end if - ! - errinlocb = 0 - do ii = 1, 13 - errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) - end do - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 13 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, using new activity coefficients - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = c5*(omehi + c7) - a6/a5*c2*(c6-omehi) - psi5 = max(psi5 / (a6/a5*(c6 - omehi) + omehi + c7), tiny) - ! - bb = -(nh4 + omehi + psi5 + 1.0d0/a4) - cc = nh4*(psi5 + omehi) - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + omehi + psi5 + 1.0d0/a4) - cc = nh4*(psi5+ omehi) - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - psi4 = min(psi4, nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = omehi + c7 - no3_t = psi5 + c2 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(c5 - psi5, tiny2) - ghcl = max(c6 - omehi, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t - c2, 0.0d0) - frcl = max(cl_t - c7, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5 , 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(sumzsr + m5/zsr1 + m6/zsr2, tiny) - end if - end do - ! - y2 = nh4_t*cl_t/ghcl/gnh3/a6/a4 - 1.0d0 !Function value - ! - ! ## Check for criteria to exit root tracking - condition = .false. - loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. ( .not. noroot) .and. abs(y2) > eps .and. c6 > tiny) then - condition = .true. - elseif (loccon < 0.0d0 .and. abs(y2) > eps) then - ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP - soln = .true. - else - ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) - soln = .true. - noroot = .true. - end if - ! - ! ## Too little frcl; reset x-value to tiny and exit root tracking - if (c6 <= tiny) then - condition = .false. - rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking - noroot = .true. - omehi = tiny ! Reset x-value to tiny, and solve system with this value - omebe = omehi - end if - ! - ! ### AFTER iterating through ALL ndiv subdivided intervals - if (rooteval == ndiv + 1) then - if (loccon > 0.0d0 .and. abs(y2) > eps .and. c6 > tiny .and. ( .not. earlyexit)) then - ! ## (1) No solution - noroot = .true. - omehi = tiny ! Reset to tiny - omebe = omehi - ! write(*,*), 'Warning in CALCH6: no solution found' - else if (loccon > 0.0d0 .and. abs(y2) <= eps .and. c6 > tiny .and. ( .not. earlyexit)) then - ! ## (2) Solution is assumed and ITP is not required - noroot = .true. - !soln = .true. - end if - end if - end do !End outer loop for root tracking - ! - ! - ! - ! ### STAGE 2: modified bisection search (using ITP algorithm) ### - ! ## Initialize static ITP variables - if (( .not. noroot)) then - ya = y1 - yb = y2 - xa = omebe - xb = omehi - x3 = omehi - ! - if (xa == xb) then - noroot = .true. - gx = tiny - else - gx = xb - xa - end if - ! - gx2 = (xa+xb)*0.5d0 - u1 = 0.2d0/gx - nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 - nmax = int(nh) + 2 - else - x3 = omehi - end if - ! - ! ## Start search - ! 1. Store value of previous y3 for later use - y3_lastiter = 0.0d0 - x3_lastiter = 0.0d0 - y3_min = 1.0d20 - x3_min = 0.0d0 - ! - j = 0 - condition = .true. - soln = .false. - do while (j < maxit .and. condition) ! Begin outer loop for ITP search - ! ## Set dynamic ITP variables - ! 1. Track x3 and y3 of the previous iteration - if (j > 0) then - y3_lastiter = y3 - x3_lastiter = x3 - end if - ! - ! 2. Track the minimum y3 that is found before ending - if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then - y3_min = y3_lastiter - x3_min = x3_lastiter - ghno3_min = ghno3 - no3_min = no3_t - h_min = h - ghcl_min = ghcl - cl_min = cl_t - gnh3_min = gnh3 - nh4_min = nh4_t - lwn_min = lwn - gama_min = gama - end if - ! - if ((.not. noroot) .and. (.not. soln)) then - if (yb - ya == 0.0d0) then - write(*,*), '###### ABORT ######' - write(*,*), 'Zero divide in ITP reset: CALCH6' - write(*,*), 'SO4 in = ', so4 - write(*,*), 'NH4 in = ', nh4 - write(*,*), 'NO3 in = ', no3 - write(*,*), 'Na in = ', na - write(*,*), 'Cl in = ', cl - write(*,*), 'Temp in= ', t - write(*,*), 'RH in = ', aw - return - end if - ! - gx = xb - xa - xh = 0.5d0*(xa + xb) - rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) - delta= u1*(max(gx, 0.0d0))**2.0d0 - xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) - ! - sigma = sign(1.0d0, xh - xf) - if (delta <= abs(xh - xf)) then - xt = xf + sigma*delta - else - xt = xh - end if - ! - if (abs(xt - xh) <= rr) then - x3 = xt - else - x3 = xh - sigma*rr - end if - end if - ! - j = j + 1 - ! - if (( .not. soln)) then - gmax = 0.1d0 - gmax = max(gmax, gama(1)) - gmax = max(gmax, gama(2)) - gmax = max(gmax, gama(3)) - gmax = max(gmax, gama(4)) - gmax = max(gmax, gama(5)) - gmax = max(gmax, gama(6)) - gmax = max(gmax, gama(7)) - gmax = max(gmax, gama(8)) - gmax = max(gmax, gama(9)) - gmax = max(gmax, gama(10)) - gmax = max(gmax, gama(11)) - gmax = max(gmax, gama(12)) - gmax = max(gmax, gama(13)) - end if - ! - ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if ((gmax > 100.0d0) .and. (( .not. soln))) then - gama = 0.1d0 - gamin = 1.0d10 - gamou = 1.0d10 - calou = .true. - frst = .true. - end if - ! - ! ## Solve system of equations - frst = .true. - calain = .true. - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = c5*(x3 + c7) - a6/a5*c2*(c6-x3) - psi5 = max(psi5 / (a6/a5*(c6 - x3) + x3 + c7), tiny) - ! - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + x3 + psi5 + 1.0d0/a4) - cc = nh4*(psi5+ x3) - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - psi4 = min(psi4, nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = x3 + c7 - no3_t = psi5 + c2 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(c5 - psi5, tiny2) - ghcl = max(c6 - x3, tiny2) - - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t - c2, 0.0d0) - frcl = max(cl_t - c7, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5 , 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(sumzsr + m5/zsr1 + m6/zsr2, tiny) - end if - ! - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 0 - do while ( k < nsweep-1 .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamin and gamou - if ((( .not. soln)) .and. (frst)) then - gamou(1) = gama(1) - gamou(2) = gama(2) - gamou(3) = gama(3) - gamou(4) = gama(4) - gamou(5) = gama(5) - gamou(6) = gama(6) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(10) = gama(10) - gamou(11) = gama(11) - gamou(12) = gama(12) - gamou(13) = gama(13) - end if - ! - if (( .not. soln)) then - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - end if - ! - call mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - lwn, gama, t, soln, frst, calain, calou) - ! - if (frst) then - errouloc = 0 - do ii = 1, 13 - errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) - end do - calou = errouloc .ge. epsact - frst = .false. - end if - ! - errinlocb = 0 - do ii = 1, 13 - errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) - end do - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 13 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, with new activity coefficients - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = c5*(x3 + c7) - a6/a5*c2*(c6-x3) - psi5 = max(psi5 / (a6/a5*(c6 - x3) + x3 + c7), tiny) - ! - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + x3 + psi5 + 1.0d0/a4) - cc = nh4*(psi5 + x3) - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - psi4 = min(psi4, nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = x3 + c7 - no3_t = psi5 + c2 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(c5 - psi5, tiny2) - ghcl = max(c6 - x3, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t - c2, 0.0d0) - frcl = max(cl_t - c7, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5 , 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(sumzsr + m5/zsr1 + m6/zsr2, tiny) - end if - end do - ! - y3 = nh4_t*cl_t/ghcl/gnh3/a6/a4 - 1.0d0 !Function value - ! - condition = .false. - if (noroot) then - ! ## If no root on interval then do not perform ITP - xa = x3 - xb = x3 - else if ((y3 > 0.0d0) .and. (( .not. soln))) then - xb = x3 - yb = y3 - else if ((y3 < 0.0d0) .and. (( .not. soln))) then - xa = x3 - ya = y3 - else if (( .not. soln)) then - xa = x3 - xb = x3 - end if - ! - ! ## Check for convergence criteria to exit ITP: - if ((xb - xa > abs(xa*eps)) .and. (( .not. noroot))) then - condition = .true. - soln = .false. - else - soln = .true. - end if - ! - ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if ((abs(y3) <= eps) .and. (( .not. noroot))) then - soln = .true. - condition = .false. - end if - ! - ! ## Post-convergence correction: - ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration - ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize - ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if ((( .not. condition)) .and. (( .not. noroot)) .and. (abs(y3) > 0.1d0)) then - if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then - x3 = x3_min - cl_t = cl_min - nh4_t = nh4_min - no3_t = no3_min - h = h_min - lwn = lwn_min - ghcl = ghcl_min - ghno3 = ghno3_min - gnh3 = gnh3_min - ! - ! ## Reset activity coefficients - gama = gama_min - a4 = k1*(gama(10)/gama(5))*(gama(10)/gama(5)) - a6 = k3*(lwn/gama(11))*(lwn/gama(11)) - y3 = nh4_t*cl_t/ghcl/gnh3/a6/a4 - 1.0d0 - end if - end if - end do ! End outer loop of ITP search - ! - ! - ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### - hso4 = 0.0d0 - if (h > tiny .and. so4_t > tiny .and. lwn >= 1.0d-19) then - ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) - bb =-(h + so4_t + ak1) - cc = h*so4_t - dd = bb*bb - 4.d0*cc - ! - if (dd >= 0.0d0) then - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - hh = 0.5d0*(-bb - sqrt(bb*bb - 4.d0*cc)) - end if - ! - hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) - h = max(h - hh, 0.0d0) - so4_t = max(so4_t - hh, 0.0d0) - hso4 = hh - end if - end if - ! - ! - ! ### Perform mass adjustment if excess exists ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - no3_i = no3_t - hso4_i = hso4 - na_i = na_t - cl_i = cl_t - nh3g_i = gnh3 - hno3g_i = ghno3 - hclg_i = ghcl - h_i = h - lwn_i = lwn - ! - return - end subroutine mach_hetp_calch6 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: I6; Sulfate rich, no free acid - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calci6(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & - na_i, cl_i, no3_i, h_i, lwn_i, frna, rh, temp, k0, & - p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: na_i - real(kind=8), intent(inout) :: cl_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: hclg_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent (out) :: frna - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn - real(kind=8) :: no3, cl, na, ghno3, ghcl, caso4, t, aw - real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, m1, m2, m3, delcl - real(kind=8) :: na2so4, nh42s4, nh4hs4, nahso4, slc, tt1, tt2, c1, c2, c3 - real(kind=8) :: knh3, kh2o, khno3, khcl, khso4, bb, cc, dd, ff, v, errin - real(kind=8) :: a3, a4, a6, psi6, frnh4, frso4, delno, tt0 - integer(kind=4) :: j, ii, islv, irh - logical(kind=4) :: ispoly - real(kind=8), dimension(13) :: gama, gamin - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - na = na_i - cl = cl_i - aw = rh - t = temp - hso4 = 0.0d0 - gnh3 = 0.0d0 - ghno3 = 0.0d0 - ghcl = 0.0d0 - h = 0.0d0 - caso4 = 0.0d0 - lwn = tiny - so4_t = 0.0d0 - nh4_t = 0.0d0 - no3_t = 0.0d0 - na_t = 0.0d0 - cl_t = 0.0d0 - delcl = 0.0d0 - na2so4= 0.0d0 - nh42s4= 0.0d0 - nh4hs4= 0.0d0 - nahso4= 0.0d0 - slc = 0.0d0 - gama = 0.1d0 - gamin = 1.0d10 - ! - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) - khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Calculate non-volatile solids (subroutine 'CALCI1A' in ISORROPIA II) - na2so4 = 0.5d0*na !na2so4 - frna = na - 2.0d0*na2so4 - frso4 = max(so4 - na2so4, 0.0d0) - slc = min(nh4/3.0d0, frso4*0.5d0) !(nh4)3h(so4)2 - frso4 = max(frso4 - 2.0d0*slc, 0.0d0) - frnh4 = max(nh4 - 3.0d0*slc, 0.0d0) - ! - if (frso4 <= tiny) then - slc = max(slc - frnh4, 0.0d0) - nh42s4 = 2.0d0*frnh4 !(nh4)2so4 - else if (frnh4 <= tiny .and. na2so4 <= tiny) then - nh4hs4 = 3.0d0*min(frso4, slc) !nh4hso4 - slc = max(slc - frso4, 0.0d0) - else if (frnh4 <= tiny .and. na2so4 > tiny) then - nh4hs4 = 3.0d0*min(frso4, slc) - slc = max(slc - frso4, 0.0d0) - frso4 = max(frso4-nh4hs4/3.0d0, 0.0d0) - nahso4 = 2.0d0*frso4 !nahso4 - na2so4 = max(na2so4 - frso4, 0.0d0) - frna = max(na - nahso4 - 2.0d0*na2so4, 0.0d0) - end if - ! - ! ## Calculate gaseous species - ghno3 = no3 - ghcl = cl - - ! ## Calculate constants - c1 = slc + nahso4 + nh4hs4 - c2 = slc + na2so4 + nh42s4 - ! - ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### - ! ## Setup initial conditions - ! ## 1. Calculate dissociation quantities - a6 = khso4*1.0d-19 - bb = c2 + a6 - cc = -a6*c1 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - psi6 = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - psi6 = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ! ## 2. Speciation - h = psi6 - na_t = 2.0d0*na2so4 + nahso4 - nh4_t = 3.0d0*slc + 2.0d0*nh42s4 + nh4hs4 - ! - ! Due to round-off, psi6 may be .gt. lc + nahso4 + nh4hs4 giving negative hso4 - ! If this condition is true, reset psi6 to [c1] and proceed - psi6 = min(psi6, c1) - so4_t = c2 + psi6 - hso4 = max(c1 - psi6, 0.0d0) - ! - ! ## 3. Aerosol liquid water content - lwn = max(nh42s4/awas(irh) + na2so4/awss(irh) + nh4hs4/awab(irh) + nahso4/awsb(irh) + & - slc/awlc(irh), tiny) - c3 = khso4*lwn - ! - ! - ! ## Iterative search for solution with convergence of activity coefficients - j = 0 - errin = 1.0d0 - do while (j < nsweep-1 .and. errin >= epsact) - j = j + 1 - ! - ! ## Reset gamin - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - ! - call mach_hetp_calcact3(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - lwn, gama, t) - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 13 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## 1. Calculate dissociation quantities - a6 = c3/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) - bb = c2 + a6 - cc = -a6*c1 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - psi6 = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - psi6 = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ! ## 2. Speciation - h = psi6 - psi6 = min(psi6, c1) - so4_t = c2 + psi6 - hso4 = max(c1 - psi6, 0.0d0) - end do - ! - ! - ! ### MINOR SYSTEM #1: Cl-/HCl/NO3-/HNO3/H+ ### - ! ## Calculate dissolution of HCl, HNO3 in the presence of (H,SO4) - ! ## HCl, HNO3 are considered minor species - ispoly = .false. - ! - ! ## 1. Special case: aerosol liquid water content (lwn) = 0.0d0 - if (lwn <= tiny) then - ! Gaseous species - ghcl = max(cl - cl_t, 0.0d0) - ghno3 = max(no3 - no3_t, 0.0d0) - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ! - ! ## 2. Special case: HCl = HNO3 = 0.0d0 - else if (cl <= tiny .and. no3 <= tiny) then - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ! - ! ## 3. Special case: HCl = 0.0d0 - else if (cl <= tiny) then - ! Nitric acid in the liquid phase is assumed a minor species - ! HNO3(g) <--> (H+) + (NO3-), using (H+) from the sulfates - ff = 0.0d0 - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - if (lwn > tiny) then - bb = h + khno3*r*t*(lwn/gama(10))**2.0 - cc = (khno3*r*t*(lwn/gama(10))**2.0)*no3 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) - else - ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) - end if - end if - ! - ! Speciation - ghno3 = max(no3 - ff, 0.0d0) - no3_t = ff - h = h + ff - ! - ! ## 4. Special case: HNO3 = 0.0d0 - else if (no3 <= tiny) then - ! Hydrochloric acid in the liquid phase is assumed a minor species - ! HCl (g) <--> (H+) + (Cl-) using (H+) from the sulfates - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ff = 0.0d0 - if (lwn > tiny) then - bb = h + khcl*r*t*(lwn/gama(11))**2.0 - cc = (khcl*r*t*(lwn/gama(11))**2.0)*cl - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) - else - ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) - end if - end if - ! - ! Speciation - ghcl = max(cl - ff, 0.0d0) - cl_t = ff - h = h + ff - ! - ! ## 5. All else: not a special case - else - ispoly = .true. - a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 - a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl - ! - ! Calculate cubic equation coefficients - m1 = (a3*no3 + a4*cl + (h + a4)*(a3 - a4))/(a3 - a4) - m2 = ((h + a4)*a4*cl - a4*(a3 - a4)*cl)/(a3 - a4) - m3 = -a4*a4*cl*cl/(a3 - a4) - end if - ! - ! ## Calculate roots - ! call mach_hetp_poly3v(m1, m2, m3, delcl, islv) !# Original ISORROPIA subroutine - call mach_hetp_poly(m1, m2, m3, cl, delcl, islv) - ! - delno = 0.0d0 - if (ispoly) then - if (islv /= 0) then - ! Tiny amounts of HCl are assumed when there is no root - delcl = tiny !Change in Cl- - end if - ! - a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 - a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl - delno = min(a3*no3*delcl/(a4*cl + (a3 - a4)*delcl), no3) !Change in NO3- - ! - if (delcl < 0.0d0 .or. delno < 0.0d0 .or. delcl > cl .or. delno > no3) then - delcl = tiny !Change in Cl- - delno = tiny !Change in NO3- - end if - ! - ! ## Effect on liquid phase - h = h + delno + delcl ! H+ change - cl_t = cl_t + delcl ! Cl- change - no3_t = no3_t + delno ! NO3- change - ! - ! ## Gaseous species - ghcl = max(cl - cl_t, 0.0d0) - ghno3 = max(no3 - no3_t, 0.0d0) - end if - ! - ! - ! ### MINOR SYSTEM #2: NH4+/NH3/H+ ### - ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb - ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major - ! system (solved above) is used initially. - if (lwn > tiny) then - ! ## Calculate NH3 sublimation - ff = 0.0d0 - a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 - bb = h + 1.0d0/a3 ! bb always > 0 - cc = -nh4_t/a3 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ! ## Speciation - ! Due to round-off, ff may be .gt. nh4_t giving negative nh4_t - ! If this condition is true, then set ff = nh4_t - ff = max(tiny, min(ff, nh4_t)) - gnh3 = ff - nh4_t = max(nh4_t - ff, 0.0d0) - h = h + ff - end if - ! - ! - ! ### Perform mass adjustment if excess exists ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - no3_i = no3_t - hso4_i = hso4 - na_i = na_t - cl_i = cl_t - nh3g_i = gnh3 - hno3g_i = ghno3 - hclg_i = ghcl - h_i = h - lwn_i = lwn - ! - return - end subroutine mach_hetp_calci6 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: J3; Sulfate rich, free acid - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcj3(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & - na_i, cl_i, no3_i, h_i, lwn_i, rh, temp, k0, & - p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: na_i - real(kind=8), intent(inout) :: cl_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: hclg_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn - real(kind=8) :: no3, cl, na, ghno3, ghcl, caso4, t, aw - real(kind=8) :: knh3, khso4, kh2o, khno3, khcl - real(kind=8) :: bb, cc, dd, ff, v, errin, a3, a4, psi6, delno, tt0, c3, c5, c6 - real(kind=8) :: delcl, m1, m2, m3, tt1, tt2, c1, c2, so4_t, nh4_t, no3_t, na_t, cl_t - integer(kind=4) :: j, ii, islv, irh - logical(kind=4) :: ispoly - real(kind=8), dimension(13) :: gama, gamin - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - na = na_i - cl = cl_i - aw = rh - t = temp - ! - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - hso4 = 0.0d0 - gnh3 = 0.0d0 - ghno3 = 0.0d0 - ghcl = 0.0d0 - h = 0.0d0 - caso4 = 0.0d0 - lwn = tiny - so4_t = 0.0d0 - nh4_t = 0.0d0 - no3_t = 0.0d0 - na_t = 0.0d0 - cl_t = 0.0d0 - delcl = 0.0d0 - gama = 0.1d0 - gamin = 1.0d10 - ! - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) - khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Constant values - c1 = max(so4 - nh4 - na, tiny) - c2 = c1 + na + nh4 - c3 = nh4/awab(irh) + na/awsb(irh) - c5 = nh4 + na - c6 = awsa(irh) - ! - ! - ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### - ! ## Setup initial conditions - ! ## 1. Calculate dissociation quantities - a3 = khso4*1.0d-19 - bb = a3 + c1 ! bb always > 0 - cc = -a3*c2 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - psi6 = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - psi6 = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ! ## 2. Speciation - ! Due to round-off, subtraction of psi6 may give negative hso4; if this condition is true reset psi6 - psi6 = min(psi6, c2) - h = c1 + psi6 - na_t = na - nh4_t = nh4 - so4_t = psi6 - hso4 = max(c2 - psi6, 0.0d0) - ! - ! ## 3. Aerosol liquid water content - lwn = max(c3 + max((so4_t + hso4 - c5), 0.0d0)/c6, tiny) - ! - ! - ! ## Iterative search for solution with convergence of activity coefficients - j = 0 - errin = 1.0d0 - do while (j < nsweep-1 .and. errin >= epsact) - j = j + 1 - ! - ! ## Reset gamin - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - ! - call mach_hetp_calcact3(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, lwn, gama, t) - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 13 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## 1. Calculate dissociation quantities - a3 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) - bb = a3 + c1 !! bb always > 0 - cc = -a3*c2 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - psi6 = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - psi6 = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ! ## 2. Speciation - psi6 = min(psi6, c2) - h = c1 + psi6 - so4_t = psi6 - hso4 = max(c2 - psi6, 0.0d0) - - ! ## 3. Aerosol liquid water content - lwn = max(c3 + max((so4_t + hso4 - c5), 0.0d0)/c6, tiny) - end do - ! - ! - ! ### MINOR SYSTEM #1: Cl-/HCl/NO3-/HNO3/H+ ### - ! ## Calculate dissolution of HCl, HNO3 in the presence of (H,SO4) - ! ## HCl, HNO3 are considered minor species - ispoly = .false. - ! - ! ## 1. Special case: aerosol liquid water content (lwn) = 0.0d0 - if (lwn <= tiny) then - ! Gaseous species - ghcl = max(cl - cl_t, 0.0d0) - ghno3 = max(no3 - no3_t, 0.0d0) - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ! - ! ## 2. Special case: HCl = HNO3 = 0.0d0 - else if (cl <= tiny .and. no3 <= tiny) then - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ! - ! ## 3. Special case: HCl = 0.0d0 - else if (cl <= tiny) then - ! Nitric acid in the liquid phase is assumed a minor species - ! HNO3(g) <--> (H+) + (NO3-), using H+ from the sulfates - ff = 0.0d0 - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - if (lwn > tiny) then - bb = h + khno3*r*t*(lwn/gama(10))**2.0 - cc = (khno3*r*t*(lwn/gama(10))**2.0)*no3 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) - else - ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) - end if - end if - ! - ! Speciation - ghno3 = max(no3 - ff, 0.0d0) - no3_t = ff - h = h + ff - ! - ! ## 4. Special case: HNO3 = 0.0d0 - else if (no3 <= tiny) then - ! Hydrochloric acid in the liquid phase is assumed a minor species - ! HCl (g) <--> (H+) + (Cl-) using (H+) from the sulfates - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ff = 0.0d0 - if (lwn > tiny) then - bb = h + khcl*r*t*(lwn/gama(11))**2.0 - cc = (khcl*r*t*(lwn/gama(11))**2.0)*cl - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) - else - ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) - end if - end if - ! - ! Speciation - ghcl = max(cl - ff, 0.0d0) - cl_t = ff - h = h + ff - ! - ! ## 5. All else: not a special case - else - ispoly = .true. - a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 - a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl - ! - ! Calculate cubic equation coefficients - m1 = (a3*no3 + a4*cl + (h + a4)*(a3 - a4))/(a3 - a4) - m2 = ((h + a4)*a4*cl - a4*(a3 - a4)*cl)/(a3 - a4) - m3 = -a4*a4*cl*cl/(a3 - a4) - end if - ! - ! ## Calculate roots - ! call mach_hetp_poly3v(m1, m2, m3, delcl, islv) # Original ISORROPIA subroutine - call mach_hetp_poly(m1, m2, m3, cl, delcl, islv) - ! - delno = 0.0d0 - if (ispoly) then - if (islv /= 0) then - ! Tiny amounts of HCl are assumed when there is no root - delcl = tiny !Change in Cl- - end if - ! - a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 - a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl - delno = min(a3*no3*delcl/(a4*cl + (a3 - a4)*delcl), no3) !Change in NO3- - ! - if (delcl < 0.0d0 .or. delno < 0.0d0 .or. delcl > cl .or. delno > no3) then - delcl = tiny !Change in Cl- - delno = tiny !Change in NO3- - end if - ! - ! ## Effect on liquid phase - h = h + delno + delcl ! H+ change - cl_t = cl_t + delcl ! Cl- change - no3_t = no3_t + delno ! NO3- change - ! - ! ## Gaseous species - ghcl = max(cl - cl_t, 0.0d0) - ghno3 = max(no3 - no3_t, 0.0d0) - end if - ! - ! - ! ### MINOR SYSTEM #2: NH4+/NH3/H+ ### - ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb - ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major - ! system (solved above) is used initially. - if (lwn > tiny) then - ! ## Calculate NH3 sublimation - ff = 0.0d0 - a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 - bb = h + 1.0d0/a3 ! bb always > 0 - cc = -nh4_t/a3 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ! ## Speciation - ! ## Due to round-off, ff may be .gt. nh4_t giving negative nh4_t - ! ## If this condition is true, then set ff = nh4_t - ff = max(tiny, min(ff, nh4_t)) - gnh3 = ff - nh4_t = max(nh4_t - ff, 0.0d0) - h = h + ff - end if - ! - ! - ! ### Perform mass adjustment if excess exists ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - no3_i = no3_t - hso4_i = hso4 - na_i = na_t - cl_i = cl_t - nh3g_i = gnh3 - hno3g_i = ghno3 - hclg_i = ghcl - h_i = h - lwn_i = lwn - ! - return - end subroutine mach_hetp_calcj3 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: O7; Sulfate poor; dust and sodium poor - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calco7(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & - na_i, cl_i, no3_i, h_i, lwn_i, ca_i, k_i, mg_i, & - caso4_i, frmg, frna, frca, frk, rh, temp, k0, & - p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: na_i - real(kind=8), intent(inout) :: cl_i - real(kind=8), intent(inout) :: ca_i - real(kind=8), intent(inout) :: k_i - real(kind=8), intent(inout) :: mg_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: hclg_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent(inout) :: caso4_i - real(kind=8), intent(inout) :: frna - real(kind=8), intent(inout) :: frmg - real(kind=8), intent(inout) :: frk - real(kind=8), intent(inout) :: frca - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, caso4, no3, cl, na, ca, pk, mg, ghno3, ghcl - real(kind=8) :: t, aw, knh3, khso4, kh2o, khno3, khcl, bb, cc, dd, hh, v, errin - real(kind=8) :: smin, ohi, frnh4, a4, a5, psi4, psi5, m4, m5, m6, ak1, scon - real(kind=8) :: tt0, errinlocb, errouloc, loccon - real(kind=8) :: omehi, omebe, y1, y2, y3, x3, dx, c1, c2, c2a, c3, gmax, ya, yb, xa, xb - real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, ca_t, pk_t, mg_t, k1, k2, k3, k4 - real(kind=8) :: so4fr, a6, na2so4, k2so4, mgso4, tt1, tt2, c6a, c7, c8, c9, c10 - real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, u1, lwnsq, gama10sq - integer(kind=4) :: j, k, ii, rooteval, irh, nmax - logical(kind=4) :: condition, noroot, soln, frst, calain, calou, earlye - real(kind=8), dimension(23) :: gama, gamin, gamou, gama_min - real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter - real(kind=8) :: no3_min, nh4_min, cl_min, h_min, lwn_min, ghcl_min, gnh3_min, ghno3_min - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - na = na_i - cl = cl_i - ca = ca_i - pk = k_i - mg = mg_i - aw = rh - t = temp - hso4 = 0.0d0 - gnh3 = 0.0d0 - ghno3 = 0.0d0 - ghcl = 0.0d0 - h = 0.0d0 - lwn = tiny - so4_t = 0.0d0 - nh4_t = 0.0d0 - no3_t = 0.0d0 - na_t = 0.0d0 - cl_t = 0.0d0 - ca_t = 0.0d0 - pk_t = 0.0d0 - mg_t = 0.0d0 - caso4 = 0.0d0 - so4fr = 0.0d0 - na2so4= 0.0d0 - k2so4 = 0.0d0 - mgso4 = 0.0d0 - noroot=.false. - frk = 0.0d0 - frmg = 0.0d0 - frca = 0.0d0 - frna = 0.0d0 - soln = .false. - calou = .true. - gama = 0.1d0 - gamin = 1.0d10 - gamou = 0.1d0 - earlye = .false. - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3= k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) - khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Constants - c1 = r*t - k1 = (knh3/kh2o)*c1 - k2 = khno3*c1 - k3 = khcl*c1 - k4 = kh2o*aw - ! - ! ## Calculate dry salt composition - ! ## Salts assumed to have completely dissolved (MgSO4, Na2SO4, K2SO4) - caso4 = min(ca, so4) - so4fr = max(so4 - caso4, 0.0d0) - frca = max(ca - caso4, 0.0d0) - k2so4 = min(0.5d0*pk, so4fr) - frk = max(pk - 2.0d0*k2so4, 0.0d0) - so4fr = max(so4fr - k2so4, 0.0d0) - na2so4= min(0.5d0*na, so4fr) - frna = max(na - 2.0d0*na2so4, 0.0d0) - so4fr = max(so4fr - na2so4, 0.0d0) - mgso4 = min(mg, so4fr) - frmg = max(mg - mgso4, 0.0d0) - so4fr = max(so4fr - mgso4, 0.0d0) - ! - ! ## Initial speciation - na_t = 2.0d0*na2so4 - so4_t = na2so4 + max(so4fr, 0.0d0) + k2so4 + mgso4 - pk_t = 2.0d0*k2so4 - mg_t = mgso4 - ! - ! ## Constants - c2 = 0.5d0*na_t - 0.5d0*pk_t - mg_t - c2a = 2.0d0*max(so4fr, 0.0d0) - c3 = max(nh4 - c2a,0.0d0) ! free nh4 == nh3 dry - ! - ! ## Save ZSR arrays as variables to limit indirect addressing - c6a = na2so4/awss(irh) + k2so4/awps(irh) + mgso4/awms(irh) - c7 = awas(irh) - c8 = awan(irh) - c9 = awac(irh) - c10 = na2so4 + k2so4 + mgso4 - ! - ! ## Initial aerosol liquid water content from dry salt composition - lwn = max(max(so4fr, 0.0d0)/c7 + c6a, tiny) - ! - ! - ! ### STAGE 1: Root tracking ### - ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs - rooteval = 0 - condition = .true. - do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking - rooteval = rooteval + 1 - ! - ! ## Set high limit for root tracking (i.e. lower bound) - if (rooteval == 1) then - omehi = tiny - y1 = 1.0d0 - end if - ! - ! ## Begin search on subinterval - if (rooteval == 2) then - soln = .false. - y1 = y2 - ! - dx = (cl-tiny-tiny)/float(ndiv) - ! - omebe = omehi ! Lower bound of subinterval (xa) - omehi = omehi + dx ! Upper bound of subinterval (xb) - end if - ! - ! ## Continue search - if (rooteval > 2) then - if (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0) then - ! ## 1. Root has been found on the subinterval; save x values for ITP search - y1 = y1 - omebe = omebe - omehi = omehi - else - ! ## 2. No root has been found, continue searching in the next subinterval - y1 = y2 - omebe = omehi - omehi = omehi + dx - end if - end if - ! - ! ## Solve the system of equations - frst = .true. - calain = .true. - ! - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - if (no3 >= tiny) then - psi5 = min(omehi*no3/(a6/a5*(cl - omehi) + omehi), no3) - else - psi5 = tiny - end if - ! - ! ## 1. Account for NH3 evaporation - if (so4 > tiny) then - bb = -(c3 + omehi + psi5 + 1.0d0/a4) - cc = c3*(psi5 + omehi) - c2a/a4 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - psi4 = max(min(psi4, c3) , 0.0d0) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = c2a + psi4 - cl_t = omehi - no3_t = psi5 - gnh3 = max(c3 - psi4, tiny2) - ghno3 = max(no3 - psi5, tiny2) - ghcl = max(cl - omehi, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - m4 = max(so4_t - c10, 0.0d0) - frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) - m5 = min(no3_t, frnh4) - frnh4 = max(frnh4 - m5, 0.0d0) - m6 = min(cl_t, frnh4) - lwn = max(c6a + m4/c7 + m5/c8 + m6/c9, tiny) - end if - ! - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 0 - do while ( k < nsweep-1 .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamou - if ((.not. soln) .and. (frst)) then - gamou(1) = gama(1) - gamou(2) = gama(2) - gamou(3) = gama(3) - gamou(4) = gama(4) - gamou(5) = gama(5) - gamou(6) = gama(6) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(10) = gama(10) - gamou(11) = gama(11) - gamou(12) = gama(12) - gamou(13) = gama(13) - gamou(14) = gama(14) - gamou(15) = gama(15) - gamou(16) = gama(16) - gamou(17) = gama(17) - gamou(18) = gama(18) - gamou(19) = gama(19) - gamou(20) = gama(20) - gamou(21) = gama(21) - gamou(22) = gama(22) - gamou(23) = gama(23) - end if - ! - ! ## Reset gamin - if (( .not. soln)) then - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - gamin(14) = gama(14) - gamin(15) = gama(15) - gamin(16) = gama(16) - gamin(17) = gama(17) - gamin(18) = gama(18) - gamin(19) = gama(19) - gamin(20) = gama(20) - gamin(21) = gama(21) - gamin(22) = gama(22) - gamin(23) = gama(23) - end if - ! - call mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & - calain, calou) - ! - if (frst) then - errouloc = 0 - do ii = 1, 23 - errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) - end do - calou = errouloc .ge. epsact - frst = .false. - end if - - errinlocb = 0 - do ii = 1, 23 - errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) - end do - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 23 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, using new activity coefficients - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - if (no3 >= tiny) then - psi5 = min(omehi*no3/(a6/a5*(cl - omehi) + omehi), no3) - else - psi5 = tiny - end if - ! - ! ## 1. Account for NH3 evaporation - if (so4 > tiny) then - bb = -(c3 + omehi + psi5 + 1.0d0/a4) - cc = c3*(psi5 + omehi) - c2a/a4 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - psi4 = max(min(psi4, c3) , 0.0d0) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = c2a + psi4 - cl_t = omehi - no3_t = psi5 - gnh3 = max(c3 - psi4, tiny2) - ghno3 = max(no3 - psi5, tiny2) - ghcl = max(cl - omehi, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - m4 = max(so4_t - c10, 0.0d0) - frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) - m5 = min(no3_t, frnh4) - frnh4 = max(frnh4 - m5, 0.0d0) - m6 = min(cl_t, frnh4) - lwn = max(c6a + m4/c7 + m5/c8 + m6/c9, tiny) - end if - end do - ! - y2 = h*cl_t/ghcl/a6 - 1.0d0 !Function value - ! - ! - ! ## Check for criteria to exit root tracking - condition = .false. - loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if ((loccon > 0.0d0) .and. (( .not. noroot)) .and. (abs(y2) > eps) .and. (cl > tiny)) then - condition = .true. - elseif (loccon < 0.0d0 .and. abs(y2) > eps) then - ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP - soln = .true. - else - ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) - if (rooteval >= 2) then - soln = .true. - noroot = .true. - earlye = .true. - else - condition = .true. - end if - end if - ! - ! ## Too little frcl; reset x-value to tiny and exit root tracking - if (cl <= tiny) then - condition = .false. - rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking - noroot = .true. - omehi = tiny ! Reset x-value to tiny, and solve system with this value - omebe = omehi - end if - ! - ! ### AFTER iterating through ALL ndiv subdivided intervals - if (rooteval == ndiv + 1) then - loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. abs(y2) > eps) then - ! ## (1) No solution - noroot = .true. - omehi = tiny ! Reset to tiny - omebe = omehi - ! write(*,*), 'Warning in CALCO7: no solution found' - else if (loccon > 0.0d0 .and. abs(y2) <= eps) then - ! ## (2) Solution is assumed and ITP is not required - noroot = .true. - end if - end if - end do !End outer loop for root tracking - ! - ! - ! - ! ### STAGE 2: modified bisection search (using ITP algorithm) ### - ! ## Initialize static ITP variables - if (( .not. noroot)) then - ya = y1 - yb = y2 - xa = omebe - xb = omehi - x3 = omehi - ! - if (xa == xb) then - noroot = .true. - gx = tiny - else - gx = xb - xa - end if - ! - gx2 = (xa+xb)*0.5d0 - u1 = 0.2d0/gx - nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 - nmax = int(nh) + 2 - else - x3 = omehi - end if - ! - ! ## Start search - y3_lastiter = 0.0d0 - x3_lastiter = 0.0d0 - y3_min = 1.0d20 - x3_min = 0.0d0 - ! - j = 0 - condition = .true. - ! - if (earlye) then - soln = .true. - else - soln = .false. - end if - ! - do while (j < maxit .and. condition) ! Begin outer loop for ITP search - ! 1. Track x3 and y3 of the previous iteration - if (j > 0) then - y3_lastiter = y3 - x3_lastiter = x3 - end if - ! - ! 2. Track the minimum y3 that is found before ending - if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then - y3_min = y3_lastiter - x3_min = x3_lastiter - ghno3_min = ghno3 - no3_min = no3_t - h_min = h - ghcl_min = ghcl - cl_min = cl_t - gnh3_min = gnh3 - nh4_min = nh4_t - lwn_min = lwn - gama_min = gama - end if - ! - if ((.not. noroot) .and. (.not. soln)) then - ! ## Set dynamic ITP variables - if (yb - ya == 0.0d0) then - write(*,*), '###### ABORT ######' - write(*,*), 'Zero divide in ITP reset: CALCO7' - write(*,*), 'SO4 in = ', so4 - write(*,*), 'NH4 in = ', nh4 - write(*,*), 'NO3 in = ', no3 - write(*,*), 'Na in = ', na - write(*,*), 'Cl in = ', cl - write(*,*), 'Ca in = ', ca - write(*,*), 'Mg in = ', mg - write(*,*), 'K in = ', pk - write(*,*), 'Temp in= ', t - write(*,*), 'RH in = ', aw - return - end if - ! - gx = xb - xa - xh = 0.5d0*(xa + xb) - rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) - delta= u1*(max(gx, 0.0d0))**2.0d0 - xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) - ! - sigma = sign(1.0d0, xh - xf) - if (delta <= abs(xh - xf)) then - xt = xf + sigma*delta - else - xt = xh - end if - ! - if (abs(xt - xh) <= rr) then - x3 = xt - else - x3 = xh - sigma*rr - end if - end if - ! - j = j + 1 - ! - if (( .not. soln)) then - gmax = 0.1d0 - gmax = max(gmax, gama(1)) - gmax = max(gmax, gama(2)) - gmax = max(gmax, gama(3)) - gmax = max(gmax, gama(4)) - gmax = max(gmax, gama(5)) - gmax = max(gmax, gama(6)) - gmax = max(gmax, gama(7)) - gmax = max(gmax, gama(8)) - gmax = max(gmax, gama(9)) - gmax = max(gmax, gama(10)) - gmax = max(gmax, gama(11)) - gmax = max(gmax, gama(12)) - gmax = max(gmax, gama(13)) - gmax = max(gmax, gama(14)) - gmax = max(gmax, gama(15)) - gmax = max(gmax, gama(16)) - gmax = max(gmax, gama(17)) - gmax = max(gmax, gama(18)) - gmax = max(gmax, gama(19)) - gmax = max(gmax, gama(20)) - gmax = max(gmax, gama(21)) - gmax = max(gmax, gama(22)) - gmax = max(gmax, gama(23)) - end if - ! - ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. ( .not. soln)) then - gama = 0.1d0 - gamin = 1.0d10 - gamou = 1.0d10 - calou = .true. - frst = .true. - end if - ! - frst = .true. - calain = .true. - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - if (no3 >= tiny) then - psi5 = min(x3*no3/(a6/a5*(cl - x3) + x3), no3) - else - psi5 = tiny - end if - ! - ! ## 1. Account for NH3 evaporation - if (so4 > tiny) then - bb = -(c3 + x3 + psi5 + 1.0d0/a4) - cc = c3*(psi5 + x3) - c2a/a4 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - psi4 = max(min(psi4, c3) , 0.0d0) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = c2a + psi4 - cl_t = x3 - no3_t = psi5 - gnh3 = max(c3 - psi4, tiny2) - ghno3 = max(no3 - psi5, tiny2) - ghcl = max(cl - x3, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - m4 = max(so4_t - c10, 0.0d0) - frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) - m5 = min(no3_t, frnh4) - frnh4 = max(frnh4 - m5, 0.0d0) - m6 = min(cl_t, frnh4) - lwn = max(c6a + m4/c7 + m5/c8 + m6/c9, tiny) - end if - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 0 - do while ( k < nsweep-1 .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamin and gamou - if (( .not. soln) .and. frst) then - gamou(1) = gama(1) - gamou(2) = gama(2) - gamou(3) = gama(3) - gamou(4) = gama(4) - gamou(5) = gama(5) - gamou(6) = gama(6) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(10) = gama(10) - gamou(11) = gama(11) - gamou(12) = gama(12) - gamou(13) = gama(13) - gamou(14) = gama(14) - gamou(15) = gama(15) - gamou(16) = gama(16) - gamou(17) = gama(17) - gamou(18) = gama(18) - gamou(19) = gama(19) - gamou(20) = gama(20) - gamou(21) = gama(21) - gamou(22) = gama(22) - gamou(23) = gama(23) - end if - ! - if (( .not. soln)) then - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - gamin(14) = gama(14) - gamin(15) = gama(15) - gamin(16) = gama(16) - gamin(17) = gama(17) - gamin(18) = gama(18) - gamin(19) = gama(19) - gamin(20) = gama(20) - gamin(21) = gama(21) - gamin(22) = gama(22) - gamin(23) = gama(23) - end if - ! - call mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & - calain, calou) - ! - if (frst) then - errouloc = 0 - do ii = 1, 23 - errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) - end do - calou = errouloc .ge. epsact - frst = .false. - end if - - errinlocb = 0 - do ii = 1, 23 - errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) - end do - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 23 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, with new activity coefficients - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - if (no3 >= tiny) then - psi5 = min(x3*no3/(a6/a5*(cl - x3) + x3), no3) - else - psi5 = tiny - end if - ! - ! ## 1. Account for NH3 evaporation - if (so4 > tiny) then - bb = -(c3 + x3 + psi5 + 1.0d0/a4) - cc = c3*(psi5 + x3) - c2a/a4 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - psi4 = max(min(psi4, c3) , 0.0d0) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = c2a + psi4 - cl_t = x3 - no3_t = psi5 - gnh3 = max(c3 - psi4, tiny2) - ghno3 = max(no3 - psi5, tiny2) - ghcl = max(cl - x3, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - m4 = max(so4_t - c10, 0.0d0) - frnh4 = max(nh4_t - 2.0d0*m4, 0.0d0) - m5 = min(no3_t, frnh4) - frnh4 = max(frnh4 - m5, 0.0d0) - m6 = min(cl_t, frnh4) - lwn = max(c6a + m4/c7 + m5/c8 + m6/c9, tiny) - end if - end do - ! - y3 = h*cl_t/ghcl/a6 - 1.0d0 !Function value - ! - condition = .false. - if (noroot) then - ! ## If no root on interval then do not perform ITP - xa = x3 - xb = x3 - else if (y3 > 0.0d0 .and. ( .not. soln)) then - xb = x3 - yb = y3 - else if (y3 < 0.0d0 .and. ( .not. soln)) then - xa = x3 - ya = y3 - else if (( .not. soln)) then - xa = x3 - xb = x3 - end if - ! - ! ## Test for convergence criteria to exit ITP: - if (xb - xa > abs(xa*eps) .and. cl > tiny .and. ( .not. noroot)) then - condition = .true. - soln = .false. - else - soln = .true. - end if - ! - ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if (abs(y3) <= eps .and. ( .not. noroot)) then - soln = .true. - condition = .false. - end if - ! - ! ## Post-convergence correction: - ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration - ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize - ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if (( .not. condition) .and. ( .not. noroot) .and. abs(y3) > 0.1d0) then - if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then - x3 = x3_min - cl_t = cl_min - nh4_t = nh4_min - no3_t = no3_min - h = h_min - lwn = lwn_min - ghcl = ghcl_min - ghno3 = ghno3_min - gnh3 = gnh3_min - ! - ! ## Reset activity coefficients - gama = gama_min - a6 = k3*(lwn/gama(11))*(lwn/gama(11)) - y3 = h*cl_t/ghcl/a6 - 1.0d0 - end if - end if - end do ! End outer loop of ITP search - ! - ! - ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### - hso4 = 0.0d0 - if (h > tiny .and. so4_t > tiny .and. lwn >= 1.0d-19) then - ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) - bb =-(h + so4_t + ak1) - cc = h*so4_t - dd = bb*bb - 4.d0*cc - ! - if (dd >= 0.0d0) then - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - hh = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) - h = max(h - hh, 0.0d0) - so4_t = max(so4_t - hh, 0.0d0) - hso4 = hh - end if - end if - ! - ! - ! ### Perform mass adjustment to machine precision, if excess exists ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - no3_i = no3_t - hso4_i = hso4 - na_i = na_t - cl_i = cl_t - ca_i = ca_t - k_i = pk_t - mg_i = mg_t - nh3g_i = gnh3 - hno3g_i = ghno3 - hclg_i = ghcl - h_i = h - lwn_i = lwn - caso4_i = caso4 - ! - return - end subroutine mach_hetp_calco7 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: M8; Sulfate poor; dust and sodium rich - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcm8(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & - na_i, cl_i, no3_i, h_i, lwn_i, ca_i, k_i, mg_i, & - caso4_i, frca, frmg, frk, frna, rh, temp, & - k0, p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: na_i - real(kind=8), intent(inout) :: cl_i - real(kind=8), intent(inout) :: ca_i - real(kind=8), intent(inout) :: k_i - real(kind=8), intent(inout) :: mg_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: hclg_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent(inout) :: caso4_i - real(kind=8), intent(inout) :: frna - real(kind=8), intent(inout) :: frmg - real(kind=8), intent(inout) :: frk - real(kind=8), intent(inout) :: frca - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, caso4, no3, cl, na, ca, pk, mg, ghno3, ghcl - real(kind=8) :: t, aw, knh3, khso4, kh2o, khno3, khcl, bb, cc, dd, hh, v, errin, smin, ohi - real(kind=8) :: a4, a5, psi4, psi5, m5, m6, ak1, scon, tt0 - real(kind=8) :: errouloc, errinlocb, c1, gmax, ztot, loccon - real(kind=8) :: omehi, omebe, y1, y2, y3, x3, dx, a6, tt1, tt2, k1, k2, ya, yb, xa, xb - real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, ca_t, pk_t, mg_t, k3, k4 - real(kind=8) :: na2so4, chi4, chi5, chi6, nacl, nano3, k2so4, mgso4, c5, c6 - real(kind=8) :: frcl_d, frno3_d, frnh4_d, frno3, frnh4, frcl, frso4, lwnsq, gama10sq - real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, u1 - integer(kind=4) :: j, k, ii, rooteval, irh, nmax - logical(kind=4) :: condition, noroot, earlyexit, soln, frst, calain, calou, earlye - real(kind=8), dimension(23) :: gama, gamin, gamou, gama_min - real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter - real(kind=8) :: no3_min, nh4_min, cl_min, h_min, lwn_min, ghcl_min, gnh3_min, ghno3_min - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - na = na_i - cl = cl_i - ca = ca_i - pk = k_i - mg = mg_i - aw = rh - t = temp - na2so4= 0.0d0 - chi4 = 0.0d0 - chi5 = 0.0d0 - chi6 = 0.0d0 - nacl = 0.0d0 - nano3 = 0.0d0 - k2so4 = 0.0d0 - mgso4 = 0.0d0 - hso4 = 0.0d0 - gnh3 = 0.0d0 - ghno3 = 0.0d0 - ghcl = 0.0d0 - h = 0.0d0 - lwn = tiny - so4_t = 0.0d0 - nh4_t = 0.0d0 - no3_t = 0.0d0 - na_t = 0.0d0 - cl_t = 0.0d0 - ca_t = 0.0d0 - pk_t = 0.0d0 - mg_t = 0.0d0 - caso4 = 0.0d0 - frmg = 0.0d0 - frk = 0.0d0 - frca = 0.0d0 - frso4 = 0.0d0 - frna = 0.0d0 - frnh4 = 0.0d0 - frcl = 0.0d0 - frno3 = 0.0d0 - frno3_d=0.0d0 - frnh4_d=0.0d0 - frcl_d =0.0d0 - earlyexit = .false. - noroot =.false. - soln = .false. - calou = .true. - gmax = 0.0d0 - gama = 0.1d0 - gamou = 0.1d0 - gamin = 1.0d10 - earlye = .false. - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3= k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) - khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Constants - c1 = r*t - k1 = (knh3/kh2o)*c1 - k2 = khno3*c1 - k3 = khcl*c1 - k4 = kh2o*aw - ! - ! ## Calculate dry salt composition; keep track of 'free' amounts - ! ## Salts assumed to have completely dissolved (NaNO3, NaCl, MgSO4, Na2SO4, K2SO4) - caso4 = min(ca, so4) - frso4 = max(so4 - caso4, 0.0d0) - frca = max(ca - caso4, 0.0d0) - k2so4 = min(0.5d0*pk, frso4) - frk = max(pk - 2.0d0*k2so4, 0.0d0) - frso4 = max(frso4 - k2so4, 0.0d0) - mgso4 = min(mg, frso4) - frmg = max(mg - mgso4, 0.0d0) - frso4 = max(frso4 - mgso4, 0.0d0) - na2so4 = max(frso4, 0.0d0) - frna = max(na - 2.0d0*na2so4, 0.0d0) - frso4 = max(frso4 - na2so4, 0.0d0) - nano3 = min(frna, no3) - frna = max(frna - nano3, 0.0d0) - frno3_d = max(no3 - nano3, 0.0d0) - chi4 = nh4 - ! frnh4_d = max(nh4 - chi4, 0.0d0) - chi5 = max(no3 - nano3, 0.0d0) - ! frno3_d = max(frno3_d - chi5, 0.0d0) - nacl = min(frna, cl) - ! frcl_d = max(cl - nacl, 0.0d0) - frna = max(frna - nacl, 0.0d0) - chi6 = max(cl - nacl, 0.0d0) - ! frcl_d = max(frcl_d - chi6, 0.0d0) - ! - ! ## Initial aqueous speciation - na_t = nano3 + nacl + 2.0d0*na2so4 - so4_t = na2so4 + k2so4 + mgso4 - pk_t = 2.0d0*k2so4 - mg_t = mgso4 - ! - ! ## Constant ZSR - ztot = nacl/awsc(irh) + na2so4/awss(irh) + nano3/awsn(irh) + & - k2so4/awps(irh) + mgso4/awms(irh) - c5 = awan(irh) - c6 = awac(irh) - ! - ! - ! ### STAGE 1: Root tracking ### - ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs - rooteval = 0 - condition = .true. - do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking - rooteval = rooteval + 1 - ! - ! ## Set high limit for root tracking (i.e. lower bound) - if (rooteval == 1) then - omehi = tiny - y1 = 1.0d0 - end if - ! - ! ## Begin search on subinterval - if (rooteval == 2) then - soln = .false. - if (abs(y2) <= eps) then - earlyexit = .true. - dx = 0.0d0 - else - dx = (chi6-tiny-tiny)/float(ndiv) - end if - ! - y1 = y2 - ! - omebe = omehi ! Lower bound of subinterval (xa) - omehi = omehi + dx ! Upper bound of subinterval (xb) - end if - ! - ! ## Continue search - if (rooteval > 2) then - if (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0) then - ! ## 1. Root has been found on the subinterval; save x values for ITP search - y1 = y1 - omebe = omebe - omehi = omehi - else - ! ## 2. No root has been found, continue searching in the next subinterval - y1 = y2 - omebe = omehi - omehi = omehi + dx - end if - end if - ! - ! ## Solve the system of equations - frst = .true. - calain = .true. - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = chi5*(omehi + nacl) - a6/a5*nano3*(chi6 - omehi) - psi5 = psi5/(a6/a5*(chi6 - omehi) + omehi + nacl) - psi5 = min(max(psi5, tiny), chi5) - ! - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + omehi + psi5 + 1.0d0/a4) - cc = nh4*(psi5 + omehi) - psi4 = min(max(0.5d0*(-bb - sqrt(max(bb*bb - 4.0d0*cc, 0.0d0))), 0.0d0), nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = omehi + nacl - no3_t = psi5 + nano3 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(chi5 - psi5, tiny2) - ghcl = max(chi6 - omehi, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t - nano3, 0.0d0) - frcl = max(cl_t - nacl, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5, 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(ztot + m5/c5 + m6/c6, tiny) - end if - ! - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 0 - do while ( k < nsweep-1 .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamou - if (( .not. soln) .and. frst) then - gamou(1) = gama(1) - gamou(2) = gama(2) - gamou(3) = gama(3) - gamou(4) = gama(4) - gamou(5) = gama(5) - gamou(6) = gama(6) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(10) = gama(10) - gamou(11) = gama(11) - gamou(12) = gama(12) - gamou(13) = gama(13) - gamou(14) = gama(14) - gamou(15) = gama(15) - gamou(16) = gama(16) - gamou(17) = gama(17) - gamou(18) = gama(18) - gamou(19) = gama(19) - gamou(20) = gama(20) - gamou(21) = gama(21) - gamou(22) = gama(22) - gamou(23) = gama(23) - end if - ! - ! ## Reset gamin - if (( .not. soln)) then - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - gamin(14) = gama(14) - gamin(15) = gama(15) - gamin(16) = gama(16) - gamin(17) = gama(17) - gamin(18) = gama(18) - gamin(19) = gama(19) - gamin(20) = gama(20) - gamin(21) = gama(21) - gamin(22) = gama(22) - gamin(23) = gama(23) - end if - ! - call mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & - calain, calou) - ! - if (frst) then - errouloc = 0 - do ii = 1, 23 - errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) - end do - calou = errouloc .ge. epsact - frst = .false. - end if - ! - errinlocb = 0 - do ii = 1, 23 - errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) - end do - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 23 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, with new activity coefficients - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = chi5*(omehi + nacl) - a6/a5*nano3*(chi6 - omehi) - psi5 = psi5/(a6/a5*(chi6 - omehi) + omehi + nacl) - psi5 = min(max(psi5, tiny), chi5) - ! - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + omehi + psi5 + 1.0d0/a4) - cc = nh4*(psi5 + omehi) - psi4 = min(max(0.5d0*(-bb - sqrt(max(bb*bb - 4.0d0*cc, 0.0d0))), 0.0d0), nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = omehi + nacl - no3_t = psi5 + nano3 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(chi5 - psi5, tiny2) - ghcl = max(chi6 - omehi, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t - nano3, 0.0d0) - frcl = max(cl_t - nacl, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5, 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(ztot + m5/c5 + m6/c6, tiny) - end if - end do - ! - y2 = h*cl_t/ghcl/a6 - 1.0d0 !Function value - ! - ! ## Check for criteria to exit root tracking - condition = .false. - ! - loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. ( .not. noroot) .and. abs(y2) > eps .and. chi6 > tiny) then - condition = .true. - elseif (loccon < 0.0d0 .and. abs(y2) > eps) then - ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP - soln = .true. - else - ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) - soln = .true. - noroot = .true. - earlye = .true. - end if - ! - ! ## Too little frcl, or 'tiny' is a root; reset x-value to tiny and exit root tracking - if (chi6 <= tiny .or. earlyexit) then - condition = .false. - rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking - noroot = .true. - omehi = tiny ! Reset x-value to tiny, and solve system with this value - omebe = omehi - end if - ! - ! ### AFTER iterating through ALL ndiv subdivided intervals - if (rooteval == ndiv + 1) then - loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. abs(y2) > eps) then - ! ## (1) No solution - noroot = .true. - omehi = tiny - omebe = omehi - ! write(*,*), 'Warning in CALCM8: no solution found' - else if (loccon > 0.0d0 .and. abs(y2) <= eps) then - ! ## (2) Solution is assumed and ITP is not required - noroot = .true. - end if - end if - end do !End outer loop for root tracking - ! - ! - ! - ! ### STAGE 2: modified bisection search (using ITP algorithm) ### - ! ## Initialize static ITP variables - if (( .not. noroot)) then - ya = y1 - yb = y2 - xa = omebe - xb = omehi - x3 = omehi - ! - if (xa == xb) then - noroot = .true. - gx = tiny - else - gx = xb - xa - end if - ! - gx2 = (xa+xb)*0.5d0 - u1 = 0.2d0/gx - nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 - nmax = int(nh) + 2 - else - x3 = omehi - end if - ! - ! ## Start search - ! 1. Store value of previous y3 for later use - y3_lastiter = 0.0d0 - x3_lastiter = 0.0d0 - y3_min = 1.0d20 - x3_min = 0.0d0 - ! - j = 0 - condition = .true. - ! - if (earlye) then - soln = .true. - else - soln = .false. - end if - ! - do while (j < maxit .and. condition) ! Begin outer loop for ITP search - ! 1. Track x3 and y3 of the previous iteration - if (j > 0) then - y3_lastiter = y3 - x3_lastiter = x3 - end if - ! - ! 2. Track the minimum y3 that is found before ending - if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then - y3_min = y3_lastiter - x3_min = x3_lastiter - ghno3_min = ghno3 - no3_min = no3_t - h_min = h - ghcl_min = ghcl - cl_min = cl_t - gnh3_min = gnh3 - nh4_min = nh4_t - lwn_min = lwn - gama_min = gama - end if - ! - if (( .not. noroot) .and. ( .not. soln)) then - ! ## Set dynamic ITP variables - if (yb - ya == 0.0d0) then - write(*,*), '###### ABORT ######' - write(*,*), 'Zero divide in ITP reset: CALCM8' - write(*,*), 'SO4 in = ', so4 - write(*,*), 'NH4 in = ', nh4 - write(*,*), 'NO3 in = ', no3 - write(*,*), 'Na in = ', na - write(*,*), 'Cl in = ', cl - write(*,*), 'Ca in = ', ca - write(*,*), 'Mg in = ', mg - write(*,*), 'K in = ', pk - write(*,*), 'Temp in= ', t - write(*,*), 'RH in = ', aw - return - end if - ! - gx = xb - xa - xh = 0.5d0*(xa + xb) - rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) - delta= u1*(max(gx, 0.0d0))**2.0d0 - xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) - ! - sigma = sign(1.0d0, xh - xf) - if (delta <= abs(xh - xf)) then - xt = xf + sigma*delta - else - xt = xh - end if - ! - if (abs(xt - xh) <= rr) then - x3 = xt - else - x3 = xh - sigma*rr - end if - end if - ! - j = j + 1 - ! - if (( .not. soln)) then - gmax = 0.1d0 - gmax = max(gmax, gama(1)) - gmax = max(gmax, gama(2)) - gmax = max(gmax, gama(3)) - gmax = max(gmax, gama(4)) - gmax = max(gmax, gama(5)) - gmax = max(gmax, gama(6)) - gmax = max(gmax, gama(7)) - gmax = max(gmax, gama(8)) - gmax = max(gmax, gama(9)) - gmax = max(gmax, gama(10)) - gmax = max(gmax, gama(11)) - gmax = max(gmax, gama(12)) - gmax = max(gmax, gama(13)) - gmax = max(gmax, gama(14)) - gmax = max(gmax, gama(15)) - gmax = max(gmax, gama(16)) - gmax = max(gmax, gama(17)) - gmax = max(gmax, gama(18)) - gmax = max(gmax, gama(19)) - gmax = max(gmax, gama(20)) - gmax = max(gmax, gama(21)) - gmax = max(gmax, gama(22)) - gmax = max(gmax, gama(23)) - end if - ! - ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. ( .not. soln)) then - gama = 0.1d0 - gamin = 1.0d10 - gamou = 1.0d10 - calou = .true. - frst = .true. - end if - ! - ! ## Solve system of equations - frst = .true. - calain = .true. - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = chi5*(x3 + nacl) - a6/a5*nano3*(chi6 - x3) - psi5 = psi5/(a6/a5*(chi6 - x3) + x3 + nacl) - psi5 = min(max(psi5, tiny), chi5) - ! - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + x3 + psi5 + 1.0d0/a4) - cc = nh4*(psi5 + x3) - psi4 = min(max(0.5d0*(-bb - sqrt(max(bb*bb - 4.0d0*cc, 0.0d0))), 0.0d0), nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = x3 + nacl - no3_t = psi5 + nano3 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(chi5 - psi5, tiny2) - ghcl = max(chi6 - x3, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t - pk_t - 2.0d0*mg_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t - nano3, 0.0d0) - frcl = max(cl_t - nacl, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5, 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(ztot + m5/c5 + m6/c6, tiny) - end if - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 0 - do while ( k < nsweep .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamin and gamou - if (( .not. soln) .and. frst) then - gamou(1) = gama(1) - gamou(2) = gama(2) - gamou(3) = gama(3) - gamou(4) = gama(4) - gamou(5) = gama(5) - gamou(6) = gama(6) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(10) = gama(10) - gamou(11) = gama(11) - gamou(12) = gama(12) - gamou(13) = gama(13) - gamou(14) = gama(14) - gamou(15) = gama(15) - gamou(16) = gama(16) - gamou(17) = gama(17) - gamou(18) = gama(18) - gamou(19) = gama(19) - gamou(20) = gama(20) - gamou(21) = gama(21) - gamou(22) = gama(22) - gamou(23) = gama(23) - end if - ! - if (( .not. soln)) then - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - gamin(14) = gama(14) - gamin(15) = gama(15) - gamin(16) = gama(16) - gamin(17) = gama(17) - gamin(18) = gama(18) - gamin(19) = gama(19) - gamin(20) = gama(20) - gamin(21) = gama(21) - gamin(22) = gama(22) - gamin(23) = gama(23) - end if - ! - call mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & - calain, calou) - ! - if (frst) then - errouloc = 0 - do ii = 1, 23 - errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) - end do - calou = errouloc .ge. epsact - frst = .false. - end if - ! - errinlocb = 0 - do ii = 1, 23 - errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) - end do - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 23 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, with new activity coefficients - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = chi5*(x3 + nacl) - a6/a5*nano3*(chi6 - x3) - psi5 = psi5/(a6/a5*(chi6 - x3) + x3 + nacl) - psi5 = min(max(psi5, tiny), chi5) - ! - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + x3 + psi5 + 1.0d0/a4) - cc = nh4*(psi5 + x3) - psi4 = min(max(0.5d0*(-bb - sqrt(max(bb*bb - 4.0d0*cc, 0.0d0))), 0.0d0), nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = x3 + nacl - no3_t = psi5 + nano3 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(chi5 - psi5, tiny2) - ghcl = max(chi6 - x3, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t & - - pk_t - 2.0d0*mg_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t - nano3, 0.0d0) - frcl = max(cl_t - nacl, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5, 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(ztot + m5/c5 + m6/c6, tiny) - end if - end do - ! - y3 = h*cl_t/ghcl/a6 - 1.0d0 !Function value - ! - condition = .false. - if (noroot) then - ! ## If no root on interval then do not perform ITP - xa = x3 - xb = x3 - else if (y3 > 0.0d0 .and. ( .not. soln)) then - xb = x3 - yb = y3 - else if (y3 < 0.0d0 .and. ( .not. soln)) then - xa = x3 - ya = y3 - else if (( .not. soln)) then - xa = x3 - xb = x3 - end if - ! - ! ## Check for convergence criteria to exit ITP - if (xb - xa > abs(xa*eps) .and. chi6 > tiny .and. ( .not. noroot)) then - condition = .true. - soln = .false. - else - soln = .true. - end if - ! - ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if (abs(y3) <= eps .and. ( .not. noroot)) then - soln = .true. - condition = .false. - end if - ! - ! ## Post-convergence correction: - ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration - ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize - ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if (( .not. condition) .and. ( .not. noroot) .and. abs(y3) > 0.1d0) then - if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then - x3 = x3_min - cl_t = cl_min - nh4_t = nh4_min - no3_t = no3_min - h = h_min - lwn = lwn_min - ghcl = ghcl_min - ghno3 = ghno3_min - gnh3 = gnh3_min - ! - ! ## Reset activity coefficients - gama = gama_min - a6 = k3*(lwn/gama(11))*(lwn/gama(11)) - y3 = h*cl_t/ghcl/a6 - 1.0d0 - end if - end if - end do ! End outer loop of ITP search - ! - ! - ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### - hso4 = 0.0d0 - if (h > tiny .and. so4_t > tiny .and. lwn >= 1.0d-19) then - ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) - bb =-(h + so4_t + ak1) - cc = h*so4_t - dd = bb*bb - 4.d0*cc - ! - if (dd >= 0.0d0) then - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - hh = 0.5d0*(-bb - sqrt(bb*bb - 4.d0*cc)) - end if - ! - hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) - h = max(h - hh, 0.0d0) - so4_t = max(so4_t - hh, 0.0d0) - hso4 = hh - end if - end if - ! - ! - ! ### Perform mass adjustment if excess exists, to balance mass to machine precision ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - no3_i = no3_t - hso4_i = hso4 - na_i = na_t - cl_i = cl_t - ca_i = ca_t - k_i = pk_t - mg_i = mg_t - nh3g_i = gnh3 - hno3g_i = ghno3 - hclg_i = ghcl - h_i = h - lwn_i = lwn - caso4_i = caso4 - ! - return - end subroutine mach_hetp_calcm8 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: P13; Sulfate poor; dust and sodium rich - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcp13(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & - na_i, cl_i, no3_i, h_i, lwn_i, ca_i, k_i, mg_i, & - caso4_i, frso4, frmg, frk, frca, frna, rh, temp, & - k0, p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: na_i - real(kind=8), intent(inout) :: cl_i - real(kind=8), intent(inout) :: ca_i - real(kind=8), intent(inout) :: k_i - real(kind=8), intent(inout) :: mg_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: hclg_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent(inout) :: caso4_i - real(kind=8), intent(inout) :: frso4 - real(kind=8), intent(inout) :: frmg - real(kind=8), intent(inout) :: frk - real(kind=8), intent(inout) :: frca - real(kind=8), intent(inout) :: frna - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, caso4, no3, cl, na, ca, pk, mg, ghno3, ghcl - real(kind=8) :: t, aw, knh3, khso4, kh2o, khno3, khcl, a4, a5, psi4, psi5, ak1, m5, m6, tt0 - real(kind=8) :: bb, cc, dd, hh, v, errin, smin, ohi, scon, errouloc, errinlocb - real(kind=8) :: frcl, frno3, frnh4, cano32, kno3, kcl, loccon - real(kind=8) :: omehi, omebe, y1, y2, y3, x3, dx, a6, tt1, tt2, k1, k2, ya, yb, xa, xb - real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, ca_t, pk_t, mg_t, k3, k4 - real(kind=8) :: chi5, chi6, nacl, nano3, k2so4, mgso4, c1, c2, c3, c4, c5 - real(kind=8) :: mgno32, mgcl2, cacl2, gmax, ztot, lwnsq, gama10sq - real(kind=8) :: nh, sigma, xt, xf, xh, delta, rr, gx, gx2, u1 - integer(kind=4) :: j, k, ii, rooteval, irh, nmax - logical(kind=4) :: condition, noroot, earlyexit, soln, frst, calain, calou, earlye - real(kind=8), dimension(23) :: gama, gamin, gamou, gama_min - real(kind=8) :: y3_min, x3_min, y3_lastiter, x3_lastiter - real(kind=8) :: no3_min, nh4_min, cl_min, h_min, lwn_min, ghcl_min, gnh3_min, ghno3_min - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - na = na_i - cl = cl_i - ca = ca_i - pk = k_i - mg = mg_i - aw = rh - t = temp - hso4 = 0.0d0 - gnh3 = 0.0d0 - ghno3 = 0.0d0 - ghcl = 0.0d0 - h = 0.0d0 - lwn = tiny - so4_t = 0.0d0 - nh4_t = 0.0d0 - no3_t = 0.0d0 - na_t = 0.0d0 - cl_t = 0.0d0 - ca_t = 0.0d0 - pk_t = 0.0d0 - mg_t = 0.0d0 - caso4 = 0.0d0 - noroot=.false. - earlyexit = .false. - soln = .false. - calou = .true. - gmax = 0.0d0 - gama = 0.1d0 - gamin = 1.0d10 - gamou = 0.1d0 - earlye = .false. - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3= k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) - khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Calculate dry salt composition - ! ## Salts assumed to have completely dissolved - ! ## Dissolved salts include: Ca(NO3)2, CaCl2, K2SO4, KNO3, KCl, MgSO4, Mg(NO3)2, MgCl2, NaNO3, NaCl - caso4 = min(so4, ca) - frca = max(ca - caso4, 0.0d0) - frso4 = max(so4 - caso4, 0.0d0) - k2so4 = min(frso4, 0.5d0*pk) - frk = max(pk - 2.0d0*k2so4, 0.0d0) - frso4 = max(frso4 - k2so4, 0.0d0) - mgso4 = min(frso4, mg) - frmg = max(mg - mgso4, 0.0d0) - frso4 = max(frso4 - mgso4, 0.0d0) - nacl = min(na, cl) - frna = max(na - nacl, 0.0d0) - frcl = max(cl - nacl, 0.0d0) - cano32= min(frca, 0.5d0*no3) - frca = max(frca - cano32, 0.0d0) - frno3 = max(no3 - 2.0d0*cano32, 0.0d0) - cacl2 = min(frca, 0.5d0*frcl) - frca = max(frca - cacl2, 0.0d0) - frcl = max(frcl - 2.0d0*cacl2, 0.0d0) - mgno32= min(frmg, 0.5d0*frno3) - frmg = max(frmg - mgno32, 0.0d0) - frno3 = max(frno3 - 2.0d0*mgno32, 0.0d0) - mgcl2 = min(frmg, 0.5d0*frcl) - frmg = max(frmg - mgcl2, 0.0d0) - frcl = max(frcl - 2.0d0*mgcl2, 0.0d0) - nano3 = min(frna, frno3) - frna = max(frna - nano3, 0.0d0) - frno3 = max(frno3 - nano3, 0.0d0) - kcl = min(frk, frcl) - frk = max(frk - kcl, 0.0d0) - frcl = max(frcl - kcl, 0.0d0) - kno3 = min(frk, frno3) - frk = max(frk - kno3, 0.0d0) - frno3 = max(frno3 - kno3, 0.0d0) - chi5 = frno3 ! HNO3(g) - chi6 = frcl ! HCl(g) - frno3 = 0.0d0 - frcl = 0.0d0 - ! - ! ## Initial speciation - na_t = nacl + nano3 - so4_t = k2so4 + mgso4 - ca_t = cano32 + cacl2 - pk_t = 2.0d0*k2so4 + kno3 + kcl - mg_t = mgso4 + mgno32 + mgcl2 - ! - ! ## Calculate constant parameters - c1 = r*t - c2 = nacl + kcl + 2.0d0*mgcl2 + 2.0d0*cacl2 - c3 = nano3 + 2.0d0*cano32 + kno3 + 2.0d0*mgno32 - c4 = -1.0d0*nano3 - 2.0d0*cano32 - kno3 - 2.0d0*mgno32 - c5 = -1.0d0*nacl - 2.0d0*cacl2 - kcl - 2.0d0*mgcl2 - k1 = (knh3/kh2o)*c1 - k2 = khno3*c1 - k3 = khcl*c1 - k4 = kh2o*aw - ! - ! ## Constant ZSR parameters - ztot = nacl/awsc(irh) + nano3/awsn(irh) + cano32/awcn(irh) + & - cacl2/awcc(irh) + kno3/awpn(irh) + kcl/awpc(irh) + & - mgno32/awmn(irh) + mgcl2/awmc(irh) + k2so4/awps(irh) + & - mgso4/awms(irh) - ! - ! - ! ### STAGE 1: Root tracking ### - ! ## Find a subinterval [xa,xb] on the larger interval [I1,I2] where a sign change occurs - rooteval = 0 - condition = .true. - do while (rooteval < 2 .or. (condition .and. rooteval < ndiv + 1)) ! Begin outer loop for root tracking - rooteval = rooteval + 1 - ! - ! ## Set high limit for root tracking (i.e. lower bound) - if (rooteval == 1) then - omehi = tiny - y1 = 1.0d0 - end if - ! - ! ## Begin search on subinterval - if (rooteval == 2) then - soln = .false. - if (abs(y2) <= eps) then - earlyexit = .true. - end if - ! - y1 = y2 - ! - if (earlyexit) then - dx = 0.0d0 - else - dx = (chi6-tiny-tiny)/float(ndiv) - end if - ! - omebe = omehi ! Lower bound of subinterval (xa) - omehi = omehi + dx ! Upper bound of subinterval (xb) - end if - ! - ! ## Continue search - if (rooteval > 2) then - if (sign(1.0d0,y1)*sign(1.0d0,y2) < 0.0d0) then - ! ## 1. Root has been found on the subinterval; save x values for ITP search - y1 = y1 - omebe = omebe - omehi = omehi - else - ! ## 2. No root has been found, continue searching in the next subinterval - y1 = y2 - omebe = omehi - omehi = omehi + dx - end if - end if - ! - ! ## Solve the system of equations - frst = .true. - calain = .true. - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = chi5*(omehi + c2) - a6/a5*(c3)*(chi6 - omehi) - psi5 = psi5/(a6/a5*(chi6 - omehi) + omehi + c2) - psi5 = min(max(psi5, tiny), chi5) - - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + omehi + psi5 + 1.0d0/a4) - cc = nh4*(psi5 + omehi) - - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5*bb - 0.5*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - - psi4 = min(max(psi4, 0.0d0), nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = omehi + c2 - no3_t = psi5 + c3 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(chi5 - psi5, tiny2) - ghcl = max(chi6 - omehi, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t & - - pk_t - 2.0d0*mg_t - 2.0d0*ca_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t + c4, 0.0d0) - frcl = max(cl_t + c5, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5, 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(ztot + m5/awan(irh) + m6/awac(irh), tiny) - end if - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 1 - do while ( k < nsweep .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamou - if (( .not. soln) .and. frst) then - gamou(1) = gama(1) - gamou(2) = gama(2) - gamou(3) = gama(3) - gamou(4) = gama(4) - gamou(5) = gama(5) - gamou(6) = gama(6) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(10) = gama(10) - gamou(11) = gama(11) - gamou(12) = gama(12) - gamou(13) = gama(13) - gamou(14) = gama(14) - gamou(15) = gama(15) - gamou(16) = gama(16) - gamou(17) = gama(17) - gamou(18) = gama(18) - gamou(19) = gama(19) - gamou(20) = gama(20) - gamou(21) = gama(21) - gamou(22) = gama(22) - gamou(23) = gama(23) - end if - ! - ! ## Reset gamin - if (( .not. soln)) then - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - gamin(14) = gama(14) - gamin(15) = gama(15) - gamin(16) = gama(16) - gamin(17) = gama(17) - gamin(18) = gama(18) - gamin(19) = gama(19) - gamin(20) = gama(20) - gamin(21) = gama(21) - gamin(22) = gama(22) - gamin(23) = gama(23) - end if - ! - call mach_hetp_calcact4b( h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & - calain, calou) - ! - if (frst) then - errouloc = 0 - do ii = 1, 23 - errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) - end do - calou = errouloc .ge. epsact - frst = .false. - end if - - errinlocb = 0 - do ii = 1, 23 - errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) - end do - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 23 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, using new activity coefficients - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = chi5*(omehi + c2) - a6/a5*(c3)*(chi6 - omehi) - psi5 = psi5/(a6/a5*(chi6 - omehi) + omehi + c2) - psi5 = min(max(psi5, tiny), chi5) - - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + omehi + psi5 + 1.0d0/a4) - cc = nh4*(psi5 + omehi) - - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5*bb - 0.5*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - - psi4 = min(max(psi4, 0.0d0), nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = omehi + c2 - no3_t = psi5 + c3 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(chi5 - psi5, tiny2) - ghcl = max(chi6 - omehi, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t & - - pk_t - 2.0d0*mg_t - 2.0d0*ca_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t + c4, 0.0d0) - frcl = max(cl_t + c5, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5, 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(ztot + m5/awan(irh) + m6/awac(irh), tiny) - end if - end do - ! - y2 = h*cl_t/ghcl/a6 - 1.0d0 !Function value - ! - ! ## Check for criteria to exit root tracking - condition = .false. - loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. ( .not. noroot) .and. abs(y2) > eps .and. chi6 > tiny) then - condition = .true. - elseif (loccon < 0.0d0 .and. abs(y2) > eps) then - ! ## Interval had been found where sign change occurs; exit root tracking and proceed to ITP - soln = .true. - else - ! ## abs(y2) <= eps; solution is assumed; exit root tracking and proceed to minor system (no ITP) - soln = .true. - noroot = .true. - earlye = .true. - end if - ! - ! ## Too little frcl, or 'tiny' is a root; reset x-value to tiny and exit root tracking - if (chi6 <= tiny .or. earlyexit) then - condition = .false. - rooteval = 2 ! Increment rooteval by 1 to force exit from root tracking - noroot = .true. - omehi = tiny ! Reset x-value to tiny, and solve system with this value - omebe = omehi - end if - ! - ! ### AFTER iterating through ALL ndiv subdivided intervals - if (rooteval == ndiv + 1) then - loccon = sign(1.0d0,y1)*sign(1.0d0,y2) - if (loccon > 0.0d0 .and. abs(y2) > eps) then - ! ## (1) No solution - noroot = .true. - omehi = tiny - omebe = omehi - ! write(*,*), 'Warning in CALCP13: no solution found' - else if (loccon > 0.0d0 .and. abs(y2) <= eps) then - ! ## (2) Solution is assumed and ITP is not required - noroot = .true. - end if - end if - end do !End outer loop for root tracking - ! - ! - ! - ! ### STAGE 2: modified bisection search (using ITP algorithm) ### - ! ## Initialize static ITP variables - if (( .not. noroot)) then - ya = y1 - yb = y2 - xa = omebe - xb = omehi - x3 = omehi - ! - if (xa == xb) then - noroot = .true. - gx = tiny - else - gx = xb - xa - end if - ! - gx2 = (xa+xb)*0.5d0 - u1 = 0.2d0/gx - nh = log10(abs(gx/(2.0d0*eps*gx2))) / log10of2 - nmax = int(nh) + 2 - else - x3 = omehi - end if - ! - ! ## Start search - y3_lastiter = 0.0d0 - x3_lastiter = 0.0d0 - y3_min = 1.0d20 - x3_min = 0.0d0 - ! - j = 0 - condition = .true. - ! - if (earlye) then - soln = .true. - else - soln = .false. - end if - ! - do while (j < maxit .and. condition) ! Begin outer loop for ITP search - ! ## Set dynamic ITP variables - ! 1. Track x3 and y3 of the previous iteration - if (j > 0) then - y3_lastiter = y3 - x3_lastiter = x3 - end if - ! - ! 2. Track the minimum y3 that is found before ending - if (abs(0.0d0 - y3_min) > abs(0.0d0 - y3_lastiter) .and. j > 0) then - y3_min = y3_lastiter - x3_min = x3_lastiter - ghno3_min = ghno3 - no3_min = no3_t - h_min = h - ghcl_min = ghcl - cl_min = cl_t - gnh3_min = gnh3 - nh4_min = nh4_t - lwn_min = lwn - gama_min = gama - end if - ! - if (( .not. noroot) .and. ( .not. soln)) then - if (yb - ya == 0.0d0) then - write(*,*), '###### ABORT ######' - write(*,*), 'Zero divide in ITP reset: CALCP13' - write(*,*), 'SO4 in = ', so4 - write(*,*), 'NH4 in = ', nh4 - write(*,*), 'NO3 in = ', no3 - write(*,*), 'Na in = ', na - write(*,*), 'Cl in = ', cl - write(*,*), 'Temp in= ', t - write(*,*), 'RH in = ', aw - return - end if - ! - gx = xb - xa - xh = 0.5d0*(xa + xb) - rr = max(gx2*eps*2.d0**(real(nmax - j)) - 0.5d0*gx, 0.0d0) - delta= u1*(max(gx, 0.0d0))**2.0d0 - xf = max((yb*xa - ya*xb) / (yb - ya), 0.0d0) - ! - sigma = sign(1.0d0, xh - xf) - if (delta <= abs(xh - xf)) then - xt = xf + sigma*delta - else - xt = xh - end if - ! - if (abs(xt - xh) <= rr) then - x3 = xt - else - x3 = xh - sigma*rr - end if - end if - ! - j = j + 1 - ! - if (( .not. soln)) then - gmax = 0.1d0 - gmax = max(gmax, gama(1)) - gmax = max(gmax, gama(2)) - gmax = max(gmax, gama(3)) - gmax = max(gmax, gama(4)) - gmax = max(gmax, gama(5)) - gmax = max(gmax, gama(6)) - gmax = max(gmax, gama(7)) - gmax = max(gmax, gama(8)) - gmax = max(gmax, gama(9)) - gmax = max(gmax, gama(10)) - gmax = max(gmax, gama(11)) - gmax = max(gmax, gama(12)) - gmax = max(gmax, gama(13)) - gmax = max(gmax, gama(14)) - gmax = max(gmax, gama(15)) - gmax = max(gmax, gama(16)) - gmax = max(gmax, gama(17)) - gmax = max(gmax, gama(18)) - gmax = max(gmax, gama(19)) - gmax = max(gmax, gama(20)) - gmax = max(gmax, gama(21)) - gmax = max(gmax, gama(22)) - gmax = max(gmax, gama(23)) - end if - ! - ! ## Reinitialize activity coefficients if gmax > 100.0d0 - if (gmax > 100.0d0 .and. ( .not. soln)) then - gama = 0.1d0 - gamin = 1.0d10 - gamou = 1.0d10 - calou = .true. - frst = .true. - end if - ! - ! ## Solve system of equations - frst = .true. - calain = .true. - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = chi5*(x3 + c2) - a6/a5*(c3)*(chi6 - x3) - psi5 = psi5/(a6/a5*(chi6 - x3) + x3 + c2) - psi5 = min(max(psi5, tiny), chi5) - - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + x3 + psi5 + 1.0d0/a4) - cc = nh4*(psi5 + x3) - - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5*bb - 0.5*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - - psi4 = min(max(psi4, 0.0d0), nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = x3 + c2 - no3_t = psi5 + c3 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(chi5 - psi5, tiny2) - ghcl = max(chi6 - x3, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t & - - pk_t - 2.0d0*mg_t - 2.0d0*ca_t - scon = k4*lwnsq - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t + c4, 0.0d0) - frcl = max(cl_t + c5, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5, 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(ztot + m5/awan(irh) + m6/awac(irh), tiny) - end if - ! - ! ## Iterate until convergence of activity coefficients - errin = 1.0d0 - k = 1 - do while ( k < nsweep .and. errin >= epsact) - k = k + 1 - ! - ! ## Reset gamin and gamou - if (( .not. soln) .and. frst) then - gamou(1) = gama(1) - gamou(2) = gama(2) - gamou(3) = gama(3) - gamou(4) = gama(4) - gamou(5) = gama(5) - gamou(6) = gama(6) - gamou(7) = gama(7) - gamou(8) = gama(8) - gamou(9) = gama(9) - gamou(10) = gama(10) - gamou(11) = gama(11) - gamou(12) = gama(12) - gamou(13) = gama(13) - gamou(14) = gama(14) - gamou(15) = gama(15) - gamou(16) = gama(16) - gamou(17) = gama(17) - gamou(18) = gama(18) - gamou(19) = gama(19) - gamou(20) = gama(20) - gamou(21) = gama(21) - gamou(22) = gama(22) - gamou(23) = gama(23) - end if - ! - if (( .not. soln)) then - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - gamin(14) = gama(14) - gamin(15) = gama(15) - gamin(16) = gama(16) - gamin(17) = gama(17) - gamin(18) = gama(18) - gamin(19) = gama(19) - gamin(20) = gama(20) - gamin(21) = gama(21) - gamin(22) = gama(22) - gamin(23) = gama(23) - end if - ! - call mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - ca_t, pk_t, mg_t, lwn, gama, t, soln, frst, & - calain, calou) - ! - if (frst) then - errouloc = 0 - do ii = 1, 23 - errouloc = max(errouloc, abs(gamou(ii) - gama(ii)) / gamou(ii)) - end do - calou = errouloc .ge. epsact - frst = .false. - end if - ! - errinlocb = 0 - do ii = 1, 23 - errinlocb = max(errinlocb, abs(gamin(ii) - gama(ii)) / gamin(ii)) - end do - calain = errinlocb .ge. epsact - ! - errin = 0.0d0 - ! ## Test for convergence of activity coefficients - do ii = 1, 23 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system of equations, with new activity coefficients - if (( .not. soln)) then - lwnsq = lwn*lwn - gama10sq = gama(10)*gama(10) - ! - a4 = k1*gama10sq/(gama(5)*gama(5)) - a5 = k2*lwnsq/gama10sq - a6 = k3*lwnsq/(gama(11)*gama(11)) - ! - ! ## 1. Calculate dissociation quantities - psi5 = chi5*(x3 + c2) - a6/a5*(c3)*(chi6 - x3) - psi5 = psi5/(a6/a5*(chi6 - x3) + x3 + c2) - psi5 = min(max(psi5, tiny), chi5) - ! - if (nh4 > tiny .and. lwn > tiny) then - bb = -(nh4 + x3 + psi5 + 1.0d0/a4) - cc = nh4*(psi5 + x3) - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - psi4 = -0.5*bb - 0.5*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - psi4 = 0.5d0*(-bb - sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - psi4 = min(max(psi4, 0.0d0), nh4) - else - psi4 = tiny - end if - ! - ! ## 2. Speciation - nh4_t = psi4 - cl_t = x3 + c2 - no3_t = psi5 + c3 - gnh3 = max(nh4 - psi4, tiny2) - ghno3 = max(chi5 - psi5, tiny2) - ghcl = max(chi6 - x3, tiny2) - ! - ! ## 3. Calculate H+; smin = (negative charge) - (positive charge) - smin = 2.0d0*so4_t + no3_t + cl_t - na_t - nh4_t & - - pk_t - 2.0d0*mg_t - 2.0d0*ca_t - scon = k4*lwn*lwn - ! - if (smin > tiny) then ! H+ in excess - bb =-smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - h = max(hh,sqrt(scon)) - ! ohi = scon/h - else ! OH- in excess - bb = smin - cc =-scon - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb + 0.5d0*abs(bb) - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ohi = max(hh,sqrt(scon)) - h = scon/ohi - end if - ! - ! ## 4. Aerosol liquid water content - frno3 = max(no3_t + c4, 0.0d0) - frcl = max(cl_t + c5, 0.0d0) - m5 = min(nh4_t, frno3) - frnh4 = max(nh4_t - m5, 0.0d0) - m6 = min(frcl, frnh4) - lwn = max(ztot + m5/awan(irh) + m6/awac(irh), tiny) - end if - end do - ! - y3 = h*cl_t/ghcl/a6 - 1.0d0 !Function value - ! - condition = .false. - if (noroot) then - ! ## If no root on interval then do not perform ITP - xa = x3 - xb = x3 - else if (y3 > 0.0d0 .and. ( .not. soln)) then - xb = x3 - yb = y3 - else if (y3 < 0.0d0 .and. ( .not. soln)) then - xa = x3 - ya = y3 - else if (( .not. soln)) then - xa = x3 - xb = x3 - end if - ! - ! ## Check for convergence criteria to exit ITP: - if (xb - xa > abs(xa*eps) .and. chi6 > tiny .and. ( .not. noroot)) then - condition = .true. - soln = .false. - else - soln = .true. - end if - ! - ! ## Exit ITP if the function being bisected evaluates to a value <= eps; solution is assumed - if (abs(y3) <= eps .and. ( .not. noroot)) then - soln = .true. - condition = .false. - end if - ! - ! ## Post-convergence correction: - ! ## If the calculated y-value (y3) after ITP is further from zero than an earlier iteration - ! ## then reset to the x-value/concentrations/activity coefficients that were found to minimize - ! ## the objective function (i.e., y3); in this case, this is chosen as the solution - if (( .not. condition) .and. ( .not. noroot) .and. abs(y3) > 0.1d0) then - if (abs(0.0d0 - y3_min) < abs(0.0d0 - y3) .and. abs(y3_min - y3) > 1.0d-1) then - x3 = x3_min - cl_t = cl_min - nh4_t = nh4_min - no3_t = no3_min - h = h_min - lwn = lwn_min - ghcl = ghcl_min - ghno3 = ghno3_min - gnh3 = gnh3_min - ! - ! ## Reset activity coefficients - gama = gama_min - a6 = k3*(lwn/gama(11))*(lwn/gama(11)) - y3 = h*cl_t/ghcl/a6 - 1.0d0 - end if - end if - end do ! End outer loop of ITP search - ! - ! - ! ### MINOR SYSTEM: HSO4-/SO42-/H+ ### - hso4 = 0.0d0 - if (h > tiny .and. so4_t > tiny .and. lwn >= 1.0d-19) then - ak1 = khso4*lwn/gama(7)*(gama(8)/gama(7))*(gama(8)/gama(7)) - bb =-(h + so4_t + ak1) - cc = h*so4_t - dd = bb*bb - 4.d0*cc - ! - if (dd >= 0.0d0) then - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - hh = -0.5d0*bb - 0.5d0*abs(bb) + ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/abs(bb) ! Negative root - else - hh = 0.5d0*(-bb - sqrt(bb*bb - 4.d0*cc)) - end if - ! - hh = max(tiny, min(hh, min(h, so4_t))) ! To avoid negative H+ (i.e., if hh > h or hh > so4_t) - h = max(h - hh, 0.0d0) - so4_t = max(so4_t - hh, 0.0d0) - hso4 = hh - end if - end if - ! - ! - ! ### Perform mass adjustment if excess exists ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - no3_i = no3_t - hso4_i = hso4 - na_i = na_t - cl_i = cl_t - ca_i = ca_t - k_i = pk_t - mg_i = mg_t - nh3g_i = gnh3 - hno3g_i = ghno3 - hclg_i = ghcl - h_i = h - lwn_i = lwn - caso4_i = caso4 - ! - return - end subroutine mach_hetp_calcp13 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: L9; sulfate rich; no free acid - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcl9(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & - na_i, cl_i, no3_i, h_i, lwn_i, ca_i, k_i, mg_i, & - caso4_i, frmg, frk, frca, frna, frso4, rh, temp, k0, & - p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: na_i - real(kind=8), intent(inout) :: cl_i - real(kind=8), intent(inout) :: ca_i - real(kind=8), intent(inout) :: k_i - real(kind=8), intent(inout) :: mg_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: hclg_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent(inout) :: caso4_i - real(kind=8), intent(out) :: frmg - real(kind=8), intent(out) :: frk - real(kind=8), intent(out) :: frca - real(kind=8), intent(out) :: frna - real(kind=8), intent(out) :: frso4 - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, caso4 - real(kind=8) :: no3, cl, na, ca, pk, mg, ghno3, ghcl, t, aw - real(kind=8) :: knh3, khso4, kh2o, khno3, khcl, frso4_2, frnh4, frnh4_2, tt0 - real(kind=8) :: bb, cc, dd, ff, hh, v, errin, a3, a4, a9, delno - real(kind=8) :: delcl, m1, m2, m3, c1, c2, tt1, tt2 - real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, ca_t, pk_t, mg_t - real(kind=8) :: clc, nh4hs4, nahso4, na2so4, nh42s4, k2so4, mgso4, kkhso4, exnh4 - real(kind=8) :: frcl, frno3 - integer(kind=4) :: j, ii, islv, irh - logical(kind=4) :: ispoly - real(kind=8), dimension(23) :: gama, gamin - ! - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - na = na_i - cl = cl_i - ca = ca_i - pk = k_i - mg = mg_i - aw = rh - t = temp - caso4 = 0.0d0 - hso4 = 0.0d0 - gnh3 = 0.0d0 - ghno3 = 0.0d0 - ghcl = 0.0d0 - h = 0.0d0 - lwn = tiny - so4_t = 0.0d0 - nh4_t = 0.0d0 - no3_t = 0.0d0 - na_t = 0.0d0 - cl_t = 0.0d0 - ca_t = 0.0d0 - pk_t = 0.0d0 - mg_t = 0.0d0 - delcl = 0.0d0 - na2so4= 0.0d0 - nahso4= 0.0d0 - clc = 0.0d0 - nh42s4= 0.0d0 - nh4hs4= 0.0d0 - kkhso4= 0.0d0 - k2so4 = 0.0d0 - mgso4 = 0.0d0 - frmg = 0.0d0 - frna = 0.0d0 - frk = 0.0d0 - frca = 0.0d0 - frcl = 0.0d0 - frno3 = 0.0d0 - frso4 = 0.0d0 - frnh4 = 0.0d0 - exnh4 = 0.0d0 - gama = 0.1d0 - gamin = 1.0d10 - ! - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) - khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Find dry composition: all solids except CaSO4 assumed to be completely dissolved - ! ## Subroutine 'CALCL1A' in ISORROPIA II, but modified here for mass balance - caso4 = min(ca, so4) - frso4 = max(so4 - caso4, 0.0d0) - frca = max(ca - caso4, 0.0d0) - ! - k2so4 = min(0.5d0*pk, frso4) - frk = max(pk - 2.0d0*k2so4, 0.0d0) - frso4 = max(frso4 - k2so4, 0.0d0) - ! - na2so4 = min(0.5d0*na, frso4) - frna = max(na - 2.0d0*na2so4, 0.0d0) - frso4 = max(frso4 - na2so4, 0.0d0) - ! - mgso4 = min(mg, frso4) - frmg = max(mg - mgso4, 0.0d0) - frso4 = max(frso4 - mgso4, 0.0d0) - ! - clc = min(nh4/3.0d0, frso4*0.5d0) ! (NH4)3H(SO4)2(s) - frso4 = max(frso4 - 2.0d0*clc, 0.0d0) - frnh4 = max(nh4 - 3.0d0*clc, 0.0d0) - ! - if (frso4 <= tiny) then - frso4 = frso4 + 2.0d0*clc - 2.0d0*max(clc-frnh4, 0.0d0) - frnh4_2 = frnh4 + 3.0d0*clc - 3.0d0*max(clc-frnh4, 0.0d0) - clc = max(clc - frnh4, 0.0d0) - nh42s4 = min(0.5d0*frnh4_2, frso4) - frnh4 = max(frnh4_2 - 2.0d0*nh42s4, 0.0d0) - frso4 = max(frso4 - nh42s4, 0.0d0) - else if (frnh4 <= tiny) then - nh4hs4 = 3.0d0*min(frso4, clc) - clc = max(clc - frso4, 0.0d0) - frso4 = max(frso4 - nh4hs4/3.0d0, 0.0d0) - ! - if (na2so4 > tiny) then - frso4_2 = frso4 - frso4 = frso4 + (na2so4 - max(na2so4 - frso4, 0.0d0)) - na2so4 = max(na2so4 - frso4_2, 0.0d0) - frna = max(na - 2.0d0*na2so4, 0.0d0) - nahso4 = min(frna, frso4) - frna = max(frna - nahso4, 0.0d0) - frso4 = max(frso4 - nahso4, 0.0d0) - end if - ! - if (k2so4 > tiny) then - frso4_2 = frso4 - frso4 = frso4 + k2so4 - max(k2so4 - frso4, 0.0d0) - k2so4 = max(k2so4 - frso4_2, 0.0d0) - frk = max(pk - 2.0d0*k2so4, 0.0d0) - kkhso4 = min(frk, frso4) - frso4 = max(frso4 - kkhso4, 0.0d0) - frk = max(frk - kkhso4, 0.0d0) - end if - end if - ! - ! ## Speciation - na_t = 2.0d0*na2so4 + nahso4 - nh4_t = 3.0d0*clc + 2.0d0*nh42s4 + nh4hs4 - pk_t = kkhso4 + 2.0d0*k2so4 - mg_t = mgso4 - ! - ! ## Gaseous species - ghno3 = no3 - ghcl = cl - ! - ! ## Constant values - c1 = clc + na2so4 + nh42s4 + k2so4 + mgso4 - c2 = kkhso4 + nh4hs4 + clc + nahso4 - ! - ! - ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### - ! ## Setup initial conditions - ! ## 1. Calculate dissociation quantities - a9 = khso4*1.0d-19 - bb = c1 + a9 ! bb always > 0 - cc = -a9*c2 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - hh = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ! ## 2. Speciation - hh = max(hh, tiny) ! Avoid negative hh - hh = min(hh, c2) ! Avoid negative HSO4 - h = hh - so4_t = c1 + hh - hso4 = max(c2 - hh, 0.0d0) - ! - ! ## 3. Aerosol liquid water content - lwn = max(nh42s4/awas(irh) + na2so4/awss(irh) + nh4hs4/awab(irh) + & - nahso4/awsb(irh) + clc/awlc(irh) + k2so4/awps(irh) + & - kkhso4/awpb(irh) + mgso4/awms(irh), tiny) - ! - ! ## Iterative search for solution with convergence of activity coefficients - errin = 1.0d0 - j = 0 - do while (j < nsweep-1 .and. errin >= epsact) - j = j + 1 - ! - ! ## Reset gamin - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - gamin(14) = gama(14) - gamin(15) = gama(15) - gamin(16) = gama(16) - gamin(17) = gama(17) - gamin(18) = gama(18) - gamin(19) = gama(19) - gamin(20) = gama(20) - gamin(21) = gama(21) - gamin(22) = gama(22) - gamin(23) = gama(23) - ! - call mach_hetp_calcact4(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - ca_t, pk_t, mg_t, lwn, gama, t) - ! - ! ## Test for convergence of activity coefficients - errin = 0.0d0 - do ii = 1, 23 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system with new set of activity coefficients - ! ## 1. Calculate dissociation quantities - a9 = khso4*lwn/gama(7)*(gama(8)/gama(7))**2.0 - bb = c1 + a9 ! bb always > 0 - cc = -a9*c2 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - hh = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc, 0.0d0))) - end if - ! - ! ## 2. Speciation - hh = max(hh, tiny) ! Avoid negative hh - hh = min(hh, c2) ! Avoid negative HSO4 - h = hh - so4_t = c1 + hh - hso4 = max(c2 - hh, 0.0d0) - end do - ! - ! - ! ### MINOR SYSTEM #1: Cl-/HCl/NO3-/HNO3/H+ ### - ! ## Calculate dissolution of HCl, HNO3 in the presence of (H,SO4) - ! ## HCl, HNO3 are considered minor species - ispoly = .false. - ! - ! ## 1. Special case: aerosol liquid water content (lwn) = 0.0d0 - if (lwn <= tiny) then - ! Gaseous species - ghcl = max(cl - cl_t, 0.0d0) - ghno3 = max(no3 - no3_t, 0.0d0) - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ! - ! ## 2. Special case: HCl = HNO3 = 0.0d0 - else if (cl <= tiny .and. no3 <= tiny) then - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ! - ! ## 3. Special case: HCl = 0.0d0 - else if (cl <= tiny) then - ! Nitric acid in the liquid phase is assumed a minor species - ! HNO3(g) <--> (H+) + (NO3-), using (H+) from the sulfates - ff = 0.0d0 - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - if (lwn > tiny) then - bb = h + khno3*r*t*(lwn/gama(10))**2.0 - cc = (khno3*r*t*(lwn/gama(10))**2.0)*no3 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) - else - ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) - end if - end if - ! - ! Speciation - ghno3 = max(no3 - ff, 0.0d0) - no3_t = ff - h = h + ff - ! - ! ## 4. Special case: HNO3 = 0.0d0 - else if (no3 <= tiny) then - ! Hydrochloric acid in the liquid phase is assumed a minor species - ! HCl (g) <--> (H+) + (Cl-) using (H+) from the sulfates - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ff = 0.0d0 - if (lwn > tiny) then - bb = h + khcl*r*t*(lwn/gama(11))**2.0 - cc = (khcl*r*t*(lwn/gama(11))**2.0)*cl - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) - else - ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) - end if - end if - ! - ! Speciation - ghcl = max(cl - ff, 0.0d0) - cl_t = ff - h = h + ff - ! - ! ## 5. All else: not a special case - else - ispoly = .true. - a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 - a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl - ! - ! Calculate cubic equation coefficients - m1 = (a3*no3 + a4*cl + (h + a4)*(a3 - a4))/(a3 - a4) - m2 = ((h + a4)*a4*cl - a4*(a3 - a4)*cl)/(a3 - a4) - m3 = -a4*a4*cl*cl/(a3 - a4) - end if - ! - ! ## Calculate roots - ! call mach_hetp_poly3v(m1, m2, m3, delcl, islv) # Original ISORROPIA subroutine - call mach_hetp_poly(m1, m2, m3, cl, delcl, islv) - ! - delno = 0.0d0 - if (ispoly) then - if (islv /= 0) then - ! Tiny amounts of HCl are assumed when there is no root - delcl = tiny !Change in Cl- - end if - ! - a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 - a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl - delno = min(a3*no3*delcl/(a4*cl + (a3 - a4)*delcl), no3) !Change in NO3- - ! - if (delcl < 0.0d0 .or. delno < 0.0d0 .or. delcl > cl .or. delno > no3) then - delcl = tiny !Change in Cl- - delno = tiny !Change in NO3- - end if - ! - ! ## Effect on liquid phase - h = h + delno + delcl ! H+ change - cl_t = cl_t + delcl ! Cl- change - no3_t = no3_t + delno ! NO3- change - ! - ! ## Gaseous species - ghcl = max(cl - cl_t, 0.0d0) - ghno3 = max(no3 - no3_t, 0.0d0) - end if - ! - ! - ! ### MINOR SYSTEM #2: NH4+/NH3/H+ ### - ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb - ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major - ! system (solved above) is used initially. - if (lwn > tiny) then - ! Calculate NH3 sublimation - ff = 0.0d0 - a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 - bb = h + 1.0d0/a3 ! bb always > 0 - cc = -nh4_t/a3 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ! Speciation - ! Due to round-off, ff may be .gt. nh4_t giving negative nh4_t - ! If this condition is true, then set ff = nh4_t - ff = max(tiny2, min(ff, nh4_t)) - gnh3 = ff - nh4_t = max(nh4_t - ff, 0.0d0) - h = h + ff - end if - ! - ! Add any free nh4 back to the gas phase - gnh3 = gnh3 + frnh4 - frnh4 = 0.0d0 - ! - ! - ! ### Perform mass adjustment if excess exists ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - no3_i = no3_t - hso4_i = hso4 - na_i = na_t - cl_i = cl_t - ca_i = ca_t - k_i = pk_t - mg_i = mg_t - nh3g_i = gnh3 - hno3g_i = ghno3 - hclg_i = ghcl - h_i = h - lwn_i = lwn - caso4_i = caso4 - ! - return - end subroutine mach_hetp_calcl9 - - - - !############################################################################ - ! ## HETP Code - ! ## Subcase: K4; sulfate rich; free acid - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calck4(so4_i, nh4_i, nh3g_i, hno3g_i, hclg_i, hso4_i, & - na_i, cl_i, no3_i, h_i, lwn_i, ca_i, k_i, mg_i, & - caso4_i, rh, temp, k0, p1, p2, nr) - ! - use mach_hetp_mod - implicit none - ! - integer(kind=4), intent (in) :: nr - real(kind=8), intent (in) :: k0 (nr) - real(kind=8), intent (in) :: p1 (nr) - real(kind=8), intent (in) :: p2 (nr) - real(kind=8), intent(inout) :: so4_i - real(kind=8), intent(inout) :: nh4_i - real(kind=8), intent(inout) :: no3_i - real(kind=8), intent(inout) :: hso4_i - real(kind=8), intent(inout) :: na_i - real(kind=8), intent(inout) :: cl_i - real(kind=8), intent(inout) :: ca_i - real(kind=8), intent(inout) :: k_i - real(kind=8), intent(inout) :: mg_i - real(kind=8), intent(inout) :: nh3g_i - real(kind=8), intent(inout) :: hno3g_i - real(kind=8), intent(inout) :: hclg_i - real(kind=8), intent(inout) :: h_i - real(kind=8), intent(inout) :: lwn_i - real(kind=8), intent(inout) :: caso4_i - real(kind=8), intent (in) :: rh - real(kind=8), intent (in) :: temp - ! - ! ## Local variables - real(kind=8) :: so4, nh4, hso4, gnh3, h, lwn, caso4 - real(kind=8) :: no3, cl, na, ca, pk, mg, ghno3, ghcl, t, aw - real(kind=8) :: knh3, khso4, kh2o, khno3, khcl - real(kind=8) :: bb, cc, dd, ff, v, hh, errin, a3, a4, delno, tt0 - real(kind=8) :: delcl, m1, m2, m3, c1, c2, c3, c4, c5, c6, c7, tt1, tt2 - real(kind=8) :: so4_t, nh4_t, no3_t, na_t, cl_t, ca_t, pk_t, mg_t - integer(kind=4) :: j, ii, islv, irh - logical(kind=4) :: ispoly - real(kind=8), dimension(23) :: gama, gamin - ! - ! - ! ### Initialize variables ### - so4 = so4_i - nh4 = nh4_i - no3 = no3_i - na = na_i - cl = cl_i - ca = ca_i - pk = k_i - mg = mg_i - aw = rh - t = temp - hso4 = 0.0d0 - gnh3 = 0.0d0 - ghno3 = 0.0d0 - ghcl = 0.0d0 - h = 0.0d0 - lwn = tiny - so4_t = 0.0d0 - nh4_t = 0.0d0 - no3_t = 0.0d0 - na_t = 0.0d0 - cl_t = 0.0d0 - ca_t = 0.0d0 - pk_t = 0.0d0 - mg_t = 0.0d0 - caso4 = 0.0d0 - delcl = 0.0d0 - gama = 0.1d0 - gamin = 1.0d10 - ! - ! - ! ### Calculate equilibrium constants and other static variables ### - ! ## Set RH to a range between 0.5% and 99.5%: RH = 0.00d0 will - ! ## cause division by zero, aborting the code - aw = max(aw, 0.005d0) - aw = min(aw, 0.995d0) - ! - tt0 = tstd / t - tt1 = tt0 - 1.0d0 - tt2 = 1.0d0 + log(tt0) - tt0 - ! - ! ## 1. HSO4(aq) <==> H+(aq) + SO4=(aq) (xk1) - khso4 = k0(5) * exp(p1(5)*tt1 + p2(5)*tt2) - ! - ! ## 2. k2 = NH3(g) <==> NH3(aq) (xk21) - ! ## 3. k3 = NH3(aq) + H2O(aq) <==> NH4+(aq) + OH-(aq) (xk22) - ! ## Net NH3: k2*k3 (xk2) - knh3 = (k0(3) * exp(p1(3)*tt1 + p2(3)*tt2))* & - (k0(4) * exp(p1(4)*tt1 + p2(4)*tt2)) - ! - ! ## 4. H2O(aq) <==> H+(aq) + OH-(aq) (xkw) - kh2o = k0(10) * exp(p1(10)*tt1 + p2(10)*tt2) - ! - ! ## 5. HNO3(g) <==> H+(aq) + NO3-(aq) (xk4) - khno3 = k0(15) * exp(p1(15)*tt1 + p2(15)*tt2) - ! - ! ## 6. HCl(g) <==> H+(aq) + Cl-(aq) (xk3) - khcl = k0(11) * exp(p1(11)*tt1 + p2(11)*tt2) - ! - ! ## Calculate ZSR position parameter - irh = max(min(int(aw*100+0.5), 100), 1) - ! - ! ## Constants - c1 = max(so4 - nh4 - na - ca - pk - mg, tiny) ! Free H2SO4 - c2 = c1 + pk + na + nh4 - c3 = c1 + mg - c4 = c1*mg - ! - ! ## ZSR constants - c5 = nh4/awab(irh) + na/awsb(irh) + pk/awpb(irh) + mg/awms(irh) - c6 = nh4 + na + pk + mg - c7 = awsa(irh) - ! - ! - ! ### MAJOR SYSTEM H+/HSO4-/SO42- ### - ! ## Setup initial conditions - ! ## 1. Calculate dissociation quantities - a4 = khso4*1.0d-19 - bb = a4 + c3 ! bb always > 0 - cc = -a4*c2 + c4 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - hh = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc,0.0d0))) - end if - hh = min(c2, hh) - ! - ! ## 2. Speciation - h = c1 + hh - na_t = na - nh4_t = nh4 - so4_t = hh + mg - hso4 = max(c2 - hh, 0.0d0) - pk_t = pk - mg_t = mg - caso4 = ca - ! - ! ## 3. Aerosol liquid water content - lwn = max(c5 + max(so4_t + hso4 - c6, 0.0d0)/c7, tiny) - ! - ! ## Iterative search for solution with convergence of activity coefficients - errin = 1.0d0 - j = 0 - do while (j < nsweep-1 .and. errin >= epsact) - j = j + 1 - ! - ! ## Reset gamin - gamin(1) = gama(1) - gamin(2) = gama(2) - gamin(3) = gama(3) - gamin(4) = gama(4) - gamin(5) = gama(5) - gamin(6) = gama(6) - gamin(7) = gama(7) - gamin(8) = gama(8) - gamin(9) = gama(9) - gamin(10) = gama(10) - gamin(11) = gama(11) - gamin(12) = gama(12) - gamin(13) = gama(13) - gamin(14) = gama(14) - gamin(15) = gama(15) - gamin(16) = gama(16) - gamin(17) = gama(17) - gamin(18) = gama(18) - gamin(19) = gama(19) - gamin(20) = gama(20) - gamin(21) = gama(21) - gamin(22) = gama(22) - gamin(23) = gama(23) - ! - call mach_hetp_calcact4(h, nh4_t, so4_t, hso4, no3_t, cl_t, na_t, & - ca_t, pk_t, mg_t, lwn, gama, t) - ! - ! ## Test for convergence of activity coefficients - errin = 0.0d0 - do ii = 1, 23 - errin = max(max(errin, abs((gamin(ii) - gama(ii)) / gamin(ii))), 0.0d0) - end do - ! - ! ## Solve system with new set of activity coefficients - ! ## 1. Calculate dissociation quantities - a4 = khso4*lwn/gama(7)*(gama(8)/gama(7))**2.0 - bb = a4 + c3 - cc = -a4*c2 + c4 - ! - if (bb /= 0.d0) then - dd = cc/(bb*bb) - v = 4.d0*dd - else - v = 1.d3 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - hh = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - hh = 0.5d0*(-bb + sqrt(max(bb*bb - 4.d0*cc,0.0d0))) - end if - hh = min(c2, hh) - ! - ! ## 2. Speciation - h = c1 + hh - so4_t = hh + mg - hso4 = max(c2 - hh, 0.0d0) - ! - ! ## 3. Aerosol liquid water content - lwn = max(c5 + max(so4_t + hso4 - c6, 0.0d0)/c7, tiny) - end do - ! - ! - ! ### MINOR SYSTEM #1: Cl-/HCl/NO3-/HNO3/H+ ### - ! ## Calculate dissolution of HCl, HNO3 in the presence of (H,SO4) - ! ## HCl, HNO3 are considered minor species - ispoly = .false. - ! - ! ## 1. Special case: aerosol liquid water content (lwn) = 0.0d0 - if (lwn <= tiny) then - ! Gaseous species - ghcl = max(cl - cl_t, 0.0d0) - ghno3 = max(no3 - no3_t, 0.0d0) - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ! - ! ## 2. Special case: HCl = HNO3 = 0.0d0 - else if (cl <= tiny .and. no3 <= tiny) then - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ! - ! ## 3. Special case: HCl = 0.0d0 - else if (cl <= tiny) then - ! Nitric acid in the liquid phase is assumed a minor species - ! HNO3(g) <--> (H+) + (NO3-), using (H+) from the sulfates - ff = 0.0d0 - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - if (lwn > tiny) then - bb = h + khno3*r*t*(lwn/gama(10))**2.0 - cc = (khno3*r*t*(lwn/gama(10))**2.0)*no3 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) - else - ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) - end if - end if - ! - ! Speciation - ghno3 = max(no3 - ff, 0.0d0) - no3_t = ff - h = h + ff - ! - ! ## 4. Special case: HNO3 = 0.0d0 - else if (no3 <= tiny) then - ! Hydrochloric acid in the liquid phase is assumed a minor species - ! HCl (g) <--> (H+) + (Cl-) using (H+) from the sulfates - m1 = 0.0d0 - m2 = 0.0d0 - m3 = 0.0d0 - ff = 0.0d0 - if (lwn > tiny) then - bb = h + khcl*r*t*(lwn/gama(11))**2.0 - cc = (khcl*r*t*(lwn/gama(11))**2.0)*cl - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb /= 0.d0) then - ff = -0.5d0*bb + 0.5d0*abs(bb) + (1.d0-dd*(1.d0-dd*(2.d0-dd*(5.d0-14.d0*dd))))*cc/abs(bb) - else - ff = 0.5d0*(-bb + sqrt(bb*bb + 4.d0*cc)) - end if - end if - ! - ! Speciation - ghcl = max(cl - ff, 0.0d0) - cl_t = ff - h = h + ff - ! - ! ## 5. All else: not a special case - else - ispoly = .true. - a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 - a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl - ! - ! Calculate cubic equation coefficients - m1 = (a3*no3 + a4*cl + (h + a4)*(a3 - a4))/(a3 - a4) - m2 = ((h + a4)*a4*cl - a4*(a3 - a4)*cl)/(a3 - a4) - m3 = -a4*a4*cl*cl/(a3 - a4) - end if - ! - ! ## Calculate roots - call mach_hetp_poly(m1, m2, m3, cl, delcl, islv) - ! call mach_hetp_poly3v(m1, m2, m3, delcl, islv) # Original ISORROPIA subroutine - ! - delno = 0.0d0 - if (ispoly) then - if (islv /= 0) then - ! Tiny amounts of HCl are assumed when there is no root - delcl = tiny !Change in Cl- - end if - ! - a3 = khno3*r*t*(lwn/gama(10))**2.0 !HNO3 - a4 = khcl*r*t*(lwn/gama(11))**2.0 !HCl - delno = min(a3*no3*delcl/(a4*cl + (a3 - a4)*delcl), no3) !Change in NO3- - ! - if (delcl < 0.0d0 .or. delno < 0.0d0 .or. delcl > cl .or. delno > no3) then - delcl = tiny !Change in Cl- - delno = tiny !Change in NO3- - end if - ! - ! ## Effect on liquid phase - h = h + delno + delcl ! H+ change - cl_t = cl_t + delcl ! Cl- change - no3_t = no3_t + delno ! NO3- change - ! - ! ## Gaseous species - ghcl = max(cl - cl_t, 0.0d0) - ghno3 = max(no3 - no3_t, 0.0d0) - end if - ! - ! - ! ### MINOR SYSTEM #2: NH4+/NH3/H+ ### - ! Ammonia in the gas phase is assumed a minor species that does not significantly perturb - ! the aerosol equilibrium: NH3(g) + H+(aq) <==> NH4+(aq); H+ determined from the major - ! system (solved above) is used initially. - if (lwn > tiny) then - ! Calculate NH3 sublimation - ff = 0.0d0 - a3 = (knh3/kh2o)*r*t*(gama(10)/gama(5))**2.0 - bb = h + 1.0d0/a3 ! bb always > 0 - cc = -nh4_t/a3 - ! - if (bb /= 0.d0) then - dd = cc / (bb*bb) - v = 4.d0*dd - else - v = 1.d+03 - end if - ! - if (abs(v) <= smrt .and. bb > 0.d0) then - ff = - ((((14.d0*dd + 5.d0)*dd + 2.d0)*dd + 1.d0)*dd + 1.d0)*cc/bb - else - ff = 0.5d0*(-bb + sqrt(bb*bb - 4.d0*cc)) - end if - ! - ! Speciation - ! Due to round-off, ff may be .gt. nh4_t giving negative nh4_t - ! If this condition is true, then set ff = nh4_t - ff = max(tiny, min(ff, nh4_t)) - gnh3 = ff - nh4_t = max(nh4_t - ff, 0.0d0) - h = h + ff - end if - ! - ! - ! ### Perform mass adjustment if excess exists ### - call mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - ! - ! ### Save result and return ### - so4_i = so4_t - nh4_i = nh4_t - no3_i = no3_t - hso4_i = hso4 - na_i = na_t - cl_i = cl_t - ca_i = ca_t - k_i = pk_t - mg_i = mg_t - nh3g_i = gnh3 - hno3g_i = ghno3 - hclg_i = ghcl - h_i = h - lwn_i = lwn - caso4_i = caso4 - ! - return - end subroutine mach_hetp_calck4 - - - - !############################################################################ - ! ## HETP Code - ! ## Calculates multi-component activity coefficients from Bromley's method - ! ## of ammonium-sulfate aerosol system for case B4, C2 - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcact1(h, nh4_t, so4_t, hso4, lwn, gama, t) - ! - use mach_hetp_mod, only: tiny - implicit none - ! - real(kind=8), intent(in) :: nh4_t - real(kind=8), intent(in) :: so4_t - real(kind=8), intent(in) :: hso4 - real(kind=8), intent(in) :: lwn - real(kind=8), intent(in) :: h - real(kind=8), intent(in) :: t - real(kind=8), intent(inout) :: gama (13) - ! - ! ## Local variables - real(kind=8) :: ionic, sion, tc, c, xx, xx2, c1, c2, hh - real(kind=8) :: c3, c4, c5, c5a - real(kind=8) :: ff11, ff13, f2a2, f2a3, ch1, ch2 - real(kind=8) :: h2, k1, k2, f11, f12 - real(kind=8) :: g04, g06, g07, g08, g09, g11 - ! - ! ## Calculate ionic strength of solution - ionic = h + nh4_t + 4.0d0*so4_t + hso4 - ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) - ! - ! ## Calculate the binary activity coefficients - sion = sqrt(ionic) - c3 = exp(-0.023d0*ionic*ionic*ionic) - c4 = -0.5107d0*sion - c5 = 1.0d0 + 0.1d0*ionic - c5a = 1.0d0 + sion - ! - ! ## Coefficients at 25C - if (ionic < 6.0d0) then - c = 1.0d0 + -0.01375d0*c3 - xx = c4/(1.0d0 + c*sion) - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + 2.0d0*xx - - c = 1.0d0 + -0.0055d0*c3 - xx = c4/(1.0d0 + c*sion) - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + 2.0d0*xx - - c = 1.0d0 + 0.44d0*c3 - xx = c4/(1.0d0 + c*sion) - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - - c = 1.0d0 + 0.0451d0*c3 - xx = c4/(1.0d0 + c*sion) - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - - c = 1.0d0 + 0.33d0*c3 - xx = c4/(1.0d0 + c*sion) - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - else - xx = c4/(1.0d0 + sion) - xx2 = 2.0d0*xx - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + xx2 - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + xx2 - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - end if - ! - ! ## Correct for temperature other than 298 K - tc = abs(t - 298.0d0) - if (abs(tc) > 1.0) then - c1 = 1.125d0 - 0.005d0*(t - 273.0d0) - c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92 - & - 0.41d0*sion/c5a) - c3 = 2.0d0*c2 - g04 = c1*g04 - c3 - g06 = c1*g06 - c2 - g07 = c1*g07 - c3 - g08 = c1*g08 - c2 - g11 = c1*g11 - c2 - end if - ! - ! ## Correction: g9 is g09 which is not calculated in calcact1 - ! use g09 from calcact3 to represent g09 (slc.2.2012) - g09 = g06 + g08 - g11 - ! - ! ## Calculate multicomponent activity coefficients - hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a - f11 = so4_t/lwn - f12 = hso4/lwn - ch1 = 2.25d0/ionic - ch2 = 1.0d0/ionic - h2 = 2.0d0*hh - k1 = ch1*f11 - k2 = ch2*f12 - ff11 = k1*(g07 + h2) + k2*(g08 + hh) - ff13 = k1*(g04 + h2) + k2*(g09 + hh) - - f11 = h/lwn - f12 = nh4_t/lwn - f2a2 = ((ch1*f11)*(g07 + h2) + (ch1*f12)*(g04 + h2))*0.5d0 - f2a3 = ch2*f11*(g08 + hh) + ch2*f12*(g09 + hh) - - ! ## log10 of activity coefficients - gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 - gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 - gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 - gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 - gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape - ! - ! ## Convert log(gama) coefficients to gama - gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) - gama(4) = 10.0d0**gama(4) - gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) - gama(13) = 10.0d0**gama(13) - gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) - gama(7) = 10.0d0**gama(7) - gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) - gama(8) = 10.0d0**gama(8) - gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) - gama(9) = 10.0d0**gama(9) - ! - return - end subroutine mach_hetp_calcact1 - - - - !############################################################################ - ! ## HETP Code - ! ## Calculates multi-component activity coefficients from Bromley's method - ! ## of ammonium-sulfate aerosol system for case A2 - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcact1b(h, nh4_t, so4_t, hso4, lwn, gama, t, soln, & - frst, calain, calou) - ! - use mach_hetp_mod, only: tiny - implicit none - ! - real(kind=8), intent(in) :: nh4_t - real(kind=8), intent(in) :: so4_t - real(kind=8), intent(in) :: hso4 - real(kind=8), intent(in) :: lwn - real(kind=8), intent(in) :: h - real(kind=8), intent(in) :: t - real(kind=8), intent(inout) :: gama (13) - logical(kind=4), intent(in) :: soln - logical(kind=4), intent(in) :: frst - logical(kind=4), intent(in) :: calain - logical(kind=4), intent(in) :: calou - ! - ! ## Local variables - real(kind=8) :: ionic, sion, tc, c, xx, xx2, c1, c2, hh - real(kind=8) :: c3, c4, c5, c5a - real(kind=8) :: ff11, ff13, f2a2, f2a3, ch1, ch2 - real(kind=8) :: h2, k1, k2, f11, f12 - real(kind=8) :: g04, g06, g07, g08, g09, g11 - ! - if ((( .not. soln)).and. & - ((frst .and. calou) .or. & - (( .not. frst) .and. calain))) then - ! ## Calculate ionic strength of solution - ionic = h + nh4_t + 4.0d0*so4_t + hso4 - ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) - ! - ! ## Calculate the binary activity coefficients - sion = sqrt(ionic) - c3 = exp(-0.023d0*ionic*ionic*ionic) - c4 = -0.5107d0*sion - c5 = 1.0d0 + 0.1d0*ionic - c5a = 1.0d0 + sion - ! - ! ## Coefficients at 25C - if (ionic < 6.0d0) then - c = 1.0d0 + -0.01375d0*c3 - xx = c4/(1.0d0 + c*sion) - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + 2.0d0*xx - - c = 1.0d0 + -0.0055d0*c3 - xx = c4/(1.0d0 + c*sion) - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + 2.0d0*xx - - c = 1.0d0 + 0.44d0*c3 - xx = c4/(1.0d0 + c*sion) - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - - c = 1.0d0 + 0.0451d0*c3 - xx = c4/(1.0d0 + c*sion) - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - - c = 1.0d0 + 0.33d0*c3 - xx = c4/(1.0d0 + c*sion) - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - else - xx = c4/(1.0d0 + sion) - xx2 = 2.0d0*xx - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + xx2 - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + xx2 - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - end if - ! - ! ## Correct for temperature other than 298 K - tc = abs(t - 298.0d0) - if (abs(tc) > 1.0) then - c1 = 1.125d0 - 0.005d0*(t - 273.0d0) - c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92 - & - 0.41d0*sion/c5a) - c3 = 2.0d0*c2 - g04 = c1*g04 - c3 - g06 = c1*g06 - c2 - g07 = c1*g07 - c3 - g08 = c1*g08 - c2 - g11 = c1*g11 - c2 - end if - ! - ! ## Correction: g9 is g09 which is not calculated in calcact1 - ! use g09 from calcact3 to represent g09 (slc.2.2012) - g09 = g06 + g08 - g11 - ! - ! ## Calculate multicomponent activity coefficients - hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a - f11 = so4_t/lwn - f12 = hso4/lwn - ch1 = 2.25d0/ionic - ch2 = 1.0d0/ionic - h2 = 2.0d0*hh - k1 = ch1*f11 - k2 = ch2*f12 - ff11 = k1*(g07 + h2) + k2*(g08 + hh) - ff13 = k1*(g04 + h2) + k2*(g09 + hh) - - f11 = h/lwn - f12 = nh4_t/lwn - f2a2 = ((ch1*f11)*(g07 + h2) + (ch1*f12)*(g04 + h2))*0.5d0 - f2a3 = ch2*f11*(g08 + hh) + ch2*f12*(g09 + hh) - - ! ## log10 of activity coefficients - gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 - gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 - gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 - gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 - gama(13)= 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape - ! - ! ## Convert log(gama) coefficients to gama - gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) - gama(4) = 10.0d0**gama(4) - gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) - gama(13) = 10.0d0**gama(13) - gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) - gama(7) = 10.0d0**gama(7) - gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) - gama(8) = 10.0d0**gama(8) - gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) - gama(9) = 10.0d0**gama(9) - end if - ! - return - end subroutine mach_hetp_calcact1b - - - - !############################################################################ - ! ## HETP Code - ! ## Calculates multi-component activity coefficients from Bromley's method - ! ## of ammonium-sulfate-nitrate aerosol system for case E4 and F2 - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcact2(h, nh4_t, so4_t, hso4, no3, lwn, gama, t) - ! - use mach_hetp_mod, only: tiny - implicit none - ! - real(kind=8), intent(in) :: nh4_t - real(kind=8), intent(in) :: so4_t - real(kind=8), intent(in) :: hso4 - real(kind=8), intent(in) :: no3 - real(kind=8), intent(in) :: lwn - real(kind=8), intent(in) :: h - real(kind=8), intent(in) :: t - real(kind=8), intent(inout) :: gama(13) - ! - ! ## Local variables: - real(kind=8) :: ionic, sion, tc, c, xx, xx2, c1, c2, hh - real(kind=8) :: c3, c4, c5, c5a - real(kind=8) :: ff11, ff13, f2a2, f2a3, f2a4, ch1, ch2 - real(kind=8) :: h2, k1, k2, k3, f11, f12, f13 - real(kind=8) :: g04, g05, g06, g07, g08, g09, g10, g11 - ! - ! ## Calculate ionic strength of solution - ionic = h + nh4_t + 4.0d0*so4_t + hso4 + no3 - ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) - ! - ! ## Calculate the binary activity coefficients - sion = sqrt(ionic) - c3 = exp(-0.023d0*ionic*ionic*ionic) - c4 = -0.5107d0*sion - c5 = 1.0d0 + 0.1d0*ionic - c5a = 1.0d0 + sion - ! - ! ## Coefficients at 25C - if (ionic < 6.0d0) then - c = 1.0d0 + -0.01375d0*c3 - xx = c4/(1.0d0 + c*sion) - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + 2.0d0*xx - - c = 1.0d0 + -0.06325d0*c3 - xx = c4/(1.0d0 + c*sion) - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - - c = 1.0d0 + -0.0055d0*c3 - xx = c4/(1.0d0 + c*sion) - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + 2.0d0*xx - - c = 1.0d0 + 0.44d0*c3 - xx = c4/(1.0d0 + c*sion) - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - - c = 1.0d0 + 0.0451d0*c3 - xx = c4/(1.0d0 + c*sion) - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - - c = 1.0d0 + 0.143d0*c3 - xx = c4/(1.0d0 + c*sion) - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - - c = 1.0d0 + 0.33d0*c3 - xx = c4/(1.0d0 + c*sion) - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - else - xx = c4/(1.0d0 + sion) - xx2 = 2.0d0*xx - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + xx2 - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + xx2 - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - end if - ! - ! ## Correct for temperature other than 298 K - tc = abs(t - 298.0d0) - if (tc > 1.0) then - c1 = 1.125d0 - 0.005d0*(t - 273.0d0) - c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92 - 0.41d0*sion/c5a) - c3 = 2.0d0*c2 - g04 = c1*g04 - c3 - g05 = c1*g05 - c2 - g06 = c1*g06 - c2 - g07 = c1*g07 - c3 - g08 = c1*g08 - c2 - g10 = c1*g10 - c2 - g11 = c1*g11 - c2 - end if - ! - ! ## Correction: g9 is g09 which is not calculated in calcact1 - ! use g09 from calcact3 to represent g09 (slc.2.2012) - g09 = g06 + g08 - g11 - ! - ! ## Calculate multicomponent activity coefficients - hh = (0.511*(298.0/t)**1.5)*sion/c5a - ! - f11 = so4_t/lwn - f12 = hso4/lwn - f13 = no3/lwn - ch1 = 2.25d0/ionic - ch2 = 1.0d0/ionic - h2 = 2.0d0*hh - k1 = ch1*f11 - k2 = ch2*f12 - k3 = ch2*f13 - ff11 = k1*(g07 + h2) + k2*(g08 + hh) + k3*(g10 + hh) - ff13 = k1*(g04 + h2) + k2*(g09 + hh) + k3*(g05 + hh) - ! - f11 = h/lwn - f12 = nh4_t/lwn - k1 = ch2*f11 - k2 = ch2*f12 - f2a2 = ((ch1*f11)*(g07 + h2) + (ch1*f12)*(g04 + h2))*0.5d0 - f2a3 = k1*(g08 + hh) + k2*(g09 + hh) - f2a4 = k1*(g10 + hh) + k2*(g05 + hh) - ! - ! ## log10 of activity coefficients - gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 - gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 - gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 - gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 - gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 - gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 - gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape - ! - ! ## Convert log(gama) coefficients to gama - gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) - gama(4) = 10.0d0**gama(4) - gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) - gama(5) = 10.0d0**gama(5) - gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) - gama(13) = 10.0d0**gama(13) - gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) - gama(7) = 10.0d0**gama(7) - gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) - gama(8) = 10.0d0**gama(8) - gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) - gama(9) = 10.0d0**gama(9) - gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) - gama(10) = 10.0d0**gama(10) - return - end subroutine mach_hetp_calcact2 - - - - !############################################################################ - ! ## HETP Code - ! ## Calculates multi-component activity coefficients from Bromley's method - ! ## of ammonium-sulfate-nitrate aerosol system for case D3 - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcact2b(h, nh4_t, so4_t, hso4, no3, lwn, gama, t, soln, & - frst, calain, calou) - ! - use mach_hetp_mod, only: tiny - implicit none - ! - real(kind=8), intent(in) :: nh4_t - real(kind=8), intent(in) :: so4_t - real(kind=8), intent(in) :: hso4 - real(kind=8), intent(in) :: no3 - real(kind=8), intent(in) :: lwn - real(kind=8), intent(in) :: h - real(kind=8), intent(in) :: t - real(kind=8), intent(inout) :: gama(13) - logical(kind=4), intent(in) :: soln - logical(kind=4), intent(in) :: frst - logical(kind=4), intent(in) :: calain - logical(kind=4), intent(in) :: calou - ! - ! ## Local variables: - real(kind=8) :: ionic, sion, tc, c, xx, xx2, c1, c2, hh - real(kind=8) :: c3, c4, c5, c5a - real(kind=8) :: ff11, ff13, f2a2, f2a3, f2a4, ch1, ch2 - real(kind=8) :: h2, k1, k2, k3, f11, f12, f13 - real(kind=8) :: g04, g05, g06, g07, g08, g09, g10, g11 - ! - if ((( .not. soln)) .and. & - ((frst .and. calou) .or. & - (( .not. frst) .and. calain)) ) then - ! ## Calculate ionic strength of solution - ionic = h + nh4_t + 4.0d0*so4_t + hso4 + no3 - ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) - ! - ! ## Calculate the binary activity coefficients - sion = sqrt(ionic) - c3 = exp(-0.023d0*ionic*ionic*ionic) - c4 = -0.5107d0*sion - c5 = 1.0d0 + 0.1d0*ionic - c5a = 1.0d0 + sion - ! - ! ## Coefficients at 25C - if (ionic < 6.0d0) then - c = 1.0d0 + -0.01375d0*c3 - xx = c4/(1.0d0 + c*sion) - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + 2.0d0*xx - - c = 1.0d0 + -0.06325d0*c3 - xx = c4/(1.0d0 + c*sion) - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - - c = 1.0d0 + -0.0055d0*c3 - xx = c4/(1.0d0 + c*sion) - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + 2.0d0*xx - - c = 1.0d0 + 0.44d0*c3 - xx = c4/(1.0d0 + c*sion) - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - - c = 1.0d0 + 0.0451d0*c3 - xx = c4/(1.0d0 + c*sion) - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - - c = 1.0d0 + 0.143d0*c3 - xx = c4/(1.0d0 + c*sion) - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - - c = 1.0d0 + 0.33d0*c3 - xx = c4/(1.0d0 + c*sion) - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - else - xx = c4/(1.0d0 + sion) - xx2 = 2.0d0*xx - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + xx2 - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + xx2 - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - end if - ! - ! ## Correct for temperature other than 298 K - tc = abs(t - 298.0d0) - if (tc > 1.0) then - c1 = 1.125d0 - 0.005d0*(t - 273.0d0) - c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92 - 0.41d0*sion/c5a) - c3 = 2.0d0*c2 - g04 = c1*g04 - c3 - g05 = c1*g05 - c2 - g06 = c1*g06 - c2 - g07 = c1*g07 - c3 - g08 = c1*g08 - c2 - g10 = c1*g10 - c2 - g11 = c1*g11 - c2 - end if - ! - ! ## Correction: g9 is g09 which is not calculated in calcact1 - ! use g09 from calcact3 to represent g09 (slc.2.2012) - g09 = g06 + g08 - g11 - ! - ! ## Calculate multicomponent activity coefficients - hh = (0.511*(298.0/t)**1.5)*sion/c5a - ! - f11 = so4_t/lwn - f12 = hso4/lwn - f13 = no3/lwn - ch1 = 2.25d0/ionic - ch2 = 1.0d0/ionic - h2 = 2.0d0*hh - k1 = ch1*f11 - k2 = ch2*f12 - k3 = ch2*f13 - ff11 = k1*(g07 + h2) + k2*(g08 + hh) + k3*(g10 + hh) - ff13 = k1*(g04 + h2) + k2*(g09 + hh) + k3*(g05 + hh) - ! - f11 = h/lwn - f12 = nh4_t/lwn - k1 = ch2*f11 - k2 = ch2*f12 - f2a2 = ((ch1*f11)*(g07 + h2) + (ch1*f12)*(g04 + h2))*0.5d0 - f2a3 = k1*(g08 + hh) + k2*(g09 + hh) - f2a4 = k1*(g10 + hh) + k2*(g05 + hh) - ! - ! ## log10 of activity coefficients - gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 - gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 - gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 - gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 - gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 - gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 - gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape - ! - ! ## Convert log(gama) coefficients to gama - gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) - gama(4) = 10.0d0**gama(4) - gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) - gama(5) = 10.0d0**gama(5) - gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) - gama(13) = 10.0d0**gama(13) - gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) - gama(7) = 10.0d0**gama(7) - gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) - gama(8) = 10.0d0**gama(8) - gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) - gama(9) = 10.0d0**gama(9) - gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) - gama(10) = 10.0d0**gama(10) - end if - ! - return - end subroutine mach_hetp_calcact2b - - - - !############################################################################ - ! ## HETP Code - ! ## Calculates multi-component activity coefficients from Bromley's method - ! ## of ammonium-sulfate-nitrate-sodium-chloride aerosol system for case - ! ## I6 and J3 - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcact3(h, nh4_t, so4_t, hso4, no3, cl, na, lwn, gama, t) - ! - use mach_hetp_mod, only: tiny - implicit none - ! - real(kind=8), intent(in) :: nh4_t - real(kind=8), intent(in) :: so4_t - real(kind=8), intent(in) :: hso4 - real(kind=8), intent(in) :: no3 - real(kind=8), intent(in) :: cl - real(kind=8), intent(in) :: na - real(kind=8), intent(in) :: lwn - real(kind=8), intent(in) :: h - real(kind=8), intent(in) :: t - real(kind=8), intent(inout) :: gama(13) - ! - ! ## Local variables: - real(kind=8) :: ionic, sion, c, xx, xx2, c1, c2, hh - real(kind=8) :: c3, c4, c5, c5a - real(kind=8) :: f11, f12, f13, f14, k1, k2, k3, k4, h2 - real(kind=8) :: f21, f22, f23, ch1, ch2 - real(kind=8) :: f2a1, f2a2, f2a3, f2a4, ff11, ff12, ff13 - real(kind=8) :: g01, g02, g03, g04, g05, g06, g07, g08, g09 - real(kind=8) :: g10, g11, g12 - logical(kind=4) :: tc - ! - ! ## Calculate ionic strength of solution - ionic = h + na + nh4_t + cl + 4.0d0*so4_t + hso4 + no3 - ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) - ! - ! ## Calculate the binary activity coefficients - sion = sqrt(ionic) - c3 = exp(-0.023d0*ionic*ionic*ionic) - c4 = -0.5107d0*sion - c5 = 1.0d0 + 0.1d0*ionic - c5a = 1.0d0 + sion - ! - ! ## Coefficients at 25C - if (ionic < 6.0d0) then - c = 1.0d0 + 0.12265d0*c3 - xx = c4/(1.0d0 + c*sion) - g01 = 0.39495d0 + 0.60505d0*c5**2.23 - g01 = log10(g01) + xx - - c = 1.0d0 + -0.01045d0*c3 - xx = c4/(1.0d0 + c*sion) - g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) - g02 = 2.0d0*log10(g02) + 2.0d0*xx - - c = 1.0d0 + -0.02145d0*c3 - xx = c4/(1.0d0 + c*sion) - g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) - g03 = log10(g03) + xx - - c = 1.0d0 + -0.01375d0*c3 - xx = c4/(1.0d0 + c*sion) - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + 2.0d0*xx - - c = 1.0d0 + -0.06325d0*c3 - xx = c4/(1.0d0 + c*sion) - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - - c = 1.0d0 + -0.0055d0*c3 - xx = c4/(1.0d0 + c*sion) - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + 2.0d0*xx - - c = 1.0d0 + 0.44d0*c3 - xx = c4/(1.0d0 + c*sion) - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - - c = 1.0d0 + 0.0451d0*c3 - xx = c4/(1.0d0 + c*sion) - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - - c = 1.0d0 + 0.143d0*c3 - xx = c4/(1.0d0 + c*sion) - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - - c = 1.0d0 + 0.33d0*c3 - xx = c4/(1.0d0 + c*sion) - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - else - xx = c4/(1.0d0 + sion) - xx2 = 2.0d0*xx - g01 = 0.39495d0 + 0.60505d0*c5**2.23 - g01 = log10(g01) + xx - g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) - g02 = 2.0d0*log10(g02) + xx2 - g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) - g03 = log10(g03) + xx - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + xx2 - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + xx2 - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - end if - ! - ! ## Correct coefficients for temperature other than 298 K - tc = abs(t - 298.0d0) > 1.0d0 - if (tc) then - c1 = 1.125d0 - 0.005d0*(t - 273.0d0) - c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92d0 - 0.41d0*sion/c5a) - c3 = 2.0d0*c2 - g01 = c1*g01 - c2 !g01 - g02 = c1*g02 - c3 !g02 - g03 = c1*g03 - c2 !g03 - g04 = c1*g04 - c3 !g04 - g05 = c1*g05 - c2 !g05 - g06 = c1*g06 - c2 !g06 - g07 = c1*g07 - c3 !g07 - g08 = c1*g08 - c2 !g08 - g10 = c1*g10 - c2 !g10 - g11 = c1*g11 - c2 !g11 - end if - ! - g09 = g06 + g08 - g11 - g12 = g01 + g08 - g11 - ! - ! ## Calculate multicomponent activity coefficients - hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a - ! - f11 = cl/lwn - f12 = so4_t/lwn - f13 = hso4/lwn - f14 = no3/lwn - ch1 = 1.0d0/ionic - ch2 = 2.25d0/ionic - k1 = ch1*f11 - k2 = ch2*f12 - k3 = ch1*f13 - k4 = ch1*f14 - h2 = 2.0d0*hh - ! - ff11 = k1*(g11 + hh) + k2*(g07 + h2) + k3*(g08 + hh) + k4*(g10 + hh) - ff12 = k1*(g01 + hh) + k2*(g02 + h2) + k3*(g12 + hh) + k4*(g03 + hh) - ff13 = k1*(g06 + hh) + k2*(g04 + h2) + k3*(g09 + hh) + k4*(g05 + hh) - ! - f21 = h/lwn - f22 = na/lwn - f23 = nh4_t/lwn - k1 = ch1*f21 - k2 = ch1*f22 - k3 = ch1*f23 - f2a1 = k1*(g11 + hh) + k2*(g01 + hh) + k3*(g06 + hh) - f2a2 = ((ch2*f21)*(g07 + h2) + (ch2*f22)*(g02 + h2) + (ch2*f23)*(g04 + h2))*0.5d0 - f2a3 = k1*(g08 + hh) + k2*(g12 + hh) + k3*(g09 + hh) - f2a4 = k1*(g10 + hh) + k2*(g03 + hh) + k3*(g05 + hh) - ! - ! ## log10 of activity coefficients - gama(1) = ((ff12 + f2a1) * 0.5d0 - hh) ! NaCl - gama(2) = ((ff12 + f2a2) / 3.0d0 - hh)*2.0d0 ! Na2SO4 - gama(3) = ((ff12 + f2a4) * 0.5d0 - hh) ! NaNO3 - gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 - gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 - gama(6) = ((ff13 + f2a1) * 0.5d0 - hh) ! NH4Cl - gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 - gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 - gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 - gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 - gama(11) = ((ff11 + f2a1) * 0.5d0 - hh) ! HCl - gama(12) = ((ff12 + f2a3) * 0.5d0 - hh) ! NaHSO4 - gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape - - ! ## Convert log(gama) coefficients to gama - gama(1) = max(-5.0d0, min(gama(1), 5.0d0)) - gama(1) = 10.0**gama(1) - gama(2) = max(-5.0d0, min(gama(2), 5.0d0)) - gama(2) = 10.0**gama(2) - gama(3) = max(-5.0d0, min(gama(3), 5.0d0)) - gama(3) = 10.0**gama(3) - gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) - gama(4) = 10.0**gama(4) - gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) - gama(5) = 10.0**gama(5) - gama(6) = max(-5.0d0, min(gama(6), 5.0d0)) - gama(6) = 10.0**gama(6) - gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) - gama(7) = 10.0**gama(7) - gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) - gama(8) = 10.0**gama(8) - gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) - gama(9) = 10.0**gama(9) - gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) - gama(10) = 10.0**gama(10) - gama(11) = max(-5.0d0, min(gama(11), 5.0d0)) - gama(11) = 10.0**gama(11) - gama(12) = max(-5.0d0, min(gama(12), 5.0d0)) - gama(12) = 10.0**gama(12) - gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) - gama(13) = 10.0**gama(13) - ! - return - end subroutine mach_hetp_calcact3 - - - - !############################################################################ - ! ## HETP Code - ! ## Calculates multi-component activity coefficients from Bromley's method - ! ## of ammonium-sulfate-nitrate-sodium-chloride aerosol system for case - ! ## G5 and H6 - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcact3b(h, nh4_t, so4_t, hso4, no3, cl, na, & - lwn, gama, t, soln, frst, calain, calou) - ! - use mach_hetp_mod, only: tiny - implicit none - ! - real(kind=8), intent(in) :: nh4_t - real(kind=8), intent(in) :: so4_t - real(kind=8), intent(in) :: hso4 - real(kind=8), intent(in) :: no3 - real(kind=8), intent(in) :: cl - real(kind=8), intent(in) :: na - real(kind=8), intent(in) :: lwn - real(kind=8), intent(in) :: h - real(kind=8), intent(in) :: t - logical(kind=4), intent(in) :: soln - real(kind=8), intent(inout) :: gama (13) - logical(kind=4), intent(in) :: frst - logical(kind=4), intent(in) :: calain - logical(kind=4), intent(in) :: calou - ! - ! ## Local variables: - real(kind=8) :: ionic, sion, c, xx, xx2, c1, c2, hh - real(kind=8) :: c3, c4, c5, c5a - real(kind=8) :: f11, f12, f13, f14, k1, k2, k3, k4, h2 - real(kind=8) :: f21, f22, f23, ch1, ch2 - real(kind=8) :: f2a1, f2a2, f2a3, f2a4, ff11, ff12, ff13 - real(kind=8) :: g01, g02, g03, g04, g05, g06, g07, g08, g09 - real(kind=8) :: g10, g11, g12 - logical(kind=4) :: tc - ! - ! - if ((( .not. soln)) .and. & - ((frst .and. calou) .or. & - (( .not. frst) .and. calain)) ) then - ! ## Calculate ionic strength of solution - ionic = h + na + nh4_t + cl + 4.0d0*so4_t + hso4 + no3 - ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) - ! - ! ## Calculate the binary activity coefficients - sion = sqrt(ionic) - c3 = exp(-0.023d0*ionic*ionic*ionic) - c4 = -0.5107d0*sion - c5 = 1.0d0 + 0.1d0*ionic - c5a = 1.0d0 + sion - ! - ! ## Coefficients at 25C - if (ionic < 6.0d0) then - c = 1.0d0 + 0.12265d0*c3 - xx = c4/(1.0d0 + c*sion) - g01 = 0.39495d0 + 0.60505d0*c5**2.23 - g01 = log10(g01) + xx - - c = 1.0d0 + -0.01045d0*c3 - xx = c4/(1.0d0 + c*sion) - g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) - g02 = 2.0d0*log10(g02) + 2.0d0*xx - - c = 1.0d0 + -0.02145d0*c3 - xx = c4/(1.0d0 + c*sion) - g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) - g03 = log10(g03) + xx - - c = 1.0d0 + -0.01375d0*c3 - xx = c4/(1.0d0 + c*sion) - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + 2.0d0*xx - - c = 1.0d0 + -0.06325d0*c3 - xx = c4/(1.0d0 + c*sion) - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - - c = 1.0d0 + -0.0055d0*c3 - xx = c4/(1.0d0 + c*sion) - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + 2.0d0*xx - - c = 1.0d0 + 0.44d0*c3 - xx = c4/(1.0d0 + c*sion) - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - - c = 1.0d0 + 0.0451d0*c3 - xx = c4/(1.0d0 + c*sion) - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - - c = 1.0d0 + 0.143d0*c3 - xx = c4/(1.0d0 + c*sion) - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - - c = 1.0d0 + 0.33d0*c3 - xx = c4/(1.0d0 + c*sion) - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - else - xx = c4/(1.0d0 + sion) - xx2 = 2.0d0*xx - g01 = 0.39495d0 + 0.60505d0*c5**2.23 - g01 = log10(g01) + xx - g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) - g02 = 2.0d0*log10(g02) + xx2 - g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) - g03 = log10(g03) + xx - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + xx2 - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + xx2 - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - end if - ! - ! ## Correct coefficients for temperature other than 298 K - tc = abs(t - 298.0d0) > 1.0d0 - if (tc) then - c1 = 1.125d0 - 0.005d0*(t - 273.0d0) - c2 = (0.125d0 - 0.005d0*(t - 273.0d0))*(0.039d0*ionic**0.92d0 - 0.41d0*sion/c5a) - c3 = 2.0d0*c2 - g01 = c1*g01 - c2 !g01 - g02 = c1*g02 - c3 !g02 - g03 = c1*g03 - c2 !g03 - g04 = c1*g04 - c3 !g04 - g05 = c1*g05 - c2 !g05 - g06 = c1*g06 - c2 !g06 - g07 = c1*g07 - c3 !g07 - g08 = c1*g08 - c2 !g08 - g10 = c1*g10 - c2 !g10 - g11 = c1*g11 - c2 !g11 - end if - ! - g09 = g06 + g08 - g11 - g12 = g01 + g08 - g11 - ! - ! ## Calculate multicomponent activity coefficients - hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a - ! - f11 = cl/lwn - f12 = so4_t/lwn - f13 = hso4/lwn - f14 = no3/lwn - ch1 = 1.0d0/ionic - ch2 = 2.25d0/ionic - k1 = ch1*f11 - k2 = ch2*f12 - k3 = ch1*f13 - k4 = ch1*f14 - h2 = 2.0d0*hh - ! - ff11 = k1*(g11 + hh) + k2*(g07 + h2) + k3*(g08 + hh) + k4*(g10 + hh) - ff12 = k1*(g01 + hh) + k2*(g02 + h2) + k3*(g12 + hh) + k4*(g03 + hh) - ff13 = k1*(g06 + hh) + k2*(g04 + h2) + k3*(g09 + hh) + k4*(g05 + hh) - ! - f21 = h/lwn - f22 = na/lwn - f23 = nh4_t/lwn - k1 = ch1*f21 - k2 = ch1*f22 - k3 = ch1*f23 - f2a1 = k1*(g11 + hh) + k2*(g01 + hh) + k3*(g06 + hh) - f2a2 = ((ch2*f21)*(g07 + h2) + (ch2*f22)*(g02 + h2) + (ch2*f23)*(g04 + h2))*0.5d0 - f2a3 = k1*(g08 + hh) + k2*(g12 + hh) + k3*(g09 + hh) - f2a4 = k1*(g10 + hh) + k2*(g03 + hh) + k3*(g05 + hh) - ! - ! ## log10 of activity coefficients - gama(1) = ((ff12 + f2a1) * 0.5d0 - hh) ! NaCl - gama(2) = ((ff12 + f2a2) / 3.0d0 - hh)*2.0d0 ! Na2SO4 - gama(3) = ((ff12 + f2a4) * 0.5d0 - hh) ! NaNO3 - gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 - gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 - gama(6) = ((ff13 + f2a1) * 0.5d0 - hh) ! NH4Cl - gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 - gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 - gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 - gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 - gama(11) = ((ff11 + f2a1) * 0.5d0 - hh) ! HCl - gama(12) = ((ff12 + f2a3) * 0.5d0 - hh) ! NaHSO4 - gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape - - ! ## Convert log(gama) coefficients to gama - gama(1) = max(-5.0d0, min(gama(1), 5.0d0)) - gama(1) = 10.0**gama(1) - gama(2) = max(-5.0d0, min(gama(2), 5.0d0)) - gama(2) = 10.0**gama(2) - gama(3) = max(-5.0d0, min(gama(3), 5.0d0)) - gama(3) = 10.0**gama(3) - gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) - gama(4) = 10.0**gama(4) - gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) - gama(5) = 10.0**gama(5) - gama(6) = max(-5.0d0, min(gama(6), 5.0d0)) - gama(6) = 10.0**gama(6) - gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) - gama(7) = 10.0**gama(7) - gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) - gama(8) = 10.0**gama(8) - gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) - gama(9) = 10.0**gama(9) - gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) - gama(10) = 10.0**gama(10) - gama(11) = max(-5.0d0, min(gama(11), 5.0d0)) - gama(11) = 10.0**gama(11) - gama(12) = max(-5.0d0, min(gama(12), 5.0d0)) - gama(12) = 10.0**gama(12) - gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) - gama(13) = 10.0**gama(13) - end if - ! - return - end subroutine mach_hetp_calcact3b - - - - !############################################################################ - ! ## HETP Code - ! ## Calculates multi-component activity coefficients from Bromley's method - ! ## of ammonium-sulfate-nitrate-sodium-chloride-calcium-potassium-magnesium - ! ## aerosol system for case K4 and L9 - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcact4(h, nh4_t, so4_t, hso4, no3, cl, na, & - ca, pk, mg, lwn, gama, t) - ! - use mach_hetp_mod, only: tiny - implicit none - ! - real(kind=8), intent (in) :: nh4_t - real(kind=8), intent (in) :: so4_t - real(kind=8), intent (in) :: hso4 - real(kind=8), intent (in) :: no3 - real(kind=8), intent (in) :: cl - real(kind=8), intent (in) :: na - real(kind=8), intent (in) :: ca - real(kind=8), intent (in) :: pk - real(kind=8), intent (in) :: mg - real(kind=8), intent (in) :: lwn - real(kind=8), intent (in) :: h - real(kind=8), intent (in) :: t - real(kind=8), intent(inout) :: gama (23) - ! - ! ## Local variables: - ! - real(kind=8) :: ionic, sion, tc, tx, c, xx, xx2, c1, c2, hh - real(kind=8) :: c3, c4, c5, c5a - real(kind=8) :: f11, f12, f13, f14, k1, k2, k3, k4, h2, h3 - real(kind=8) :: f21, f22, f23, ch1, ch2, ch3 - real(kind=8) :: f2a1, f2a2, f2a3, f2a4, f2b1, f2b2, f2b3, f2b4 - real(kind=8) :: ff11, ff12, ff13, ff14, ff15, ff16 - real(kind=8) :: g01, g02, g03, g04, g05, g06, g07, g08, g09 - real(kind=8) :: g10, g11, g12, g15, g16, g17, g18, g19, g20 - real(kind=8) :: g21, g22, g23 - ! - ! ## Calculate ionic strength of solution - ionic = h + na + nh4_t + cl + 4.0d0*so4_t + hso4 & - + no3 + 4.0d0*ca + pk + 4.0d0*mg - ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) - - ! ## Calculate the binary activity coefficients - sion = sqrt(ionic) - c3 = exp(-0.023d0*ionic*ionic*ionic) - c4 = -0.5107d0*sion - c5 = 1.0d0 + 0.1d0*ionic - c5a = 1.0d0 + sion - ! - ! ## Coefficients at 25C - if (ionic < 6.0d0) then - c = 1.0d0 + 0.12265d0*c3 - xx = c4/(1.0d0 + c*sion) - g01 = 0.39495d0 + 0.60505d0*c5**2.23 - g01 = log10(g01) + xx - - c = 1.0d0 + -0.01045d0*c3 - xx = c4/(1.0d0 + c*sion) - g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) - g02 = 2.0d0*log10(g02) + 2.0d0*xx - - c = 1.0d0 + -0.02145d0*c3 - xx = c4/(1.0d0 + c*sion) - g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) - g03 = log10(g03) + xx - - c = 1.0d0 + -0.01375d0*c3 - xx = c4/(1.0d0 + c*sion) - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + 2.0d0*xx - - c = 1.0d0 + -0.06325d0*c3 - xx = c4/(1.0d0 + c*sion) - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - - c = 1.0d0 + -0.0055d0*c3 - xx = c4/(1.0d0 + c*sion) - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + 2.0d0*xx - - c = 1.0d0 + 0.44d0*c3 - xx = c4/(1.0d0 + c*sion) - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - - c = 1.0d0 + 0.0451d0*c3 - xx = c4/(1.0d0 + c*sion) - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - - c = 1.0d0 + 0.143d0*c3 - xx = c4/(1.0d0 + c*sion) - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - - c = 1.0d0 + 0.33d0*c3 - xx = c4/(1.0d0 + c*sion) - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - - c = 1.0d0 + 0.05115d0*c3 - xx = c4/(1.0d0 + c*sion) - g15 = 0.31045d0 + 0.68955d0*c5**0.93 - g15 = 2.0d0*log10(g15) + 2.0d0*xx - - c = 1.0d0 + 0.132d0*c3 - xx = c4/(1.0d0 + c*sion) - g16 = 0.406d0 + 0.594d0*c5**2.40 - g16 = 2.0d0*log10(g16) + 2.0d0*xx - - c = 1.0d0 + -0.01375d0*c3 - xx = c4/(1.0d0 + c*sion) - g17 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g17 = 2.0d0*log10(g17) + 2.0d0*xx - - c = 1.0d0 + -0.12815d0*c3 - xx = c4/(1.0d0 + c*sion) - g19 = 0.09855d0 + 0.90145d0*c5**(-2.33) - g19 = log10(g19) + xx - - c = 1.0d0 + 0.0506d0*c3 - xx = c4/(1.0d0 + c*sion) - g20 = 0.3098d0 + 0.6902d0*c5**0.92 - g20 = log10(g20) + xx - - c = 1.0d0 + 0.00825d0*c3 - xx = c4/(1.0d0 + c*sion) - g21 = 0.25975d0 + 0.74025d0*c5**0.15 - g21 = 4.0d0*log10(g21) + 4.0d0*xx - - c = 1.0d0 + 0.1276d0*c3 - xx = c4/(1.0d0 + c*sion) - g22 = 0.4008d0 + 0.5992d0*c5**2.32 - g22 = 2.0d0*log10(g22) + 2.0d0*xx - - c = 1.0d0 + 0.1595d0*c3 - xx = c4/(1.0d0 + c*sion) - g23 = 0.4385d0 + 0.5615d0*c5**2.90 - g23 = 2.0d0*log10(g23) + 2.0d0*xx - else - xx = c4/(1.0d0 + sion) - xx2 = 2.0d0*xx - g01 = 0.39495d0 + 0.60505d0*c5**2.23 - g01 = log10(g01) + xx - g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) - g02 = 2.0d0*log10(g02) + xx2 - g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) - g03 = log10(g03) + xx - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + xx2 - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + xx2 - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - g15 = 0.31045d0 + 0.68955d0*c5**0.93 - g15 = 2.0d0*log10(g15) + xx2 - g16 = 0.406d0 + 0.594d0*c5**2.40 - g16 = 2.0d0*log10(g16) + xx2 - g17 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g17 = 2.0d0*log10(g17) + xx2 - g19 = 0.09855d0 + 0.90145d0*c5**(-2.33) - g19 = log10(g19) + xx - g20 = 0.3098d0 + 0.6902d0*c5**0.92 - g20 = log10(g20) + xx - g21 = 0.25975d0 + 0.74025d0*c5**0.15 - g21 = 4.0d0*log10(g21) + 4.0d0*xx - g22 = 0.4008d0 + 0.5992d0*c5**2.32 - g22 = 2.0d0*log10(g22) + xx2 - g23 = 0.4385d0 + 0.5615d0*c5**2.90 - g23 = 2.0d0*log10(g23) + xx2 - end if - ! - ! ## Correct for temperature other than 298 K - tc = abs(t - 298.0d0) - tx = 0.005d0*(t - 273.0d0) - if (tc > 1.0d0) then - c1 = 1.125d0 - tx - c2 = (0.125d0 - tx)*(0.039d0*ionic**0.92 - 0.41d0*sion/c5a) - c3 = c2*2.0d0 - g01 = c1*g01 - c2 !g01 - g02 = c1*g02 - c3 !g02 - g03 = c1*g03 - c2 !g03 - g04 = c1*g04 - c3 !g04 - g05 = c1*g05 - c2 !g05 - g06 = c1*g06 - c2 !g06 - g07 = c1*g07 - c3 !g07 - g08 = c1*g08 - c2 !g08 - g10 = c1*g10 - c2 !g10 - g11 = c1*g11 - c2 !g11 - g15 = c1*g15 - c3 !g15 - g16 = c1*g16 - c3 !g16 - g17 = c1*g17 - c3 !g17 - g19 = c1*g19 - c2 !g19 - g20 = c1*g20 - c2 !g20 - g21 = c1*g21 - c2*4.0d0 !g21 - g22 = c1*g22 - c3 !g22 - g23 = c1*g23 - c3 !g23 - end if - ! - g09 = g06 + g08 - g11 - g12 = g01 + g08 - g11 - g18 = g08 + g20 - g11 - ! - ! ## Calculate multicomponent activity coefficients - hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a - f11 = cl/lwn - f12 = so4_t/lwn - f13 = hso4/lwn - f14 = no3/lwn - ch1 = 1.0d0/ionic - ch2 = 2.25d0/ionic - k1 = ch1*f11 - k2 = ch2*f12 - k3 = ch1*f13 - k4 = ch1*f14 - h2 = 2.0d0*hh - ! - ff11 = k1*(g11 + hh) + k2*(g07 + h2) + k3*(g08 + hh) + k4*(g10 + hh) - ff12 = k1*(g01 + hh) + k2*(g02 + h2) + k3*(g12 + hh) + k4*(g03 + hh) - ff13 = k1*(g06 + hh) + k2*(g04 + h2) + k3*(g09 + hh) + k4*(g05 + hh) - ! - f21 = h/lwn - f22 = na/lwn - f23 = nh4_t/lwn - k1 = ch1*f21 - k2 = ch1*f22 - k3 = ch1*f23 - f2a1 = k1*(g11 + hh) + k2*(g01 + hh) + k3*(g06 + hh) - f2a2 = ((ch2*f21)*(g07 + h2) + (ch2*f22)*(g02 + h2) + (ch2*f23)*(g04 + h2))*0.5d0 - f2a3 = k1*(g08 + hh) + k2*(g12 + hh) + k3*(g09 + hh) - f2a4 = k1*(g10 + hh) + k2*(g03 + hh) + k3*(g05 + hh) - ! - ch1 = 2.25d0/ionic - ch2 = 4.0d0/ionic - ch3 = 1.0d0/ionic - h3 = 4.0d0*hh - f11 = cl/lwn - f12 = so4_t/lwn - f13 = no3/lwn - f14 = hso4/lwn - k1 = ch1*f11 - k2 = ch2*f12 - k3 = ch1*f13 - ! - ff14 = (k1*(g16 + h2) + k2*h3 + k3*(g15 + h2))*0.5d0 - ff15 = (ch3*f11)*(g20 + hh) + (ch1*f12)*(g17 + h2) + (ch3*f14)*(g18 + hh) + & - (ch3*f13)*(g19 + hh) - ff16 = (k1*(g23 + h2) + k2*(g21 + h3) + k3*(g22 + h2))*0.5d0 - ! - f21 = ca/lwn - f22 = pk/lwn - f23 = mg/lwn - k1 = ch1*f21 - k2 = ch1*f23 - k3 = ch3*f22 - f2b1 = k1*(g16 + h2) + k3*(g20 + hh) + k2*(g23 + h2) - f2b2 = ((ch2*f21)*h3 + (ch1*f22)*(g17 + h2) + (ch2*f23)*(g21 + h3))*0.5d0 - f2b3 = (ch3*f22)*(g18 + hh) - f2b4 = k1*(g15 + h2) + k3*(g19 + hh) + k2*(g22 + h2) - ! - ! ## log10 of activity coefficients - gama(1) = ((ff12 + f2a1) * 0.5d0 - hh) ! NaCl - gama(2) = ((ff12 + f2a2) / 3.0d0 - hh)*2.0d0 ! Na2SO4 - gama(3) = ((ff12 + f2a4) * 0.5d0 - hh) ! NaNO3 - gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 - gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 - gama(6) = ((ff13 + f2a1) * 0.5d0 - hh) ! NH4Cl - gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 - gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 - gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 - gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 - gama(11) = ((ff11 + f2a1) * 0.5d0 - hh) ! HCl - gama(12) = ((ff12 + f2a3) * 0.5d0 - hh) ! NaHSO4 - gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape - gama(14) = 0.0d0 ! CaSO4 - gama(15) = ((ff14 + f2b4) / 3.0d0 - hh)*2.0d0 ! Ca(NO3)2 - gama(16) = ((ff14 + f2b1) / 3.0d0 - hh)*2.0d0 ! CaCl2 - gama(17) = ((ff15 + f2b2) / 3.0d0 - hh)*2.0d0 ! K2SO4 - gama(18) = ((ff15 + f2b3) * 0.5d0 - hh) ! KHSO4 - gama(19) = ((ff15 + f2b4) * 0.5d0 - hh) ! KNO3 - gama(20) = ((ff15 + f2b1) * 0.5d0 - hh) ! KCl - gama(21) = ((ff16 + f2b2) * 0.25d0- hh)*4.0d0 ! MgSO4 - gama(22) = ((ff16 + f2b4) / 3.0d0 - hh)*2.0d0 ! Mg(NO3)2 - gama(23) = ((ff16 + f2b1) / 3.0d0 - hh)*2.0d0 ! MgCl2 - - ! ## Convert log(gama) coefficients to gama - gama(1) = max(-5.0d0, min(gama(1), 5.0d0)) - gama(1) = 10.0**gama(1) - gama(2) = max(-5.0d0, min(gama(2), 5.0d0)) - gama(2) = 10.0**gama(2) - gama(3) = max(-5.0d0, min(gama(3), 5.0d0)) - gama(3) = 10.0**gama(3) - gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) - gama(4) = 10.0**gama(4) - gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) - gama(5) = 10.0**gama(5) - gama(6) = max(-5.0d0, min(gama(6), 5.0d0)) - gama(6) = 10.0**gama(6) - gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) - gama(7) = 10.0**gama(7) - gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) - gama(8) = 10.0**gama(8) - gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) - gama(9) = 10.0**gama(9) - gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) - gama(10) = 10.0**gama(10) - gama(11) = max(-5.0d0, min(gama(11), 5.0d0)) - gama(11) = 10.0**gama(11) - gama(12) = max(-5.0d0, min(gama(12), 5.0d0)) - gama(12) = 10.0**gama(12) - gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) - gama(13) = 10.0**gama(13) - gama(14) = 1.0d0 - gama(15) = max(-5.0d0, min(gama(15), 5.0d0)) - gama(15) = 10.0**gama(15) - gama(16) = max(-5.0d0, min(gama(16), 5.0d0)) - gama(16) = 10.0**gama(16) - gama(17) = max(-5.0d0, min(gama(17), 5.0d0)) - gama(17) = 10.0**gama(17) - gama(18) = max(-5.0d0, min(gama(18), 5.0d0)) - gama(18) = 10.0**gama(18) - gama(19) = max(-5.0d0, min(gama(19), 5.0d0)) - gama(19) = 10.0**gama(19) - gama(20) = max(-5.0d0, min(gama(20), 5.0d0)) - gama(20) = 10.0**gama(20) - gama(21) = max(-5.0d0, min(gama(21), 5.0d0)) - gama(21) = 10.0**gama(21) - gama(22) = max(-5.0d0, min(gama(22), 5.0d0)) - gama(22) = 10.0**gama(22) - gama(23) = max(-5.0d0, min(gama(23), 5.0d0)) - gama(23) = 10.0**gama(23) - ! - return - end subroutine mach_hetp_calcact4 - - - - !############################################################################ - ! ## HETP Code - ! ## Calculates multi-component activity coefficients from Bromley's method - ! ## of ammonium-sulfate-nitrate-sodium-chloride-calcium-potassium-magnesium - ! ## aerosol system for case O7, M8 and P13 - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_calcact4b(h, nh4_t, so4_t, hso4, no3, cl, na, & - ca, pk, mg, lwn, gama, t, soln, frst, & - calain, calou) - ! - use mach_hetp_mod, only: tiny - implicit none - ! - real(kind=8), intent (in) :: nh4_t - real(kind=8), intent (in) :: so4_t - real(kind=8), intent (in) :: hso4 - real(kind=8), intent (in) :: no3 - real(kind=8), intent (in) :: cl - real(kind=8), intent (in) :: na - real(kind=8), intent (in) :: ca - real(kind=8), intent (in) :: pk - real(kind=8), intent (in) :: mg - real(kind=8), intent (in) :: lwn - real(kind=8), intent (in) :: h - real(kind=8), intent (in) :: t - real(kind=8), intent(inout) :: gama (23) - logical(kind=4), intent (in) :: soln - logical(kind=4), intent (in) :: frst - logical(kind=4), intent (in) :: calain - logical(kind=4), intent (in) :: calou - ! - ! ## Local variables: - ! - real(kind=8) :: ionic, sion, tc, tx, c, xx, xx2, c1, c2, hh - real(kind=8) :: c3, c4, c5, c5a - real(kind=8) :: f11, f12, f13, f14, k1, k2, k3, k4, h2, h3 - real(kind=8) :: f21, f22, f23, ch1, ch2, ch3 - real(kind=8) :: f2a1, f2a2, f2a3, f2a4, f2b1, f2b2, f2b3, f2b4 - real(kind=8) :: ff11, ff12, ff13, ff14, ff15, ff16 - real(kind=8) :: g01, g02, g03, g04, g05, g06, g07, g08, g09 - real(kind=8) :: g10, g11, g12, g15, g16, g17, g18, g19, g20 - real(kind=8) :: g21, g22, g23 - ! - ! - if ((( .not. soln)) .and. & - ((frst .and. calou ) .or. & - (( .not. frst) .and. calain)) ) then - ! - ! ## Calculate ionic strength of solution - ionic = h + na + nh4_t + cl + 4.0d0*so4_t + hso4 & - + no3 + 4.0d0*ca + pk + 4.0d0*mg - ionic = max(min(0.5d0*ionic/lwn, 100.d0), tiny) - - ! ## Calculate the binary activity coefficients - sion = sqrt(ionic) - c3 = exp(-0.023d0*ionic*ionic*ionic) - c4 = -0.5107d0*sion - c5 = 1.0d0 + 0.1d0*ionic - c5a = 1.0d0 + sion - ! - ! ## Coefficients at 25C - if (ionic < 6.0d0) then - c = 1.0d0 + 0.12265d0*c3 - xx = c4/(1.0d0 + c*sion) - g01 = 0.39495d0 + 0.60505d0*c5**2.23 - g01 = log10(g01) + xx - - c = 1.0d0 + -0.01045d0*c3 - xx = c4/(1.0d0 + c*sion) - g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) - g02 = 2.0d0*log10(g02) + 2.0d0*xx - - c = 1.0d0 + -0.02145d0*c3 - xx = c4/(1.0d0 + c*sion) - g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) - g03 = log10(g03) + xx - - c = 1.0d0 + -0.01375d0*c3 - xx = c4/(1.0d0 + c*sion) - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + 2.0d0*xx - - c = 1.0d0 + -0.06325d0*c3 - xx = c4/(1.0d0 + c*sion) - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - - c = 1.0d0 + -0.0055d0*c3 - xx = c4/(1.0d0 + c*sion) - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + 2.0d0*xx - - c = 1.0d0 + 0.44d0*c3 - xx = c4/(1.0d0 + c*sion) - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - - c = 1.0d0 + 0.0451d0*c3 - xx = c4/(1.0d0 + c*sion) - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - - c = 1.0d0 + 0.143d0*c3 - xx = c4/(1.0d0 + c*sion) - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - - c = 1.0d0 + 0.33d0*c3 - xx = c4/(1.0d0 + c*sion) - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - - c = 1.0d0 + 0.05115d0*c3 - xx = c4/(1.0d0 + c*sion) - g15 = 0.31045d0 + 0.68955d0*c5**0.93 - g15 = 2.0d0*log10(g15) + 2.0d0*xx - - c = 1.0d0 + 0.132d0*c3 - xx = c4/(1.0d0 + c*sion) - g16 = 0.406d0 + 0.594d0*c5**2.40 - g16 = 2.0d0*log10(g16) + 2.0d0*xx - - c = 1.0d0 + -0.01375d0*c3 - xx = c4/(1.0d0 + c*sion) - g17 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g17 = 2.0d0*log10(g17) + 2.0d0*xx - - c = 1.0d0 + -0.12815d0*c3 - xx = c4/(1.0d0 + c*sion) - g19 = 0.09855d0 + 0.90145d0*c5**(-2.33) - g19 = log10(g19) + xx - - c = 1.0d0 + 0.0506d0*c3 - xx = c4/(1.0d0 + c*sion) - g20 = 0.3098d0 + 0.6902d0*c5**0.92 - g20 = log10(g20) + xx - - c = 1.0d0 + 0.00825d0*c3 - xx = c4/(1.0d0 + c*sion) - g21 = 0.25975d0 + 0.74025d0*c5**0.15 - g21 = 4.0d0*log10(g21) + 4.0d0*xx - - c = 1.0d0 + 0.1276d0*c3 - xx = c4/(1.0d0 + c*sion) - g22 = 0.4008d0 + 0.5992d0*c5**2.32 - g22 = 2.0d0*log10(g22) + 2.0d0*xx - - c = 1.0d0 + 0.1595d0*c3 - xx = c4/(1.0d0 + c*sion) - g23 = 0.4385d0 + 0.5615d0*c5**2.90 - g23 = 2.0d0*log10(g23) + 2.0d0*xx - else - xx = c4/(1.0d0 + sion) - xx2 = 2.0d0*xx - g01 = 0.39495d0 + 0.60505d0*c5**2.23 - g01 = log10(g01) + xx - g02 = 0.23765d0 + 0.76235d0*c5**(-0.19) - g02 = 2.0d0*log10(g02) + xx2 - g03 = 0.22465d0 + 0.77535d0*c5**(-0.39) - g03 = log10(g03) + xx - g04 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g04 = 2.0d0*log10(g04) + xx2 - g05 = 0.17525d0 + 0.82475d0*c5**(-1.15) - g05 = log10(g05) + xx - g07 = 0.2435d0 + 0.7565d0*c5**(-0.1) - g07 = 2.0d0*log10(g07) + xx2 - g08 = 0.77d0 + 0.23d0*c5*c5*c5*c5*c5*c5*c5*c5 - g08 = log10(g08) + xx - g06 = 0.3033d0 + 0.6967d0*c5**0.82 - g06 = log10(g06) + xx - g10 = 0.419d0 + 0.581d0*c5**2.60 - g10 = log10(g10) + xx - g11 = 0.64d0 + 0.36d0*c5*c5*c5*c5*c5*c5 - g11 = log10(g11) + xx - g15 = 0.31045d0 + 0.68955d0*c5**0.93 - g15 = 2.0d0*log10(g15) + xx2 - g16 = 0.406d0 + 0.594d0*c5**2.40 - g16 = 2.0d0*log10(g16) + xx2 - g17 = 0.23375d0 + 0.76625d0*c5**(-0.25) - g17 = 2.0d0*log10(g17) + xx2 - g19 = 0.09855d0 + 0.90145d0*c5**(-2.33) - g19 = log10(g19) + xx - g20 = 0.3098d0 + 0.6902d0*c5**0.92 - g20 = log10(g20) + xx - g21 = 0.25975d0 + 0.74025d0*c5**0.15 - g21 = 4.0d0*log10(g21) + 4.0d0*xx - g22 = 0.4008d0 + 0.5992d0*c5**2.32 - g22 = 2.0d0*log10(g22) + xx2 - g23 = 0.4385d0 + 0.5615d0*c5**2.90 - g23 = 2.0d0*log10(g23) + xx2 - end if - ! - ! ## Correct for temperature other than 298 K - tc = abs(t - 298.0d0) - tx = 0.005d0*(t - 273.0d0) - if (tc > 1.0d0) then - c1 = 1.125d0 - tx - c2 = (0.125d0 - tx)*(0.039d0*ionic**0.92 - 0.41d0*sion/c5a) - c3 = c2*2.0d0 - g01 = c1*g01 - c2 !g01 - g02 = c1*g02 - c3 !g02 - g03 = c1*g03 - c2 !g03 - g04 = c1*g04 - c3 !g04 - g05 = c1*g05 - c2 !g05 - g06 = c1*g06 - c2 !g06 - g07 = c1*g07 - c3 !g07 - g08 = c1*g08 - c2 !g08 - g10 = c1*g10 - c2 !g10 - g11 = c1*g11 - c2 !g11 - g15 = c1*g15 - c3 !g15 - g16 = c1*g16 - c3 !g16 - g17 = c1*g17 - c3 !g17 - g19 = c1*g19 - c2 !g19 - g20 = c1*g20 - c2 !g20 - g21 = c1*g21 - c2*4.0d0 !g21 - g22 = c1*g22 - c3 !g22 - g23 = c1*g23 - c3 !g23 - end if - ! - g09 = g06 + g08 - g11 - g12 = g01 + g08 - g11 - g18 = g08 + g20 - g11 - ! - ! ## Calculate multicomponent activity coefficients - hh = (0.511d0*(298.0d0/t)**1.5)*sion/c5a - f11 = cl/lwn - f12 = so4_t/lwn - f13 = hso4/lwn - f14 = no3/lwn - ch1 = 1.0d0/ionic - ch2 = 2.25d0/ionic - k1 = ch1*f11 - k2 = ch2*f12 - k3 = ch1*f13 - k4 = ch1*f14 - h2 = 2.0d0*hh - ! - ff11 = k1*(g11 + hh) + k2*(g07 + h2) + k3*(g08 + hh) + k4*(g10 + hh) - ff12 = k1*(g01 + hh) + k2*(g02 + h2) + k3*(g12 + hh) + k4*(g03 + hh) - ff13 = k1*(g06 + hh) + k2*(g04 + h2) + k3*(g09 + hh) + k4*(g05 + hh) - ! - f21 = h/lwn - f22 = na/lwn - f23 = nh4_t/lwn - k1 = ch1*f21 - k2 = ch1*f22 - k3 = ch1*f23 - f2a1 = k1*(g11 + hh) + k2*(g01 + hh) + k3*(g06 + hh) - f2a2 = ((ch2*f21)*(g07 + h2) + (ch2*f22)*(g02 + h2) + (ch2*f23)*(g04 + h2))*0.5d0 - f2a3 = k1*(g08 + hh) + k2*(g12 + hh) + k3*(g09 + hh) - f2a4 = k1*(g10 + hh) + k2*(g03 + hh) + k3*(g05 + hh) - ! - ch1 = 2.25d0/ionic - ch2 = 4.0d0/ionic - ch3 = 1.0d0/ionic - h3 = 4.0d0*hh - f11 = cl/lwn - f12 = so4_t/lwn - f13 = no3/lwn - f14 = hso4/lwn - k1 = ch1*f11 - k2 = ch2*f12 - k3 = ch1*f13 - ! - ff14 = (k1*(g16 + h2) + k2*h3 + k3*(g15 + h2))*0.5d0 - ff15 = (ch3*f11)*(g20 + hh) + (ch1*f12)*(g17 + h2) + (ch3*f14)*(g18 + hh) + & - (ch3*f13)*(g19 + hh) - ff16 = (k1*(g23 + h2) + k2*(g21 + h3) + k3*(g22 + h2))*0.5d0 - ! - f21 = ca/lwn - f22 = pk/lwn - f23 = mg/lwn - k1 = ch1*f21 - k2 = ch1*f23 - k3 = ch3*f22 - f2b1 = k1*(g16 + h2) + k3*(g20 + hh) + k2*(g23 + h2) - f2b2 = ((ch2*f21)*h3 + (ch1*f22)*(g17 + h2) + (ch2*f23)*(g21 + h3))*0.5d0 - f2b3 = (ch3*f22)*(g18 + hh) - f2b4 = k1*(g15 + h2) + k3*(g19 + hh) + k2*(g22 + h2) - ! - ! ## log10 of activity coefficients - gama(1) = ((ff12 + f2a1) * 0.5d0 - hh) ! NaCl - gama(2) = ((ff12 + f2a2) / 3.0d0 - hh)*2.0d0 ! Na2SO4 - gama(3) = ((ff12 + f2a4) * 0.5d0 - hh) ! NaNO3 - gama(4) = ((ff13 + f2a2) / 3.0d0 - hh)*2.0d0 ! (NH4)2SO4 - gama(5) = ((ff13 + f2a4) * 0.5d0 - hh) ! NH4NO3 - gama(6) = ((ff13 + f2a1) * 0.5d0 - hh) ! NH4Cl - gama(7) = ((ff11 + f2a2) / 3.0d0 - hh)*2.0d0 ! 2H-SO4 - gama(8) = ((ff11 + f2a3) * 0.5d0 - hh) ! H-HSO4 - gama(9) = ((ff13 + f2a3) * 0.5d0 - hh) ! NH4HSO4 - gama(10) = ((ff11 + f2a4) * 0.5d0 - hh) ! HNO3 - gama(11) = ((ff11 + f2a1) * 0.5d0 - hh) ! HCl - gama(12) = ((ff12 + f2a3) * 0.5d0 - hh) ! NaHSO4 - gama(13) = 0.6d0*gama(4) + 0.4d0*gama(9) ! lc; scape - gama(14) = 0.0d0 ! CaSO4 - gama(15) = ((ff14 + f2b4) / 3.0d0 - hh)*2.0d0 ! Ca(NO3)2 - gama(16) = ((ff14 + f2b1) / 3.0d0 - hh)*2.0d0 ! CaCl2 - gama(17) = ((ff15 + f2b2) / 3.0d0 - hh)*2.0d0 ! K2SO4 - gama(18) = ((ff15 + f2b3) * 0.5d0 - hh) ! KHSO4 - gama(19) = ((ff15 + f2b4) * 0.5d0 - hh) ! KNO3 - gama(20) = ((ff15 + f2b1) * 0.5d0 - hh) ! KCl - gama(21) = ((ff16 + f2b2) * 0.25d0- hh)*4.0d0 ! MgSO4 - gama(22) = ((ff16 + f2b4) / 3.0d0 - hh)*2.0d0 ! Mg(NO3)2 - gama(23) = ((ff16 + f2b1) / 3.0d0 - hh)*2.0d0 ! MgCl2 - - ! ## Convert log(gama) coefficients to gama - gama(1) = max(-5.0d0, min(gama(1), 5.0d0)) - gama(1) = 10.0**gama(1) - gama(2) = max(-5.0d0, min(gama(2), 5.0d0)) - gama(2) = 10.0**gama(2) - gama(3) = max(-5.0d0, min(gama(3), 5.0d0)) - gama(3) = 10.0**gama(3) - gama(4) = max(-5.0d0, min(gama(4), 5.0d0)) - gama(4) = 10.0**gama(4) - gama(5) = max(-5.0d0, min(gama(5), 5.0d0)) - gama(5) = 10.0**gama(5) - gama(6) = max(-5.0d0, min(gama(6), 5.0d0)) - gama(6) = 10.0**gama(6) - gama(7) = max(-5.0d0, min(gama(7), 5.0d0)) - gama(7) = 10.0**gama(7) - gama(8) = max(-5.0d0, min(gama(8), 5.0d0)) - gama(8) = 10.0**gama(8) - gama(9) = max(-5.0d0, min(gama(9), 5.0d0)) - gama(9) = 10.0**gama(9) - gama(10) = max(-5.0d0, min(gama(10), 5.0d0)) - gama(10) = 10.0**gama(10) - gama(11) = max(-5.0d0, min(gama(11), 5.0d0)) - gama(11) = 10.0**gama(11) - gama(12) = max(-5.0d0, min(gama(12), 5.0d0)) - gama(12) = 10.0**gama(12) - gama(13) = max(-5.0d0, min(gama(13), 5.0d0)) - gama(13) = 10.0**gama(13) - gama(14) = 1.0d0 - gama(15) = max(-5.0d0, min(gama(15), 5.0d0)) - gama(15) = 10.0**gama(15) - gama(16) = max(-5.0d0, min(gama(16), 5.0d0)) - gama(16) = 10.0**gama(16) - gama(17) = max(-5.0d0, min(gama(17), 5.0d0)) - gama(17) = 10.0**gama(17) - gama(18) = max(-5.0d0, min(gama(18), 5.0d0)) - gama(18) = 10.0**gama(18) - gama(19) = max(-5.0d0, min(gama(19), 5.0d0)) - gama(19) = 10.0**gama(19) - gama(20) = max(-5.0d0, min(gama(20), 5.0d0)) - gama(20) = 10.0**gama(20) - gama(21) = max(-5.0d0, min(gama(21), 5.0d0)) - gama(21) = 10.0**gama(21) - gama(22) = max(-5.0d0, min(gama(22), 5.0d0)) - gama(22) = 10.0**gama(22) - gama(23) = max(-5.0d0, min(gama(23), 5.0d0)) - gama(23) = 10.0**gama(23) - end if - ! - return - end subroutine mach_hetp_calcact4b - - - - !############################################################################ - ! ## HETP Code - ! ## Finds the smallest positive real root of a cubic equation analytically - ! - ! ## Equation of the form: - ! ## x*x*x + a1*x*x + a2*x + a3 = 0.0d0 - ! ## Input: a1, a2, a3 - ! ## Output: root, islv ! Minimum positive real root - ! ! root set to 1.0d30 if no root is found - ! ! islv > 0 if no root is found - ! - ! ## Special case: quadratic equation solved separately - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_poly3v (a1, a2, a3, root, islv) - ! - implicit none - ! - real(kind=8), intent (in) :: a1 - real(kind=8), intent (in) :: a2 - real(kind=8), intent (in) :: a3 - real(kind=8), intent(out) :: root - integer(kind=4), intent(out) :: islv - ! - ! ## Local variables - ! - integer(kind=4) :: j, ix - real(kind=8) :: thet, coef, s, sqd, ssig, tsig, t, d, q, r, pi - real(kind=8) :: x(3) - real(kind=8), parameter :: expon = 1.0d0/3.0d0, zero = 0.0d0, & - thet1 = 120.0d0/180.0d0, thet2 = 240.0d0/180.0d0, & - eps = 1.d-50 - ! - pi = acos(-1.0d0) - islv = 1 - root = 0.0d0 - x = 0.0d0 - ! - ! #### 1. Quadratic equation - d = a1*a1 - 4.0d0*a2 - - if (abs(a3) <= eps) then - ix = 1 - x(1) = 0.0d0 - end if - ! - if (abs(a3) <= eps .and. d >= zero) then - ix = 3 - x(2) = 0.5d0*(-a1 + sqrt(d)) - x(3) = 0.5d0*(-a1 - sqrt(d)) - end if - ! - ! #### 2. Cubic equation - q = (3.0d0*a2 - a1*a1)/9.0d0 - r = (9.0d0*a1*a2 - 27.0d0*a3 - 2.0d0*a1*a1*a1)/54.0d0 - d = q*q*q + r*r - ! - ! ## Calculate roots * - ! ## i. d < 0, three real roots - if (abs(a3) > eps .and. d < -eps) then - ix = 3 - thet = expon*acos(r / sqrt(-q*q*q)) - coef = 2.0d0*sqrt(-q) - x(1) = coef*cos(thet) - expon*a1 - x(2) = coef*cos(thet + thet1*pi) - expon*a1 - x(3) = coef*cos(thet + thet2*pi) - expon*a1 - end if - ! - ! ## ii. d = 0, three real (one double) roots - if (abs(a3) > eps .and. d >= -eps .and. d <= eps) then - ix = 2 - s = (abs(r)**expon)*sign(1.0e0, real(r)) - x(1) = 2.0d0*s - expon*a1 - x(2) = -s - expon*a1 - end if - ! - ! ## iii. d > 0, one real root - if (abs(a3) > eps .and. d > eps) then - ix = 1 - sqd = sqrt(d) - ssig = sign(1.0e0, real(r + sqd)) - tsig = sign(1.0e0, real(r - sqd)) - s = ssig*(abs(r + sqd))**expon - t = tsig*(abs(r - sqd))**expon - x(1) = s + t - expon*a1 - end if - - ! #### Select the appropriate root - ! ## Note that islv == 1 if there are no positive roots with a magnitude > eps - islv = 1 - do j = 1, 3 - islv = min(islv, int(0.5d0*(1.0d0 + sign(1.0d0, (eps - x(j)))))) - end do - ! - ! ## Set roots with magnitude <= eps to 1.0d+30; then determine the smallest root - root = 1.0d30 - do j = 1, 3 - x(j) = max(x(j), 1.0d30*(0.5d0*(1.0d0 - sign(1.0d0, x(j) - eps)))) - end do - ! - do j = 1, 3 - root = min(root, x(j)) - end do - return - end - - - - !############################################################################ - ! ## HETP Code - ! ## Finds the smallest positive real root of a cubic equation analytically; - ! ## if no root is found analytically, an ITP search is then performed over - ! ## the range (tiny2, cl) - ! - ! ## Equation of the form: - ! ## x*x*x + a1*x*x + a2*x + a3 = 0.0d0 - ! ## Input: a1, a2, a3, cl - ! ## Output: root, islv ! Minimum positive real root - ! ! root set to 1.0d30 if no root is found - ! ! islv > 0 if no root is found - ! - ! ## Special case: quadratic equation solved separately - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_poly(a1, a2, a3, cl, root, islv) - ! - implicit none - ! - real(kind=8), intent (in) :: a1 - real(kind=8), intent (in) :: a2 - real(kind=8), intent (in) :: a3 - real(kind=8), intent (in) :: cl - real(kind=8), intent(out) :: root - integer(kind=4), intent(out) :: islv - ! - ! Local variables - ! - integer(kind=4), parameter :: jmax = 60 - integer(kind=4) :: j, ix - real(kind=8) :: thet, coef, s, sqd, ssig, tsig, t, d, q, r, pi - real(kind=8) :: x(3) - real(kind=8), parameter :: expon = 1.0d0/3.0d0, zero = 0.0d0, & - thet1 = 120.0d0/180.0d0, thet2 = 240.0d0/180.0d0, & - eps = 1.d-50 - real(kind=8) :: y1, x1, y2, x2, nh, nmax, eps2!, k1, k2, - real(kind=8) :: xf, xh, xt, sigma, delta, rr, x3, y3, gx2, gx, u1 - integer(kind=4) :: k - real(kind=8) :: rooteval, ndiv, dx - logical(kind=4) :: condition, ITPsearch, bisect - ! - bisect = .true. - ! - pi = acos(-1.0d0) - islv = 1 - root = 0.0d0 - x = 0.0d0 - ! - ! #### 1. Quadratic equation - d = a1*a1 - 4.0d0*a2 - ! - if (abs(a3) <= eps) then - ix = 1 - x(1) = 0.0d0 - end if - ! - if (abs(a3) <= eps .and. d >= zero) then - ix = 3 - x(2) = 0.5d0*(-a1 + sqrt(d)) - x(3) = 0.5d0*(-a1 - sqrt(d)) - end if - ! - ! #### 2. Cubic equation - q = (3.0d0*a2 - a1*a1)/9.0d0 - r = (9.0d0*a1*a2 - 27.0d0*a3 - 2.0d0*a1*a1*a1)/54.0d0 - d = q*q*q + r*r - ! - ! ## Calculate roots - ! ## i. d < 0, three real roots - if (abs(a3) > eps .and. d < -eps) then - ix = 3 - thet = expon*acos(r / sqrt(-q*q*q)) - coef = 2.0d0*sqrt(-q) - x(1) = coef*cos(thet) - expon*a1 - x(2) = coef*cos(thet + thet1*pi) - expon*a1 - x(3) = coef*cos(thet + thet2*pi) - expon*a1 - end if - ! - ! ## ii. d = 0, three real (one double) roots - if (abs(a3) > eps .and. d >= -eps .and. d <= eps) then - ix = 2 - s = (abs(r)**expon)*sign(1.0e0, real(r)) - x(1) = 2.0d0*s - expon*a1 - x(2) = -s - expon*a1 - end if - ! - ! ## iii. d > 0, one real root - if (abs(a3) > eps .and. d > eps) then - ix = 1 - sqd = sqrt(d) - ssig = sign(1.0e0, real(r + sqd)) - tsig = sign(1.0e0, real(r - sqd)) - s = ssig*(abs(r + sqd))**expon - t = tsig*(abs(r - sqd))**expon - x(1) = s + t - expon*a1 - end if - - ! #### Select the appropriate root - ! ## Note that islv == 1 if there are no positive roots with a magnitude > eps - islv = 1 - do j = 1, 3 - islv = min(islv, int(0.5d0*(1.0d0 + sign(1.0d0, (eps - x(j)))))) - end do - ! - ! ## Set roots with magnitude <= eps to 1.0d+30; then determine the smallest root - root = 1.0d30 - do j = 1, 3 - x(j) = max(x(j), 1.0d30*(0.5d0*(1.0d0 - sign(1.0d0, x(j) - eps)))) - end do - ! - do j = 1, 3 - root = min(root, x(j)) - end do - ! - ITPsearch = .false. - ! ## No root less than 1.0d29 was found; perform ITP search instead - if (root > 1.0d29) then - rooteval = 0 - ndiv = 5 - x1 = 1.0d-28 !Lower bound is tiny2 - y1 = x1*x1*x1 + a1*x1*x1 + a2*x1 + a3 - dx = cl/real(ndiv-1) !Upper bound is total chlorine - condition= .false. - ! - ! ## Subdivision search for a root - do while (rooteval < 5 .and. ( .not. condition)) - x2 = x1 + dx - y2 = x2*x2*x2 + a1*x2*x2 + a2*x2 + a3 - ! - ! ## Test for a sign change - if (y1 == 0.0d0) then - ! ## 1. x1 is a root - condition = .true. - ITPsearch = .false. - root = x1 - islv = 0 - elseif (y2 == 0.0d0) then - ! ## 2. x2 is a root - condition = .true. - ITPsearch = .false. - root = x2 - islv = 0 - elseif (y1*y2 < 0.0d0) then - ! ## 3. Interval has a sign change - condition = .true. - ITPsearch = .true. - elseif (y1*y2 > 0.0d0) then - ! ## 4. No sign change; continue onto next interval - x1 = x2 - y1 = y2 - ITPsearch = .false. - end if - ! - rooteval = rooteval + 1 - end do - end if - ! - ! k1 = 0.1d0 - ! k2 = 2.0d0 - eps2 = 1.0d-9 - ! - ! #### Perform an ITP search to refine the root, if a root exists - if (bisect .and. ITPsearch) then - gx = x2 - x1 - gx2 = (x1+x2)*0.5d0 - u1 = 0.2d0/gx - nh = log10(abs(gx/(2.0d0*gx2*eps2))) / 0.301029995663981195d0 - nmax = nint(nh) + 2 - k = 0 - ! - do while (abs(x2-x1) > x2*eps2 .and. k < jmax) - gx = x2 - x1 - xh = 0.5d0*(x1 + x2) - rr = max(gx2*eps*2.d0**(real(nmax - k)) - 0.5d0*gx, 0.0d0) - delta= u1*(max(gx, 0.0d0))**2.0d0 - xf = max((y2*x1 - y1*x2) / (y2 - y1), 0.0d0) - sigma = sign(1.0d0, xh - xf) - ! - if (delta <= abs(xh-xf)) then - xt = xf + sigma*delta - else - xt = xh - end if - ! - if (abs(xt - xh) <= rr) then - x3 = xt - else - x3 = xh - sigma*rr - end if - ! - y3 = x3*x3*x3 + a1*x3*x3 + a2*x3 + a3 - ! - if (y3 > 0.0d0) then - x2 = x3 - y2 = y3 - elseif (y3 < 0.0d0) then - x1 = x3 - y1 = y3 - else - x1 = x3 - x2 = x3 - end if - ! - k = k + 1 - end do - ! - root = x3 - islv = 0 - end if - return - end subroutine mach_hetp_poly - - - - !############################################################################ - ! ## HETP Code - ! ## Adjusts to force mass balance for volatile species and sulfate - ! ## Calculate EXCESS mass only, remove excess, first from aerosol (liquid) - ! ## phase, second from the gas phase, and third from the solid phase - ! - ! ## Copyright 2023, Environment and Climate Change Canada (ECCC) - ! ## Written by Stefan Miller - ! - ! ## Code is based on ISORROPIA II, obtained from the CMAQ air-quality - ! ## model (https://github.com/USEPA/CMAQ/tree/main/CCTM/src/aero/aero6) - !############################################################################ - subroutine mach_hetp_adjust(so4, no3, nh4, cl, so4_t, hso4, no3_t, ghno3, & - nh4_t, gnh3, cl_t, ghcl, caso4) - ! - use mach_hetp_mod, only: tiny2 - implicit none - ! - real(kind=8), intent (in) :: so4 - real(kind=8), intent (in) :: nh4 - real(kind=8), intent (in) :: no3 - real(kind=8), intent (in) :: cl - real(kind=8), intent(inout) :: so4_t - real(kind=8), intent(inout) :: hso4 - real(kind=8), intent(inout) :: caso4 - real(kind=8), intent(inout) :: no3_t - real(kind=8), intent(inout) :: ghno3 - real(kind=8), intent(inout) :: nh4_t - real(kind=8), intent(inout) :: gnh3 - real(kind=8), intent(inout) :: cl_t - real(kind=8), intent(inout) :: ghcl - ! - ! ## Local variables: - real(kind=8) :: exnh4, exno3, exs4, excl - ! - exnh4 = 0.0d0 - exno3 = 0.0d0 - exs4 = 0.0d0 - excl = 0.0d0 - ! - ! ## Calculate excess as: solution - input (units mol/m3 for all species) - ! 1. Expected: NH4+(aq) + NH3(g) - TA = 0.0d0 - exnh4 = max(nh4_t + gnh3 - nh4, 0.0d0) - ! - ! 2. Expected: NO3-(aq) + HNO3(g) - TN = 0.0d0 - exno3 = max(no3_t + ghno3 - no3, 0.0d0) - ! - ! 3. Expected: Cl-(aq) + HCl(g) - TCl = 0.0d0 - excl = max(cl_t + ghcl - cl , 0.0d0) - ! - ! 4. Expected: SO4--(aq) + HSO4-(aq) + CaSO4(s) - TS = 0.0d0 - exs4 = max(so4_t + hso4 + caso4 - so4, 0.0d0) - ! - ! - ! ## 1. Adjust ammonium - if (exnh4 >= tiny2) then - if (nh4_t > exnh4) then - nh4_t = max(nh4_t - exnh4, 0.0d0) - else - exnh4 = max(exnh4 - nh4_t, 0.0d0) - nh4_t = 0.0d0 - gnh3 = max(gnh3 - exnh4, 0.0d0) - end if - end if - ! - ! ## 2. Adjust nitrate - if (exno3 >= tiny2) then - if (no3_t > exno3) then - no3_t = max(no3_t - exno3, 0.0d0) - else - exno3 = max(exno3 - no3_t, 0.0d0) - no3_t = 0.0d0 - ghno3 = max(ghno3 - exno3, 0.0d0) - end if - end if - ! - ! ## 3. Adjust chloride - if (excl >= tiny2) then - if (cl_t > excl) then - cl_t = max(cl_t - excl, 0.0d0) - else - excl = max(excl - cl_t, 0.0d0) - cl_t = 0.0d0 - ghcl = max(ghcl - excl, 0.0d0) - end if - end if - ! - ! ## 4. Adjust sulfate - if (exs4 >= tiny2) then - if (hso4 > exs4) then - hso4 = max(hso4 - exs4, 0.0d0) - else - exs4 = max(exs4 - hso4, 0.0d0) - hso4 = 0.0d0 - ! - if (so4_t > exs4) then - so4_t = max(so4_t - exs4, 0.0d0) - else - exs4 = max(exs4 - so4_t, 0.0d0) - so4_t = 0.0d0 - ! - if (caso4 > exs4) then - caso4 = max(caso4 - exs4, 0.0d0) - else - exs4 = max(exs4 - caso4, 0.0d0) - caso4 = 0.0d0 - end if - end if - end if - end if - ! - return - end subroutine mach_hetp_adjust -end module hetp_mod diff --git a/GeosCore/mach_hetp_mod.F90 b/GeosCore/mach_hetp_mod.F90 deleted file mode 100644 index e0864018e..000000000 --- a/GeosCore/mach_hetp_mod.F90 +++ /dev/null @@ -1,495 +0,0 @@ -!######### HETP: AEROSOL THERMODYNAMIC EQUILIBRIUM OF THE ################### -!######### NH4-SO4-NO3-Na-Cl-Ca-Mg-K SYSTEM ################### -! -!Copyright (C) 2023 Stefan Miller, Environment and Climate Change Canada -! Contact: Stefan.Miller (at) ec.gc.ca -! -! This program is free software: you can redistribute it and/or modify -! it under the terms of the GNU General Public License as published by -! the Free Software Foundation, either version 3 of the License, or -! (at your option) any later version. -! -! This program is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU General Public License for more details. -! -! You should have received a copy of the GNU General Public License -! along with this program. If not, see . -! -!############################################################################ -! ## HETP Code -! ## Module file for HETP code -! ## Contains: (1) parameters related to ITP/activity coefficient calculations -! ## (2) ZSR data arrays -! ## (3) other parameters -! -! ## Copyright 2023, Environment and Climate Change Canada (ECCC) -! ## Written by Stefan Miller -!############################################################################ -module mach_hetp_mod - implicit none - save -! -! ################## -! ### Parameters ### -! ################## - real(kind=8), parameter :: tstd = 298.15d0 - real(kind=8), parameter :: smrt = 1.0d-05 - real(kind=8), parameter :: tiny = 1.0d-20 ! Lower limit for input species and ions - real(kind=8), parameter :: tiny2 = 1.0d-28 ! Lower limit for gas concentrations - real(kind=8), parameter :: r = 82.0567d-6 ! = 8.3144d0/1.01325d05, gas constant, atm->pa - real(kind=8), parameter :: log10of2 = 0.301029995663981195d0 ! = log10(2.0d0) -! -! -! ############################################### -! ### Activity coefficient and ITP parameters ### -! ############################################### - integer(kind=4), parameter :: ndiv = 5 ! Root bracketing: Number of subdivisions searched for sign change - integer(kind=4), parameter :: maxit = 100 ! Max number of iterations for ITP - real(kind=8), parameter :: eps = 1.0d-9 ! Convergence criteria: ITP - integer(kind=4), parameter :: nsweep = 4 ! Max number of iterations for activity coefficients - real(kind=8), parameter :: epsact = 1.0d-6 ! Convergence criteria: activity coefficients -! -! -! ####################################################### -! #### Define ZSR arrays (identical to ISORROPIA II) #### -! ####################################################### -! ### 1. Sodium Chloride - real(kind=8) :: awsc(100) = (/ & - 28.16d0, 28.16d0, 28.16d0, 28.16d0, 28.16d0, & - 28.16d0, 28.16d0, 28.16d0, 28.16d0, 28.16d0, & - 27.17d0, 26.27d0, 25.45d0, 24.69d0, 23.98d0, & - 23.33d0, 22.72d0, 22.14d0, 21.59d0, 21.08d0, & - 20.58d0, 20.12d0, 19.67d0, 19.24d0, 18.82d0, & - 18.43d0, 18.04d0, 17.67d0, 17.32d0, 16.97d0, & - 16.63d0, 16.31d0, 15.99d0, 15.68d0, 15.38d0, & - 15.08d0, 14.79d0, 14.51d0, 14.24d0, 13.97d0, & - 13.70d0, 13.44d0, 13.18d0, 12.93d0, 12.68d0, & - 12.44d0, 12.20d0, 11.96d0, 11.73d0, 11.50d0, & - 11.27d0, 11.05d0, 10.82d0, 10.60d0, 10.38d0, & - 10.16d0, 9.95d0, 9.74d0, 9.52d0, 9.31d0, & - 9.10d0, 8.89d0, 8.69d0, 8.48d0, 8.27d0, & - 8.07d0, 7.86d0, 7.65d0, 7.45d0, 7.24d0, & - 7.04d0, 6.83d0, 6.62d0, 6.42d0, 6.21d0, & - 6.00d0, 5.79d0, 5.58d0, 5.36d0, 5.15d0, & - 4.93d0, 4.71d0, 4.48d0, 4.26d0, 4.03d0, & - 3.80d0, 3.56d0, 3.32d0, 3.07d0, 2.82d0, & - 2.57d0, 2.30d0, 2.04d0, 1.76d0, 1.48d0, & - 1.20d0, 0.91d0, 0.61d0, 0.30d0, 0.1d0/) -! -! ### 2. Sodium Sulfate - real(kind=8) :: awss(100) = (/ & - 24.10d0, 24.10d0, 24.10d0, 24.10d0, 24.10d0, & - 24.10d0, 24.10d0, 24.10d0, 24.10d0, 24.10d0, & - 23.17d0, 22.34d0, 21.58d0, 20.90d0, 20.27d0, & - 19.69d0, 19.15d0, 18.64d0, 18.17d0, 17.72d0, & - 17.30d0, 16.90d0, 16.52d0, 16.16d0, 15.81d0, & - 15.48d0, 15.16d0, 14.85d0, 14.55d0, 14.27d0, & - 13.99d0, 13.73d0, 13.47d0, 13.21d0, 12.97d0, & - 12.73d0, 12.50d0, 12.27d0, 12.05d0, 11.84d0, & - 11.62d0, 11.42d0, 11.21d0, 11.01d0, 10.82d0, & - 10.63d0, 10.44d0, 10.25d0, 10.07d0, 9.89d0, & - 9.71d0, 9.53d0, 9.36d0, 9.19d0, 9.02d0, & - 8.85d0, 8.68d0, 8.51d0, 8.35d0, 8.19d0, & - 8.02d0, 7.86d0, 7.70d0, 7.54d0, 7.38d0, & - 7.22d0, 7.06d0, 6.90d0, 6.74d0, 6.58d0, & - 6.42d0, 6.26d0, 6.10d0, 5.94d0, 5.78d0, & - 5.61d0, 5.45d0, 5.28d0, 5.11d0, 4.93d0, & - 4.76d0, 4.58d0, 4.39d0, 4.20d0, 4.01d0, & - 3.81d0, 3.60d0, 3.39d0, 3.16d0, 2.93d0, & - 2.68d0, 2.41d0, 2.13d0, 1.83d0, 1.52d0, & - 1.19d0, 0.86d0, 0.54d0, 0.25d0, 0.1d0/) -! -! ### 3. Sodium Nitrate - real(kind=8) :: awsn(100) = (/ & - 394.54d0, 394.54d0, 394.54d0, 394.54d0, 394.54d0, & - 394.54d0, 394.54d0, 394.54d0, 394.54d0, 394.54d0, & - 338.91d0, 293.01d0, 254.73d0, 222.61d0, 195.56d0, & - 172.76d0, 153.53d0, 137.32d0, 123.65d0, 112.08d0, & - 102.26d0, 93.88d0, 86.68d0, 80.45d0, 75.02d0, & - 70.24d0, 66.02d0, 62.26d0, 58.89d0, 55.85d0, & - 53.09d0, 50.57d0, 48.26d0, 46.14d0, 44.17d0, & - 42.35d0, 40.65d0, 39.06d0, 37.57d0, 36.17d0, & - 34.85d0, 33.60d0, 32.42d0, 31.29d0, 30.22d0, & - 29.20d0, 28.22d0, 27.28d0, 26.39d0, 25.52d0, & - 24.69d0, 23.89d0, 23.12d0, 22.37d0, 21.65d0, & - 20.94d0, 20.26d0, 19.60d0, 18.96d0, 18.33d0, & - 17.72d0, 17.12d0, 16.53d0, 15.96d0, 15.40d0, & - 14.85d0, 14.31d0, 13.78d0, 13.26d0, 12.75d0, & - 12.25d0, 11.75d0, 11.26d0, 10.77d0, 10.29d0, & - 9.82d0, 9.35d0, 8.88d0, 8.42d0, 7.97d0, & - 7.52d0, 7.07d0, 6.62d0, 6.18d0, 5.75d0, & - 5.32d0, 4.89d0, 4.47d0, 4.05d0, 3.64d0, & - 3.24d0, 2.84d0, 2.45d0, 2.07d0, 1.70d0, & - 1.34d0, 0.99d0, 0.65d0, 0.31d0, 0.1d0/) -! -! ### 4. Ammonium Sulfate -! awas = ammonium sulfate - real(kind=8) :: awas(100) = (/ & - 187.72d0, 187.72d0, 187.72d0, 187.72d0, 187.72d0, & - 187.72d0, 187.72d0, 187.72d0, 187.72d0, 187.72d0, & - 158.13d0, 134.41d0, 115.37d0, 100.10d0, 87.86d0, & - 78.00d0, 70.00d0, 63.45d0, 58.02d0, 53.46d0, & - 49.59d0, 46.26d0, 43.37d0, 40.84d0, 38.59d0, & - 36.59d0, 34.79d0, 33.16d0, 31.67d0, 30.31d0, & - 29.07d0, 27.91d0, 26.84d0, 25.84d0, 24.91d0, & - 24.03d0, 23.21d0, 22.44d0, 21.70d0, 21.01d0, & - 20.34d0, 19.71d0, 19.11d0, 18.54d0, 17.99d0, & - 17.46d0, 16.95d0, 16.46d0, 15.99d0, 15.54d0, & - 15.10d0, 14.67d0, 14.26d0, 13.86d0, 13.47d0, & - 13.09d0, 12.72d0, 12.36d0, 12.01d0, 11.67d0, & - 11.33d0, 11.00d0, 10.68d0, 10.37d0, 10.06d0, & - 9.75d0, 9.45d0, 9.15d0, 8.86d0, 8.57d0, & - 8.29d0, 8.01d0, 7.73d0, 7.45d0, 7.18d0, & - 6.91d0, 6.64d0, 6.37d0, 6.10d0, 5.83d0, & - 5.56d0, 5.29d0, 5.02d0, 4.74d0, 4.47d0, & - 4.19d0, 3.91d0, 3.63d0, 3.34d0, 3.05d0, & - 2.75d0, 2.45d0, 2.14d0, 1.83d0, 1.51d0, & - 1.19d0, 0.87d0, 0.56d0, 0.26d0, 0.1d0/) -! -! ### 5. Ammonium Nitrate - real(kind=8) :: awan(100) = (/ & - 960.19d0, 960.19d0, 960.19d0, 960.19d0, 960.19d0, & - 960.19d0, 960.19d0, 960.19d0, 960.19d0, 960.19d0, & - 853.15d0, 763.85d0, 688.20d0, 623.27d0, 566.92d0, & - 517.54d0, 473.91d0, 435.06d0, 400.26d0, 368.89d0, & - 340.48d0, 314.63d0, 291.01d0, 269.36d0, 249.46d0, & - 231.11d0, 214.17d0, 198.50d0, 184.00d0, 170.58d0, & - 158.15d0, 146.66d0, 136.04d0, 126.25d0, 117.24d0, & - 108.97d0, 101.39d0, 94.45d0, 88.11d0, 82.33d0, & - 77.06d0, 72.25d0, 67.85d0, 63.84d0, 60.16d0, & - 56.78d0, 53.68d0, 50.81d0, 48.17d0, 45.71d0, & - 43.43d0, 41.31d0, 39.32d0, 37.46d0, 35.71d0, & - 34.06d0, 32.50d0, 31.03d0, 29.63d0, 28.30d0, & - 27.03d0, 25.82d0, 24.67d0, 23.56d0, 22.49d0, & - 21.47d0, 20.48d0, 19.53d0, 18.61d0, 17.72d0, & - 16.86d0, 16.02d0, 15.20d0, 14.41d0, 13.64d0, & - 12.89d0, 12.15d0, 11.43d0, 10.73d0, 10.05d0, & - 9.38d0, 8.73d0, 8.09d0, 7.47d0, 6.86d0, & - 6.27d0, 5.70d0, 5.15d0, 4.61d0, 4.09d0, & - 3.60d0, 3.12d0, 2.66d0, 2.23d0, 1.81d0, & - 1.41d0, 1.03d0, 0.67d0, 0.32d0, 0.1d0/) -! -! ### 6. Ammonium Chloride - real(kind=8) :: awac(100) = (/ & - 1209.00d0, 1209.00d0, 1209.00d0, 1209.00d0, 1209.00d0,& - 1209.00d0, 1209.00d0, 1209.00d0, 1209.00d0, 1209.00d0,& - 1067.60d0, 949.27d0, 848.62d0, 761.82d0, 686.04d0,& - 619.16d0, 559.55d0, 505.92d0, 457.25d0, 412.69d0,& - 371.55d0, 333.21d0, 297.13d0, 262.81d0, 229.78d0,& - 197.59d0, 165.98d0, 135.49d0, 108.57d0, 88.29d0,& - 74.40d0, 64.75d0, 57.69d0, 52.25d0, 47.90d0,& - 44.30d0, 41.27d0, 38.65d0, 36.36d0, 34.34d0,& - 32.52d0, 30.88d0, 29.39d0, 28.02d0, 26.76d0,& - 25.60d0, 24.51d0, 23.50d0, 22.55d0, 21.65d0,& - 20.80d0, 20.00d0, 19.24d0, 18.52d0, 17.83d0,& - 17.17d0, 16.54d0, 15.93d0, 15.35d0, 14.79d0,& - 14.25d0, 13.73d0, 13.22d0, 12.73d0, 12.26d0,& - 11.80d0, 11.35d0, 10.92d0, 10.49d0, 10.08d0,& - 9.67d0, 9.28d0, 8.89d0, 8.51d0, 8.14d0,& - 7.77d0, 7.42d0, 7.06d0, 6.72d0, 6.37d0,& - 6.03d0, 5.70d0, 5.37d0, 5.05d0, 4.72d0,& - 4.40d0, 4.08d0, 3.77d0, 3.45d0, 3.14d0,& - 2.82d0, 2.51d0, 2.20d0, 1.89d0, 1.57d0,& - 1.26d0, 0.94d0, 0.62d0, 0.31d0, 0.1d0/) -! -! ### 7. Sulfuric Acid - real(kind=8) :: awsa(100) = (/ & - 34.00d0, 33.56d0, 29.22d0, 26.55d0, 24.61d0, & - 23.11d0, 21.89d0, 20.87d0, 19.99d0, 18.45d0, & - 17.83d0, 17.26d0, 16.73d0, 16.25d0, 15.80d0, & - 15.38d0, 14.98d0, 14.61d0, 14.26d0, 13.93d0, & - 13.61d0, 13.30d0, 13.01d0, 12.73d0, 12.47d0, & - 12.21d0, 11.96d0, 11.72d0, 11.49d0, 11.26d0, & - 11.04d0, 10.83d0, 10.62d0, 10.42d0, 10.23d0, & - 10.03d0, 9.85d0, 9.67d0, 9.49d0, 9.31d0, & - 9.14d0, 8.97d0, 8.81d0, 8.65d0, 8.49d0, & - 8.33d0, 8.18d0, 8.02d0, 7.87d0, 7.73d0, & - 7.58d0, 7.44d0, 7.29d0, 7.15d0, 7.01d0, & - 6.88d0, 6.74d0, 6.61d0, 6.47d0, 6.34d0, & - 6.21d0, 6.07d0, 5.94d0, 5.81d0, 5.68d0, & - 5.55d0, 5.43d0, 5.30d0, 5.17d0, 5.04d0, & - 4.91d0, 4.78d0, 4.65d0, 4.52d0, 4.39d0, & - 4.26d0, 4.13d0, 4.00d0, 3.86d0, 3.73d0, & - 3.59d0, 3.45d0, 3.31d0, 3.17d0, 3.02d0, & - 2.87d0, 2.71d0, 2.56d0, 2.39d0, 2.22d0, & - 2.05d0, 1.87d0, 1.68d0, 1.48d0, 1.27d0, & - 1.04d0, 0.80d0, 0.55d0, 0.28d0, 0.1d0/) -! -! ### 8. Ammonium Bisulfate - real(kind=8) :: awab(100) = (/ & - 312.84d0, 312.84d0, 312.84d0, 312.84d0, 312.84d0, & - 312.84d0, 312.84d0, 312.84d0, 312.84d0, 312.84d0, & - 271.43d0, 237.19d0, 208.52d0, 184.28d0, 163.64d0, & - 145.97d0, 130.79d0, 117.72d0, 106.42d0, 96.64d0, & - 88.16d0, 80.77d0, 74.33d0, 68.67d0, 63.70d0, & - 59.30d0, 55.39d0, 51.89d0, 48.76d0, 45.93d0, & - 43.38d0, 41.05d0, 38.92d0, 36.97d0, 35.18d0, & - 33.52d0, 31.98d0, 30.55d0, 29.22d0, 27.98d0, & - 26.81d0, 25.71d0, 24.67d0, 23.70d0, 22.77d0, & - 21.90d0, 21.06d0, 20.27d0, 19.52d0, 18.80d0, & - 18.11d0, 17.45d0, 16.82d0, 16.21d0, 15.63d0, & - 15.07d0, 14.53d0, 14.01d0, 13.51d0, 13.02d0, & - 12.56d0, 12.10d0, 11.66d0, 11.24d0, 10.82d0, & - 10.42d0, 10.04d0, 9.66d0, 9.29d0, 8.93d0, & - 8.58d0, 8.24d0, 7.91d0, 7.58d0, 7.26d0, & - 6.95d0, 6.65d0, 6.35d0, 6.05d0, 5.76d0, & - 5.48d0, 5.20d0, 4.92d0, 4.64d0, 4.37d0, & - 4.09d0, 3.82d0, 3.54d0, 3.27d0, 2.99d0, & - 2.70d0, 2.42d0, 2.12d0, 1.83d0, 1.52d0, & - 1.22d0, 0.90d0, 0.59d0, 0.28d0, 0.1d0/) -! -! ### 9. Sodium Bisulfate - real(kind=8) :: awsb(100) = (/ & - 55.99d0, 55.99d0, 55.99d0, 55.99d0, 55.99d0, & - 55.99d0, 55.99d0, 55.99d0, 55.99d0, 55.99d0, & - 53.79d0, 51.81d0, 49.99d0, 48.31d0, 46.75d0, & - 45.28d0, 43.91d0, 42.62d0, 41.39d0, 40.22d0, & - 39.10d0, 38.02d0, 36.99d0, 36.00d0, 35.04d0, & - 34.11d0, 33.21d0, 32.34d0, 31.49d0, 30.65d0, & - 29.84d0, 29.04d0, 28.27d0, 27.50d0, 26.75d0, & - 26.01d0, 25.29d0, 24.57d0, 23.87d0, 23.17d0, & - 22.49d0, 21.81d0, 21.15d0, 20.49d0, 19.84d0, & - 19.21d0, 18.58d0, 17.97d0, 17.37d0, 16.77d0, & - 16.19d0, 15.63d0, 15.08d0, 14.54d0, 14.01d0, & - 13.51d0, 13.01d0, 12.53d0, 12.07d0, 11.62d0, & - 11.19d0, 10.77d0, 10.36d0, 9.97d0, 9.59d0, & - 9.23d0, 8.87d0, 8.53d0, 8.20d0, 7.88d0, & - 7.57d0, 7.27d0, 6.97d0, 6.69d0, 6.41d0, & - 6.14d0, 5.88d0, 5.62d0, 5.36d0, 5.11d0, & - 4.87d0, 4.63d0, 4.39d0, 4.15d0, 3.92d0, & - 3.68d0, 3.45d0, 3.21d0, 2.98d0, 2.74d0, & - 2.49d0, 2.24d0, 1.98d0, 1.72d0, 1.44d0, & - 1.16d0, 0.87d0, 0.57d0, 0.28d0, 0.1d0/) -! -! ### 10. (NH4)3H(SO4)2 - real(kind=8) :: awlc(100) = (/ & - 125.37d0, 125.37d0, 125.37d0, 125.37d0, 125.37d0, & - 125.37d0, 125.37d0, 125.37d0, 125.37d0, 125.37d0, & - 110.10d0, 97.50d0, 86.98d0, 78.08d0, 70.49d0, & - 63.97d0, 58.33d0, 53.43d0, 49.14d0, 45.36d0, & - 42.03d0, 39.07d0, 36.44d0, 34.08d0, 31.97d0, & - 30.06d0, 28.33d0, 26.76d0, 25.32d0, 24.01d0, & - 22.81d0, 21.70d0, 20.67d0, 19.71d0, 18.83d0, & - 18.00d0, 17.23d0, 16.50d0, 15.82d0, 15.18d0, & - 14.58d0, 14.01d0, 13.46d0, 12.95d0, 12.46d0, & - 11.99d0, 11.55d0, 11.13d0, 10.72d0, 10.33d0, & - 9.96d0, 9.60d0, 9.26d0, 8.93d0, 8.61d0, & - 8.30d0, 8.00d0, 7.72d0, 7.44d0, 7.17d0, & - 6.91d0, 6.66d0, 6.42d0, 6.19d0, 5.96d0, & - 5.74d0, 5.52d0, 5.31d0, 5.11d0, 4.91d0, & - 4.71d0, 4.53d0, 4.34d0, 4.16d0, 3.99d0, & - 3.81d0, 3.64d0, 3.48d0, 3.31d0, 3.15d0, & - 2.99d0, 2.84d0, 2.68d0, 2.53d0, 2.37d0, & - 2.22d0, 2.06d0, 1.91d0, 1.75d0, 1.60d0, & - 1.44d0, 1.28d0, 1.12d0, 0.95d0, 0.79d0, & - 0.62d0, 0.45d0, 0.29d0, 0.14d0, 0.1d0/) -! -! ### 11. Calcium Nitrate - real(kind=8) :: awcn(100) = (/ & - 32.89d0, 31.46d0, 30.12d0, 28.84d0, 27.64d0, & - 26.51d0, 25.44d0, 24.44d0, 23.49d0, 22.59d0, & - 21.75d0, 20.96d0, 20.22d0, 19.51d0, 18.85d0, & - 18.23d0, 17.64d0, 17.09d0, 16.56d0, 16.07d0, & - 15.61d0, 15.17d0, 14.75d0, 14.36d0, 13.99d0, & - 13.63d0, 13.30d0, 12.98d0, 12.68d0, 12.39d0, & - 12.11d0, 11.84d0, 11.59d0, 11.35d0, 11.11d0, & - 10.88d0, 10.66d0, 10.45d0, 10.24d0, 10.04d0, & - 9.84d0, 9.65d0, 9.46d0, 9.28d0, 9.10d0, & - 8.92d0, 8.74d0, 8.57d0, 8.40d0, 8.23d0, & - 8.06d0, 7.90d0, 7.73d0, 7.57d0, 7.41d0, & - 7.25d0, 7.10d0, 6.94d0, 6.79d0, 6.63d0, & - 6.48d0, 6.33d0, 6.18d0, 6.03d0, 5.89d0, & - 5.74d0, 5.60d0, 5.46d0, 5.32d0, 5.17d0, & - 5.04d0, 4.90d0, 4.76d0, 4.62d0, 4.49d0, & - 4.35d0, 4.22d0, 4.08d0, 3.94d0, 3.80d0, & - 3.66d0, 3.52d0, 3.38d0, 3.23d0, 3.08d0, & - 2.93d0, 2.77d0, 2.60d0, 2.43d0, 2.25d0, & - 2.07d0, 1.87d0, 1.67d0, 1.45d0, 1.22d0, & - 0.97d0, 0.72d0, 0.44d0, 0.14d0, 0.1d0/) -! -! ### 12. Calcium Chloride - real(kind=8) :: awcc(100) = (/ & - 19.90d0, 19.00d0, 18.15d0, 17.35d0, 16.60d0, & - 15.89d0, 15.22d0, 14.58d0, 13.99d0, 13.43d0, & - 12.90d0, 12.41d0, 11.94d0, 11.50d0, 11.09d0, & - 10.70d0, 10.34d0, 9.99d0, 9.67d0, 9.37d0, & - 9.09d0, 8.83d0, 8.57d0, 8.34d0, 8.12d0, & - 7.91d0, 7.71d0, 7.53d0, 7.35d0, 7.19d0, & - 7.03d0, 6.88d0, 6.74d0, 6.60d0, 6.47d0, & - 6.35d0, 6.23d0, 6.12d0, 6.01d0, 5.90d0, & - 5.80d0, 5.70d0, 5.61d0, 5.51d0, 5.42d0, & - 5.33d0, 5.24d0, 5.16d0, 5.07d0, 4.99d0, & - 4.91d0, 4.82d0, 4.74d0, 4.66d0, 4.58d0, & - 4.50d0, 4.42d0, 4.34d0, 4.26d0, 4.19d0, & - 4.11d0, 4.03d0, 3.95d0, 3.87d0, 3.79d0, & - 3.72d0, 3.64d0, 3.56d0, 3.48d0, 3.41d0, & - 3.33d0, 3.25d0, 3.17d0, 3.09d0, 3.01d0, & - 2.93d0, 2.85d0, 2.76d0, 2.68d0, 2.59d0, & - 2.50d0, 2.41d0, 2.32d0, 2.23d0, 2.13d0, & - 2.03d0, 1.93d0, 1.82d0, 1.71d0, 1.59d0, & - 1.47d0, 1.35d0, 1.22d0, 1.07d0, 0.93d0, & - 0.77d0, 0.61d0, 0.44d0, 0.25d0, 0.1d0/) -! -! ### 13. Potassium Sulfate - real(kind=8) :: awps(100) = (/ & - 1014.82d0, 969.72d0, 926.16d0, 884.11d0, 843.54d0, & - 804.41d0, 766.68d0, 730.32d0, 695.30d0, 661.58d0, & - 629.14d0, 597.93d0, 567.92d0, 539.09d0, 511.41d0, & - 484.83d0, 459.34d0, 434.89d0, 411.47d0, 389.04d0, & - 367.58d0, 347.05d0, 327.43d0, 308.69d0, 290.80d0, & - 273.73d0, 257.47d0, 241.98d0, 227.24d0, 213.22d0, & - 199.90d0, 187.26d0, 175.27d0, 163.91d0, 153.15d0, & - 142.97d0, 133.36d0, 124.28d0, 115.73d0, 107.66d0, & - 100.08d0, 92.95d0, 86.26d0, 79.99d0, 74.12d0, & - 68.63d0, 63.50d0, 58.73d0, 54.27d0, 50.14d0, & - 46.30d0, 42.74d0, 39.44d0, 36.40d0, 33.59d0, & - 31.00d0, 28.63d0, 26.45d0, 24.45d0, 22.62d0, & - 20.95d0, 19.43d0, 18.05d0, 16.79d0, 15.64d0, & - 14.61d0, 13.66d0, 12.81d0, 12.03d0, 11.33d0, & - 10.68d0, 10.09d0, 9.55d0, 9.06d0, 8.60d0, & - 8.17d0, 7.76d0, 7.38d0, 7.02d0, 6.66d0, & - 6.32d0, 5.98d0, 5.65d0, 5.31d0, 4.98d0, & - 4.64d0, 4.31d0, 3.96d0, 3.62d0, 3.27d0, & - 2.92d0, 2.57d0, 2.22d0, 1.87d0, 1.53d0, & - 1.20d0, 0.87d0, 0.57d0, 0.28d0, 0.1d0/) -! -! ### 14. Potassium Bisulfate - real(kind=8) :: awpb(100) = (/ & - 55.99d0, 55.99d0, 55.99d0, 55.99d0, 55.99d0, & - 55.99d0, 55.99d0, 55.99d0, 55.99d0, 55.99d0, & - 53.79d0, 51.81d0, 49.99d0, 48.31d0, 46.75d0, & - 45.28d0, 43.91d0, 42.62d0, 41.39d0, 40.22d0, & - 39.10d0, 38.02d0, 36.99d0, 36.00d0, 35.04d0, & - 34.11d0, 33.21d0, 32.34d0, 31.49d0, 30.65d0, & - 29.84d0, 29.04d0, 28.27d0, 27.50d0, 26.75d0, & - 26.01d0, 25.29d0, 24.57d0, 23.87d0, 23.17d0, & - 22.49d0, 21.81d0, 21.15d0, 20.49d0, 19.84d0, & - 19.21d0, 18.58d0, 17.97d0, 17.37d0, 16.77d0, & - 16.19d0, 15.63d0, 15.08d0, 14.54d0, 14.01d0, & - 13.51d0, 13.01d0, 12.53d0, 12.07d0, 11.62d0, & - 11.19d0, 10.77d0, 10.36d0, 9.97d0, 9.59d0, & - 9.23d0, 8.87d0, 8.53d0, 8.20d0, 7.88d0, & - 7.57d0, 7.27d0, 6.97d0, 6.69d0, 6.41d0, & - 6.14d0, 5.88d0, 5.62d0, 5.36d0, 5.11d0, & - 4.87d0, 4.63d0, 4.39d0, 4.15d0, 3.92d0, & - 3.68d0, 3.45d0, 3.21d0, 2.98d0, 2.74d0, & - 2.49d0, 2.24d0, 1.98d0, 1.72d0, 1.44d0, & - 1.16d0, 0.87d0, 0.57d0, 0.28d0, 0.1d0/) -! -! ### 15. Magnesium Sulfate - real(kind=8) :: awms(100) =(/ & - 0.93d0, 2.50d0, 3.94d0, 5.25d0, 6.45d0, & - 7.54d0, 8.52d0, 9.40d0, 10.19d0, 10.89d0, & - 11.50d0, 12.04d0, 12.51d0, 12.90d0, 13.23d0, & - 13.50d0, 13.72d0, 13.88d0, 13.99d0, 14.07d0, & - 14.10d0, 14.09d0, 14.05d0, 13.98d0, 13.88d0, & - 13.75d0, 13.60d0, 13.43d0, 13.25d0, 13.05d0, & - 12.83d0, 12.61d0, 12.37d0, 12.13d0, 11.88d0, & - 11.63d0, 11.37d0, 11.12d0, 10.86d0, 10.60d0, & - 10.35d0, 10.09d0, 9.85d0, 9.60d0, 9.36d0, & - 9.13d0, 8.90d0, 8.68d0, 8.47d0, 8.26d0, & - 8.07d0, 7.87d0, 7.69d0, 7.52d0, 7.35d0, & - 7.19d0, 7.03d0, 6.89d0, 6.75d0, 6.62d0, & - 6.49d0, 6.37d0, 6.26d0, 6.15d0, 6.04d0, & - 5.94d0, 5.84d0, 5.75d0, 5.65d0, 5.56d0, & - 5.47d0, 5.38d0, 5.29d0, 5.20d0, 5.11d0, & - 5.01d0, 4.92d0, 4.82d0, 4.71d0, 4.60d0, & - 4.49d0, 4.36d0, 4.24d0, 4.10d0, 3.96d0, & - 3.81d0, 3.65d0, 3.48d0, 3.30d0, 3.11d0, & - 2.92d0, 2.71d0, 2.49d0, 2.26d0, 2.02d0, & - 1.76d0, 1.50d0, 1.22d0, 0.94d0, 0.64d0/) -! -! ### 16. Magnesium Nitrate - real(kind=8) :: awmn(100)= (/ & - 12.00d0, 11.84d0, 11.68d0, 11.52d0, 11.36d0, & - 11.20d0, 11.04d0, 10.88d0, 10.72d0, 10.56d0, & - 10.40d0, 10.25d0, 10.09d0, 9.93d0, 9.78d0, & - 9.63d0, 9.47d0, 9.32d0, 9.17d0, 9.02d0, & - 8.87d0, 8.72d0, 8.58d0, 8.43d0, 8.29d0, & - 8.15d0, 8.01d0, 7.87d0, 7.73d0, 7.59d0, & - 7.46d0, 7.33d0, 7.20d0, 7.07d0, 6.94d0, & - 6.82d0, 6.69d0, 6.57d0, 6.45d0, 6.33d0, & - 6.21d0, 6.01d0, 5.98d0, 5.87d0, 5.76d0, & - 5.65d0, 5.55d0, 5.44d0, 5.34d0, 5.24d0, & - 5.14d0, 5.04d0, 4.94d0, 4.84d0, 4.75d0, & - 4.66d0, 4.56d0, 4.47d0, 4.38d0, 4.29d0, & - 4.21d0, 4.12d0, 4.03d0, 3.95d0, 3.86d0, & - 3.78d0, 3.69d0, 3.61d0, 3.53d0, 3.45d0, & - 3.36d0, 3.28d0, 3.19d0, 3.11d0, 3.03d0, & - 2.94d0, 2.85d0, 2.76d0, 2.67d0, 2.58d0, & - 2.49d0, 2.39d0, 2.30d0, 2.20d0, 2.10d0, & - 1.99d0, 1.88d0, 1.77d0, 1.66d0, 1.54d0, & - 1.42d0, 1.29d0, 1.16d0, 1.02d0, 0.88d0, & - 0.73d0, 0.58d0, 0.42d0, 0.25d0, 0.1d0/) -! -! ### 17. Magnesium Chloride - real(kind=8) :: awmc(100) = (/ & - 11.24d0, 10.99d0, 10.74d0, 10.5d0, 10.26d0, & - 10.03d0, 9.81d0, 9.59d0, 9.38d0, 9.18d0, & - 8.98d0, 8.79d0, 8.60d0, 8.42d0, 8.25d0, & - 8.07d0, 7.91d0, 7.75d0, 7.59d0, 7.44d0, & - 7.29d0, 7.15d0, 7.01d0, 6.88d0, 6.75d0, & - 6.62d0, 6.50d0, 6.38d0, 6.27d0, 6.16d0, & - 6.05d0, 5.94d0, 5.85d0, 5.75d0, 5.65d0, & - 5.56d0, 5.47d0, 5.38d0, 5.30d0, 5.22d0, & - 5.14d0, 5.06d0, 4.98d0, 4.91d0, 4.84d0, & - 4.77d0, 4.70d0, 4.63d0, 4.57d0, 4.50d0, & - 4.44d0, 4.37d0, 4.31d0, 4.25d0, 4.19d0, & - 4.13d0, 4.07d0, 4.01d0, 3.95d0, 3.89d0, & - 3.83d0, 3.77d0, 3.71d0, 3.65d0, 3.58d0, & - 3.52d0, 3.46d0, 3.39d0, 3.33d0, 3.26d0, & - 3.19d0, 3.12d0, 3.05d0, 2.98d0, 2.90d0, & - 2.82d0, 2.75d0, 2.67d0, 2.58d0, 2.49d0, & - 2.41d0, 2.32d0, 2.22d0, 2.13d0, 2.03d0, & - 1.92d0, 1.82d0, 1.71d0, 1.60d0, 1.48d0, & - 1.36d0, 1.24d0, 1.11d0, 0.98d0, 0.84d0, & - 0.70d0, 0.56d0, 0.41d0, 0.25d0, 0.1d0/) -! -! ### 18. Potassium Nitrate - real(kind=8) :: awpn(100) = (/ & - 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& - 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& - 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& - 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& - 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& - 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& - 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& - 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0,& - 1000.00d0, 1000.00d0, 1000.00d0, 1000.00d0, 953.05d0,& - 881.09d0, 813.39d0, 749.78d0, 690.09d0, 634.14d0,& - 581.77d0, 532.83d0, 487.16d0, 444.61d0, 405.02d0,& - 368.26d0, 334.18d0, 302.64d0, 273.51d0, 246.67d0,& - 221.97d0, 199.31d0, 178.56d0, 159.60d0, 142.33d0,& - 126.63d0, 112.40d0, 99.54d0, 87.96d0, 77.55d0,& - 68.24d0, 59.92d0, 52.53d0, 45.98d0, 40.20d0,& - 35.11d0, 30.65d0, 26.75d0, 23.35d0, 20.40d0,& - 17.85d0, 15.63d0, 13.72d0, 12.06d0, 10.61d0,& - 9.35d0, 8.24d0, 7.25d0, 6.37d0, 5.56d0,& - 4.82d0, 4.12d0, 3.47d0, 2.86d0, 2.28d0,& - 1.74d0, 1.24d0, 0.79d0, 0.40d0, 0.1d0/) -! -! ### 19. Potassium Chloride - real(kind=8) :: awpc(100) = (/ & - 172.62d0, 165.75d0, 159.10d0, 152.67d0, 146.46d0, & - 140.45d0, 134.64d0, 129.03d0, 123.61d0, 118.38d0, & - 113.34d0, 108.48d0, 103.79d0, 99.27d0, 94.93d0, & - 90.74d0, 86.71d0, 82.84d0, 79.11d0, 75.53d0, & - 72.09d0, 68.79d0, 65.63d0, 62.59d0, 59.68d0, & - 56.90d0, 54.23d0, 51.68d0, 49.24d0, 46.91d0, & - 44.68d0, 42.56d0, 40.53d0, 38.60d0, 36.76d0, & - 35.00d0, 33.33d0, 31.75d0, 30.24d0, 28.81d0, & - 27.45d0, 26.16d0, 24.94d0, 23.78d0, 22.68d0, & - 21.64d0, 20.66d0, 19.74d0, 18.86d0, 18.03d0, & - 17.25d0, 16.51d0, 15.82d0, 15.16d0, 14.54d0, & - 13.96d0, 13.41d0, 12.89d0, 12.40d0, 11.94d0, & - 11.50d0, 11.08d0, 10.69d0, 10.32d0, 9.96d0, & - 9.62d0, 9.30d0, 8.99d0, 8.69d0, 8.40d0, & - 8.12d0, 7.85d0, 7.59d0, 7.33d0, 7.08d0, & - 6.83d0, 6.58d0, 6.33d0, 6.08d0, 5.84d0, & - 5.59d0, 5.34d0, 5.09d0, 4.83d0, 4.57d0, & - 4.31d0, 4.04d0, 3.76d0, 3.48d0, 3.19d0, & - 2.90d0, 2.60d0, 2.29d0, 1.98d0, 1.66d0, & - 1.33d0, 0.99d0, 0.65d0, 0.30d0, 0.1d0/) -end module mach_hetp_mod From 56e7a3189f87457db50330460d168c50ce8ebf01 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Thu, 11 Apr 2024 14:29:22 -0400 Subject: [PATCH 218/331] Extend volcano emissions through 2023 The volcano emissions inventory has been updated to a newer version from GMAO (v202401). These emissions extend to Jan 1, 2024. Closes https://github.com/geoschem/geos-chem/issues/2245 Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 3 +-- run/GCClassic/createRunDir.sh | 6 +++--- run/GCHP/createRunDir.sh | 6 +++--- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5eeb6fc34..185dd328f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,10 +17,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Switch from fixed to monthly timezones, which account for daylight savings time more accurately when computing emissions - Updated NOAA GMD surface CH4 boundary conditions through 2022 - Rename `NITs_Jscale_JHNO3` to `NITs_Jscale` and `NIT_Jscale_JHNO2` to `NIT_Jscale` in `geoschem_config.yml` templates -- Updated volcano emissions from GMAO v202005 product to v202302 which extends to the end of 2022 +- Updated volcano emissions from GMAO v202005 product to v202401 which extends to the end of 2024 - Use local scale height and level thickness to determine the PBL to determine the PBL top level and PBL pressure thickness - Update drydep mean diameters of aerosols to account for size distribution - ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. diff --git a/run/GCClassic/createRunDir.sh b/run/GCClassic/createRunDir.sh index 8d7dc3047..8e056988f 100755 --- a/run/GCClassic/createRunDir.sh +++ b/run/GCClassic/createRunDir.sh @@ -456,12 +456,12 @@ if [[ ${met} = "ModelE2.1" ]]; then # NOTE: Benchmark simulations always use the climatological emissions! if [[ "x${sim_name}" == "xfullchem" ]] || \ [[ "x${sim_name}" == "xaerosol" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-04/so2_volcanic_emissions_CARN_v202401.degassing_only.rc'\n" if [[ "x${sim_extra_option}" == "xbenchmark" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-04/so2_volcanic_emissions_CARN_v202401.degassing_only.rc'\n" else - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-04/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" fi fi diff --git a/run/GCHP/createRunDir.sh b/run/GCHP/createRunDir.sh index 18550eb30..1d937a482 100755 --- a/run/GCHP/createRunDir.sh +++ b/run/GCHP/createRunDir.sh @@ -284,12 +284,12 @@ fi # NOTE: Fullchem benchmarks use the climatological volcano emissions! if [[ "x${sim_name}" == "xfullchem" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-04/so2_volcanic_emissions_CARN_v202401.degassing_only.rc'\n" if [[ "x${sim_extra_option}" == "xbenchmark" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-04/so2_volcanic_emissions_CARN_v202401.degassing_only.rc'\n" else - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-04/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" fi fi From dda6a6b798be46078a861cffa5a3d1a6bb415cc2 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 11 Apr 2024 15:55:35 -0400 Subject: [PATCH 219/331] Fix remaining issues in TOMAS unit conversions In this commit, we now make sure to convert all species units (not just advected or wetdep) for TOMAS. This will make sure not to break the internal unit conversions. GeosCore/carbon_mod.F90 - Remove mapping=State_Chm%Map_Advect from calls to Convert_Spc_Units, which will convert all species units GeosCore/chemistry_mod.F90 - Deleted whitespace GeosCore/convection_mod.F90 - Deleted whitespace - Rearranged call to WASHOUT by placing input arguments first, then input/output, then output - For TOMAS only, added fromWetDep=.FALSE. keyword so that the proper unit conversion inside WASHOUT will be applied GeosCore/fullchem_mod.F90 - Update comments - Now call TOMAS routine AQOXID with fromWetDep=.FALSE. so that the proper internal unit conversion will be applied GeosCore/sulfate_mod.F90 - Remove mapping=State_Chm%Map_Advect from calls to Convert_Spc_Units, which will convert all species units - Add an error trap after routine CHEM_SO4_AQ - Now call TOMAS routine AQOXID with fromWetDep=.FALSE. so that the proper internal unit conversion will be applied GeosCore/tomas_mod.F90 - Remove commented out, obsolete unit conversion code - Remove mapping=State_Chm%Map_Advect from calls to Check_Units, which will check if all species have units of in kg. - Added fromWetDep argument to routine AQOXID. If fromWetDep is TRUE then convert units from kg/m2 -> kg. Otherwise, do no unit conversion (as units are already in kg in the calling routine). - Added UnitFactor argument to routine GETFRACTION. The unit conversion factor (either State_Met%AD(I,J,L) or State_Grid%AREA_M2(I,J)) will be passed from the calling program, depending on whether units need to be converted from kg/kg dry or from kg/m2. GeosCore/wetscav_mod.F90 - In routine COMPUTE_F: - Pass State_Met%AD(I,J,L) to GETFRACTION via the UnitFactor argument. This converts kg/kg dry -> kg for TOMAS. - In routine WETDEP: - Convert all species units for TOMAS. - Convert only wetdep species units if we are not using TOMAS. - In routine DO_RAINOUT_ONLY: - Pass State_Grid%Area_M2(I,J) to GETFRACTION via UnitFactor argument. This will convert kg/m2 -> kg for TOMAS. - In routine DO_WASHOUT_ONLY and DO_WASHOUT_AT_SFC, - Arrange arguments to WASHOUT by inputs, input/outputs, and outputs. - Pass fromWetDep=.TRUE. for TOMAS only. - Call AQOXID with fromWetDep=.TRUE. - In routine DO_COMPLETE_REEVAP, - Call AQOXID with fromWetDep-.TRUE. GeosCore/unitconv_mod.F90 - In the ConvertBox_* routines, restore loop over all species - Trimmed trailing whitespace Signed-off-by: Bob Yantosca --- GeosCore/carbon_mod.F90 | 10 +- GeosCore/chemistry_mod.F90 | 1 - GeosCore/convection_mod.F90 | 39 ++++- GeosCore/fullchem_mod.F90 | 25 ++- GeosCore/sulfate_mod.F90 | 54 +++++-- GeosCore/tomas_mod.F90 | 178 ++++++++------------- GeosCore/wetscav_mod.F90 | 307 ++++++++++++++++++------------------ GeosUtil/unitconv_mod.F90 | 128 ++++++++------- 8 files changed, 388 insertions(+), 354 deletions(-) diff --git a/GeosCore/carbon_mod.F90 b/GeosCore/carbon_mod.F90 index 818bef90a..d29c6d01d 100644 --- a/GeosCore/carbon_mod.F90 +++ b/GeosCore/carbon_mod.F90 @@ -4999,16 +4999,14 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, & CALL Timer_End( "HEMCO", RC ) ENDIF - ! Convert concentration units to [kg] for TOMAS. This will be - ! removed once TOMAS uses mixing ratio instead of mass - ! as species units (ewl, 9/11/15) + ! NOTE: For TOMAS, convert all species units, in order not to + ! break internal unit conversions (Bob Yantosca, 11 Apr 2024) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & new_units = KG_SPECIES, & - mapping = State_Chm%Map_Advect, & previous_units = previous_units, & RC = RC ) @@ -5250,13 +5248,13 @@ SUBROUTINE EMISSCARBONTOMAS( Input_Opt, State_Chm, State_Grid, State_Met, & CALL Timer_End( "HEMCO", RC ) ENDIF - ! Convert concentrations back to original units (ewl, 9/11/15) + ! NOTE: For TOMAS, convert all species units, in order not to + ! break internal unit conversions (Bob Yantosca, 11 Apr 2024) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_Advect, & new_units = previous_units, & RC = RC ) diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index e8bcb6b40..9880e78f1 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -349,7 +349,6 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF - !--------------------------------------------------------------- ! Do aerosol thermodynamic equilibrium !--------------------------------------------------------------- diff --git a/GeosCore/convection_mod.F90 b/GeosCore/convection_mod.F90 index d5ac92c8b..a15c65d5c 100644 --- a/GeosCore/convection_mod.F90 +++ b/GeosCore/convection_mod.F90 @@ -381,7 +381,7 @@ SUBROUTINE DO_CONVECTION( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF ENDIF - + END SUBROUTINE DO_CONVECTION !EOC !------------------------------------------------------------------------------ @@ -1120,15 +1120,38 @@ SUBROUTINE DO_CLOUD_CONVECTION( Input_Opt, & ! Call WASHOUT to compute the fraction of species lost ! to washout in grid box (I,J,K) - CALL WASHOUT( I, J, & - K, IC, BXHEIGHT(K), & - T(K), QDOWN, SDT, & - F_WASHOUT, H2O2s(K), SO2s(K), & + ! + ! For TOMAS, indicate that we are not calling WASHOUT + ! from wet deposition, so that the proper unit conversions + ! will be applied. -- Bob Yantosca (11 Apr 2024) + CALL WASHOUT( & + ! --- Input --- + I = I, & + J = J, & + L = K, & + N = IC, & + BXHEIGHT = BXHEIGHT(K), & + TK = T(K), & + PP = QDOWN, & + DT = SDT, & + F = F_WASHOUT, & + Input_Opt = Input_Opt, & + State_Grid = State_Grid, & + State_Met = State_Met, & #ifdef LUO_WETDEP - pHRain, & + phRain = pHRain, & +#endif +#ifdef TOMAS + fromWetDep = .FALSE., & #endif - WASHFRAC, AER, Input_Opt, & - State_Chm, State_Grid, State_Met, RC ) + ! --- Input/Output --- + State_Chm = State_Chm, & + H2O2s = H2O2s(K), & + SO2s = SO2s(K), & + ! --- Output --- + WASHFRAC = WASHFRAC, & + KIN = AER, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index de6ffcc76..de50dfa2a 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -368,7 +368,7 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & CALL Timer_End( "=> Gas-phase chem", RC ) ENDIF - ! Convert units + ! Convert units of all species to molec/cm3 for KPP CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -1512,7 +1512,6 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & ! SO4 produced via aqueous chemistry is distributed onto 30-bin ! aerosol by TOMAS subroutine AQOXID. !----------------------------------------------------------------- - CALL TOMAS_SO4_AQ( Input_Opt, State_Chm, State_Grid, & State_Met, State_Diag, RC ) IF ( Input_Opt%Verbose ) THEN @@ -1589,7 +1588,7 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & CALL Timer_End( "=> Gas-phase chem", RC ) ENDIF - ! Convert units + ! Convert units of all species back to kg CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -1707,7 +1706,7 @@ SUBROUTINE TOMAS_SO4_AQ( Input_Opt, State_Chm, State_Grid, & ! Assume success RC = GC_SUCCESS - ! Convert species from to [kg] + ! Convert species to [kg] CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & @@ -1765,8 +1764,22 @@ SUBROUTINE TOMAS_SO4_AQ( Input_Opt, State_Chm, State_Grid, & KMIN = ( BINACT1 + BINACT2 )/ 2. - CALL AQOXID( SO4OXID, KMIN, I, J, L, Input_Opt, & - State_Chm, State_Grid, State_Met, State_Diag, RC ) + ! Indicate that we are NOT calling AqOxid from wetdep, which + ! will avoid doing any further internal unit conversion (as + ! units are already in kg here). -- Bob Yantosca (11 Apr 2024) + CALL AqOxid( & + I = I, & + J = J, & + L = L, & + MOXID = SO4OXID, & + KMIN = KMIN, & + fromWetDep = .FALSE., & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + State_Diag = State_Diag, & + RC = RC ) ENDIF ENDDO ENDDO diff --git a/GeosCore/sulfate_mod.F90 b/GeosCore/sulfate_mod.F90 index b4db6b37d..12931ac31 100644 --- a/GeosCore/sulfate_mod.F90 +++ b/GeosCore/sulfate_mod.F90 @@ -541,12 +541,16 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & ENDIF ! Convert species to [v/v dry] aka [mol/mol dry] + ! NOTE: For TOMAS, convert all species units, in order not to + ! break internal unit conversions (Bob Yantosca, 11 Apr 2024) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & +#ifndef TOMAS mapping = State_Chm%Map_Advect, & +#endif new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & previous_units = previous_units, & RC = RC ) @@ -642,7 +646,7 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & ENDIF #ifdef TOMAS - !----------------------------------------------------------------- + !--------------------------------------------------------------------- ! For TOMAS microphysics: ! ! SO4 from aqueous chemistry of SO2 (in-cloud oxidation) @@ -651,9 +655,17 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & ! aerosol by TOMAS subroutine AQOXID. NOTE: This may be moved ! to tomas_mod.F90 in the future, but for now it still needs to get ! the PSO4_SO2AQ value while CHEMSULFATE is called - !----------------------------------------------------------------- - CALL CHEM_SO4_AQ( Input_Opt, State_Chm, State_Grid, State_Met, & - State_Diag, RC ) + !--------------------------------------------------------------------- + CALL CHEM_SO4_AQ( Input_Opt, State_Chm, State_Grid, & + State_Met, State_Diag, RC ) + + ! Trap potential errors + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error encountered in "CHEM_SO4_AQ"!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + IF ( Input_Opt%Verbose ) THEN CALL DEBUG_MSG( '### CHEMSULFATE: a CHEM_SO4_AQ' ) ENDIF @@ -691,12 +703,16 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & ENDIF ! Convert species to [v/v dry] aka [mol/mol dry] + ! NOTE: For TOMAS, convert all species units, in order not to + ! break internal unit conversions (Bob Yantosca, 11 Apr 2024) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & +#ifndef TOMAS mapping = State_Chm%Map_Advect, & +#endif new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, & previous_units = previous_units, & RC = RC ) @@ -739,12 +755,16 @@ SUBROUTINE CHEMSULFATE( Input_Opt, State_Chm, State_Diag, State_Grid, & ENDIF ! Convert species units back to original unit + ! NOTE: For TOMAS, convert all species units, in order not to + ! break internal unit conversions (Bob Yantosca, 11 Apr 2024) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & +#ifndef TOMAS mapping = State_Chm%Map_Advect, & +#endif new_units = previous_units, & RC = RC ) @@ -7846,12 +7866,13 @@ SUBROUTINE CHEM_SO4_AQ( Input_Opt, State_Chm, State_Grid, State_Met, & RC = GC_SUCCESS ! Convert species from to [kg] + ! NOTE: For TOMAS, convert all species units, in order not to + ! break internal unit conversions (Bob Yantosca, 11 Apr 2024) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_Advect, & new_units = KG_SPECIES, & previous_units = previous_units, & RC = RC ) @@ -7903,9 +7924,23 @@ SUBROUTINE CHEM_SO4_AQ( Input_Opt, State_Chm, State_Grid, State_Met, & KMIN = ( BINACT1 + BINACT2 )/ 2. - CALL AQOXID( SO4OXID, KMIN, I, J, L, Input_Opt, & - State_Chm, State_Grid, State_Met, & - State_Diag, RC ) + ! Indicate that we are NOT calling AqOxid from wetdep, which + ! will avoid doing any further internal unit conversion (as + ! units are already in kg here). -- Bob Yantosca (11 Apr 2024) + CALL AqOxid( & + I = I, & + J = J, & + L = L, & + MOXID = SO4OXID, & + KMIN = KMIN, & + fromWetDep = .FALSE., & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + State_Diag = State_Diag, & + RC = RC ) + ENDIF ENDDO ENDDO @@ -7913,12 +7948,13 @@ SUBROUTINE CHEM_SO4_AQ( Input_Opt, State_Chm, State_Grid, State_Met, & !$OMP END PARALLEL DO ! Convert species back to original units + ! NOTE: For TOMAS, convert all species units, in order not to + ! break internal unit conversions (Bob Yantosca, 11 Apr 2024) CALL Convert_Spc_Units( & Input_Opt = Input_Opt, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & - mapping = State_Chm%Map_Advect, & new_units = previous_units, & RC = RC ) diff --git a/GeosCore/tomas_mod.F90 b/GeosCore/tomas_mod.F90 index 3c363e2c5..b76a2a0a2 100644 --- a/GeosCore/tomas_mod.F90 +++ b/GeosCore/tomas_mod.F90 @@ -249,11 +249,9 @@ SUBROUTINE DO_TOMAS( Input_Opt, State_Chm, State_Diag, State_Grid, & ! Assume success RC = GC_SUCCESS - ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( .not. Check_Units( State_Chm, & - KG_SPECIES, & - mapping=State_Chm%Map_Advect ) ) THEN - MSG = 'Not all advected species have units "kg"!' + ! Check that species units are in [kg] + IF ( .not. Check_Units( State_Chm, KG_SPECIES ) ) THEN + MSG = 'Not all species are in kg!' LOC = 'Routine DO_TOMAS in tomas_mod.F90' CALL GC_Error( MSG, RC, LOC ) ENDIF @@ -425,11 +423,11 @@ SUBROUTINE AEROPHYS( Input_Opt, State_Chm, State_Grid, State_Met, & ! are now generally [kg/kg] in GEOS-Chem, they are converted to ! kg for TOMAS elsewhere in tomas_mod prior to calling this subroutine ! (ewl, 8/13/15) - !IF ( State_Chm%Spc_Units /= KG_SPECIES ) THEN - ! MSG = 'Incorrect species units: ' // TRIM(UNIT_STR(State_Chm%Spc_Units)) - ! LOC = 'Routine AEROPHYS in tomas_mod.F90' - ! CALL GC_Error( MSG, RC, LOC ) - !ENDIF + IF ( .not. Check_Units( State_Chm, KG_SPECIES ) ) THEN + MSG = 'Not all species are in kg!' + LOC = 'Routine AEROPHYS in tomas_mod.F90' + CALL GC_Error( MSG, RC, LOC ) + ENDIF ! Point to chemical species array [kg] Spc => State_Chm%Species @@ -3461,9 +3459,9 @@ end SUBROUTINE EZCOND !\\ ! !INTERFACE: ! - SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & - State_Chm, State_Grid, State_Met, & - State_Diag, RC ) + SUBROUTINE AQOXID( MOXID, KMIN, I, J, & + L, Input_Opt, State_Chm, State_Grid, & + State_Met, State_Diag, fromWetdep, RC ) ! ! !USES: ! @@ -3484,6 +3482,7 @@ SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input options TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology State object + LOGICAL, INTENT(IN) :: fromWetDep ! Called from wetdep? [T/F] ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -3494,6 +3493,10 @@ SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & ! INTEGER, INTENT(OUT) :: RC ! Success or failure? ! +! +! !REMARKS: +! Species units are converted to kg outside of AQOXID. +! ! !REVISION HISTORY: ! See https://github.com/geoschem/geos-chem for complete history !EOP @@ -3521,7 +3524,6 @@ SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & REAL*4 :: BOXMASS REAL*4 :: thresh CHARACTER(LEN=255) :: MSG, LOC ! (ewl) - INTEGER :: previous_units(State_Chm%nAdvect) LOGICAL, SAVE :: doPrintErr = .TRUE. @@ -3535,47 +3537,19 @@ SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & ! Assume success RC = GC_SUCCESS - ! Check that species units are in [kg] (ewl, 8/13/15) - ! Convert species concentration units to [kg] if not necessary. - ! Units are [kg/m2] if AQOXID is called from wet deposition - ! and are [kg] if called from sulfate_mod since chemistry is - ! still in [kg]. Since AQOXID is called within an (I,J,L) loop, - ! only convert units for a single grid box. Otherwise, run will - ! take too long (ewl, 9/30/15) - - ! Loop over advected species - DO K = 1, State_Chm%nAdvect - - ! Save incoming units for reverse conversion - previous_units(K) = State_Chm%Species(K)%Units - - ! Convert any units in kg/m2 to kg - IF ( State_Chm%Species(K)%Units == KG_SPECIES_PER_M2 ) THEN - CALL ConvertBox_Kgm2_to_Kg( & - I = I, & - J = J, & - L = L, & - N = K, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - isAdjoint = .FALSE. ) - ENDIF - ENDDO - - ! All advected species should now be in kg, throw an error if not - IF ( .not. Check_Units( State_Chm, & - KG_SPECIES, & - mapping=State_Chm%Map_Advect ) ) THEN - MSG = 'Not all advected species species have units of "kg"!' - LOC = 'Routine AQOXID in tomas_mod.F90' - IF ( doPrintErr ) THEN - CALL Print_Species_Units( State_Chm, State_Chm%Map_WetDep ) - doPrintErr = .FALSE. - ENDIF - CALL ERROR_STOP( MSG, LOC ) + !--------------------------------------------------------------------- + ! If called from wetdep, convert species units to kg + !--------------------------------------------------------------------- + IF ( fromWetDep ) THEN + CALL ConvertBox_Kgm2_to_Kg( & + I = I, & + J = J, & + L = L, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + isAdjoint = .FALSE. ) ENDIF - ! Point to the chemical species array Spc => State_Chm%Species PDBG = .FALSE. !For print debugging @@ -3798,20 +3772,18 @@ SUBROUTINE AQOXID( MOXID, KMIN, I, J, L, Input_Opt, & ! Free pointer memory Spc => NULL() - ! Convert State_Chm%Species units back to original units - ! if conversion occurred at start of AQOXID (ewl, 9/30/15) - DO K = 1, State_Chm%nAdvect - IF ( previous_units(K) == KG_SPECIES_PER_M2 ) THEN - CALL ConvertBox_Kg_to_Kgm2( & - I = I, & - J = J, & - L = L, & - N = K, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - isAdjoint = .FALSE. ) - ENDIF - ENDDO + !------------------------------------------------------------------------ + ! If called from wetdep, convert species units back to kg/m2. + !------------------------------------------------------------------------ + IF ( fromWetDep ) THEN + CALL ConvertBox_Kg_to_Kgm2( & + I = I, & + J = J, & + L = L, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + isAdjoint = .FALSE. ) + ENDIF END SUBROUTINE AQOXID !EOC @@ -3909,11 +3881,9 @@ SUBROUTINE SOACOND( MSOA, I, J, L, BOXVOL, TEMPTMS, PRES, BOXMASS,& RC = GC_SUCCESS SOACOND_WARNING_CT = 0 - ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( .not. Check_Units( State_Chm, & - KG_SPECIES, & - mapping=State_Chm%Map_Advect ) ) THEN - MSG = 'Not all advected species have units of "kg"!' + ! Check that species units are in [kg] + IF ( .not. Check_Units( State_Chm, KG_SPECIES ) ) THEN + MSG = 'Not all species are in kg!' LOC = 'Routine SOACOND in tomas_mod.F90' CALL ERROR_STOP( MSG, LOC ) ENDIF @@ -6908,8 +6878,9 @@ END SUBROUTINE READFRACTION !\\ ! !INTERFACE: ! - SUBROUTINE GETFRACTION( I, J, L, N, LS, State_Chm, State_Grid, & - State_Met, FRACTION, SOLFRAC ) + SUBROUTINE GETFRACTION( I, J, L, N, & + LS, State_Chm, State_Grid, State_Met, & + FRACTION, SOLFRAC, UnitFactor ) ! ! !USES: ! @@ -6929,6 +6900,7 @@ SUBROUTINE GETFRACTION( I, J, L, N, LS, State_Chm, State_Grid, & ! False= convective precip TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object TYPE(MetState), INTENT(IN) :: State_Met ! Met State object + REAL(fp), INTENT(IN) :: UnitFactor ! Unit conversion factor ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -6936,10 +6908,11 @@ SUBROUTINE GETFRACTION( I, J, L, N, LS, State_Chm, State_Grid, & ! ! !OUTPUT PARAMETERS: ! - !FRACTION : Scavenging fraction of the given grid box - !SOLFRAC : Soluble mass fraction of the aerosol popultion of the - ! given grid box - REAL(fp), INTENT(OUT) :: FRACTION, SOLFRAC + REAL(fp), INTENT(OUT) :: FRACTION ! Scavenging fraction + ! in grid box + REAL(fp), INTENT(OUT) :: SOLFRAC ! Soluble mass fraction +! ! of aerosol population +! ! in grid box ! ! !REMARKS: ! This routine is called from the convection routines (via wetscav_mod.F90 @@ -6962,7 +6935,6 @@ SUBROUTINE GETFRACTION( I, J, L, N, LS, State_Chm, State_Grid, & INTEGER :: BIN INTEGER :: OFFSET CHARACTER(LEN=255) :: MSG, LOC - REAL(fp) :: UNITFACTOR ! Pointers TYPE(SpcConc), POINTER :: Spc(:) @@ -6971,24 +6943,6 @@ SUBROUTINE GETFRACTION( I, J, L, N, LS, State_Chm, State_Grid, & ! GETFRACTION begins here !================================================================= - ! Determine factor used to convert Spc to units of [kg] locally - ! (ewl, 9/29/15) - IF ( Check_Units( State_Chm, & - KG_SPECIES_PER_M2, & - mapping=State_Chm%Map_Advect ) ) THEN - UNITFACTOR = State_Grid%AREA_M2(I,J) - - ELSE IF ( Check_Units( State_Chm, & - KG_SPECIES_PER_KG_DRY_AIR, & - mapping=State_Chm%Map_Advect ) ) THEN - UNITFACTOR = State_Met%AD(I,J,L) - - ELSE - MSG = 'Unexpected species units (not "kg/m2" or "kg/kg dry")!' - LOC = 'Routine GETFRACTION in tomas_mod.F90' - CALL ERROR_STOP( MSG, LOC ) - ENDIF - ! Point to chemical species array ! Units are now [kg/m2] in wet deposition and [kg/kg total air] in ! convection (ewl, 9/29/15) @@ -7135,11 +7089,9 @@ SUBROUTINE GETACTBIN ( I, J, L, N, LS, BINACT, State_Chm, RC ) ! Assume success RC = GC_SUCCESS - ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( .not. Check_Units( State_Chm, & - KG_SPECIES, & - mapping=State_Chm%Map_Advect ) ) THEN - MSG = 'Not all advected species have units of "kg"!' + ! Check that species units are in [kg] + IF ( .not. Check_Units( State_Chm, KG_SPECIES ) ) THEN + MSG = 'Not all species are in kg!' LOC = 'Routine GETACTBIN in tomas_mod.F90' CALL ERROR_STOP( MSG, LOC ) ENDIF @@ -7580,10 +7532,8 @@ SUBROUTINE AERO_DIADEN( LEV, Input_Opt, State_Chm, State_Grid, State_Met, & RETURN ENDIF - ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( .not. Check_Units( State_Chm, & - KG_SPECIES, & - mapping=State_Chm%Map_Advect ) ) THEN + ! Check that species units are in [kg] + IF ( State_Chm%Species(id_NK01)%Units /= KG_SPECIES ) THEN MSG = 'Not all species have units "kg"!' LOC = 'Routine AERO_DIADEN in tomas_mod.F90' CALL GC_Error( MSG, RC, LOC ) @@ -7646,11 +7596,9 @@ SUBROUTINE AERO_DIADEN( LEV, Input_Opt, State_Chm, State_Grid, State_Met, & ENDDO !$OMP END PARALLEL DO - ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( .not. Check_Units( State_Chm, & - KG_SPECIES, & - mapping=State_Chm%Map_Advect ) ) THEN - MSG = 'Not all advected species have units of "kg"!' + ! Check that species units are in [kg] + IF ( .not. Check_Units( State_Chm, KG_SPECIES ) ) THEN + MSG = 'Not all species are in kg!' LOC = 'Routine AERO_DIADEN in tomas_mod.F90' CALL GC_Error( MSG, RC, LOC ) ENDIF @@ -7765,11 +7713,9 @@ SUBROUTINE CHECKMN( II, JJ, LL, Input_Opt, State_Chm, & ERRORSWITCH = .FALSE. - ! Check that species units are in [kg] (ewl, 8/13/15) - IF ( .not. Check_Units( State_Chm, & - KG_SPECIES, & - mapping=State_Chm%Map_Advect ) ) THEN - MSG = 'Not all advected species have units "kg"!' + ! Check that species units are in [kg] + IF ( .not. Check_Units( State_Chm, KG_SPECIES ) ) THEN + MSG = 'Not all species are in kg!' LOC = 'Routine CHECKMN in tomas_mod.F90: ' // TRIM( LOCATION ) CALL ERROR_STOP( MSG, LOC ) ENDIF diff --git a/GeosCore/wetscav_mod.F90 b/GeosCore/wetscav_mod.F90 index a828fe9b7..dbaf331e3 100644 --- a/GeosCore/wetscav_mod.F90 +++ b/GeosCore/wetscav_mod.F90 @@ -612,6 +612,7 @@ SUBROUTINE COMPUTE_F( N, F, ISOL, Input_Opt, State_Chm, State_Grid, & #ifdef TOMAS USE Tomas_Mod, ONLY : GetFraction #endif + USE UnitConv_Mod ! ! !INPUT PARAMETERS: ! @@ -865,12 +866,15 @@ SUBROUTINE COMPUTE_F( N, F, ISOL, Input_Opt, State_Chm, State_Grid, & CALL F_AEROSOL( KC, KcScale, Input_Opt, State_Grid, State_Met, F ) ! Adjust F for size-resolved aerosol (multiply by XFRAC) + ! NOTE: Here species units are in kg/kg dry, so State_Met%AD(I,J,L) + ! is the unit conversion factor (Bob Yantosca, 10 Apr 2024) DO L = 2, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - CALL GETFRACTION( I, J, L, N, .FALSE., & - State_Chm, State_Grid, State_Met, & - XFRAC, SOLFRAC ) + CALL GETFRACTION( I, J, L, & + N, .FALSE., State_Chm, & + State_Grid, State_Met, XFRAC, & + SOLFRAC, State_Met%AD(I,J,L) ) F(I,J,L) = XFRAC * F(I,J,L) ENDDO ENDDO @@ -891,12 +895,15 @@ SUBROUTINE COMPUTE_F( N, F, ISOL, Input_Opt, State_Chm, State_Grid, & ! Adjust F for size-resolved aerosol number ! (multiply by XFRAC * SOLFRAC) + ! NOTE: Here species units are in kg/kg dry, so State_Met%AD(I,J,L) + ! is the unit conversion factor (Bob Yantosca, 10 Apr 2024) DO L = 2, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - CALL GETFRACTION( I, J, L, N, .FALSE., & - State_Chm, State_Grid, State_Met, & - XFRAC, SOLFRAC ) + CALL GETFRACTION( I, J, L, & + N, .FALSE., State_Chm, & + State_Grid, State_Met, XFRAC, & + SOLFRAC, State_Met%AD(I,J,L) ) F(I,J,L) = XFRAC * SOLFRAC * F(I,J,L) ENDDO ENDDO @@ -1572,14 +1579,18 @@ END FUNCTION GET_RAINFRAC !\\ ! !INTERFACE: ! - SUBROUTINE WASHOUT( I, J, L, & - N, BXHEIGHT, TK, PP, & - DT, F, H2O2s, SO2s, & + SUBROUTINE WASHOUT( I, J, L, N, & + BXHEIGHT, TK, PP, DT, & + F, H2O2s, SO2s, WASHFRAC, & + KIN, Input_Opt, State_Chm, State_Grid, & + State_Met, & #ifdef LUO_WETDEP - pHRain, & + pHRain, & +#endif +#ifdef TOMAS + fromWetDep, & #endif - WASHFRAC, KIN, Input_Opt, State_Chm, & - State_Grid, State_Met, RC ) + RC ) ! ! !USES: ! @@ -1616,6 +1627,12 @@ SUBROUTINE WASHOUT( I, J, L, & TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology State +#ifdef LUO_WETDEP + REAL(fp), INTENT(IN) :: pHRain +#endif +#ifdef TOMAS + LOGICAL, INTENT(IN) :: fromWetDep ! Called from wetdep (T/F)? +#endif ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1626,9 +1643,6 @@ SUBROUTINE WASHOUT( I, J, L, & ! computed in the sulfate ! chemistry module and ! passed here as arguments. -#ifdef LUO_WETDEP - REAL(fp), INTENT(IN) :: pHRain -#endif ! ! !OUTPUT PARAMETERS: ! @@ -1655,9 +1669,6 @@ SUBROUTINE WASHOUT( I, J, L, & #ifdef APM REAL(fp) :: RIN #endif -#ifdef TOMAS - INTEGER :: previous_units -#endif #ifdef LUO_WETDEP REAL(f8) :: Hplus, HCSO2, HCNH3, Ks1, Ks2, T_Term #endif @@ -1688,61 +1699,15 @@ SUBROUTINE WASHOUT( I, J, L, & SpcInfo => State_Chm%SpcData(N)%Info #ifdef TOMAS - !----------------------------------------------------------------- - ! TOMAS MICROPHYSICS ONLY - ! - ! Convert species concentration units to [kg] if not already - ! since TOMAS functions and routines expect [kg]. Units are - ! kg/kg total air if WASHOUT is called from convection and are - ! kg/m2 is called from DO_WASHOUT_ONLY. Since WASHOUT is called - ! within an (I,J,L) loop, only convert units for a single grid - ! box. Otherwise, run will take too long. - ! -- Lizzie Lundgren (22 Sep 2015) - ! - ! Now only convert units for the current species N. - ! -- Bob Yantosca (23 Feb 2024) - !----------------------------------------------------------------- - - ! Save original units for reverse unit conversion - previous_units = State_Chm%Species(N)%Units - - IF ( State_Chm%Species(N)%Units == KG_SPECIES_PER_KG_DRY_AIR ) THEN - !------------------------------------------ - ! WASHOUT is being called from convection, - ! so convert from "kg/kg dry" to "kg" - !------------------------------------------ - CALL ConvertBox_KgKgDry_to_Kg( & - I = I, & - J = J, & - L = L, & - N = N, & - State_Chm = State_Chm, & - State_Met = State_Met, & - isAdjoint = .FALSE. ) - - ELSE IF ( State_Chm%Species(N)%Units == KG_SPECIES_PER_M2 ) THEN - !----------------------------------------- - ! WASHOUT is being called from wetdep - ! so convert from "kg/m2" to "kg". - !----------------------------------------- - CALL ConvertBox_Kgm2_to_Kg( & - I = I, & - J = J, & - L = L, & - N = N, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - isAdjoint = .FALSE. ) - - ENDIF - - ! The species should be in kg at this point for TOMAS - IF ( State_Chm%Species(N)%Units /= KG_SPECIES ) THEN - ErrMsg = TRIM( SpcInfo%Name ) // ' is in ' // & - TRIM( UNIT_STR( State_Chm%Species(N)%Units ) ) // & - ', but needs to be in kg for TOMAS!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN + !------------------------------------------------------------------------ + ! TOMAS MICROPHYSICS ONLY: + ! If called from wetdep, convert kg/m2 -> kg + ! If called fron convection, convert kg/kg dry -> kg + !------------------------------------------------------------------------ + IF ( fromWetDep ) THEN + CALL ConvertBox_Kgm2_to_Kg( I, J, L, State_Chm, State_Grid, .FALSE. ) + ELSE + CALL ConvertBox_KgKgDry_to_Kg( I, J, L, State_Met, State_Chm, .FALSE. ) ENDIF #endif @@ -1988,41 +1953,14 @@ SUBROUTINE WASHOUT( I, J, L, & #ifdef TOMAS !------------------------------------------------------------------------ - ! TOMAS MICROPHYSICS ONLY - ! Convert State_Chm%Species%Conc units from kg back to original units - ! if conversion occurred at start of WASHOUT (ewl, 5/12/15) + ! TOMAS MICROPHYSICS ONLY: + ! If called from wetdep, convert kg -> kg/m2 + ! If called fron convection, convert kg -> kg/kg dry !------------------------------------------------------------------------ - IF ( State_Chm%Species(N)%Units == KG_SPECIES ) THEN - - !------------------------------------------ - ! WASHOUT is being called from convection, - ! so convert "kg" back to "kg/kg dry". - !------------------------------------------ - IF ( previous_units == KG_SPECIES_PER_KG_DRY_AIR ) THEN - CALL ConvertBox_Kg_to_KgKgDry( & - I = I, & - J = J, & - L = L, & - N = N, & - State_Chm = State_Chm, & - State_Met = State_Met, & - isAdjoint = .FALSE. ) - - ELSE IF ( previous_units == KG_SPECIES_PER_M2 ) THEN - - !------------------------------------------ - ! WASHOUT is being called from wetdep, - ! so convert "kg" back to "kg/m2". - !----------------------------------------- - CALL ConvertBox_Kg_to_Kgm2( & - I = I, & - J = J, & - L = L, & - N = N, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - isAdjoint = .FALSE. ) - ENDIF + IF ( fromWetDep ) THEN + CALL ConvertBox_Kg_to_Kgm2( I, J, L, State_Chm, State_Grid, .FALSE. ) + ELSE + CALL ConvertBox_Kg_to_KgKgDry( I, J, L, State_Met, State_Chm, .FALSE. ) ENDIF #endif @@ -3238,7 +3176,9 @@ SUBROUTINE WETDEP( Input_Opt, State_Chm, State_Diag, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & +#ifndef TOMAS mapping = State_Chm%Map_WetDep, & +#endif new_units = KG_SPECIES_PER_M2, & previous_units = previous_units, & RC = RC ) @@ -3833,7 +3773,9 @@ SUBROUTINE WETDEP( Input_Opt, State_Chm, State_Diag, State_Grid, & State_Chm = State_Chm, & State_Grid = State_Grid, & State_Met = State_Met, & +#ifndef TOMAS mapping = State_Chm%Map_WetDep, & +#endif new_units = previous_units, & RC = RC ) @@ -4153,20 +4095,30 @@ SUBROUTINE DO_RAINOUT_ONLY( LS, I, J, L, IDX, & ENDIF #ifdef TOMAS + ! NOTE: Here the units are kg/m2, so State_Grid%Area_M2(I,J) is + ! the proper unit conversion factor. (Bob Yantosca, 10 Apr 2024) IF ( id_NK01 > 0 ) THEN + IF ( N >= id_NK01 .and. N < id_NK01 + State_Chm%nTomasBins ) THEN - CALL GETFRACTION( I, J, L, N, LS, & - State_Chm, State_Grid, State_Met, & - XFRAC, SOLFRAC ) + CALL GETFRACTION( I, J, & + L, N, & + LS, State_Chm, & + State_Grid, State_Met, & + XFRAC, SOLFRAC, & + State_Grid%Area_M2(I,J) ) RAINFRAC = RAINFRAC * XFRAC * SOLFRAC + ELSE IF ( N >= id_SF01 .and. & N < id_DUST01 + State_Chm%nTomasBins ) THEN - CALL GETFRACTION( I, J, L, N, LS, & - State_Chm, State_Grid, State_Met, & - XFRAC, SOLFRAC ) + CALL GETFRACTION( I, J, & + L, N, & + LS, State_Chm, & + State_Grid, State_Met, & + XFRAC, SOLFRAC, & + State_Grid%Area_M2(I,J) ) RAINFRAC = RAINFRAC * XFRAC ENDIF @@ -4505,24 +4457,34 @@ SUBROUTINE DO_WASHOUT_ONLY( LS, I, J, L, & ! Call WASHOUT to compute the fraction of ! species lost to washout in grid box (I,J,L) - CALL WASHOUT( I, J, L, N, & - State_Met%BXHEIGHT(I,J,L), & - TK, & - QDOWN, & - DT, & - TF, & - State_Chm%H2O2AfterChem(I,J,L), & - State_Chm%SO2AfterChem(I,J,L), & + CALL WASHOUT( & + ! --- Input --- + I = I, & + J = J, & + L = L, & + N = N, & + BXHEIGHT = State_Met%BXHEIGHT(I,J,L), & + TK = TK, & + PP = QDOWN, & + DT = DT, & + F = TF, & + Input_Opt = Input_Opt, & + State_Grid = State_Grid, & + State_Met = State_Met, & #ifdef LUO_WETDEP - State_Chm%pHRain(I,J,L), & + phRain State_Chm%pHRain(I,J,L), & #endif - WASHFRAC, & - KIN, & - Input_Opt, & - State_Chm, & - State_Grid, & - State_Met, & - RC ) +#ifdef TOMAS + fromWetDep = .TRUE., & +#endif + ! --- Input/Output --- + State_Chm = State_Chm, & + H2O2s = State_Chm%H2O2AfterChem(I,J,L), & + SO2s = State_Chm%SO2AfterChem(I,J,L), & + ! --- Output --- + WASHFRAC = WASHFRAC, & + KIN = KIN, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN @@ -4645,7 +4607,9 @@ SUBROUTINE DO_WASHOUT_ONLY( LS, I, J, L, & ! therefore converted to [kg] locally within AQOXID. ! GAINED is now [kg/m2] ans so is multiplied ! by area prior to passing REEVAPSO2 to AQOXID (ewl, 9/30/15) - IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN + IF ( Spc(id_SO2)%Units == KG_SPECIES ) THEN + ! nothing + ELSE IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN REEVAPSO2 = GAINED * 96e+0_fp / 64e+0_fp & * State_Grid%Area_M2(I,J) ELSE @@ -4656,9 +4620,21 @@ SUBROUTINE DO_WASHOUT_ONLY( LS, I, J, L, & ENDIF RETURN ENDIF - CALL AQOXID( REEVAPSO2, KMIN, I, J, L, & - Input_Opt, State_Chm, State_Grid, & - State_Met, State_Diag, RC ) + + ! NOTE: Species units are kg here + CALL AqOxid( & + I = I, & + J = J, & + L = L, & + fromWetDep = .TRUE., & + MOXID = REEVAPSO2, & + KMIN = KMIN, & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + State_Diag = State_Diag, & + RC = RC ) ENDIF !end -added for TOMAS (win, 7/16/09) #endif @@ -4993,7 +4969,9 @@ SUBROUTINE DO_COMPLETE_REEVAP( LS, I, J, & ! therefore converted to [kg] locally within AQOXID. ! WETLOSS is now [kg/m2] and so is multiplied ! by area prior to passing REEVAPSO2 to AQOXID (ewl, 9/30/15) - IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN + IF ( Spc(id_SO2)%Units == KG_SPECIES ) THEN + ! Nothing + ELSE IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN REEVAPSO2 = - ( WETLOSS * 96e+0_fp / 64e+0_fp ) & * State_Grid%Area_M2(I,J) ELSE @@ -5005,9 +4983,20 @@ SUBROUTINE DO_COMPLETE_REEVAP( LS, I, J, & Spc => NULL() RETURN ENDIF - CALL AQOXID( REEVAPSO2, KMIN, I, J, L, & - Input_Opt, State_Chm, State_Grid, State_Met, & - State_Diag, RC ) + + CALL AqOxid( & + I = I, & + J = J, & + L = L, & + MOXID = REEVAPSO2, & + KMIN = KMIN, & + fromWetDep = .TRUE., & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + State_Diag = State_Diag, & + RC = RC ) ENDIF !end- added for TOMAS (win, 7/16/09) #endif @@ -5080,7 +5069,7 @@ SUBROUTINE DO_COMPLETE_REEVAP( LS, I, J, & State_Grid = State_Grid, & DSpc = DSpc(NW,:,I,J), & Spc = Spc(N)%Conc(I,J,:), & - RC = RC ) + RC = RC ) ENDIF ! Trap potential errors @@ -5230,24 +5219,34 @@ SUBROUTINE DO_WASHOUT_AT_SFC( LS, I, J, & ! Call WASHOUT to compute the fraction of species ! in grid box (I,J,L) that is lost to washout. - CALL WASHOUT( I, J, L, N, & - State_Met%BXHEIGHT(I,J,L), & - TK, & - QDOWN, & - DT, & - F, & - State_Chm%H2O2AfterChem(I,J,L), & - State_Chm%SO2AfterChem(I,J,L), & + CALL WASHOUT( & + ! --- Input --- + I = I, & + J = J, & + L = L, & + N = N, & + BXHEIGHT = State_Met%BXHEIGHT(I,J,L), & + TK = TK, & + PP = QDOWN, & + DT = DT, & + F = F, & + Input_Opt = Input_Opt, & + State_Grid = State_Grid, & + State_Met = State_Met, & #ifdef LUO_WETDEP - State_Chm%pHRain(I,J,L), & + phRain = State_Chm%pHRain(I,J,L), & #endif - WASHFRAC, & - KIN, & - Input_Opt, & - State_Chm, & - State_Grid, & - State_Met, & - RC ) +#ifdef TOMAS + fromWetDep = .TRUE., & +#endif + ! --- Input/Output --- + State_Chm = State_Chm, & + H2O2s = State_Chm%H2O2AfterChem(I,J,L), & + SO2s = State_Chm%SO2AfterChem(I,J,L), & + ! --- Output --- + WASHFRAC = WASHFRAC, & + KIN = KIN, & + RC = RC ) ! Trap potential errors IF ( RC /= GC_SUCCESS ) THEN diff --git a/GeosUtil/unitconv_mod.F90 b/GeosUtil/unitconv_mod.F90 index 340762c22..3def42eea 100644 --- a/GeosUtil/unitconv_mod.F90 +++ b/GeosUtil/unitconv_mod.F90 @@ -71,7 +71,6 @@ MODULE UnitConv_Mod ! ! !PRIVATE MEMBER FUNCTIONS: ! - !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! KG/KG DRY <-> V/V DRY !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -2226,13 +2225,11 @@ END SUBROUTINE ConvertSpc_Kg_to_MND ! !INTERFACE: ! SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, & - N, State_Met, State_Chm, & - isAdjoint ) + State_Met, State_Chm, isAdjoint ) ! ! !INPUT PARAMETERS: ! - INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes - INTEGER, INTENT(IN) :: N ! Species index (modelId) + INTEGER, INTENT(IN) :: I, J, L ! Grid box indices TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object LOGICAL, INTENT(IN) :: isAdjoint ! Reverse integration? ! @@ -2255,23 +2252,30 @@ SUBROUTINE ConvertBox_KgKgDry_to_Kg( I, J, L, & !EOP !------------------------------------------------------------------------------ !BOC +! +! LOCAL VARIABLES: +! + INTEGER :: N + !======================================================================== ! ConvertBox_KgKgDry_to_Kg begins here! !======================================================================== + DO N = 1, State_Chm%nSpecies - ! Convert species concentration units - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * State_Met%AD(I,J,L) + ! Convert species concentration units + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * State_Met%AD(I,J,L) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * State_Met%AD(I,J,L) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * State_Met%AD(I,J,L) + ENDIF #endif - ! Update units metadata - State_Chm%Species(N)%Units = KG_SPECIES + ! Update units metadata + State_Chm%Species(N)%Units = KG_SPECIES + ENDDO END SUBROUTINE ConvertBox_KgKgDry_to_Kg !EOC @@ -2292,13 +2296,11 @@ END SUBROUTINE ConvertBox_KgKgDry_to_Kg ! !INTERFACE: ! SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & - N, State_Met, State_Chm, & - isAdjoint ) + State_Met, State_Chm, isAdjoint ) ! ! !INPUT PARAMETERS: ! - INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes - INTEGER, INTENT(IN) :: N ! Species index (modelId) + INTEGER, INTENT(IN) :: I, J, L ! Grid box indices TYPE(MetState), INTENT(IN) :: State_Met ! Meteorology state object LOGICAL, INTENT(IN) :: isAdjoint ! Reverse integration? ! @@ -2321,23 +2323,30 @@ SUBROUTINE ConvertBox_Kg_to_KgKgDry( I, J, L, & !EOP !------------------------------------------------------------------------------ !BOC +! +! LOCAL VARIABLES: +! + INTEGER :: N + !======================================================================== ! ConvertBox_Kg_to_KgKgDry begins here! !======================================================================== + DO N = 1, State_Chm%nSpecies - ! Convert species concentration units - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / State_Met%AD(I,J,L) + ! Convert species concentration units + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) / State_Met%AD(I,J,L) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) / State_Met%AD(I,J,L) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) / State_Met%AD(I,J,L) + ENDIF #endif - ! Update units metadata - State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR + ! Update units metadata + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_DRY_AIR + ENDDO END SUBROUTINE ConvertBox_Kg_to_KgKgDry !EOC @@ -2355,14 +2364,12 @@ END SUBROUTINE ConvertBox_Kg_to_KgKgDry !\\ ! !INTERFACE: ! - SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, & - N, State_Chm, State_Grid, & - isAdjoint ) + SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, & + State_Chm, State_Grid, isAdjoint ) ! ! !INPUT PARAMETERS: ! INTEGER, INTENT(IN) :: I, J, L ! Grid box indices - INTEGER, INTENT(IN) :: N ! Species index (modelId) TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object LOGICAL, INTENT(IN) :: isAdjoint ! Reverse integration? ! @@ -2384,23 +2391,30 @@ SUBROUTINE ConvertBox_Kgm2_to_Kg( I, J, L, & !EOP !------------------------------------------------------------------------------ !BOC +! +! !LOCAL VARIABLES: +! + INTEGER :: N + !======================================================================== ! ConvertBox_Kgm2_to_Kg begins here! !======================================================================== + DO N = 1, State_Chm%nSpecies - ! Convert species concentration units - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) * State_Grid%Area_M2(I,J) + ! Convert species concentration units + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) * State_Grid%Area_M2(I,J) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) * State_Grid%Area_M2(I,J) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) * State_Grid%Area_M2(I,J) + ENDIF #endif - ! Update units metadata - State_Chm%Species(N)%Units = KG_SPECIES + ! Update units metadata + State_Chm%Species(N)%Units = KG_SPECIES + ENDDO END SUBROUTINE ConvertBox_Kgm2_to_Kg !EOC @@ -2418,14 +2432,12 @@ END SUBROUTINE ConvertBox_Kgm2_to_Kg !\\ ! !INTERFACE: ! - SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, & - N, State_Chm, State_Grid, & - isAdjoint ) + SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, & + State_Chm, State_Grid, isAdjoint ) ! ! !INPUT PARAMETERS: ! INTEGER, INTENT(IN) :: I, J, L ! Grid box indexes - INTEGER, INTENT(IN) :: N ! Species index (modelId) TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object LOGICAL, INTENT(IN) :: isAdjoint ! Reverse integration? ! @@ -2447,23 +2459,31 @@ SUBROUTINE ConvertBox_Kg_to_Kgm2( I, J, L, & !EOP !------------------------------------------------------------------------------ !BOC +!BOC +! +! !LOCAL VARIABLES: +! + INTEGER :: N + !======================================================================== ! ConvertBox_Kg_to_Kgm2 begins here! !======================================================================== + DO N = 1, State_Chm%nSpecies - ! Convert species concentration units - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) / State_Grid%Area_M2(I,J) + ! Convert species concentration units + State_Chm%Species(N)%Conc(I,J,L) = & + State_Chm%Species(N)%Conc(I,J,L) / State_Grid%Area_M2(I,J) #ifdef ADJOINT - IF ( isAdjoint ) THEN - State_Chm%SpeciesAdj(I,J,L,N) = & - State_Chm%SpeciesAdj(I,J,L,N) / State_Grid%Area_M2(I,J) - ENDIF + IF ( isAdjoint ) THEN + State_Chm%SpeciesAdj(I,J,L,N) = & + State_Chm%SpeciesAdj(I,J,L,N) / State_Grid%Area_M2(I,J) + ENDIF #endif - ! Update units metadata - State_Chm%Species(N)%Units = KG_SPECIES_PER_M2 + ! Update units metadata + State_Chm%Species(N)%Units = KG_SPECIES_PER_M2 + ENDDO END SUBROUTINE ConvertBox_Kg_to_Kgm2 !EOC @@ -2540,7 +2560,7 @@ SUBROUTINE Print_Species_Units( State_Chm, mapping ) ! USE State_Chm_Mod, ONLY : ChmState ! -! !INPUT PARAMETERS: +! !INPUT PARAMETERS: ! TYPE(ChmState), INTENT(IN) :: State_Chm ! Chemistry state object INTEGER, OPTIONAL, POINTER :: mapping(:) ! Species Id -> modelId From c2e44ab42ab20db59e2a499207eea9bd59fddfe5 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Thu, 11 Apr 2024 17:44:15 -0400 Subject: [PATCH 220/331] Update path to volcano emissions in a few more places in GCClassic/createRunDir.sh Signed-off-by: Melissa Sulprizio --- run/GCClassic/createRunDir.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/run/GCClassic/createRunDir.sh b/run/GCClassic/createRunDir.sh index 8e056988f..d5d8f60db 100755 --- a/run/GCClassic/createRunDir.sh +++ b/run/GCClassic/createRunDir.sh @@ -478,12 +478,12 @@ else # NOTE: Benchmark simulations always use the climatological emissions! if [[ "x${sim_name}" == "xfullchem" ]] || \ [[ "x${sim_name}" == "xaerosol" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-04/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" if [[ "x${sim_extra_option}" == "xbenchmark" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-04/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" else - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-03/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-04/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" fi fi From f26e033229b414112e92e3233641aadc3938f27b Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 12 Apr 2024 11:03:53 -0400 Subject: [PATCH 221/331] Fix syntax error in call to WASHOUT for LUO_WETDEP option GeosCore/wetscav_mod.F90 - Adding missing "=" sign in call to WASHOUT at line 4475 - Changed capitalization: "phRain" -> "pHRain" GeosCore/convection_mod.F90 - Changed capitalization: "phRain" -> "pHRain" Signed-off-by: Bob Yantosca --- GeosCore/convection_mod.F90 | 2 +- GeosCore/wetscav_mod.F90 | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/GeosCore/convection_mod.F90 b/GeosCore/convection_mod.F90 index a15c65d5c..ac442d9de 100644 --- a/GeosCore/convection_mod.F90 +++ b/GeosCore/convection_mod.F90 @@ -1139,7 +1139,7 @@ SUBROUTINE DO_CLOUD_CONVECTION( Input_Opt, & State_Grid = State_Grid, & State_Met = State_Met, & #ifdef LUO_WETDEP - phRain = pHRain, & + pHRain = pHRain, & #endif #ifdef TOMAS fromWetDep = .FALSE., & diff --git a/GeosCore/wetscav_mod.F90 b/GeosCore/wetscav_mod.F90 index dbaf331e3..78594bd8f 100644 --- a/GeosCore/wetscav_mod.F90 +++ b/GeosCore/wetscav_mod.F90 @@ -4472,7 +4472,7 @@ SUBROUTINE DO_WASHOUT_ONLY( LS, I, J, L, & State_Grid = State_Grid, & State_Met = State_Met, & #ifdef LUO_WETDEP - phRain State_Chm%pHRain(I,J,L), & + pHRain = State_Chm%pHRain(I,J,L), & #endif #ifdef TOMAS fromWetDep = .TRUE., & @@ -5234,7 +5234,7 @@ SUBROUTINE DO_WASHOUT_AT_SFC( LS, I, J, & State_Grid = State_Grid, & State_Met = State_Met, & #ifdef LUO_WETDEP - phRain = State_Chm%pHRain(I,J,L), & + pHRain = State_Chm%pHRain(I,J,L), & #endif #ifdef TOMAS fromWetDep = .TRUE., & From 7afde9d8604b9ce83d2292d79c7d87f2f69005bf Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 12 Apr 2024 11:42:13 -0400 Subject: [PATCH 222/331] Remove reference to unused tag in State_Chm Interfaces/GCHP/gchp_chunk_mod.F90 - In routine GCHP_CHUNK_RUN: - Add loop variable N - Removed reference to State_Chm%allSpeciesInDryMixingRatio - Now define species units in a loop over 1..nSpecies. This would avoid a compilation error when using a mask to a pointer field. Signed-off-by: Bob Yantosca --- Interfaces/GCHP/gchp_chunk_mod.F90 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Interfaces/GCHP/gchp_chunk_mod.F90 b/Interfaces/GCHP/gchp_chunk_mod.F90 index 6a8d5250f..3d266c114 100644 --- a/Interfaces/GCHP/gchp_chunk_mod.F90 +++ b/Interfaces/GCHP/gchp_chunk_mod.F90 @@ -145,7 +145,7 @@ SUBROUTINE GCHP_Chunk_Init( nymdB, nhmsB, nymdE, & ! ! !LOCAL VARIABLES: ! - INTEGER :: I, J, L, STATUS + INTEGER :: I, J, L, N, STATUS CHARACTER(LEN=ESMF_MAXSTR) :: Iam TYPE(ESMF_Config) :: CF ! Grid comp config object @@ -511,13 +511,13 @@ SUBROUTINE GCHP_Chunk_Init( nymdB, nhmsB, nymdE, & ! units as the restart file values. Note that species concentrations ! are all still zero at this point since internal state values are not ! copied to State_Chm%Species%Conc until Run (post-initialization). -# if defined( MODEL_GEOS ) - State_Chm%Species(:)%Units = KG_SPECIES_PER_KG_TOTAL_AIR - State_Chm%allSpeciesInDryMixingRatio = .FALSE. + DO N = 1, State_Chm%nSpecies +#if defined( MODEL_GEOS ) + State_Chm%Species(N)%Units = KG_SPECIES_PER_KG_TOTAL_AIR #else - State_Chm%Species(:)%Units = MOLES_SPECIES_PER_MOLES_DRY_AIR - State_Chm%allSpeciesInDryMixingRatio = .TRUE. + State_Chm%Species(N)%Units = MOLES_SPECIES_PER_MOLES_DRY_AIR #endif + ENDDO ! Initialize photolysis, including reading files for optical properties IF ( Input_Opt%ITS_A_FULLCHEM_SIM .or. & From 3a052785a60fc32471241daeae40b14ca4cd7abb Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Fri, 12 Apr 2024 13:20:57 -0400 Subject: [PATCH 223/331] Hot fix: Yrpo in volcano climatology filename The climatology file for volcano emissions for the latest update should be so2_volcanic_emissions_CARN_v202401.degassing_only.rc and not v202106. Signed-off-by: Melissa Sulprizio --- run/GCClassic/createRunDir.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run/GCClassic/createRunDir.sh b/run/GCClassic/createRunDir.sh index d5d8f60db..cd32b6edc 100755 --- a/run/GCClassic/createRunDir.sh +++ b/run/GCClassic/createRunDir.sh @@ -478,10 +478,10 @@ else # NOTE: Benchmark simulations always use the climatological emissions! if [[ "x${sim_name}" == "xfullchem" ]] || \ [[ "x${sim_name}" == "xaerosol" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-04/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_CLIMATOLOGY='\$ROOT/VOLCANO/v2024-04/so2_volcanic_emissions_CARN_v202401.degassing_only.rc'\n" if [[ "x${sim_extra_option}" == "xbenchmark" ]]; then - RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-04/so2_volcanic_emissions_CARN_v202106.degassing_only.rc'\n" + RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-04/so2_volcanic_emissions_CARN_v202401.degassing_only.rc'\n" else RUNDIR_VARS+="RUNDIR_VOLC_TABLE='\$ROOT/VOLCANO/v2024-04/\$YYYY/\$MM/so2_volcanic_emissions_Carns.\$YYYY\$MM\$DD.rc'\n" fi From 238173620790c336d740d097d06e4b0351b6f12f Mon Sep 17 00:00:00 2001 From: Obin Sturm Date: Sun, 14 Apr 2024 16:35:12 -0400 Subject: [PATCH 224/331] RC option: Run2 VMBarrier detects load imbalance --- Headers/input_opt_mod.F90 | 1 + Interfaces/GCHP/Chem_GridCompMod.F90 | 37 ++++++++++++++++++++++++++++ run/GEOS/GEOSCHEMchem_GridComp.rc | 7 ++++++ 3 files changed, 45 insertions(+) diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index 9bf7dd01c..8f81942b7 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -424,6 +424,7 @@ MODULE Input_Opt_Mod INTEGER :: KppCheckNegatives = -1 ! Check for negatives after KPP integration REAL(fp) :: KppTolScale = 1.0_fp ! Tolerance scale factor for 2nd KPP integration LOGICAL :: applyQtend = .FALSE. ! Apply water vapor tendency + LOGICAL :: GC_VMBarrier_Run2 = .FALSE. ! Flag for a parallelization barrier after Chem #else LOGICAL :: AlwaysSetH2O LOGICAL :: TurnOffHetRates diff --git a/Interfaces/GCHP/Chem_GridCompMod.F90 b/Interfaces/GCHP/Chem_GridCompMod.F90 index 669dac187..865249298 100644 --- a/Interfaces/GCHP/Chem_GridCompMod.F90 +++ b/Interfaces/GCHP/Chem_GridCompMod.F90 @@ -1081,6 +1081,12 @@ SUBROUTINE SetServices( GC, RC ) CALL MAPL_TimerAdd(GC, NAME="GC_DIAGN" , __RC__) CALL MAPL_TimerAdd(GC, NAME="GC_RAD" , __RC__) +#if defined( MODEL_GEOS ) + IF (Input_Opt%GC_VMBarrier_Run2) THEN + CALL MAPL_TimerAdd(GC, NAME="GC_VMBarrier_Run2" , __RC__) + ENDIF +#endif + ! Generic Set Services ! -------------------- CALL MAPL_GenericSetServices( GC, RC=status ) @@ -1428,6 +1434,16 @@ SUBROUTINE Initialize_( GC, Import, Export, Clock, RC ) WRITE(*,*) 'Scale KPP tolerances in second integration attempt: ', & Input_Opt%KppTolScale ENDIF + + ! Parallelization barrier for chemistry in GEOS (VMBarrier after Run2) + CALL ESMF_ConfigGetAttribute( GeosCF, DoIt, Default = -1, & + Label = "GC_VMBarrier_Run2:", & + __RC__ ) + Input_Opt%GC_VMBarrier_Run2 = ( DoIt == 1 ) + IF ( Input_Opt%AmIRoot ) THEN + WRITE(*,*) 'VMBarrier and timing after Run2: ', & + Input_Opt%GC_VMBarrier_Run2 + ENDIF #endif !======================================================================= @@ -2008,6 +2024,12 @@ SUBROUTINE Run2 ( GC, Import, Export, Clock, RC ) CHARACTER(LEN=ESMF_MAXSTR) :: Iam INTEGER :: PHASE INTEGER :: STATUS +#if defined( MODEL_GEOS ) + ! Optional VM Barrier for improved timing estimates + ! This can be set from RC (psturm, April 2024) + TYPE(ESMF_VM) :: VM ! ESMF VM object + TYPE(MAPL_MetaComp), POINTER :: STATE +#endif !======================================================================= ! Run2 starts here @@ -2031,6 +2053,21 @@ SUBROUTINE Run2 ( GC, Import, Export, Clock, RC ) ! Call run routine stage 2 CALL Run_ ( GC, IMPORT, EXPORT, CLOCK, PHASE, __RC__ ) + ! Optional timer for run 2 (psturm, April 2024) + ! More realistic timing estimates can detect load imbalances in chemistry + ! Rather than attributing this to transport operations + ! This can be set from GEOSCHEMchem_GridComp.rc +#if defined( MODEL_GEOS ) + IF (Input_Opt%GC_VMBarrier_Run2) THEN + call MAPL_GetObjectFromGC(GC, STATE, __RC__) + call ESMF_VmGetCurrent(VM, RC=STATUS) + _VERIFY(STATUS) + call MAPL_TimerOn(STATE,"GC_VMBarrier_Run2") + call ESMF_VMBarrier(vm, RC=STATUS) + call MAPL_TimerOff(STATE,"GC_VMBarrier_Run2") + ENDIF +#endif + ! Return w/ success _RETURN(ESMF_SUCCESS) diff --git a/run/GEOS/GEOSCHEMchem_GridComp.rc b/run/GEOS/GEOSCHEMchem_GridComp.rc index 6b8a2d116..243fe3403 100644 --- a/run/GEOS/GEOSCHEMchem_GridComp.rc +++ b/run/GEOS/GEOSCHEMchem_GridComp.rc @@ -14,6 +14,7 @@ # 19 Mar 2013 - R. Yantosca - MAX_TRCS should be 53, not 54 # 01 Aug 2014 - M. Long-sca - MAX_TRCS & MAX_DIAG set to 130 & 80, resp. # 07 Jun 2018 - C.Keller/K.E.Knowland - Change LLSTRAT from 59 to 40, add Calc_VUD_online +# 14 Apr 2024 - P. O. Sturm - Added optional parallelization timing flag #------------------------------------------------------------------------------ # @@ -243,3 +244,9 @@ CO_Mesosphere_FieldName: CO_CMAM # To set CH4 boundary condition from GEOS # This is not yet implemented. Set to zero for now. If you want GEOS CH4, need to activate GEOS_CH4 in HEMCO_Config.rc CH4_from_GEOS: 0 + + +# Parallelization barrier for chemistry in GEOS +# Optional VMBarrier at the end of Run2 +# If 1, the VMBarrier is on +GC_VMBarrier_Run2: 0 From dc95553d04b408f6f9bc73f11dc5f0696000349b Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 16 Apr 2024 11:45:23 -0400 Subject: [PATCH 225/331] Bug fix: Set EFYO -> CYS for TOMAS in setupConfigFiles.sh This fixes the issue described in geoschem/geos-chem #2250. run/shared/setupConfigFiles.sh - We now reset EFYO -> CYS for the SPC_ container in HEMCO_Config.rc (which is the container for restart file variables). CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- run/shared/setupConfigFiles.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/run/shared/setupConfigFiles.sh b/run/shared/setupConfigFiles.sh index e10c81d6b..0deeda069 100755 --- a/run/shared/setupConfigFiles.sh +++ b/run/shared/setupConfigFiles.sh @@ -301,6 +301,11 @@ function set_common_settings() { #------------------------------------------------------------------------ if [[ ${sim_extra_option} =~ "TOMAS" ]]; then + # Change time cycle flag to allow missing species (GCClassic only) + if [[ "x${model}" == "xGCClassic" ]]; then + sed_ie 's|EFYO|CYS|' HEMCO_Config.rc + fi + # Remove extra species in extension settings for TOMAS15 simulations if [[ "x${sim_extra_option}" == "xTOMAS15" ]]; then sed_ie 's|\/SS16\/SS17\/SS18\/SS19\/SS20\/SS21\/SS22\/SS23\/SS24\/SS25\/SS26\/SS27\/SS28\/SS29\/SS30\/SS31\/SS32\/SS33\/SS34\/SS35\/SS36\/SS37\/SS38\/SS39\/SS40||' HEMCO_Config.rc From 0c70da4597845121055e4416cf5071d36c6a68f0 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 16 Apr 2024 11:48:49 -0400 Subject: [PATCH 226/331] Bug fix: Define REEVAPSO2 when units are KG_SPECIES in wetscav_mod GeosCore/wetscav_mod.F90 - Now define REEVAPSO2 in routines DO_WASHOUT_ONLY and DO_COMPLETE_REEVAP when the units are in kg species. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 ++ GeosCore/wetscav_mod.F90 | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59e059d43..92b56bf5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. +- Change restart file time cycle flag from `EFYO` to `CYS` for TOMAS simulations to avoid missing species error. +- Now define `REEVAPSO2` in wetscav_mod when units are kg species; this avoids floating-point errors. ### Changed - Switch from fixed to monthly timezones, which account for daylight savings time more accurately when computing emissions diff --git a/GeosCore/wetscav_mod.F90 b/GeosCore/wetscav_mod.F90 index 633a331ea..ea9600791 100644 --- a/GeosCore/wetscav_mod.F90 +++ b/GeosCore/wetscav_mod.F90 @@ -4615,8 +4615,10 @@ SUBROUTINE DO_WASHOUT_ONLY( LS, I, J, L, & ! therefore converted to [kg] locally within AQOXID. ! GAINED is now [kg/m2] ans so is multiplied ! by area prior to passing REEVAPSO2 to AQOXID (ewl, 9/30/15) + + IF ( Spc(id_SO2)%Units == KG_SPECIES ) THEN - ! nothing + REEVAPSO2 = GAINED * 96e+0_fp / 64e+0_fp ELSE IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN REEVAPSO2 = GAINED * 96e+0_fp / 64e+0_fp & * State_Grid%Area_M2(I,J) @@ -4978,7 +4980,7 @@ SUBROUTINE DO_COMPLETE_REEVAP( LS, I, J, & ! WETLOSS is now [kg/m2] and so is multiplied ! by area prior to passing REEVAPSO2 to AQOXID (ewl, 9/30/15) IF ( Spc(id_SO2)%Units == KG_SPECIES ) THEN - ! Nothing + REEVAPSO2 = - ( WETLOSS * 96e+0_fp / 64e+0_fp ) ELSE IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN REEVAPSO2 = - ( WETLOSS * 96e+0_fp / 64e+0_fp ) & * State_Grid%Area_M2(I,J) From 49782e84939807d799937b2d1f59b37af18feb6e Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 16 Apr 2024 14:53:58 -0400 Subject: [PATCH 227/331] Make sure REEVAPSO2 is properly defined in kg GeosCore/wetscav_mod.F90 - Initialize REEVAPSO2 and KMIN in the loop over wetdep species - Define REEVAPSO2 and convert from kg/m2 to kg if necessary - Remove error traps, they seem to be obsolete as as all species are either in kg or kg/m2 for TOMAS Signed-off-by: Bob Yantosca --- GeosCore/wetscav_mod.F90 | 63 +++++++++++++++------------------------- 1 file changed, 23 insertions(+), 40 deletions(-) diff --git a/GeosCore/wetscav_mod.F90 b/GeosCore/wetscav_mod.F90 index ea9600791..021117017 100644 --- a/GeosCore/wetscav_mod.F90 +++ b/GeosCore/wetscav_mod.F90 @@ -4462,6 +4462,10 @@ SUBROUTINE DO_WASHOUT_ONLY( LS, I, J, L, & WETLOSS = 0e+0_fp GAINED = 0e+0_fp LOST = 0e+0_fp +#ifdef TOMAS + REEVAPSO2 = 0.0_fp + KMIN = 0 +#endif ! Call WASHOUT to compute the fraction of ! species lost to washout in grid box (I,J,L) @@ -4615,20 +4619,9 @@ SUBROUTINE DO_WASHOUT_ONLY( LS, I, J, L, & ! therefore converted to [kg] locally within AQOXID. ! GAINED is now [kg/m2] ans so is multiplied ! by area prior to passing REEVAPSO2 to AQOXID (ewl, 9/30/15) - - - IF ( Spc(id_SO2)%Units == KG_SPECIES ) THEN - REEVAPSO2 = GAINED * 96e+0_fp / 64e+0_fp - ELSE IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN - REEVAPSO2 = GAINED * 96e+0_fp / 64e+0_fp & - * State_Grid%Area_M2(I,J) - ELSE - IF ( errPrint ) THEN - ErrorMsg = 'Unexpected species units: ' // & - TRIM( UNIT_STR( Spc(id_SO2)%Units ) ) - CALL GC_Error( ErrorMsg, RC, ThisLoc ) - ENDIF - RETURN + REEVAPSO2 = GAINED * 96e+0_fp / 64e+0_fp + IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN + REEVAPSO2 = REEVAPSO2 * State_Grid%Area_M2(I,J) ENDIF ! NOTE: Species units are kg here @@ -4977,36 +4970,26 @@ SUBROUTINE DO_COMPLETE_REEVAP( LS, I, J, & ! ***NOTE*** Species concentration units are currently in ! [kg/m2] which is incompatible with TOMAS. Units are ! therefore converted to [kg] locally within AQOXID. - ! WETLOSS is now [kg/m2] and so is multiplied + ! GAINED is now [kg/m2] ans so is multiplied ! by area prior to passing REEVAPSO2 to AQOXID (ewl, 9/30/15) - IF ( Spc(id_SO2)%Units == KG_SPECIES ) THEN - REEVAPSO2 = - ( WETLOSS * 96e+0_fp / 64e+0_fp ) - ELSE IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN - REEVAPSO2 = - ( WETLOSS * 96e+0_fp / 64e+0_fp ) & - * State_Grid%Area_M2(I,J) - ELSE - IF ( errPrint ) THEN - ErrorMsg = 'Unexpected species units: ' & - // TRIM( UNIT_STR( Spc(id_SO2)%Units ) ) - CALL GC_Error( ErrorMsg, RC, ThisLoc ) - ENDIF - Spc => NULL() - RETURN + REEVAPSO2 = - ( WETLOSS * 96e+0_fp / 64e+0_fp ) + IF ( Spc(id_SO2)%Units == KG_SPECIES_PER_M2 ) THEN + REEVAPSO2 = REEVAPSO2 * State_Grid%Area_M2(I,J) ENDIF CALL AqOxid( & - I = I, & - J = J, & - L = L, & - MOXID = REEVAPSO2, & - KMIN = KMIN, & - fromWetDep = .TRUE., & - Input_Opt = Input_Opt, & - State_Chm = State_Chm, & - State_Grid = State_Grid, & - State_Met = State_Met, & - State_Diag = State_Diag, & - RC = RC ) + I = I, & + J = J, & + L = L, & + MOXID = REEVAPSO2, & + KMIN = KMIN, & + fromWetDep = .TRUE., & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Grid = State_Grid, & + State_Met = State_Met, & + State_Diag = State_Diag, & + RC = RC ) ENDIF !end- added for TOMAS (win, 7/16/09) #endif From a3fb74e7eda2249129c2acf9b088b4becb3b05c4 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 16 Apr 2024 17:57:10 -0400 Subject: [PATCH 228/331] Fix time refresh info and other issues in ExtData.rc.carbon run/GCHP/ExtData.rc.templates/ExtData.rc.carbon - Fixed several time refresh entries for GHGI_EE containers (several should have been monthly refresh but were only read once). - Fixed time refresh entries for all GHGI scale factors (these were listed as daily but should be monthly) - Removed the obsolete UPDATED_GFED_CH4 container name CHANGELOG.md - Updated accordingly --- CHANGELOG.md | 5 +- .../ExtData.rc.templates/ExtData.rc.carbon | 127 +++++++++--------- 2 files changed, 64 insertions(+), 68 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 185dd328f..94b7783bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,9 +10,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Add explicit handling of gravitational settling and hygroscopic growth in dry deposition - Added CO2, CO, and OCS single-tracer carbon simulations to the integration tests -### Fixed -- Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. - ### Changed - Switch from fixed to monthly timezones, which account for daylight savings time more accurately when computing emissions - Updated NOAA GMD surface CH4 boundary conditions through 2022 @@ -20,6 +17,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated volcano emissions from GMAO v202005 product to v202401 which extends to the end of 2024 - Use local scale height and level thickness to determine the PBL to determine the PBL top level and PBL pressure thickness - Update drydep mean diameters of aerosols to account for size distribution +- Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. +- Fixed incorrect time refresh entries and other errors in `run/GCHP/ExtData.rc.templates/ExtData.rc.carbon` ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index e4a277c92..3136441fb 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -139,58 +139,58 @@ XLAIMULTI cm2_cm-2 N Y %y4-%m2-%d2T00:00:00 none none XLAIMULTI ./HcoDir/Yuan_XL # --- Gridded GHGI v2 Express Extension (Maasakkers et al., ES&T, 2023) --- # -GHGI_EE_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OIL_TRANSPORT molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_TransmissionStorage ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__SCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_REFINING molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_TRANSPORT molec/cm2/s N Y - none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_TransmissionStorage ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LIVESTOCK_MAN molec/cm2/s N Y - none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_RICE molec/cm2/s N Y - none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__SCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__BURN molec/cm2/s N Y - none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OIL_EXPLORATION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OIL_PRODUCTION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OIL_REFINING molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OIL_TRANSPORT molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_EXPLORATION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_PRODUCTION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_TransmissionStorage ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LIVESTOCK_MAN molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_RICE molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__SCOMB molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__BURN molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_EXPLORATION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_PRODUCTION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_REFINING molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OIL_TRANSPORT molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_EXPLORATION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_PRODUCTION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_TransmissionStorage ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LIVESTOCK_MAN molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_RICE molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__SCOMB molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__BURN molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAST_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc # --- Scarpelli Mexico --- @@ -276,9 +276,6 @@ EDGAR8_CH4_SWD_INC kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_c # --- CH4: BB4MIPs historical / SSP future biomass burning inventories --- # CMIP6_BB_CH4 %y4-%m2-01T00:00:00 none none CH4_shp ./HcoDir/CMIP6/v2021-01/$GCAP2SCENARIO/$GCAP2SCENARIO_%y4.nc4 -# --- CH4: Updated GFED4 biomass burning (Yuzhong Zhang) --- -UPDATED_GFED4_CH4 kg/m2/s N Y F%y4-%m2-%d2T00:00:00 none none CH4 ./HcoDir/CH4/v2020-09/GFED/GFED4_CH4_FIRE_%y4.nc - # --- JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- JPLW_CH4 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc @@ -427,16 +424,16 @@ GMI_PROD_CO v/v/s 2005 Y F%y4-%m2-01T00:00:00 none none prod ./HcoDir/GMI/v2022 #============================================================================== # --- GHGI seasonal scale factors --- -GHGI_OTH_STA_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc -GHGI_OIL_EXP_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc -GHGI_OIL_PRD_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc -GHGI_OIL_REF_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc -GHGI_OIL_TRA_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc -GHGI_GAS_EXP_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc -GHGI_GAS_PRD_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc -GHGI_LIV_MAN_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc -GHGI_RIC_CUL_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc -GHGI_OTH_BUR_SF 1 N Y F%y4-%m2-%d2T00:00:00 none none monthly_scale_factor_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_OTH_STA_SF 1 N Y F%y4-%m2-01T00:00:00 none none monthly_scale_factor_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_OIL_EXP_SF 1 N Y F%y4-%m2-01T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_OIL_PRD_SF 1 N Y F%y4-%m2-01T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_OIL_REF_SF 1 N Y F%y4-%m2-01T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_OIL_TRA_SF 1 N Y F%y4-%m2-01T00:00:00 none none monthly_scale_factor_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_GAS_EXP_SF 1 N Y F%y4-%m2-01T00:00:00 none none monthly_scale_factor_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_GAS_PRD_SF 1 N Y F%y4-%m2-01T00:00:00 none none monthly_scale_factor_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_LIV_MAN_SF 1 N Y F%y4-%m2-01T00:00:00 none none monthly_scale_factor_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_RIC_CUL_SF 1 N Y F%y4-%m2-01T00:00:00 none none monthly_scale_factor_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc +GHGI_OTH_BUR_SF 1 N Y F%y4-%m2-01T00:00:00 none none monthly_scale_factor_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_%y4.nc # --- Scarpelli_Mexico manure and rice scale factors --- MANURE_SF 1 N Y F%y4-%m2-01T00:00:00 none none sf_ch4 ./HcoDir/CH4/v2017-10/Seasonal_SF/EMICH4_Manure_ScalingFactors.WithClimatology.nc From 500ff585de58c42763c1ff9fd4f7869e3525d3c2 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 18 Apr 2024 10:54:48 -0400 Subject: [PATCH 229/331] Rename State_Met vars FRSNO and FRLANDIC to FRSNOW and FRLANDICE Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + GeosCore/calc_met_mod.F90 | 22 ++++----- GeosCore/depo_mercury_mod.F90 | 4 +- GeosCore/hco_interface_gc_mod.F90 | 4 +- GeosCore/land_mercury_mod.F90 | 8 ++-- GeosCore/ocean_mercury_mod.F90 | 2 +- Headers/state_met_mod.F90 | 46 ++++++++++--------- Interfaces/GCHP/Includes_Before_Run.H | 2 +- Interfaces/GEOS/Includes_Before_Run.H | 4 +- Interfaces/GEOS/geos_interface.F90 | 2 +- run/CESM/HISTORY.rc | 4 +- .../HISTORY.rc.templates/HISTORY.rc.CH4 | 4 +- .../HISTORY.rc.templates/HISTORY.rc.CO2 | 4 +- .../HISTORY.rc.templates/HISTORY.rc.Hg | 4 +- .../HISTORY.rc.templates/HISTORY.rc.POPs | 4 +- .../HISTORY.rc.TransportTracers | 4 +- .../HISTORY.rc.templates/HISTORY.rc.aerosol | 4 +- .../HISTORY.rc.templates/HISTORY.rc.carbon | 4 +- .../HISTORY.rc.templates/HISTORY.rc.fullchem | 4 +- .../HISTORY.rc.templates/HISTORY.rc.metals | 4 +- .../HISTORY.rc.templates/HISTORY.rc.tagCH4 | 4 +- .../HISTORY.rc.templates/HISTORY.rc.tagCO | 4 +- .../HISTORY.rc.templates/HISTORY.rc.tagO3 | 4 +- run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 | 4 +- .../HISTORY.rc.TransportTracers | 4 +- .../HISTORY.rc.templates/HISTORY.rc.carbon | 4 +- .../HISTORY.rc.templates/HISTORY.rc.fullchem | 4 +- run/GEOS/TransportTracers/HISTORY.rc | 4 +- 28 files changed, 85 insertions(+), 82 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 185dd328f..502afe914 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated volcano emissions from GMAO v202005 product to v202401 which extends to the end of 2024 - Use local scale height and level thickness to determine the PBL to determine the PBL top level and PBL pressure thickness - Update drydep mean diameters of aerosols to account for size distribution +- Renamed State_Met%FRSNO and State_Met%FRLANDIC to State_Met%FRSNOW and State_Met%FRLANDICE ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. diff --git a/GeosCore/calc_met_mod.F90 b/GeosCore/calc_met_mod.F90 index ddfbb9b5c..3f25721c8 100644 --- a/GeosCore/calc_met_mod.F90 +++ b/GeosCore/calc_met_mod.F90 @@ -226,7 +226,7 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & REAL(fp) :: SPHU_kgkg, AVGW_moist, H, FRAC REAL(fp) :: Pb, Pt, XH2O, ADmoist LOGICAL :: UpdtMR - REAL(fp) :: FRLAND_NOSNO_NOICE, FRWATER, FRICE, FRSNO + REAL(fp) :: FRLAND_NOSNOW_NOICE, FRWATER, FRICE, FRSNOW ! Arrays LOGICAL :: IsLocNoon (State_Grid%NX,State_Grid%NY) @@ -277,7 +277,7 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & ! Pre-compute local solar time = UTC + Lon/15 !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, FRLAND_NOSNO_NOICE, FRWATER, FRICE, FRSNO ) + !$OMP PRIVATE( I, J, FRLAND_NOSNOW_NOICE, FRWATER, FRICE, FRSNOW ) DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX @@ -293,6 +293,9 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & IsLocNoon(I,J) = ( LocTimeSec(I,J) <= 43200 .and. & LocTimeSec(I,J) + Dt_Sec >= 43200 ) + ! Snow + FRSNOW = State_Met%FRSNOW(I,J) + ! Land without snow or ice FRLAND_NOSNO_NOICE = State_Met%FRLAND(I,J) - & (State_Met%FRLAND(I,J)*State_Met%FRSNO(I,J)) @@ -301,16 +304,13 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & FRWATER = State_Met%FRLAKE(I,J) + State_Met%FROCEAN(I,J) - State_Met%FRSEAICE(I,J) ! Land ice and sea ice - FRICE = State_Met%FRLANDIC(I,J) + State_Met%FRSEAICE(I,J) - - ! Snow - FRSNO = State_Met%FRSNO(I,J) - + FRICE = State_Met%FRLANDICE(I,J) + State_Met%FRSEAICE(I,J) + ! Set IsLand, IsWater, IsIce, IsSnow based on max fractional area - State_Met%IsLand(I,J) = (FRLAND_NOSNO_NOICE > MAX(FRWATER, FRICE, FRSNO)) - State_Met%IsWater(I,J) = (FRWATER > MAX(FRLAND_NOSNO_NOICE, FRICE, FRSNO)) - State_Met%IsIce(I,J) = (FRICE > MAX(FRLAND_NOSNO_NOICE, FRWATER, FRSNO)) - State_Met%IsSnow(I,J) = (FRSNO > MAX(FRLAND_NOSNO_NOICE, FRWATER, FRICE)) + State_Met%IsLand(I,J) = (FRLAND_NOSNOW_NOICE > MAX(FRWATER, FRICE, FRSNOW)) + State_Met%IsWater(I,J) = (FRWATER > MAX(FRLAND_NOSNOW_NOICE, FRICE, FRSNOW)) + State_Met%IsIce(I,J) = (FRICE > MAX(FRLAND_NOSNOW_NOICE, FRWATER, FRSNOW)) + State_Met%IsSnow(I,J) = (FRSNOW > MAX(FRLAND_NOSNOW_NOICE, FRWATER, FRICE)) ENDDO ENDDO diff --git a/GeosCore/depo_mercury_mod.F90 b/GeosCore/depo_mercury_mod.F90 index 5f2ac2f97..bca9724fa 100644 --- a/GeosCore/depo_mercury_mod.F90 +++ b/GeosCore/depo_mercury_mod.F90 @@ -269,9 +269,9 @@ SUBROUTINE ADD_HG2_SNOWPACK( I, J, DEP_Hg2, State_Met, State_Chm, State_Diag ) DT = GET_TS_CHEM() ! Don't let fraction be greater than 1 - FRAC_SNOW_OR_ICE = MIN( State_Met%FRSNO(I,J) + & + FRAC_SNOW_OR_ICE = MIN( State_Met%FRSNOW(I,J) + & State_Met%FRSEAICE(I,J) + & - State_Met%FRLANDIC(I,J), 1e+0_fp) + State_Met%FRLANDICE(I,J), 1e+0_fp) IS_SNOW_OR_ICE = ( FRAC_SNOW_OR_ICE > 0e+0_fp ) ! Ocean fraction (vs land) diff --git a/GeosCore/hco_interface_gc_mod.F90 b/GeosCore/hco_interface_gc_mod.F90 index c35abcb67..97f70447a 100644 --- a/GeosCore/hco_interface_gc_mod.F90 +++ b/GeosCore/hco_interface_gc_mod.F90 @@ -4816,8 +4816,8 @@ SUBROUTINE Compute_Sflx_for_Vdiff( Input_Opt, State_Chm, State_Diag, & ! included emission from these surfaces and most field studies ! suggest Hg(0) emissions exceed deposition during sunlit hours. fracNoHg0Dep = MIN( State_Met%FROCEAN(I,J) + & - State_Met%FRSNO(I,J) + & - State_Met%FRLANDIC(I,J), 1e+0_fp) + State_Met%FRSNOW(I,J) + & + State_Met%FRLANDICE(I,J), 1e+0_fp) zeroHg0Dep = ( fracNoHg0Dep > 0e+0_fp ) IF ( zeroHg0Dep ) THEN diff --git a/GeosCore/land_mercury_mod.F90 b/GeosCore/land_mercury_mod.F90 index 57e7aed9b..a315f6c6c 100644 --- a/GeosCore/land_mercury_mod.F90 +++ b/GeosCore/land_mercury_mod.F90 @@ -113,11 +113,11 @@ SUBROUTINE LAND_MERCURY_FLUX( LFLUX, LHGSNOW, State_Grid, State_Met ) DO I = 1, State_Grid%NX ! Distinguish between ice/snow and snow-free land - FRAC_SNOW_OR_ICE = MIN( State_Met%FRSNO(I,J) + & + FRAC_SNOW_OR_ICE = MIN( State_Met%FRSNOW(I,J) + & State_Met%FRSEAICE(I,J) + & - State_Met%FRLANDIC(I,J), 1e+0_fp) + State_Met%FRLANDICE(I,J), 1e+0_fp) FRAC_SNOWFREE_LAND = MAX( State_Met%FRLAND(I,J) - & - State_Met%FRSNO(I,J), 0e+0_fp) + State_Met%FRSNOW(I,J), 0e+0_fp) IS_LAND_OR_ICE = (( FRAC_SNOWFREE_LAND > 0e+0_fp ) .OR. & ( FRAC_SNOW_OR_ICE > 0e+0_fp )) @@ -485,7 +485,7 @@ SUBROUTINE SOILEMIS( EHg0_dist, EHg0_so, State_Grid, State_Met ) DO I=1, State_Grid%NX FRAC_SNOWFREE_LAND = MAX( State_Met%FRLAND(I,J) - & - State_Met%FRSNO(I,J), 0e+0_fp ) + State_Met%FRSNOW(I,J), 0e+0_fp ) IS_SNOWFREE_LAND = ( FRAC_SNOWFREE_LAND > 0e+0_fp ) ! First, assume no soil emissions (e.g. for snow/water/ice) diff --git a/GeosCore/ocean_mercury_mod.F90 b/GeosCore/ocean_mercury_mod.F90 index 42b1e2435..208a21d2e 100644 --- a/GeosCore/ocean_mercury_mod.F90 +++ b/GeosCore/ocean_mercury_mod.F90 @@ -600,7 +600,7 @@ SUBROUTINE DELIVER_SNOW_HG( SNOW_Hg2aq, I, J, State_Met, & IS_OPEN_OCEAN = ( ( State_Met%FROCEAN(I,J) - & State_Met%FRSEAICE(I,J) ) > 0e+0_fpp ) IS_OPEN_LAND = ( ( State_Met%FRLAND(I,J) - & - State_Met%FRSNO(I,J) ) > 0e+0_fpp ) + State_Met%FRSNOW(I,J) ) > 0e+0_fpp ) IS_MELT = ( State_Met%TS(I,J) >= 276e+0_fpp ) diff --git a/Headers/state_met_mod.F90 b/Headers/state_met_mod.F90 index b074a005f..108d3cf4d 100644 --- a/Headers/state_met_mod.F90 +++ b/Headers/state_met_mod.F90 @@ -64,10 +64,12 @@ MODULE State_Met_Mod REAL(fp), POINTER :: FRCLND (:,: ) ! Olson land fraction [1] REAL(fp), POINTER :: FRLAKE (:,: ) ! Fraction of lake [1] REAL(fp), POINTER :: FRLAND (:,: ) ! Fraction of land [1] - REAL(fp), POINTER :: FRLANDIC (:,: ) ! Fraction of land ice [1] REAL(fp), POINTER :: FROCEAN (:,: ) ! Fraction of ocean [1] REAL(fp), POINTER :: FRSEAICE (:,: ) ! Sfc sea ice fraction - REAL(fp), POINTER :: FRSNO (:,: ) ! Sfc snow fraction + REAL(fp), POINTER :: FRLANDICE (:,: ) ! Fraction of land ice type in grid + ! box [1] + REAL(fp), POINTER :: FRSNOW (:,: ) ! Fraction of snow over land in + ! grid box [1] REAL(fp), POINTER :: GWETROOT (:,: ) ! Root soil wetness [1] REAL(fp), POINTER :: GWETTOP (:,: ) ! Top soil moisture [1] REAL(fp), POINTER :: HFLUX (:,: ) ! Sensible heat flux [W/m2] @@ -373,10 +375,10 @@ SUBROUTINE Zero_State_Met( State_Met, RC ) State_Met%FRCLND => NULL() State_Met%FRLAKE => NULL() State_Met%FRLAND => NULL() - State_Met%FRLANDIC => NULL() + State_Met%FRLANDICE => NULL() State_Met%FROCEAN => NULL() State_Met%FRSEAICE => NULL() - State_Met%FRSNO => NULL() + State_Met%FRSNOW => NULL() State_Met%GWETROOT => NULL() State_Met%GWETTOP => NULL() State_Met%HFLUX => NULL() @@ -801,15 +803,15 @@ SUBROUTINE Init_State_Met( Input_Opt, State_Grid, State_Met, RC ) ENDIF !------------------------------------------------------------------------ - ! FRLANDIC [1] + ! FRLANDICE [1] !------------------------------------------------------------------------ - metId = 'FRLANDIC' + metId = 'FRLANDICE' CALL Init_and_Register( & Input_Opt = Input_Opt, & State_Met = State_Met, & State_Grid = State_Grid, & metId = metId, & - Ptr2Data = State_Met%FRLANDIC, & + Ptr2Data = State_Met%FRLANDICE, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN @@ -855,15 +857,15 @@ SUBROUTINE Init_State_Met( Input_Opt, State_Grid, State_Met, RC ) ENDIF !------------------------------------------------------------------------ - ! FRSNO [1] + ! FRSNOW [1] !------------------------------------------------------------------------ - metId = 'FRSNO' + metId = 'FRSNOW' CALL Init_and_Register( & Input_Opt = Input_Opt, & State_Met = State_Met, & State_Grid = State_Grid, & metId = metId, & - Ptr2Data = State_Met%FRSNO, & + Ptr2Data = State_Met%FRSNOW, & RC = RC ) IF ( RC /= GC_SUCCESS ) THEN @@ -3329,11 +3331,11 @@ SUBROUTINE Cleanup_State_Met( State_Met, RC ) State_Met%FRLAND => NULL() ENDIF - IF ( ASSOCIATED( State_Met%FRLANDIC ) ) THEN - DEALLOCATE( State_Met%FRLANDIC, STAT=RC ) - CALL GC_CheckVar( 'State_Met%FRLANDIC', 2, RC ) + IF ( ASSOCIATED( State_Met%FRLANDICE ) ) THEN + DEALLOCATE( State_Met%FRLANDICE, STAT=RC ) + CALL GC_CheckVar( 'State_Met%FRLANDICE', 2, RC ) IF ( RC /= GC_SUCCESS ) RETURN - State_Met%FRLANDIC => NULL() + State_Met%FRLANDICE => NULL() ENDIF IF ( ASSOCIATED( State_Met%FROCEAN ) ) THEN @@ -3350,11 +3352,11 @@ SUBROUTINE Cleanup_State_Met( State_Met, RC ) State_Met%FRSEAICE => NULL() ENDIF - IF ( ASSOCIATED( State_Met%FRSNO ) ) THEN - DEALLOCATE( State_Met%FRSNO, STAT=RC ) - CALL GC_CheckVar( 'State_Met%FRSNO', 2, RC ) + IF ( ASSOCIATED( State_Met%FRSNOW ) ) THEN + DEALLOCATE( State_Met%FRSNOW, STAT=RC ) + CALL GC_CheckVar( 'State_Met%FRSNOW', 2, RC ) IF ( RC /= GC_SUCCESS ) RETURN - State_Met%FRSNO => NULL() + State_Met%FRSNOW => NULL() ENDIF IF ( ASSOCIATED( State_Met%GWETROOT ) ) THEN @@ -4575,8 +4577,8 @@ SUBROUTINE Get_Metadata_State_Met( am_I_Root, metadataID, Found, RC, & IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 - CASE ( 'FRLANDIC' ) - IF ( isDesc ) Desc = 'Fraction of land ice' + CASE ( 'FRLANDICE' ) + IF ( isDesc ) Desc = 'Fraction of land ice type in grid box' IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 @@ -4590,8 +4592,8 @@ SUBROUTINE Get_Metadata_State_Met( am_I_Root, metadataID, Found, RC, & IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 - CASE ( 'FRSNO' ) - IF ( isDesc ) Desc = 'Fraction of snow on surface' + CASE ( 'FRSNOW' ) + IF ( isDesc ) Desc = 'Fraction of snow on land in grid box' IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 diff --git a/Interfaces/GCHP/Includes_Before_Run.H b/Interfaces/GCHP/Includes_Before_Run.H index 814f22521..f1584bb8b 100644 --- a/Interfaces/GCHP/Includes_Before_Run.H +++ b/Interfaces/GCHP/Includes_Before_Run.H @@ -35,7 +35,7 @@ State_Met%FRLAND = FRLAND ! 1 State_Met%FROCEAN = FROCEAN ! 1 State_Met%FRLAKE = FRLAKE ! 1 - State_Met%FRLANDIC = FRLANDIC ! 1 + State_Met%FRLANDICE = FRLANDIC ! 1 State_Met%FRSEAICE = FRSEAICE ! 1 State_Met%FRSNO = FRSNO ! 1 State_Met%QV2M = QV2M ! 1 diff --git a/Interfaces/GEOS/Includes_Before_Run.H b/Interfaces/GEOS/Includes_Before_Run.H index 37a6d9888..5ec185a7f 100644 --- a/Interfaces/GEOS/Includes_Before_Run.H +++ b/Interfaces/GEOS/Includes_Before_Run.H @@ -48,11 +48,11 @@ State_Met%EFLUX = LHFX ! W/m2 State_Met%FRCLND = FRLAND ! unitless State_Met%FRLAND = FRLAND ! unitless - State_Met%FRLANDIC = FRLANDICE ! unitless + State_Met%FRLANDICE = FRLANDICE ! unitless State_Met%FROCEAN = FROCEAN ! unitless State_Met%FRLAKE = FRLAKE ! unitless ! State_Met%FRSEAICE = not used - State_Met%FRSNO = ASNOW ! unitless + State_Met%FRSNOW = ASNOW ! unitless State_Met%GWETTOP = WET1 ! unitless State_Met%GWETROOT = WET2 ! unitless ! State_Met%ITY = ITY ! unitless diff --git a/Interfaces/GEOS/geos_interface.F90 b/Interfaces/GEOS/geos_interface.F90 index ec14c8882..a379fafed 100644 --- a/Interfaces/GEOS/geos_interface.F90 +++ b/Interfaces/GEOS/geos_interface.F90 @@ -1414,7 +1414,7 @@ SUBROUTINE GEOS_Diagnostics( GC, IMPORT, EXPORT, Clock, Phase, & ! Locally compute if over continuous land (formerly used LWI) SfcTypeIndex = MAXLOC( (/ & - State_Met%FRLAND(I,J) + State_Met%FRLANDIC(I,J) & + State_Met%FRLAND(I,J) + State_Met%FRLANDICE(I,J) & + State_Met%FRLAKE(I,J), & State_Met%FRSEAICE(I,J), & State_Met%FROCEAN(I,J) - State_Met%FRSEAICE(I,J) & diff --git a/run/CESM/HISTORY.rc b/run/CESM/HISTORY.rc index f7deb79bb..255bf1481 100644 --- a/run/CESM/HISTORY.rc +++ b/run/CESM/HISTORY.rc @@ -724,10 +724,10 @@ COLLECTIONS: 'Metrics', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 index a52c87d18..d175f2487 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 @@ -282,10 +282,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 index 19c256ab1..767356540 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 @@ -240,10 +240,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg index fcd95a976..69d8de0a8 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg @@ -341,10 +341,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.POPs b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.POPs index b1c87292d..d88f59159 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.POPs +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.POPs @@ -219,10 +219,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers index f7ca9a770..29061c447 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers @@ -281,10 +281,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol index 0935c3ca5..2bbcb136d 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol @@ -416,10 +416,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon index 684c560e8..b0d89c647 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon @@ -283,10 +283,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem index 8835b7d30..8b7be3e76 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem @@ -744,10 +744,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals index daae44a53..fa813dac3 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals @@ -248,10 +248,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 index b4417d230..c8f6e2fa2 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 @@ -242,10 +242,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO index ff5aad1e8..e905d6354 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO @@ -255,10 +255,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 index a2048c4df..b9a2a6f43 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 @@ -281,10 +281,10 @@ COLLECTIONS: 'Restart', 'Met_FRCLND ', 'Met_FRLAKE ', 'Met_FRLAND ', - 'Met_FRLANDIC ', + 'Met_FRLANDICE ', 'Met_FROCEAN ', 'Met_FRSEAICE ', - 'Met_FRSNO ', + 'Met_FRSNOW ', 'Met_GWETROOT ', 'Met_GWETTOP ', 'Met_HFLUX ', diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 index e2d06b54e..ac455f1c2 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.CO2 @@ -303,10 +303,10 @@ COLLECTIONS: 'Emissions', 'Met_FRCLND ', 'GCHPchem', 'Met_FRLAKE ', 'GCHPchem', 'Met_FRLAND ', 'GCHPchem', - 'Met_FRLANDIC ', 'GCHPchem', + 'Met_FRLANDICE ', 'GCHPchem', 'Met_FROCEAN ', 'GCHPchem', 'Met_FRSEAICE ', 'GCHPchem', - 'Met_FRSNO ', 'GCHPchem', + 'Met_FRSNOW ', 'GCHPchem', 'Met_GWETROOT ', 'GCHPchem', 'Met_GWETTOP ', 'GCHPchem', 'Met_HFLUX ', 'GCHPchem', diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers index be57c3106..c0705bd7b 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.TransportTracers @@ -655,10 +655,10 @@ COLLECTIONS: 'Emissions', 'Met_FRCLND ', 'GCHPchem', 'Met_FRLAKE ', 'GCHPchem', 'Met_FRLAND ', 'GCHPchem', - 'Met_FRLANDIC ', 'GCHPchem', + 'Met_FRLANDICE ', 'GCHPchem', 'Met_FROCEAN ', 'GCHPchem', 'Met_FRSEAICE ', 'GCHPchem', - 'Met_FRSNO ', 'GCHPchem', + 'Met_FRSNOW ', 'GCHPchem', 'Met_GWETROOT ', 'GCHPchem', 'Met_GWETTOP ', 'GCHPchem', 'Met_HFLUX ', 'GCHPchem', diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon index d0e8e4834..3b3b09173 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.carbon @@ -358,10 +358,10 @@ COLLECTIONS: 'Emissions', 'Met_FRCLND ', 'GCHPchem', 'Met_FRLAKE ', 'GCHPchem', 'Met_FRLAND ', 'GCHPchem', - 'Met_FRLANDIC ', 'GCHPchem', + 'Met_FRLANDICE ', 'GCHPchem', 'Met_FROCEAN ', 'GCHPchem', 'Met_FRSEAICE ', 'GCHPchem', - 'Met_FRSNO ', 'GCHPchem', + 'Met_FRSNOW ', 'GCHPchem', 'Met_GWETROOT ', 'GCHPchem', 'Met_GWETTOP ', 'GCHPchem', 'Met_HFLUX ', 'GCHPchem', diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem index a35274364..5b6846353 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem @@ -2485,10 +2485,10 @@ COLLECTIONS: @#'DefaultCollection', #'Met_FRCLND ', 'GCHPchem', #'Met_FRLAKE ', 'GCHPchem', #'Met_FRLAND ', 'GCHPchem', - #'Met_FRLANDIC ', 'GCHPchem', + #'Met_FRLANDICE ', 'GCHPchem', #'Met_FROCEAN ', 'GCHPchem', #'Met_FRSEAICE ', 'GCHPchem', - #'Met_FRSNO ', 'GCHPchem', + #'Met_FRSNOW ', 'GCHPchem', #'Met_GWETROOT ', 'GCHPchem', #'Met_GWETTOP ', 'GCHPchem', #'Met_HFLUX ', 'GCHPchem', diff --git a/run/GEOS/TransportTracers/HISTORY.rc b/run/GEOS/TransportTracers/HISTORY.rc index 260f5b7ea..a71c9ceab 100644 --- a/run/GEOS/TransportTracers/HISTORY.rc +++ b/run/GEOS/TransportTracers/HISTORY.rc @@ -1830,10 +1830,10 @@ PC360x181-DC.LM: 72 'Met_FRCLND ', 'GEOSCHEMCHEM', 'Met_FRLAKE ', 'GEOSCHEMCHEM', 'Met_FRLAND ', 'GEOSCHEMCHEM', - 'Met_FRLANDIC ', 'GEOSCHEMCHEM', + 'Met_FRLANDICE ', 'GEOSCHEMCHEM', 'Met_FROCEAN ', 'GEOSCHEMCHEM', 'Met_FRSEAICE ', 'GEOSCHEMCHEM', - 'Met_FRSNO ', 'GEOSCHEMCHEM', + 'Met_FRSNOW ', 'GEOSCHEMCHEM', 'Met_GWETROOT ', 'GEOSCHEMCHEM', 'Met_GWETTOP ', 'GEOSCHEMCHEM', 'Met_HFLUX ', 'GEOSCHEMCHEM', From f9a823ff4e57ca8f5f46bb4fbca42b6435fc7443 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 18 Apr 2024 10:55:49 -0400 Subject: [PATCH 230/331] Convert State_Met%FRSNOW to fraction grid box not fraction land Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + GeosCore/calc_met_mod.F90 | 3 +-- GeosCore/flexgrid_read_mod.F90 | 13 ++++++++++++- Interfaces/GCHP/Includes_Before_Run.H | 9 ++++++++- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 502afe914..1140b83da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Update `HEMCO_Config.rc.carbon` and `ExtData.rc.carbon` templates for consistency - Updated several emissions files for CO and CH4 for COARDS and MAPL compliance - Fixed several issues in GCHP single-species carbon simulation setup scripts +- Fixed State_Met%FRSNO to be fraction of grid box with snow rather than fraction of land with snow ### Removed - Legacy binary punch diagnostic code contained within `#ifdef BPCH_DIAG` blocks diff --git a/GeosCore/calc_met_mod.F90 b/GeosCore/calc_met_mod.F90 index 3f25721c8..2db7000e6 100644 --- a/GeosCore/calc_met_mod.F90 +++ b/GeosCore/calc_met_mod.F90 @@ -297,8 +297,7 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & FRSNOW = State_Met%FRSNOW(I,J) ! Land without snow or ice - FRLAND_NOSNO_NOICE = State_Met%FRLAND(I,J) - & - (State_Met%FRLAND(I,J)*State_Met%FRSNO(I,J)) + FRLAND_NOSNOW_NOICE = State_Met%FRLAND(I,J) - State_Met%FRSNOW(I,J) ! Water without sea ice FRWATER = State_Met%FRLAKE(I,J) + State_Met%FROCEAN(I,J) - State_Met%FRSEAICE(I,J) diff --git a/GeosCore/flexgrid_read_mod.F90 b/GeosCore/flexgrid_read_mod.F90 index 52ca031ab..5d1dabdde 100644 --- a/GeosCore/flexgrid_read_mod.F90 +++ b/GeosCore/flexgrid_read_mod.F90 @@ -292,7 +292,18 @@ SUBROUTINE FlexGrid_Read_A1( YYYYMMDD, HHMMSS, Input_Opt, State_Grid, & ! Read FRSNO v_name = "FRSNO" CALL Get_Met_2D( Input_Opt, State_Grid, Q, TRIM(v_name), t_index=t_index ) - State_Met%FRSNO = Q + + ! The import FRSNO is fraction of land with snow cover. Convert to + ! fraction of grid box with snow cover for storage in State_Met. + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J )& + DO J = 1, State_Grid%NY + DO I = 1, State_Grid%NX + State_Met%FRSNOW(I,J) = Q(I,J) * State_Met%FRLAND(I,J) + ENDDO + ENDDO + !$OMP END PARALLEL DO !-------------------------------------------------------------------------- ! For now, skip reading GRN. It's not used in GEOS-Chem. (mps, 9/14/17) diff --git a/Interfaces/GCHP/Includes_Before_Run.H b/Interfaces/GCHP/Includes_Before_Run.H index f1584bb8b..1526d67b8 100644 --- a/Interfaces/GCHP/Includes_Before_Run.H +++ b/Interfaces/GCHP/Includes_Before_Run.H @@ -37,7 +37,6 @@ State_Met%FRLAKE = FRLAKE ! 1 State_Met%FRLANDICE = FRLANDIC ! 1 State_Met%FRSEAICE = FRSEAICE ! 1 - State_Met%FRSNO = FRSNO ! 1 State_Met%QV2M = QV2M ! 1 State_Met%PHIS = PHIS / 9.80665d0 ! m State_Met%GWETROOT = GWETROOT ! 1 @@ -63,6 +62,14 @@ State_Met%V10M = V10M ! m/s State_Met%Z0 = Z0 ! m + ! The import FRSNO is fraction of land with snow cover. Convert to + ! fraction of grid box with snow cover for storage in State_Met + DO J = 1, State_Grid%NY + DO I = 1, State_Grid%NX + State_Met%FRSNOW(I,J) = FRSNO(I,J) * State_Met%FRLAND(I,J) + ENDDO + ENDDO + ! Get UV albedo for photolysis Ptr2d => NULL() CALL MAPL_GetPointer ( IMPORT, Ptr2D, 'UV_ALBEDO', & From d99c368db6034baa2f22b2a84e06c35bb80bd831 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 18 Apr 2024 10:56:41 -0400 Subject: [PATCH 231/331] Update definitions in comments for fraction surface types in State_Met This update makes the definitions more descriptive to avoid confusion about whether fraction is per grid box or per sub-type, e.g. land. Signed-off-by: Lizzie Lundgren --- Headers/state_met_mod.F90 | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Headers/state_met_mod.F90 b/Headers/state_met_mod.F90 index 108d3cf4d..0cf953b8e 100644 --- a/Headers/state_met_mod.F90 +++ b/Headers/state_met_mod.F90 @@ -62,12 +62,13 @@ MODULE State_Met_Mod REAL(fp), POINTER :: EFLUX (:,: ) ! Latent heat flux [W/m2] REAL(fp), POINTER :: FLASH_DENS (:,: ) ! Lightning flash density [#/km2/s] REAL(fp), POINTER :: FRCLND (:,: ) ! Olson land fraction [1] - REAL(fp), POINTER :: FRLAKE (:,: ) ! Fraction of lake [1] - REAL(fp), POINTER :: FRLAND (:,: ) ! Fraction of land [1] - REAL(fp), POINTER :: FROCEAN (:,: ) ! Fraction of ocean [1] - REAL(fp), POINTER :: FRSEAICE (:,: ) ! Sfc sea ice fraction + REAL(fp), POINTER :: FRLAKE (:,: ) ! Fraction of lake type in grid box [1] + REAL(fp), POINTER :: FRLAND (:,: ) ! Fraction of land type in grid box [1] REAL(fp), POINTER :: FRLANDICE (:,: ) ! Fraction of land ice type in grid ! box [1] + REAL(fp), POINTER :: FROCEAN (:,: ) ! Fraction of ocean in grid box [1] + REAL(fp), POINTER :: FRSEAICE (:,: ) ! Fraction of ocean covered by sea + ! ice [1] REAL(fp), POINTER :: FRSNOW (:,: ) ! Fraction of snow over land in ! grid box [1] REAL(fp), POINTER :: GWETROOT (:,: ) ! Root soil wetness [1] @@ -4568,12 +4569,12 @@ SUBROUTINE Get_Metadata_State_Met( am_I_Root, metadataID, Found, RC, & IF ( isRank ) Rank = 2 CASE ( 'FRLAKE' ) - IF ( isDesc ) Desc = 'Fraction of lake' + IF ( isDesc ) Desc = 'Fraction of lake type in grid box' IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 CASE ( 'FRLAND' ) - IF ( isDesc ) Desc = 'Fraction of land' + IF ( isDesc ) Desc = 'Fraction of land type in grid box' IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 @@ -4584,7 +4585,7 @@ SUBROUTINE Get_Metadata_State_Met( am_I_Root, metadataID, Found, RC, & CASE ( 'FROCEAN' ) IF ( isUnits ) Units = '1' - IF ( isDesc ) Desc = 'Fraction of ocean' + IF ( isDesc ) Desc = 'Fraction of ocean type in grid box' IF ( isRank ) Rank = 2 CASE ( 'FRSEAICE' ) From 2cd624fc5de315a06b7ab137f1a617d8b78250e7 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 18 Apr 2024 11:44:24 -0400 Subject: [PATCH 232/331] Improve OpenMP parallelization in GC-Classic using collapse Signed-off-by: Lizzie Lundgren --- GeosCore/aerosol_thermodynamics_mod.F90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/GeosCore/aerosol_thermodynamics_mod.F90 b/GeosCore/aerosol_thermodynamics_mod.F90 index 0a91d4572..14eb9822c 100644 --- a/GeosCore/aerosol_thermodynamics_mod.F90 +++ b/GeosCore/aerosol_thermodynamics_mod.F90 @@ -498,7 +498,8 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & !$OMP PRIVATE( HETP_Mg, HETP_H, HETP_OH, HETP_LWC ) & !$OMP PRIVATE( HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg ) & !$OMP PRIVATE( HETP_frSO4, HETP_num ) & - !$OMP SCHEDULE( DYNAMIC, 1 ) + !$OMP COLLAPSE( 3 ) & + !$OMP SCHEDULE( DYNAMIC, 8 ) DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX From d0b285a1daed187f7779daed0aa1eb6e92e36409 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 18 Apr 2024 13:27:06 -0400 Subject: [PATCH 233/331] Change default aerosol thermodynamics to use HETPv1.0 Signed-off-by: Lizzie Lundgren --- run/CESM/geoschem_config.yml | 2 +- .../geoschem_config.yml.templates/geoschem_config.yml.fullchem | 2 +- .../geoschem_config.yml.templates/geoschem_config.yml.fullchem | 2 +- run/GEOS/geoschem_config.yml | 2 +- run/WRF/fullchem/geoschem_config.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/run/CESM/geoschem_config.yml b/run/CESM/geoschem_config.yml index 415a538e2..be54e96f4 100644 --- a/run/CESM/geoschem_config.yml +++ b/run/CESM/geoschem_config.yml @@ -367,4 +367,4 @@ aerosols: metal_cat_SO2_oxidation: true inorganic: - use_hetp: false + use_hetp: true diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem index 8314e1b3d..08979031b 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -389,7 +389,7 @@ aerosols: metal_cat_SO2_oxidation: true inorganic: - use_hetp: false + use_hetp: true #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) diff --git a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem index 87b5d20af..6a2bda91e 100644 --- a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -370,4 +370,4 @@ aerosols: metal_cat_SO2_oxidation: true inorganic: - use_hetp: false + use_hetp: true diff --git a/run/GEOS/geoschem_config.yml b/run/GEOS/geoschem_config.yml index 207c130d1..8f31254a6 100644 --- a/run/GEOS/geoschem_config.yml +++ b/run/GEOS/geoschem_config.yml @@ -351,4 +351,4 @@ aerosols: metal_cat_SO2_oxidation: true inorganic: - use_hetp: false + use_hetp: true diff --git a/run/WRF/fullchem/geoschem_config.yml b/run/WRF/fullchem/geoschem_config.yml index 7b8957c49..7546262d9 100644 --- a/run/WRF/fullchem/geoschem_config.yml +++ b/run/WRF/fullchem/geoschem_config.yml @@ -356,7 +356,7 @@ aerosols: metal_cat_SO2_oxidation: true inorganic: - use_hetp: false + use_hetp: true #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) From 590609a964dbae4e69896db992c2b338c5e46f57 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 18 Apr 2024 10:16:15 -0400 Subject: [PATCH 234/331] Add diagnostics for surface type masks (ice, water, land, snow) Signed-off-by: Lizzie Lundgren --- GeosCore/diagnostics_mod.F90 | 18 +++++ Headers/state_diag_mod.F90 | 130 +++++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index 377694908..a8434140b 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -285,6 +285,24 @@ SUBROUTINE Set_Diagnostics_EndofTimestep( Input_Opt, State_Chm, & RETURN ENDIF + State_Diag%IsWater = 0.0_fp + State_Diag%IsLand = 0.0_fp + State_Diag%IsIce = 0.0_fp + State_Diag%IsSnow = 0.0_fp + IF ( State_Diag%Archive_SfcType ) THEN + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED ) & + !$OMP PRIVATE( I, J ) + DO J = 1, State_Grid%NY + DO I = 1, State_Grid%NX + IF ( State_Met%IsWater(I,J) ) State_Diag%IsWater(I,J) = 1.0_fp + IF ( State_Met%IsLand(I,J) ) State_Diag%IsLand(I,J) = 1.0_fp + IF ( State_Met%IsIce(I,J) ) State_Diag%IsIce(I,J) = 1.0_fp + IF ( State_Met%IsSnow(I,J) ) State_Diag%IsSnow(I,J) = 1.0_fp + ENDDO + ENDDO + !$OMP END PARALLEL DO + ENDIF END SUBROUTINE Set_Diagnostics_EndofTimestep !EOC diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index c72110809..b4ec8d3f0 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -1295,6 +1295,12 @@ MODULE State_Diag_Mod REAL(f4), POINTER :: DTRad(:,:,:) LOGICAL :: Archive_DTRad + REAL(f4), POINTER :: IsWater(:,:) + REAL(f4), POINTER :: IsLand(:,:) + REAL(f4), POINTER :: IsIce(:,:) + REAL(f4), POINTER :: IsSnow(:,:) + LOGICAL :: Archive_sfcType + !---------------------------------------------------------------------- ! Variables for the ObsPack diagnostic ! NOTE: ObsPack archives point data, so don't register these @@ -2504,6 +2510,12 @@ SUBROUTINE Zero_State_Diag( State_Diag, RC ) State_Diag%DTRad => NULL() State_Diag%Archive_DTRad = .FALSE. + State_Diag%IsWater => NULL() + State_Diag%IsLand => NULL() + State_Diag%IsIce => NULL() + State_Diag%IsSnow => NULL() + State_Diag%Archive_SfcType = .FALSE. + State_Diag%Archive_RadOptics = .FALSE. !%%%%% POPs simulation diagnostics %%%%% @@ -3928,6 +3940,84 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & RETURN ENDIF + !----------------------------------------------------------------------- + ! Surface types + !----------------------------------------------------------------------- + diagID = 'IsWater' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%IsWater, & + archiveData = State_Diag%Archive_SfcType, & + diagId = diagId, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + diagID = 'IsLand' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%IsLand, & + archiveData = State_Diag%Archive_SfcType, & + diagId = diagId, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + diagID = 'IsIce' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%IsIce, & + archiveData = State_Diag%Archive_SfcType, & + diagId = diagId, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + + diagID = 'IsSnow' + CALL Init_and_Register( & + Input_Opt = Input_Opt, & + State_Chm = State_Chm, & + State_Diag = State_Diag, & + State_Grid = State_Grid, & + DiagList = Diag_List, & + TaggedDiagList = TaggedDiag_List, & + Ptr2Data = State_Diag%IsSnow, & + archiveData = State_Diag%Archive_SfcType, & + diagId = diagId, & + RC = RC ) + + IF ( RC /= GC_SUCCESS ) THEN + errMsg = TRIM( errMsg_ir ) // TRIM( diagId ) + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF #ifdef MODEL_GEOS !----------------------------------------------------------------------- @@ -12547,6 +12637,26 @@ SUBROUTINE Cleanup_State_Diag( State_Diag, RC ) RC = RC ) IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'IsWater', & + Ptr2Data = State_Diag%IsWater, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + + CALL Finalize( diagId = 'IsLand', & + Ptr2Data = State_Diag%IsLand, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + + CALL Finalize( diagId = 'IsIce', & + Ptr2Data = State_Diag%IsIce, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + + CALL Finalize( diagId = 'IsSnow', & + Ptr2Data = State_Diag%IsSnow, & + RC = RC ) + IF ( RC /= GC_SUCCESS ) RETURN + CALL Finalize( diagId = 'SatDiagnDryDep', & Ptr2Data = State_Diag%SatDiagnDryDep, & mapData = State_Diag%Map_SatDiagnDryDep, & @@ -14536,6 +14646,26 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isRank ) Rank = 2 IF ( isTagged ) TagId = 'DRY' + ELSE IF ( TRIM( Name_AllCaps ) == 'ISWATER' ) THEN + IF ( isDesc ) Desc = 'Water mask determined from meteorology input' + IF ( isUnits ) Units = '.' + IF ( isRank ) Rank = 2 + + ELSE IF ( TRIM( Name_AllCaps ) == 'ISLAND' ) THEN + IF ( isDesc ) Desc = 'Land mask determined from meteorology input' + IF ( isUnits ) Units = '.' + IF ( isRank ) Rank = 2 + + ELSE IF ( TRIM( Name_AllCaps ) == 'ISICE' ) THEN + IF ( isDesc ) Desc = 'Ice mask determined from meteorology input' + IF ( isUnits ) Units = '.' + IF ( isRank ) Rank = 2 + + ELSE IF ( TRIM( Name_AllCaps ) == 'ISSNOW' ) THEN + IF ( isDesc ) Desc = 'Snow mask determined from meteorology input' + IF ( isUnits ) Units = '.' + IF ( isRank ) Rank = 2 + ELSE IF ( TRIM( Name_AllCaps ) == 'SATDIAGNDRYDEP' ) THEN IF ( isDesc ) Desc = 'Dry deposition flux of species' IF ( isUnits ) Units = 'molec cm-2 s-1' From 7502e3165f683aababe1e85fc7a38d3f5d63cbb6 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 18 Apr 2024 13:54:29 -0400 Subject: [PATCH 235/331] Fix bugs preventing build and run Signed-off-by: Lizzie Lundgren --- GeosCore/diagnostics_mod.F90 | 8 ++++---- GeosCore/flexgrid_read_mod.F90 | 9 +++++---- GeosCore/hco_interface_gc_mod.F90 | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index a8434140b..bad232d5b 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -285,11 +285,11 @@ SUBROUTINE Set_Diagnostics_EndofTimestep( Input_Opt, State_Chm, & RETURN ENDIF - State_Diag%IsWater = 0.0_fp - State_Diag%IsLand = 0.0_fp - State_Diag%IsIce = 0.0_fp - State_Diag%IsSnow = 0.0_fp IF ( State_Diag%Archive_SfcType ) THEN + State_Diag%IsWater = 0.0_fp + State_Diag%IsLand = 0.0_fp + State_Diag%IsIce = 0.0_fp + State_Diag%IsSnow = 0.0_fp !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED ) & !$OMP PRIVATE( I, J ) diff --git a/GeosCore/flexgrid_read_mod.F90 b/GeosCore/flexgrid_read_mod.F90 index 5d1dabdde..92b7bd3fb 100644 --- a/GeosCore/flexgrid_read_mod.F90 +++ b/GeosCore/flexgrid_read_mod.F90 @@ -120,7 +120,7 @@ SUBROUTINE FlexGrid_Read_CN( Input_Opt, State_Grid, State_Met ) ! Read FRLANDIC v_name = "FRLANDIC" CALL Get_Met_2D( Input_Opt, State_Grid, Q, TRIM(v_name) ) - State_Met%FRLANDIC = Q + State_Met%FRLANDICE = Q ! Read FROCEAN v_name = "FROCEAN" @@ -217,6 +217,7 @@ SUBROUTINE FlexGrid_Read_A1( YYYYMMDD, HHMMSS, Input_Opt, State_Grid, & ! ! Scalars INTEGER :: t_index ! Time index + INTEGER :: I, J CHARACTER(LEN=16) :: stamp ! Time and date stamp CHARACTER(LEN=255) :: v_name ! netCDF variable name CHARACTER(LEN=255) :: errMsg ! Error message @@ -295,9 +296,9 @@ SUBROUTINE FlexGrid_Read_A1( YYYYMMDD, HHMMSS, Input_Opt, State_Grid, & ! The import FRSNO is fraction of land with snow cover. Convert to ! fraction of grid box with snow cover for storage in State_Met. - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED )& - !$OMP PRIVATE( I, J )& + !$OMP PARALLEL DO & + !$OMP DEFAULT( SHARED )& + !$OMP PRIVATE( I, J ) DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX State_Met%FRSNOW(I,J) = Q(I,J) * State_Met%FRLAND(I,J) diff --git a/GeosCore/hco_interface_gc_mod.F90 b/GeosCore/hco_interface_gc_mod.F90 index 97f70447a..fdf3a27f1 100644 --- a/GeosCore/hco_interface_gc_mod.F90 +++ b/GeosCore/hco_interface_gc_mod.F90 @@ -2548,7 +2548,7 @@ SUBROUTINE ExtState_SetFields( Input_Opt, State_Chm, State_Grid, State_Met, HcoS HMRC, FIRST=FIRST ) #else CALL ExtDat_Set( HcoState, ExtState%FRLANDIC, 'FRLANDIC_FOR_EMIS', & - HMRC, FIRST, State_Met%FRLANDIC ) + HMRC, FIRST, State_Met%FRLANDICE ) #endif ! Trap potential errors From e8abb6abc1a93ddb4a722e14af2b64947de4c7fa Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Fri, 19 Apr 2024 17:02:12 -0400 Subject: [PATCH 236/331] Updated changelog Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1140b83da..8f476906a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Diel and day-of-week scale factors for CEDS global base emissions - Add explicit handling of gravitational settling and hygroscopic growth in dry deposition - Added CO2, CO, and OCS single-tracer carbon simulations to the integration tests +- Added real4 diagnostics for State_Met logical masks IsWater, IsLand, IsIce, and IsSnow ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. From 347d019b06ae4d8106a1c14950c1aae028529165 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 22 Apr 2024 10:57:30 -0400 Subject: [PATCH 237/331] Update GitHub labels for issues/PRs that should not go stale .github/stale.yml - Updated the list of label names for to account for the recent change in GitHub label names in the geoschem/geos-chem repository. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- .github/stale.yml | 22 +++++++++++++++++----- CHANGELOG.md | 5 ++--- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/.github/stale.yml b/.github/stale.yml index 6698e8a53..08067324d 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,20 +1,32 @@ +# +# stale.yml: GitHub stalebot configuration file +# + # Number of days of inactivity before an issue becomes stale daysUntilStale: 30 + # Number of days of inactivity before a stale issue is closed daysUntilClose: 7 + # Issues with these labels will never be considered stale exemptLabels: - - never stale - - feature - - discussion - - future development + - 'category: Discussion' + - 'category: Feature Request' + - 'deferred' + - 'help needed: Open Research Problem' + - 'help needed: Request Input from Community' + - 'never stale' + - 'TODO: Documentation' + # Label to use when marking an issue as stale staleLabel: stale + # Comment to post when marking an issue as stale. Set to `false` to disable markComment: > This issue has been automatically marked as stale because it has not had recent activity. If there are no updates within 7 days it will be closed. You can add the "never stale" tag to prevent the Stale bot from closing this issue. + # Comment to post when closing a stale issue. Set to `false` to disable -closeComment: Closing due to inactivity +closeComment: Closing due to inactivity diff --git a/CHANGELOG.md b/CHANGELOG.md index 185dd328f..572d96998 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,9 +10,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Add explicit handling of gravitational settling and hygroscopic growth in dry deposition - Added CO2, CO, and OCS single-tracer carbon simulations to the integration tests -### Fixed -- Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. - ### Changed - Switch from fixed to monthly timezones, which account for daylight savings time more accurately when computing emissions - Updated NOAA GMD surface CH4 boundary conditions through 2022 @@ -20,6 +17,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated volcano emissions from GMAO v202005 product to v202401 which extends to the end of 2024 - Use local scale height and level thickness to determine the PBL to determine the PBL top level and PBL pressure thickness - Update drydep mean diameters of aerosols to account for size distribution +- Updated GitHub stalebot config file `stale.yml` with new issue/PR labels that should not go stale ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. @@ -30,6 +28,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Update `HEMCO_Config.rc.carbon` and `ExtData.rc.carbon` templates for consistency - Updated several emissions files for CO and CH4 for COARDS and MAPL compliance - Fixed several issues in GCHP single-species carbon simulation setup scripts +- Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. ### Removed - Legacy binary punch diagnostic code contained within `#ifdef BPCH_DIAG` blocks From 3ce161523626f1a2bdb1badb8b1a14ded4cec181 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Mon, 22 Apr 2024 12:05:28 -0400 Subject: [PATCH 238/331] Add missing gas postmeter CH4 emissions for the GHGI express extension inventory The Express Extension option of the GHGIv2 intentory includes postmeter emissions for the natural gas sector. An entry for those emissions was not included in the HEMCO_Config.rc file but has now been added. Closes https://github.com/geoschem/geos-chem/issues/2259 Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 1 + run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 | 1 + run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 1 + run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 | 2 ++ run/GCHP/ExtData.rc.templates/ExtData.rc.carbon | 1 + run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 1 + 6 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 185dd328f..5225172ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Diel and day-of-week scale factors for CEDS global base emissions - Add explicit handling of gravitational settling and hygroscopic growth in dry deposition - Added CO2, CO, and OCS single-tracer carbon simulations to the integration tests +- Added missing entry in HEMCO_Config.rc for natural gas postmeter CH4 emissions in GHGIv2 Express Extension ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index a6fa6b12f..ae5bb6245 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -237,6 +237,7 @@ VerboseOnCores: root # Accepted values: root all 0 GHGI_EE_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 0 GHGI_EE_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1008 2 100 0 GHGI_EE_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 ### Coal ### 0 GHGI_EE_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index f95615f1c..0ca3fa7c2 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -279,6 +279,7 @@ Mask fractions: false 0 GHGI_EE_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 0 GHGI_EE_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1008 2 100 0 GHGI_EE_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 ### Coal ### 0 GHGI_EE_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index 1c7e94048..6f4fa2dd8 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -305,6 +305,8 @@ VerboseOnCores: root # Accepted values: root all 0 GHGI_EE_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1008 2 100 0 GHGI_EE_GAS_TRANSMISSION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4_GAS 1008 2 100 0 GHGI_EE_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_GAS_POSTMETER_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4_GAS 1008 2 100 +0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 ### Coal ### 0 GHGI_EE_COAL_UNDERGROUND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4_COL 1008 3 100 diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index e4a277c92..b7ab8fa1e 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -148,6 +148,7 @@ GHGI_EE_GAS_EXPLORATION molec/cm2/s N Y - none none emi_ch4_1B2b_Nat GHGI_EE_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_GAS_PRODUCTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_TransmissionStorage ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_POSTMETER molec/cm2/s N Y - none none emi_ch4_Supp_1B2b_PostMeter ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 934dcba6c..e101839c8 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -279,6 +279,7 @@ Mask fractions: false 0 GHGI_EE_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 0 GHGI_EE_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1008 2 100 0 GHGI_EE_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 ### Coal ### 0 GHGI_EE_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 From 614f1cf46123bafa50448aa5eab34e5a0f7ef94e Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 22 Apr 2024 13:22:36 -0400 Subject: [PATCH 239/331] Now use the "stale" GitHub action instead of StaleBot .github/no-response.yml .github/stale.yml - Removed .github/workflows/stale.yml - Configuration file for GitHub "stale" action, which replaces StaleBot. Use the most recent list of issue/PR labels to never be marked stale. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- .github/no-response.yml | 13 ------------- .github/stale.yml | 32 ------------------------------- .github/workflows/stale.yml | 38 +++++++++++++++++++++++++++++++++++++ CHANGELOG.md | 3 ++- 4 files changed, 40 insertions(+), 46 deletions(-) delete mode 100644 .github/no-response.yml delete mode 100644 .github/stale.yml create mode 100644 .github/workflows/stale.yml diff --git a/.github/no-response.yml b/.github/no-response.yml deleted file mode 100644 index dd2b8cfed..000000000 --- a/.github/no-response.yml +++ /dev/null @@ -1,13 +0,0 @@ -# Configuration for probot-no-response - https://github.com/probot/no-response - -# Number of days of inactivity before an Issue is closed for lack of response -daysUntilClose: 14 -# Label requiring a response -responseRequiredLabel: more information needed -# Comment to post when closing an Issue for lack of response. Set to `false` to disable -closeComment: > - This issue has been automatically closed because there has been no response - to our request for more information from the original author. With only the - information that is currently in the issue, we don't have enough information - to take action. Please reach out if you have or find the answers we need so - that we can investigate further. diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 08067324d..000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,32 +0,0 @@ -# -# stale.yml: GitHub stalebot configuration file -# - -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 30 - -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 - -# Issues with these labels will never be considered stale -exemptLabels: - - 'category: Discussion' - - 'category: Feature Request' - - 'deferred' - - 'help needed: Open Research Problem' - - 'help needed: Request Input from Community' - - 'never stale' - - 'TODO: Documentation' - -# Label to use when marking an issue as stale -staleLabel: stale - -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. If there are no updates within 7 days it will be closed. - You can add the "never stale" tag to prevent the Stale bot from closing - this issue. - -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: Closing due to inactivity diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 000000000..b14b1f621 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,38 @@ +# This workflow warns and then closes issues that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues + +on: + schedule: + - cron: '0 0 * * *' # Run every night at midnight + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-label: 'stale' + exempt-issue-labels: + - 'category: Discussion' + - 'category: Feature Request' + - 'deferred' + - 'help needed: Open Research Problem' + - 'help needed: Request Input from Community' + - 'never stale' + - 'TODO: Documentation' + days-before-issue-stale: 30 + days-before-issue-close: 7 + stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. If there are no updates within 7 days it will be closed. You can add the "never stale" tag to prevent the issue from closing this issue.' + close-issue-message: 'Closing due to inactivity' + days-before-pr-stale: -1 + days-before-pr-close: -1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 572d96998..0ce7d867e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Diel and day-of-week scale factors for CEDS global base emissions - Add explicit handling of gravitational settling and hygroscopic growth in dry deposition - Added CO2, CO, and OCS single-tracer carbon simulations to the integration tests +- GitHub Action config file `.github/workflows/stale.yml`, which replaces StaleBot ### Changed - Switch from fixed to monthly timezones, which account for daylight savings time more accurately when computing emissions @@ -17,7 +18,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated volcano emissions from GMAO v202005 product to v202401 which extends to the end of 2024 - Use local scale height and level thickness to determine the PBL to determine the PBL top level and PBL pressure thickness - Update drydep mean diameters of aerosols to account for size distribution -- Updated GitHub stalebot config file `stale.yml` with new issue/PR labels that should not go stale ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. @@ -34,6 +34,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Legacy binary punch diagnostic code contained within `#ifdef BPCH_DIAG` blocks - `IU_BPCH` logical file unit (in `GeosUtil/file_mod.F90`) - Removed tagged CH4 and CO species handling from `carbon_gases_mod.F90` +- GitHub config files `.github/stale.yml` and `.github/no-response.yml` ## [14.3.1] - 2024-04-02 ### Added From 7bfc5bbdc1eeb376d76505885c2513d72f00e4d3 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 22 Apr 2024 13:42:40 -0400 Subject: [PATCH 240/331] Update comments in aerosol_thermodynamics_mod for switch to HETP ISORROPIA is still used in some places because HETP is based on it. However, HETP is now also incorporated along with comments about the update. Signed-off-by: Lizzie Lundgren --- GeosCore/aerosol_thermodynamics_mod.F90 | 56 ++++++++++++------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/GeosCore/aerosol_thermodynamics_mod.F90 b/GeosCore/aerosol_thermodynamics_mod.F90 index 14eb9822c..bdecace99 100644 --- a/GeosCore/aerosol_thermodynamics_mod.F90 +++ b/GeosCore/aerosol_thermodynamics_mod.F90 @@ -6,11 +6,13 @@ ! !MODULE: aerosol_thermodynamics_mod.F90 ! ! !DESCRIPTION: Module AEROSOL\_THERMODYNAMICS\_MOD contains the routines that provide -! the interface between ISORROPIA II/HETP and GEOS-Chem. +! the interface between HETP (formerly ISORROPIA II) and GEOS-Chem. !\\ !\\ -! The actual ISORROPIA II/HETP code which performs Na-SO4-NH3-NO3-Cl-(Ca-K-Mg) -! aerosol thermodynamic equilibrium is in \texttt{isorropiaIIcode.f} and \textt{hetp_mod.F90}. +! The actual HETP code which performs Na-SO4-NH3-NO3-Cl-(Ca-K-Mg) aerosol +! thermodynamic equilibrium is in \textt{hetp_mod.F90}, which is located +! in the HETerogeneous-vectorized-or-Parallel code repository alongside GEOS-Chem. +! See https://github.com/geoschem/HETerogeneous-vectorized-or-Parallel. !\\ !\\ ! !INTERFACE: @@ -53,12 +55,6 @@ MODULE AEROSOL_THERMODYNAMICS_MOD ! For Ca,K,Mg = 0, ISORROPIA II performs exactly like ISORROPIAv1.7 ! Ca, K, Mg, Na from dust is not currently considered ! . -! To implement ISORROPIA II into GEOS-Chem: -! * cleanup_isorropiaII needs to be called from cleanup.f -! * DO_ISORROPIA needs to be replaced with DO_ISORROPIAII in chemistry_mod.f -! * Change ISORROPIA to ISORROPIAII in sulfate_mod.f -! * add isorropiaII_mod.f, isorropiaIIcode.f, and irspia.inc to Makefile -! . ! ISORROPIA II implementation notes by Havala O.T. Pye: ! (1) The original isorropia code from T.Nenes is left as unmodified as ! possible. Original isorropia code can be found in isorropiaIIcode.f @@ -69,6 +65,9 @@ MODULE AEROSOL_THERMODYNAMICS_MOD ! (2) As of Nov 2007, routines using non-zero Ca, K, and Mg do not always ! conserve mass. Ca, K, and Mg are set to zero. ! . +! HETP is an adaptation of ISORROPIA II for modern Fortran. It replaces +! ISORROPIA II starting in April 2024. (Miller et al.) +! ! NOTE: ISORROPIA is Greek for "equilibrium", in case you were wondering. ! ! !REVISION HISTORY: @@ -84,10 +83,10 @@ MODULE AEROSOL_THERMODYNAMICS_MOD REAL(fp), ALLOCATABLE :: GAS_HNO3(:,:,:) !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -!%%% Add a C-preprocessor switch to skip calling ISORROPIA if the pressure +!%%% Add a C-preprocessor switch to skip calling HETP if the pressure !%%% and/or temperature lie outside of the range that will produce a stable !%%% solution. This will eliminate the random noise observed in the -!%%% ISORROPIA output. +!%%% HETP output. !%%% !%%% Leaving this feature deactivated will replicate the prior behavior in !%%% v11-01 and earlier GEOS-Chem versions. This will become the default @@ -108,9 +107,8 @@ MODULE AEROSOL_THERMODYNAMICS_MOD ! ! !IROUTINE: do_ate ! -! !DESCRIPTION: Subroutine DO\_ATE is the interface between the -! GEOS-Chem model and the aerosol thermodynamical equilibrium routines -! ISORROPIA II or HETP. +! !DESCRIPTION: Subroutine DO\_ATE is the interface between the GEOS-Chem +! model and the aerosol thermodynamical equilibrium routines in HETP. !\\ !\\ ! !INTERFACE: @@ -158,6 +156,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & ! ! !REMARKS: ! Original isorropia v1.3 implmentation: (rjp, bec, bmy, 12/17/01, 8/22/05) +! HETPv1.0 replaces ISORROPIA II starting in GEOS-Chem 14.4.0 ! ! !REVISION HISTORY: ! 24 Aug 2007 - H. O. T. Pye - Initial version @@ -398,7 +397,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & ELSE - ! ISORROPIA is only valid for full-chem or aerosol-only sims + ! HETP is only valid for full-chem or aerosol-only sims ErrMsg = 'Invalid simulation type!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN @@ -423,7 +422,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & ELSE - ! ISORROPIA is only valid for full-chem or aerosol-only sims + ! HETP is only valid for full-chem or aerosol-only sims ErrMsg = 'Invalid simulation type!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN @@ -476,9 +475,8 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & Spc => State_Chm%Species !======================================================================== - ! Loop over grid boxes and call ISORROPIA (see comments in the - ! ISORROPIA routine ISORROPIAIICODE.f which describes - ! the input/output args) + ! Loop over grid boxes and call HETP (see comments in the + ! HETP routine hetp_mod.F90 which describes the input/output args) !======================================================================== !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED ) & @@ -504,7 +502,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - ! Only applying ISORROPIA II in troposphere + ! Only applying HETP in troposphere IF ( State_Met%InStratMeso(I,J,L) ) CYCLE ! Zero PRIVATE variables @@ -606,7 +604,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & ENDIF !-------------------------------- - ! Compute quantities for ISORROPIA + ! Compute quantities for HETP !--------------------------------- IF ( N == 1 ) THEN @@ -682,8 +680,9 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & !==================================================================== ! NOTE: As of 11/2007, ISORROPIAII does not conserve mass when Ca,K,Mg ! are non-zero. If you would like to consider Ca, K, Mg from seasalt - ! and dust, isorropiaIIcode.f ISRP4F routines must be debugged. + ! and dust, then ISORROPIA II ISRP4F routines must be debugged. ! (hotp, bmy, 2/1/10) + ! This still applies in HETP (ewl, 4/22/2024) ! ! ! Total Ca2+ (1.16% by weight of seasalt) [mole/m3] ! TCA = Spc(id_SALA)%Conc(I,J,L) * 0.0116e+0_fp * 1.d3 / @@ -795,14 +794,14 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & #else !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - !%%% Always call ISORROPIA, regardless of the values of pressure + !%%% Always call ISORROPIA/HETP, regardless of the values of pressure !%%% and temperature. This will match the prior behavior of !%%% when comparing to v11-01 and earlier versions. !%%% !%%% -- Seb Eastham and Bob Yantosca (1/25/17) !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - ! Never skip calling ISORROPIA + ! Never skip calling ISORROPIA/HETP OutOfBounds = .FALSE. #endif @@ -891,7 +890,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & !--------------------------------- ! Save back into tracer array !--------------------------------- - ! Convert ISORROPIA output from [mole/m3] to [kg] + ! Convert HETP output from [mole/m3] to [kg] IF ( N == 1 ) THEN TSO4 = MAX( 96.e-3_fp * VOL * TSO4, CONMIN ) TNH4 = MAX( 18.e-3_fp * VOL * TNH4, CONMIN ) @@ -1190,7 +1189,7 @@ Subroutine GET_QK(GNO3, GCL, GNO3eq, GCLeq, Hplus, d, temp, & ! ! Gas concentration (mole m-3) before equilibrium REAL(fp), INTENT(IN) :: GNO3, GCL - ! Gas concentration (mole m-3) after ISORROPIA equilibrium + ! Gas concentration (mole m-3) after HETP equilibrium REAL(fp), INTENT(IN) :: GNO3eq, GCLeq ! Aerosol H+ concentration (mole m-3) REAL(fp), INTENT(IN) :: Hplus @@ -1291,9 +1290,10 @@ END SUBROUTINE GET_Qk !------------------------------------------------------------------------------ !BOP ! -! !IROUTINE: init_isorropiaII +! !IROUTINE: init_ate ! -! !DESCRIPTION: Subroutine INIT\_ISORROPIAII initializes all module arrays. +! !DESCRIPTION: Subroutine INIT\_ATE initializes all module arrays for the +! aerosols thermodynamics module. !\\ !\\ ! !INTERFACE: From f83b22c9aa5095a64b8dc924ecd710d675e3cb98 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 22 Apr 2024 13:44:11 -0400 Subject: [PATCH 241/331] Remove ISORROPIA II option from aerosol thermodynamics module ISORROPIA II is still built within the model because it is used for APM. Signed-off-by: Lizzie Lundgren --- GeosCore/aerosol_thermodynamics_mod.F90 | 81 +++++++++---------------- 1 file changed, 28 insertions(+), 53 deletions(-) diff --git a/GeosCore/aerosol_thermodynamics_mod.F90 b/GeosCore/aerosol_thermodynamics_mod.F90 index bdecace99..9f2632af9 100644 --- a/GeosCore/aerosol_thermodynamics_mod.F90 +++ b/GeosCore/aerosol_thermodynamics_mod.F90 @@ -136,7 +136,6 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & USE TIME_MOD, ONLY : GET_MONTH USE TIME_MOD, ONLY : ITS_A_NEW_MONTH USE TIME_MOD, ONLY : GET_ELAPSED_SEC - USE IsorropiaII_Main_Mod, ONLY : Isorropia USE HETP_mod, ONLY : mach_hetp_main_15cases ! ! !INPUT PARAMETERS: @@ -204,7 +203,6 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & REAL(f8) :: OTHER(NOTHERA) REAL(f8) :: WI(NCOMPA) REAL(f8) :: WT(NCOMPA) - REAL(f8) :: CNTRL(NCTRLA) REAL(f8) :: AlkR !Alkalinity % depleted REAL(f8) :: Qk, PHCl, F_HCl, F_HNO3 REAL(f8) :: Hplus !H+ in SALC,mol/m3 @@ -483,7 +481,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & !$OMP PRIVATE( I, J, L, N, WI ) & !$OMP PRIVATE( WT, GAS, TEMPI, RHI, VOL ) & !$OMP PRIVATE( TSO4, TNH3, TNA, TCL, ANO3 ) & - !$OMP PRIVATE( GNO3, TCA, TMG, TK, CNTRL ) & + !$OMP PRIVATE( GNO3, TCA, TMG, TK ) & !$OMP PRIVATE( SCASI, P_Pa, TNO3, AERLIQ, AERSLD ) & !$OMP PRIVATE( OTHER, TNH4, TNIT, HPLUSTEMP, NUM_SAV ) & !$OMP PRIVATE( GCL, ACL, AlkR, NM, PHCl ) & @@ -746,21 +744,6 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & ENDIF - If (.not. Input_Opt%LHETP) Then - !--------------------------------- - ! Call ISORROPIA - !--------------------------------- - - ! set type of ISORROPIA call - ! Forward problem, do not change this value - ! 0e+0_fp represents forward problem - CNTRL(1) = 0.0_fp - - ! Metastable for now - ! 1e+0_fp represents metastable problem - CNTRL(2) = 1.0_fp - End If - ! Insert concentrations [mole/m3] into WI & prevent underflow WI(1) = MAX( TNA, CONMIN ) WI(2) = MAX( TSO4, CONMIN ) @@ -777,7 +760,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & !%%% If the C-preprocessor switch is activated then check if !%%% pressure and temperature are in the range that will result !%%% in a stable solution. If not, then we will skip calling - !%%% ISORROPIA to avoid random noise in the output. + !%%% ISORROPIA/HETP to avoid random noise in the output. !%%% !%%% NOTE: Turning this feature on will result in differences !%%% with respect to prior GEOS-Chem versions. So we'll give @@ -826,40 +809,32 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & ELSE ! %%% Perform aerosol thermodynamic equilibrium %%% - If (Input_Opt%LHETP) Then - ! For safety - GAS = 0.0d0 - AERLIQ = 0.0d0 - Call MACH_HETP_Main_15Cases( WI(2), WI(3), WI(4), WI(1), WI(5), & - WI(6), WI(7), WI(8), TEMPI, RHI, & - HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4, & - HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl, & - HETP_HCl, HETP_Na, HETP_Ca, HETP_K, & - HETP_Mg, HETP_H, HETP_OH, HETP_LWC, & - HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg, & - HETP_frSO4, HETP_num ) - ! Spoof ISORROPIA outputs which are still used - GAS(1) = HETP_NH3 - GAS(2) = HETP_HNO3 - GAS(3) = HETP_HCl - ! Mostly used for diagnostics - AERLIQ( 1) = HETP_H - AERLIQ( 2) = HETP_Na - AERLIQ( 3) = HETP_NH4 - AERLIQ( 4) = HETP_Cl - AERLIQ( 5) = HETP_SO4 - AERLIQ( 6) = HETP_HSO4 - AERLIQ( 7) = HETP_NO3 - AERLIQ( 8) = HETP_LWC - ! WT is used below but is identical to WI for a forward case - WT(:) = WI(:) - Else - ! ISORROPIA can be found in ISORROPIAIICODE.F - ! inputs are WI, RHI, TEMPI, CNTRL - CALL ISORROPIA( WI, RHI, TEMPI, CNTRL, & - WT, GAS, AERLIQ, AERSLD, & - SCASI, OTHER ) - End If + ! For safety + GAS = 0.0d0 + AERLIQ = 0.0d0 + Call MACH_HETP_Main_15Cases( WI(2), WI(3), WI(4), WI(1), WI(5), & + WI(6), WI(7), WI(8), TEMPI, RHI, & + HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4, & + HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl, & + HETP_HCl, HETP_Na, HETP_Ca, HETP_K, & + HETP_Mg, HETP_H, HETP_OH, HETP_LWC, & + HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg, & + HETP_frSO4, HETP_num ) + ! Spoof ISORROPIA outputs which are still used + GAS(1) = HETP_NH3 + GAS(2) = HETP_HNO3 + GAS(3) = HETP_HCl + ! Mostly used for diagnostics + AERLIQ( 1) = HETP_H + AERLIQ( 2) = HETP_Na + AERLIQ( 3) = HETP_NH4 + AERLIQ( 4) = HETP_Cl + AERLIQ( 5) = HETP_SO4 + AERLIQ( 6) = HETP_HSO4 + AERLIQ( 7) = HETP_NO3 + AERLIQ( 8) = HETP_LWC + ! WT is used below but is identical to WI for a forward case + WT(:) = WI(:) ! Consider mass transfer and acid limitation for coarse ! mode calculation From 55552b641c6f07ab2ee41741aa46033735ba6ec4 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Mon, 22 Apr 2024 13:51:10 -0400 Subject: [PATCH 242/331] Remove hardcoded year range for met fields, restart, and BC files in HEMCO_Config.rc Previously, entries for meteorology fields, restart files, and boundary condition files were hardcoded for year ranges in HEMCO_Config.rc (e.g. 1980-2021/1-12/1-31/*). This required updating the end year each time a new calendar year became available. We are able to avoid this by changing the time range entries to use year, month, and day tokens in HEMCO_Config.rc instead (e.g. $YYYY/$MM/$DD/*). Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 1 + .../HEMCO_Config.rc.CH4 | 2 +- .../HEMCO_Config.rc.Hg | 2 +- .../HEMCO_Config.rc.aerosol | 2 +- .../HEMCO_Config.rc.carbon | 2 +- .../HEMCO_Config.rc.fullchem | 2 +- .../HEMCO_Config.rc.gmao_metfields | 140 +++++++++--------- .../HEMCO_Config.rc.tagCH4 | 2 +- .../HEMCO_Config.rc.carbon | 2 +- .../HEMCO_Config.rc.fullchem | 2 +- 10 files changed, 79 insertions(+), 78 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 185dd328f..bc112aed0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated volcano emissions from GMAO v202005 product to v202401 which extends to the end of 2024 - Use local scale height and level thickness to determine the PBL to determine the PBL top level and PBL pressure thickness - Update drydep mean diameters of aerosols to account for size distribution +- Changed time range entries in HEMCO_Config.rc for met, restart, and BC files to use year, month, and day tokens instead of hardcoded range ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index a6fa6b12f..d488a5a22 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -618,7 +618,7 @@ VerboseOnCores: root # Accepted values: root all # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? 1980-2021/1-12/1-31/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 )))GC_BCs #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg index 9e9bcd479..9b5bdb830 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg @@ -500,7 +500,7 @@ VerboseOnCores: root # Accepted values: root all # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2019-05/tropchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? 1980-2021/1-12/1-31/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/v2019-05/tropchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 )))GC_BCs (((CHEMISTRY_INPUT diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol index 3c408158a..3d39b850e 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol @@ -1967,7 +1967,7 @@ VerboseOnCores: root # Accepted values: root all # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/GC_14.3.0/fullchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? 1980-2021/1-12/1-31/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/GC_14.3.0/fullchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 )))GC_BCs (((CHEMISTRY_INPUT diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index f95615f1c..769698ede 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1067,7 +1067,7 @@ Mask fractions: false # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? 1980-2021/1-12/1-31/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 )))GC_BCs #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index f8a96137d..8b3202648 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -3458,7 +3458,7 @@ VerboseOnCores: root # Accepted values: root all # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/GC_14.3.0/fullchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? 1980-2021/1-12/1-31/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/GC_14.3.0/fullchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 )))GC_BCs (((CHEMISTRY_INPUT diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields index 3b9b3cf53..db7807b27 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields @@ -45,85 +45,85 @@ METDIR: ${RUNDIR_MET_DIR} * PHIS $METDIR/$CNYR/01/$MET.$CNYR0101.CN.$RES.$NC PHIS */1/1/0 C xy 1 * - 1 1 # --- A1 fields --- -* ALBEDO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC ALBEDO 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* CLDTOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC CLDTOT 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* EFLUX $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC EFLUX 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* EVAP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC EVAP 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* FRSEAICE $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC FRSEAICE 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* FRSNO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC FRSNO 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* GRN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GRN 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* GWETROOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GWETROOT 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* GWETTOP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GWETTOP 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* HFLUX $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC HFLUX 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* LAI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC LAI 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* PARDF $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PARDF 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* PARDR $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PARDR 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* PBLH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PBLH 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* PRECANV $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECANV 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* PRECCON $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECCON 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* PRECLSC $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECLSC 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* PRECSNO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECSNO 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* PRECTOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECTOT 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* QV2M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC QV2M 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SEAICE00 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE00 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SEAICE10 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE10 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SEAICE20 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE20 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SEAICE30 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE30 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SEAICE40 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE40 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SEAICE50 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE50 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SEAICE60 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE60 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SEAICE70 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE70 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SEAICE80 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE80 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SEAICE90 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE90 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SLP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SLP 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SNODP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SNODP 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SNOMAS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SNOMAS 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* SWGDN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SWGDN 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* TO3 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TO3 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* TROPPT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TROPPT 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* TS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TS 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* T2M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC T2M 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* U10M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC U10M 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* USTAR $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC USTAR 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* V10M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC V10M 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 -* Z0M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC Z0M 1980-2021/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* ALBEDO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC ALBEDO $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* CLDTOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC CLDTOT $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* EFLUX $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC EFLUX $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* EVAP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC EVAP $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* FRSEAICE $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC FRSEAICE $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* FRSNO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC FRSNO $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* GRN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GRN $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* GWETROOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GWETROOT $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* GWETTOP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GWETTOP $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* HFLUX $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC HFLUX $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* LAI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC LAI $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* PARDF $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PARDF $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* PARDR $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PARDR $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* PBLH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PBLH $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* PRECANV $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECANV $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* PRECCON $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECCON $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* PRECLSC $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECLSC $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* PRECSNO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECSNO $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* PRECTOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECTOT $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* QV2M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC QV2M $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SEAICE00 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE00 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SEAICE10 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE10 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SEAICE20 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE20 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SEAICE30 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE30 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SEAICE40 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE40 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SEAICE50 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE50 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SEAICE60 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE60 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SEAICE70 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE70 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SEAICE80 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE80 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SEAICE90 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE90 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SLP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SLP $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SNODP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SNODP $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SNOMAS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SNOMAS $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* SWGDN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SWGDN $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* TO3 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TO3 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* TROPPT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TROPPT $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* TS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TS $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* T2M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC T2M $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* U10M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC U10M $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* USTAR $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC USTAR $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* V10M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC V10M $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* Z0M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC Z0M $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 # --- A3cld fields --- -* CLOUD $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC CLOUD 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* OPTDEPTH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC OPTDEPTH 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* QI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC QI 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* QL $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC QL 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* TAUCLI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC TAUCLI 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* TAUCLW $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC TAUCLW 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* CLOUD $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC CLOUD $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* OPTDEPTH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC OPTDEPTH $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* QI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC QI $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* QL $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC QL $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* TAUCLI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC TAUCLI $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* TAUCLW $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC TAUCLW $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 # --- A3dyn fields --- -* DTRAIN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC DTRAIN 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* OMEGA $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC OMEGA 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* RH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC RH 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* U $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC U 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* V $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC V 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* DTRAIN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC DTRAIN $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* OMEGA $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC OMEGA $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* RH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC RH $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* U $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC U $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* V $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC V $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 # --- A3mstC fields --- -* DQRCU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC DQRCU 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* DQRLSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC DQRLSAN 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* REEVAPCN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC REEVAPCN 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* REEVAPLS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC REEVAPLS 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* DQRCU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC DQRCU $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* DQRLSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC DQRLSAN $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* REEVAPCN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC REEVAPCN $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* REEVAPLS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC REEVAPLS $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 # --- A3mstE fields --- -* CMFMC $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC CMFMC 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* PFICU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFICU 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* PFILSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFILSAN 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* PFLCU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFLCU 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 -* PFLLSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFLLSAN 1980-2021/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* CMFMC $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC CMFMC $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* PFICU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFICU $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* PFILSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFILSAN $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* PFLCU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFLCU $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* PFLLSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFLLSAN $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 # --- I3 fields --- -* PS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC PS 1980-2021/1-12/1-31/* EFY xy 1 * - 1 1 -* SPHU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC QV 1980-2021/1-12/1-31/* EFY xyz 1 * - 1 1 -* TMPU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC T 1980-2021/1-12/1-31/* EFY xyz 1 * - 1 1 +* PS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC PS $YYYY/$MM/$DD/* EFY xy 1 * - 1 1 +* SPHU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC QV $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 +* TMPU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC T $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 -* PS_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC PS 1980-2021/1-12/1-31/1/+1day EFY xy 1 * - 1 1 -* SPHU_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC QV 1980-2021/1-12/1-31/1/+1day EFY xyz 1 * - 1 1 -* TMPU_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC T 1980-2021/1-12/1-31/1/+1day EFY xyz 1 * - 1 1 +* PS_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC PS $YYYY/$MM/1-31/1/+1day EFY xy 1 * - 1 1 +* SPHU_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC QV $YYYY/$MM/1-31/1/+1day EFY xyz 1 * - 1 1 +* TMPU_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC T $YYYY/$MM/1-31/1/+1day EFY xyz 1 * - 1 1 #============================================================================== # --- Fields for lightning emissions (Extension 103) --- @@ -134,8 +134,8 @@ METDIR: ${RUNDIR_MET_DIR} #============================================================================== (((LightNOx (((.not.LightningClimatology -* FLASH_DENS $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_$YYYY_$MM.nc4 LDENS 1980-2021/1-12/1-31/0-23/+90minute RFY3 xy 1 * - 1 1 -* CONV_DEPTH $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_$YYYY_$MM.nc4 CTH 1980-2021/1-12/1-31/0-23/+90minute RFY3 xy 1 * - 1 1 +* FLASH_DENS $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_$YYYY_$MM.nc4 LDENS $YYYY/$MM/$DD/0-23/+90minute RFY3 xy 1 * - 1 1 +* CONV_DEPTH $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_$YYYY_$MM.nc4 CTH $YYYY/$MM/$DD/0-23/+90minute RFY3 xy 1 * - 1 1 ))).not.LightningClimatology (((LightningClimatology diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index 1c7e94048..9d494333f 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -807,7 +807,7 @@ VerboseOnCores: root # Accepted values: root all # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? 1980-2021/1-12/1-31/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 )))GC_BCs #============================================================================== diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 934dcba6c..468252647 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1067,7 +1067,7 @@ Mask fractions: false # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? 1980-2021/1-12/1-31/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 )))GC_BCs #============================================================================== diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 3bcbf0fe7..fd52976c3 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -3448,7 +3448,7 @@ VerboseOnCores: root # Accepted values: root all # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2021-09/fullchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? 1980-2021/1-12/1-31/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/v2021-09/fullchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 )))GC_BCs (((CHEMISTRY_INPUT From e8d1978318c7f0c36c8f6f14cea93cdbdaefe851 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 22 Apr 2024 14:53:09 -0400 Subject: [PATCH 243/331] Remove "type" from surface type diagnostic descriptions Signed-off-by: Lizzie Lundgren --- Headers/state_met_mod.F90 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Headers/state_met_mod.F90 b/Headers/state_met_mod.F90 index 0cf953b8e..f0967b8e0 100644 --- a/Headers/state_met_mod.F90 +++ b/Headers/state_met_mod.F90 @@ -4569,27 +4569,27 @@ SUBROUTINE Get_Metadata_State_Met( am_I_Root, metadataID, Found, RC, & IF ( isRank ) Rank = 2 CASE ( 'FRLAKE' ) - IF ( isDesc ) Desc = 'Fraction of lake type in grid box' + IF ( isDesc ) Desc = 'Fraction of lake in grid box' IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 CASE ( 'FRLAND' ) - IF ( isDesc ) Desc = 'Fraction of land type in grid box' + IF ( isDesc ) Desc = 'Fraction of land in grid box' IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 CASE ( 'FRLANDICE' ) - IF ( isDesc ) Desc = 'Fraction of land ice type in grid box' + IF ( isDesc ) Desc = 'Fraction of land ice in grid box' IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 CASE ( 'FROCEAN' ) IF ( isUnits ) Units = '1' - IF ( isDesc ) Desc = 'Fraction of ocean type in grid box' + IF ( isDesc ) Desc = 'Fraction of ocean in grid box' IF ( isRank ) Rank = 2 CASE ( 'FRSEAICE' ) - IF ( isDesc ) Desc = 'Fraction of sea ice' + IF ( isDesc ) Desc = 'Fraction of sea ice in grid box' IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 From 4955a3fb83b0ecba0e679e43b2ac5909b93e0782 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 22 Apr 2024 15:54:59 -0400 Subject: [PATCH 244/331] Add comments clarifying the various surface type met-fields and masks Signed-off-by: Lizzie Lundgren --- GeosCore/calc_met_mod.F90 | 4 +++- GeosCore/flexgrid_read_mod.F90 | 2 +- Headers/state_diag_mod.F90 | 8 ++++---- Headers/state_met_mod.F90 | 24 ++++++++++++++---------- Interfaces/GCHP/Includes_Before_Run.H | 2 +- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/GeosCore/calc_met_mod.F90 b/GeosCore/calc_met_mod.F90 index 2db7000e6..08350e76a 100644 --- a/GeosCore/calc_met_mod.F90 +++ b/GeosCore/calc_met_mod.F90 @@ -296,7 +296,9 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, & ! Snow FRSNOW = State_Met%FRSNOW(I,J) - ! Land without snow or ice + ! Land without snow or ice. Note that import FRLAND is defined as land + ! without ice. Land with ice is in import FRLANDIC. To get land without + ! snow or ice we thus only subtract time-varying FRSNOW. FRLAND_NOSNOW_NOICE = State_Met%FRLAND(I,J) - State_Met%FRSNOW(I,J) ! Water without sea ice diff --git a/GeosCore/flexgrid_read_mod.F90 b/GeosCore/flexgrid_read_mod.F90 index 92b7bd3fb..43624359c 100644 --- a/GeosCore/flexgrid_read_mod.F90 +++ b/GeosCore/flexgrid_read_mod.F90 @@ -112,7 +112,7 @@ SUBROUTINE FlexGrid_Read_CN( Input_Opt, State_Grid, State_Met ) CALL Get_Met_2D( Input_Opt, State_Grid, Q, TRIM(v_name) ) State_Met%FRLAKE = Q - ! Read FRLAND + ! Read FRLAND (land without lake or ice) v_name = "FRLAND" CALL Get_Met_2D( Input_Opt, State_Grid, Q, TRIM(v_name) ) State_Met%FRLAND = Q diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index b4ec8d3f0..877901329 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -14647,22 +14647,22 @@ SUBROUTINE Get_Metadata_State_Diag( am_I_Root, metadataID, Found, & IF ( isTagged ) TagId = 'DRY' ELSE IF ( TRIM( Name_AllCaps ) == 'ISWATER' ) THEN - IF ( isDesc ) Desc = 'Water mask determined from meteorology input' + IF ( isDesc ) Desc = 'Water mask including lakes and oceans' IF ( isUnits ) Units = '.' IF ( isRank ) Rank = 2 ELSE IF ( TRIM( Name_AllCaps ) == 'ISLAND' ) THEN - IF ( isDesc ) Desc = 'Land mask determined from meteorology input' + IF ( isDesc ) Desc = 'Land mask excluding ice and snow' IF ( isUnits ) Units = '.' IF ( isRank ) Rank = 2 ELSE IF ( TRIM( Name_AllCaps ) == 'ISICE' ) THEN - IF ( isDesc ) Desc = 'Ice mask determined from meteorology input' + IF ( isDesc ) Desc = 'Ice mask including over land and ocean' IF ( isUnits ) Units = '.' IF ( isRank ) Rank = 2 ELSE IF ( TRIM( Name_AllCaps ) == 'ISSNOW' ) THEN - IF ( isDesc ) Desc = 'Snow mask determined from meteorology input' + IF ( isDesc ) Desc = 'Snow mask over land only' IF ( isUnits ) Units = '.' IF ( isRank ) Rank = 2 diff --git a/Headers/state_met_mod.F90 b/Headers/state_met_mod.F90 index f0967b8e0..0e611f723 100644 --- a/Headers/state_met_mod.F90 +++ b/Headers/state_met_mod.F90 @@ -62,10 +62,10 @@ MODULE State_Met_Mod REAL(fp), POINTER :: EFLUX (:,: ) ! Latent heat flux [W/m2] REAL(fp), POINTER :: FLASH_DENS (:,: ) ! Lightning flash density [#/km2/s] REAL(fp), POINTER :: FRCLND (:,: ) ! Olson land fraction [1] - REAL(fp), POINTER :: FRLAKE (:,: ) ! Fraction of lake type in grid box [1] - REAL(fp), POINTER :: FRLAND (:,: ) ! Fraction of land type in grid box [1] - REAL(fp), POINTER :: FRLANDICE (:,: ) ! Fraction of land ice type in grid - ! box [1] + REAL(fp), POINTER :: FRLAKE (:,: ) ! Fraction of lake in grid box [1] + REAL(fp), POINTER :: FRLAND (:,: ) ! Fraction of land without lake or + ! ice in grid box [1] + REAL(fp), POINTER :: FRLANDICE (:,: ) ! Fraction of land ice in grid box [1] REAL(fp), POINTER :: FROCEAN (:,: ) ! Fraction of ocean in grid box [1] REAL(fp), POINTER :: FRSEAICE (:,: ) ! Fraction of ocean covered by sea ! ice [1] @@ -74,10 +74,14 @@ MODULE State_Met_Mod REAL(fp), POINTER :: GWETROOT (:,: ) ! Root soil wetness [1] REAL(fp), POINTER :: GWETTOP (:,: ) ! Top soil moisture [1] REAL(fp), POINTER :: HFLUX (:,: ) ! Sensible heat flux [W/m2] - LOGICAL, POINTER :: IsLand (:,: ) ! Is this a land grid box? - LOGICAL, POINTER :: IsWater (:,: ) ! Is this a water grid box? - LOGICAL, POINTER :: IsIce (:,: ) ! Is this a ice grid box? - LOGICAL, POINTER :: IsSnow (:,: ) ! Is this a snow grid box? + LOGICAL, POINTER :: IsLand (:,: ) ! True if majority surface type is land, + ! without snow or ice + LOGICAL, POINTER :: IsWater (:,: ) ! True if majority surface type is water, + ! including lake or ocean + LOGICAL, POINTER :: IsIce (:,: ) ! True if majority surface type is ice, + ! including over land or ocean + LOGICAL, POINTER :: IsSnow (:,: ) ! True if majority surface type is snow, + ! over land only REAL(fp), POINTER :: LAI (:,: ) ! Leaf area index [m2/m2] ! (online) REAL(fp), POINTER :: PARDR (:,: ) ! Direct photsynthetically @@ -4574,7 +4578,7 @@ SUBROUTINE Get_Metadata_State_Met( am_I_Root, metadataID, Found, RC, & IF ( isRank ) Rank = 2 CASE ( 'FRLAND' ) - IF ( isDesc ) Desc = 'Fraction of land in grid box' + IF ( isDesc ) Desc = 'Fraction of land in grid box, excluding lake and ice' IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 @@ -4594,7 +4598,7 @@ SUBROUTINE Get_Metadata_State_Met( am_I_Root, metadataID, Found, RC, & IF ( isRank ) Rank = 2 CASE ( 'FRSNOW' ) - IF ( isDesc ) Desc = 'Fraction of snow on land in grid box' + IF ( isDesc ) Desc = 'Fraction of snow in grid box, excluding snow on ice' IF ( isUnits ) Units = '1' IF ( isRank ) Rank = 2 diff --git a/Interfaces/GCHP/Includes_Before_Run.H b/Interfaces/GCHP/Includes_Before_Run.H index 1526d67b8..c3caee2f6 100644 --- a/Interfaces/GCHP/Includes_Before_Run.H +++ b/Interfaces/GCHP/Includes_Before_Run.H @@ -32,7 +32,7 @@ State_Met%CLDFRC = CLDFRC ! 1 State_Met%EFLUX = EFLUX ! W m-2 State_Met%HFLUX = HFLUX ! W/m2 - State_Met%FRLAND = FRLAND ! 1 + State_Met%FRLAND = FRLAND ! 1, excludes lake and ice State_Met%FROCEAN = FROCEAN ! 1 State_Met%FRLAKE = FRLAKE ! 1 State_Met%FRLANDICE = FRLANDIC ! 1 From 196ebed02f51de66ba420c7f3357e16074110f4d Mon Sep 17 00:00:00 2001 From: Hannah Obermiller Nesser Date: Tue, 23 Apr 2024 11:12:05 -0700 Subject: [PATCH 245/331] Added information on removed options --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index aadc0262e..6e22a215c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - `IU_BPCH` logical file unit (in `GeosUtil/file_mod.F90`) - Removed tagged CH4 and CO species handling from `carbon_gases_mod.F90` - GitHub config files `.github/stale.yml` and `.github/no-response.yml` +- Unused CO2 and carbon simulation options from `geoschem_config.yml` (and from related code in co2_mod.F90). ## [14.3.1] - 2024-04-02 ### Added From 7552943b6d403618664539de13c01b47827d709c Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 23 Apr 2024 14:52:03 -0400 Subject: [PATCH 246/331] Merge 14.4.0-alpha.13 into the bugfix/carbon-gchp-extdata branch This updates the bugfix/carbon-gchp-extdata branch to 14.4.0-alpha.13, which is the head of dev/14.4.0 branch at time of this writing. Signed-off-by: Bob Yantosca --- .github/workflows/stale.yml | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 000000000..b14b1f621 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,38 @@ +# This workflow warns and then closes issues that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues + +on: + schedule: + - cron: '0 0 * * *' # Run every night at midnight + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-label: 'stale' + exempt-issue-labels: + - 'category: Discussion' + - 'category: Feature Request' + - 'deferred' + - 'help needed: Open Research Problem' + - 'help needed: Request Input from Community' + - 'never stale' + - 'TODO: Documentation' + days-before-issue-stale: 30 + days-before-issue-close: 7 + stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. If there are no updates within 7 days it will be closed. You can add the "never stale" tag to prevent the issue from closing this issue.' + close-issue-message: 'Closing due to inactivity' + days-before-pr-stale: -1 + days-before-pr-close: -1 From a087c41e716ede1e5aba32f61e77dbffa913f36b Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 22 Apr 2024 16:26:45 -0400 Subject: [PATCH 247/331] Update APM to use HETP by default instead of ISORROPIA II Signed-off-by: Lizzie Lundgren --- GeosCore/apm_driv_mod.F90 | 72 +++++++++++++++---- .../geoschem_config.yml.aerosol | 3 + 2 files changed, 62 insertions(+), 13 deletions(-) diff --git a/GeosCore/apm_driv_mod.F90 b/GeosCore/apm_driv_mod.F90 index 8141715b6..467568f4a 100644 --- a/GeosCore/apm_driv_mod.F90 +++ b/GeosCore/apm_driv_mod.F90 @@ -360,6 +360,7 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, & use parkind, only : im => kind_im, rb => kind_rb USE IsorropiaII_Main_Mod, ONLY : Isorropia + USE HETP_mod, ONLY : mach_hetp_main_15cases use module_mosaic_therm, only: mosaic ! ! !INPUT PARAMETERS: @@ -507,6 +508,13 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, & CHARACTER(LEN=15) :: SCASI REAL*8 :: TSO4COAT,DNH3MAX REAL*8 :: TH2O,TINORG !Yu+ 6/1/11 + REAL*8 :: HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4 + REAL*8 :: HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl + REAL*8 :: HETP_HCl, HETP_Na, HETP_Ca, HETP_K + REAL*8 :: HETP_Mg, HETP_H, HETP_OH, HETP_LWC + REAL*8 :: HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg + REAL*8 :: HETP_frSO4, HETP_num + !-------------------------------------------------------------------------- ! These do not appear to be used anymore (bmy, 6/18/19) !REAL,SAVE :: SEABIRDEM(State_Grid%NX,State_Grid%NY,2) @@ -728,7 +736,14 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, & !$OMP PRIVATE( TSO4COAT ,DNH3MAX ) & !$OMP PRIVATE( TH2O, XM,VRATIO) & !$OMP PRIVATE( SO4_bin_sum, SEA_bin_sum) & - !$OMP SCHEDULE( DYNAMIC ) + !$OMP PRIVATE( HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4 ) & + !$OMP PRIVATE( HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl ) & + !$OMP PRIVATE( HETP_HCl, HETP_Na, HETP_Ca, HETP_K ) & + !$OMP PRIVATE( HETP_Mg, HETP_H, HETP_OH, HETP_LWC ) & + !$OMP PRIVATE( HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg ) & + !$OMP PRIVATE( HETP_frSO4, HETP_num ) & + !$OMP COLLAPSE( 3 ) & + !$OMP SCHEDULE( DYNAMIC, 8 ) DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX @@ -830,14 +845,16 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, & ! Call ISORROPIA !--------------------------------- - ! set type of ISORROPIA call - ! Forward problem, do not change this value - ! 0e+0_fp represents forward problem - CNTRL(1) = 0.0e+0_fp + IF ( .not. Input_Opt%LHETP ) THEN + ! set type of ISORROPIA call + ! Forward problem, do not change this value + ! 0e+0_fp represents forward problem + CNTRL(1) = 0.0e+0_fp - ! Metastable for now - ! 1e+0_fp represents metastable problem - CNTRL(2) = 1.0e+0_fp + ! Metastable for now + ! 1e+0_fp represents metastable problem + CNTRL(2) = 1.0e+0_fp + ENDIF ! Insert concentrations [mole/m3] into WI & prevent underflow WI(1) = MAX( TNA, CONMIN ) @@ -850,11 +867,40 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, & WI(8) = MAX( TMG, CONMIN ) ! Perform aerosol thermodynamic equilibrium - ! ISORROPIA can be found in ISORROPIAIICODE.f - ! inputs are WI, RHI, TEMPI, CNTRL - CALL ISORROPIA( WI, RHI, TEMPI, CNTRL, & - WT, GAS1, AERLIQ, AERSLD, & - SCASI, OTHER) + IF ( Input_Opt%LHETP ) THEN + ! For safety + GAS = 0.0d0 + AERLIQ = 0.0d0 + Call MACH_HETP_Main_15Cases( WI(2), WI(3), WI(4), WI(1), WI(5), & + WI(6), WI(7), WI(8), TEMPI, RHI, & + HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4, & + HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl, & + HETP_HCl, HETP_Na, HETP_Ca, HETP_K, & + HETP_Mg, HETP_H, HETP_OH, HETP_LWC, & + HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg, & + HETP_frSO4, HETP_num ) + ! Spoof ISORROPIA outputs which are still used + GAS1(1) = HETP_NH3 + GAS1(2) = HETP_HNO3 + GAS1(3) = HETP_HCl + ! Mostly used for diagnostics + AERLIQ( 1) = HETP_H + AERLIQ( 2) = HETP_Na + AERLIQ( 3) = HETP_NH4 + AERLIQ( 4) = HETP_Cl + AERLIQ( 5) = HETP_SO4 + AERLIQ( 6) = HETP_HSO4 + AERLIQ( 7) = HETP_NO3 + AERLIQ( 8) = HETP_LWC + ! WT is used below but is identical to WI for a forward case + WT(:) = WI(:) + + ELSE + ! inputs are WI, RHI, TEMPI, CNTRL + CALL ISORROPIA( WI, RHI, TEMPI, CNTRL, & + WT, GAS1, AERLIQ, AERSLD, & + SCASI, OTHER) + ENDIF IF(IFDOISRP==1.or.IFDOISRP==3.or.IFDOISRP==4)THEN TH2O = AERLIQ(8) ! aerosol water (mole/m3) diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol index ca797b351..bd8817d94 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol @@ -135,6 +135,9 @@ aerosols: activate: true metal_cat_SO2_oxidation: true + inorganic: + use_hetp: true + #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) #============================================================================ From 6135f0a2ba7d7e072c028957fbbcd37fcc0f5cea Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 25 Apr 2024 13:14:01 -0400 Subject: [PATCH 248/331] Remove option to use ISORROPIA II instead of HETP Signed-off-by: Lizzie Lundgren --- GeosCore/aerosol_thermodynamics_mod.F90 | 6 +- GeosCore/apm_driv_mod.F90 | 77 +++++++------------ GeosCore/input_mod.F90 | 15 ---- Headers/input_opt_mod.F90 | 2 - run/CESM/geoschem_config.yml | 3 - .../geoschem_config.yml.aerosol | 3 - .../geoschem_config.yml.fullchem | 3 - .../geoschem_config.yml.fullchem | 3 - run/GEOS/geoschem_config.yml | 3 - run/WRF/fullchem/geoschem_config.yml | 3 - 10 files changed, 30 insertions(+), 88 deletions(-) diff --git a/GeosCore/aerosol_thermodynamics_mod.F90 b/GeosCore/aerosol_thermodynamics_mod.F90 index 9f2632af9..b91140337 100644 --- a/GeosCore/aerosol_thermodynamics_mod.F90 +++ b/GeosCore/aerosol_thermodynamics_mod.F90 @@ -137,6 +137,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & USE TIME_MOD, ONLY : ITS_A_NEW_MONTH USE TIME_MOD, ONLY : GET_ELAPSED_SEC USE HETP_mod, ONLY : mach_hetp_main_15cases + USE IsorropiaII_Main_Mod, ONLY : Isorropia ! ! !INPUT PARAMETERS: ! @@ -198,7 +199,6 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & REAL(fp) :: TNIT, TNO3, TSO4, VOL REAL(fp) :: HNO3_UGM3 REAL(f8) :: AERLIQ(NIONSA+NGASAQA+2) - REAL(f8) :: AERSLD(NSLDSA) REAL(f8) :: GAS(NGASAQA) REAL(f8) :: OTHER(NOTHERA) REAL(f8) :: WI(NCOMPA) @@ -482,7 +482,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & !$OMP PRIVATE( WT, GAS, TEMPI, RHI, VOL ) & !$OMP PRIVATE( TSO4, TNH3, TNA, TCL, ANO3 ) & !$OMP PRIVATE( GNO3, TCA, TMG, TK ) & - !$OMP PRIVATE( SCASI, P_Pa, TNO3, AERLIQ, AERSLD ) & + !$OMP PRIVATE( SCASI, P_Pa, TNO3, AERLIQ ) & !$OMP PRIVATE( OTHER, TNH4, TNIT, HPLUSTEMP, NUM_SAV ) & !$OMP PRIVATE( GCL, ACL, AlkR, NM, PHCl ) & !$OMP PRIVATE( Qk, n_air, n_ssc, Hplus, Dcs ) & @@ -552,7 +552,6 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & ! This will prevent values from prior iterations hanging around. ACl = 0.0_fp AERLIQ = 0.0_f8 - AERSLD = 0.0_f8 AlkR = 0.0_fp ANO3 = 0.0_fp F_HNO3 = 0.0_fp @@ -796,7 +795,6 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & ! and spoof the other outputs WT = WI AERLIQ = 0.0_f8 - AERSLD = 0.0_f8 GAS = 0.0_f8 OTHER = 0.0_f8 diff --git a/GeosCore/apm_driv_mod.F90 b/GeosCore/apm_driv_mod.F90 index 467568f4a..217397904 100644 --- a/GeosCore/apm_driv_mod.F90 +++ b/GeosCore/apm_driv_mod.F90 @@ -498,12 +498,10 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, & REAL(fp) :: TNA, TCL, TNH3, TNH4 REAL(fp) :: TNIT, TNO3, TSO4 REAL(f8) :: AERLIQ(NIONSA+NGASAQA+2) - REAL(f8) :: AERSLD(NSLDSA) REAL(f8) :: GAS1(NGASAQA) REAL(f8) :: OTHER(NOTHERA) REAL(f8) :: WI(NCOMPA) REAL(f8) :: WT(NCOMPA) - REAL(f8) :: CNTRL(NCTRLA) CHARACTER(LEN=255) :: X CHARACTER(LEN=15) :: SCASI REAL*8 :: TSO4COAT,DNH3MAX @@ -731,8 +729,8 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, & !$OMP DEFAULT( SHARED ) & !$OMP PRIVATE( I, J, L, N, WI, WT, GAS1, TEMPI )& !$OMP PRIVATE( RHI, VOL, TSO4, TNH3, TNA, TCL, ANO3, GNO3 ) & - !$OMP PRIVATE( TCA, TMG, TK, CNTRL, SCASI ) & - !$OMP PRIVATE( TNO3, AERLIQ, AERSLD, OTHER, TNH4, TNIT ) & + !$OMP PRIVATE( TCA, TMG, TK, SCASI ) & + !$OMP PRIVATE( TNO3, AERLIQ, OTHER, TNH4, TNIT ) & !$OMP PRIVATE( TSO4COAT ,DNH3MAX ) & !$OMP PRIVATE( TH2O, XM,VRATIO) & !$OMP PRIVATE( SO4_bin_sum, SEA_bin_sum) & @@ -845,17 +843,6 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, & ! Call ISORROPIA !--------------------------------- - IF ( .not. Input_Opt%LHETP ) THEN - ! set type of ISORROPIA call - ! Forward problem, do not change this value - ! 0e+0_fp represents forward problem - CNTRL(1) = 0.0e+0_fp - - ! Metastable for now - ! 1e+0_fp represents metastable problem - CNTRL(2) = 1.0e+0_fp - ENDIF - ! Insert concentrations [mole/m3] into WI & prevent underflow WI(1) = MAX( TNA, CONMIN ) WI(2) = MAX( TSO4, CONMIN ) @@ -867,40 +854,32 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, & WI(8) = MAX( TMG, CONMIN ) ! Perform aerosol thermodynamic equilibrium - IF ( Input_Opt%LHETP ) THEN - ! For safety - GAS = 0.0d0 - AERLIQ = 0.0d0 - Call MACH_HETP_Main_15Cases( WI(2), WI(3), WI(4), WI(1), WI(5), & - WI(6), WI(7), WI(8), TEMPI, RHI, & - HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4, & - HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl, & - HETP_HCl, HETP_Na, HETP_Ca, HETP_K, & - HETP_Mg, HETP_H, HETP_OH, HETP_LWC, & - HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg, & - HETP_frSO4, HETP_num ) - ! Spoof ISORROPIA outputs which are still used - GAS1(1) = HETP_NH3 - GAS1(2) = HETP_HNO3 - GAS1(3) = HETP_HCl - ! Mostly used for diagnostics - AERLIQ( 1) = HETP_H - AERLIQ( 2) = HETP_Na - AERLIQ( 3) = HETP_NH4 - AERLIQ( 4) = HETP_Cl - AERLIQ( 5) = HETP_SO4 - AERLIQ( 6) = HETP_HSO4 - AERLIQ( 7) = HETP_NO3 - AERLIQ( 8) = HETP_LWC - ! WT is used below but is identical to WI for a forward case - WT(:) = WI(:) - - ELSE - ! inputs are WI, RHI, TEMPI, CNTRL - CALL ISORROPIA( WI, RHI, TEMPI, CNTRL, & - WT, GAS1, AERLIQ, AERSLD, & - SCASI, OTHER) - ENDIF + ! For safety + GAS = 0.0d0 + AERLIQ = 0.0d0 + Call MACH_HETP_Main_15Cases( WI(2), WI(3), WI(4), WI(1), WI(5), & + WI(6), WI(7), WI(8), TEMPI, RHI, & + HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4, & + HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl, & + HETP_HCl, HETP_Na, HETP_Ca, HETP_K, & + HETP_Mg, HETP_H, HETP_OH, HETP_LWC, & + HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg, & + HETP_frSO4, HETP_num ) + ! Spoof ISORROPIA outputs which are still used + GAS1(1) = HETP_NH3 + GAS1(2) = HETP_HNO3 + GAS1(3) = HETP_HCl + ! Mostly used for diagnostics + AERLIQ( 1) = HETP_H + AERLIQ( 2) = HETP_Na + AERLIQ( 3) = HETP_NH4 + AERLIQ( 4) = HETP_Cl + AERLIQ( 5) = HETP_SO4 + AERLIQ( 6) = HETP_HSO4 + AERLIQ( 7) = HETP_NO3 + AERLIQ( 8) = HETP_LWC + ! WT is used below but is identical to WI for a forward case + WT(:) = WI(:) IF(IFDOISRP==1.or.IFDOISRP==3.or.IFDOISRP==4)THEN TH2O = AERLIQ(8) ! aerosol water (mole/m3) diff --git a/GeosCore/input_mod.F90 b/GeosCore/input_mod.F90 index 14be7453a..20c6b154f 100644 --- a/GeosCore/input_mod.F90 +++ b/GeosCore/input_mod.F90 @@ -1709,19 +1709,6 @@ SUBROUTINE Config_Aerosol( Config, Input_Opt, RC ) ENDIF Input_Opt%LDSTUP = v_bool - !------------------------------------------------------------------------ - ! Use HETP instead of ISORROPIA II for ATE? - !------------------------------------------------------------------------ - key = "aerosols%inorganic%use_hetp" - v_bool = MISSING_BOOL - CALL QFYAML_Add_Get( Config, TRIM( key ), v_bool, "", RC ) - IF ( RC /= GC_SUCCESS ) THEN - errMsg = 'Error parsing ' // TRIM( key ) // '!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN - ENDIF - Input_Opt%LHETP = v_bool - !------------------------------------------------------------------------ ! Use online sea-salt aerosols? !------------------------------------------------------------------------ @@ -1908,7 +1895,6 @@ SUBROUTINE Config_Aerosol( Config, Input_Opt, RC ) ! Turn off switches for simulations that don't use aerosols IF ( ( .not. Input_Opt%ITS_A_FULLCHEM_SIM ) .and. & ( .not. Input_Opt%ITS_AN_AEROSOL_SIM ) ) THEN - Input_Opt%LHETP = .FALSE. Input_Opt%LSULF = .FALSE. Input_Opt%LMETALCATSO2 = .FALSE. Input_Opt%LCARB = .FALSE. @@ -1930,7 +1916,6 @@ SUBROUTINE Config_Aerosol( Config, Input_Opt, RC ) IF ( Input_Opt%amIRoot ) THEN WRITE( 6, 90 ) 'AEROSOL SETTINGS' WRITE( 6, 95 ) '----------------' - WRITE( 6, 100 ) 'Use HETP for equilibrium? : ', Input_Opt%LHETP WRITE( 6, 100 ) 'Online SULFATE AEROSOLS? : ', Input_Opt%LSULF WRITE( 6, 100 ) 'Metal catalyzed SO2 ox.? : ', Input_Opt%LMETALCATSO2 WRITE( 6, 100 ) 'Online CARBON AEROSOLS? : ', Input_Opt%LCARB diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index 21a89122e..81777dc85 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -108,7 +108,6 @@ MODULE Input_Opt_Mod LOGICAL :: LDEAD LOGICAL :: LSSALT LOGICAL :: LDSTUP - LOGICAL :: LHETP REAL(fp), POINTER :: SALA_REDGE_um(:) REAL(fp), POINTER :: SALC_REDGE_um(:) LOGICAL :: LGRAVSTRAT @@ -612,7 +611,6 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) Input_Opt%LDUST = .FALSE. Input_Opt%LDEAD = .FALSE. Input_Opt%LDSTUP = .FALSE. - Input_Opt%LHETP = .FALSE. Input_Opt%LSSALT = .FALSE. Input_Opt%SALA_REDGE_um = 0.0_fp Input_Opt%SALC_REDGE_um = 0.0_fp diff --git a/run/CESM/geoschem_config.yml b/run/CESM/geoschem_config.yml index be54e96f4..d7a8a5270 100644 --- a/run/CESM/geoschem_config.yml +++ b/run/CESM/geoschem_config.yml @@ -365,6 +365,3 @@ aerosols: sulfate: activate: true metal_cat_SO2_oxidation: true - - inorganic: - use_hetp: true diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol index bd8817d94..ca797b351 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol @@ -135,9 +135,6 @@ aerosols: activate: true metal_cat_SO2_oxidation: true - inorganic: - use_hetp: true - #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) #============================================================================ diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem index 08979031b..0f09865e2 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -388,9 +388,6 @@ aerosols: activate: true metal_cat_SO2_oxidation: true - inorganic: - use_hetp: true - #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) #============================================================================ diff --git a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem index 6a2bda91e..c322f1d6e 100644 --- a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -368,6 +368,3 @@ aerosols: sulfate: activate: true metal_cat_SO2_oxidation: true - - inorganic: - use_hetp: true diff --git a/run/GEOS/geoschem_config.yml b/run/GEOS/geoschem_config.yml index 8f31254a6..a30a4e96d 100644 --- a/run/GEOS/geoschem_config.yml +++ b/run/GEOS/geoschem_config.yml @@ -349,6 +349,3 @@ aerosols: sulfate: activate: true metal_cat_SO2_oxidation: true - - inorganic: - use_hetp: true diff --git a/run/WRF/fullchem/geoschem_config.yml b/run/WRF/fullchem/geoschem_config.yml index 7546262d9..50d7d7520 100644 --- a/run/WRF/fullchem/geoschem_config.yml +++ b/run/WRF/fullchem/geoschem_config.yml @@ -355,9 +355,6 @@ aerosols: activate: true metal_cat_SO2_oxidation: true - inorganic: - use_hetp: true - #============================================================================ # Settings for diagnostics (other than HISTORY and HEMCO) #============================================================================ From 5ff2ae302b7325b3775ac9fbad12a806ac8a754f Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Fri, 26 Apr 2024 09:41:41 -0400 Subject: [PATCH 249/331] Delete ISORROPIA II since replaced with HETP Signed-off-by: Lizzie Lundgren --- CMakeLists.txt | 1 - GeosCore/CMakeLists.txt | 3 +- GeosCore/aerosol_thermodynamics_mod.F90 | 1 - GeosCore/apm_driv_mod.F90 | 1 - ISORROPIA/.gitignore | 13 - ISORROPIA/CMakeLists.txt | 12 - ISORROPIA/isorropiaII_main_mod.F | 38093 ---------------------- 7 files changed, 1 insertion(+), 38123 deletions(-) delete mode 100644 ISORROPIA/.gitignore delete mode 100755 ISORROPIA/CMakeLists.txt delete mode 100644 ISORROPIA/isorropiaII_main_mod.F diff --git a/CMakeLists.txt b/CMakeLists.txt index 82cd5f540..53b4bf597 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,6 @@ add_subdirectory(NcdfUtil) add_subdirectory(History) add_subdirectory(ObsPack) add_subdirectory(APM) -add_subdirectory(ISORROPIA) add_subdirectory(GeosRad) add_subdirectory(GTMM) add_subdirectory(GeosCore) diff --git a/GeosCore/CMakeLists.txt b/GeosCore/CMakeLists.txt index 370cb5404..f01fbbd42 100755 --- a/GeosCore/CMakeLists.txt +++ b/GeosCore/CMakeLists.txt @@ -102,8 +102,7 @@ endif() # Define dependencies for libGeosCore.a target_link_libraries(GeosCore PUBLIC ObsPack - History - Isorropia + History KPP HETP_core $ # link only to avoid gathering the rest of the TURs diff --git a/GeosCore/aerosol_thermodynamics_mod.F90 b/GeosCore/aerosol_thermodynamics_mod.F90 index b91140337..a5a1559e8 100644 --- a/GeosCore/aerosol_thermodynamics_mod.F90 +++ b/GeosCore/aerosol_thermodynamics_mod.F90 @@ -137,7 +137,6 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & USE TIME_MOD, ONLY : ITS_A_NEW_MONTH USE TIME_MOD, ONLY : GET_ELAPSED_SEC USE HETP_mod, ONLY : mach_hetp_main_15cases - USE IsorropiaII_Main_Mod, ONLY : Isorropia ! ! !INPUT PARAMETERS: ! diff --git a/GeosCore/apm_driv_mod.F90 b/GeosCore/apm_driv_mod.F90 index 217397904..1c110a6ee 100644 --- a/GeosCore/apm_driv_mod.F90 +++ b/GeosCore/apm_driv_mod.F90 @@ -359,7 +359,6 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, & use parkind, only : im => kind_im, rb => kind_rb - USE IsorropiaII_Main_Mod, ONLY : Isorropia USE HETP_mod, ONLY : mach_hetp_main_15cases use module_mosaic_therm, only: mosaic ! diff --git a/ISORROPIA/.gitignore b/ISORROPIA/.gitignore deleted file mode 100644 index 865e37b19..000000000 --- a/ISORROPIA/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.[oax] -*.mod -*.MOD -*~* -geos -geostomas -geosapm -*.pp.* -*.pdb -*.inst.* -*.continue.* -*.ppk -core.* diff --git a/ISORROPIA/CMakeLists.txt b/ISORROPIA/CMakeLists.txt deleted file mode 100755 index 34d1af383..000000000 --- a/ISORROPIA/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -add_library(Isorropia EXCLUDE_FROM_ALL isorropiaII_main_mod.F) - -target_link_libraries(Isorropia PUBLIC GEOSChemBuildProperties) - -target_compile_options(Isorropia PRIVATE - "" - # NOTE: ISORROPIA probably needs to be compiled - # with REAL*8 or else it'll crash - $<$:-r8> - $<$:-fdefault-real-8 -fdefault-double-8> -) - diff --git a/ISORROPIA/isorropiaII_main_mod.F b/ISORROPIA/isorropiaII_main_mod.F deleted file mode 100644 index a23d4119f..000000000 --- a/ISORROPIA/isorropiaII_main_mod.F +++ /dev/null @@ -1,38093 +0,0 @@ -!#if defined( ISORROPIA_V22 ) -!#undef ISORROPIA_V22 -!#endif -#define ISORROPIA_V22 -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !MODULE: isorropiaII_main_mod -! -! !DESCRIPTION: Module ISORROPIAII\_MAIN\_MOD containes routines and -! variables for calculating aerosol thermodynamic equilibrium. -!\\ -!\\ -! !INTERFACE: -! - MODULE ISORROPIAII_MAIN_MOD -! -! !USES: -! - Implicit None - - Private -! -! !PUBLIC MEMBER FUNCTIONS: -! - Public :: Isorropia -! -! !PRIVATE MEMBER FUNCTIONS: -! - Private :: INIT1 - Private :: INIT2 - Private :: ISOINIT3 - Private :: INIT4 - Private :: ADJUST - Private :: CALCHA - Private :: CALCHAP - Private :: CALCNA - Private :: CALCNAP - Private :: CALCNH3 - Private :: CALCNH3P - Private :: CALCNHA - Private :: CALCNHP - Private :: CALCAMAQ - Private :: CALCAMAQ2 - Private :: CALCCLAQ - Private :: CALCCLAQ2 - Private :: CALCNIAQ - Private :: CALCNIAQ2 - Private :: CALCMR - Private :: CALCMDRH - Private :: CALCMDRH2 - Private :: CALCMDRP - Private :: CALCMDRPII - Private :: CALCHS4 - Private :: CALCPH - Private :: CALCACT - Private :: CALCACT4 - Private :: CALCACT3 - Private :: CALCACT2 - Private :: CALCACT1 - Private :: RSTGAM - Private :: RSTGAMP - Private :: KMFUL4 - Private :: KMFUL3 - Private :: KMFUL2 - Private :: KMFUL1 - Private :: MKBI - Private :: KMTAB - Private :: KM198 - Private :: KM223 - Private :: KM248 - Private :: KM273 - Private :: KM298 - Private :: KM323 - Private :: CHRBLN - Private :: SHFTRGHT - Private :: RPLSTR - Private :: INPTD - Private :: Pushend - Private :: Appendext - Private :: POLY3 - Private :: POLY3B - Private :: PUSHERR - Private :: ISERRINF - Private :: ERRSTAT - Private :: ISORINF - Private :: ISRP1F - Private :: ISRP2F - Private :: ISRP3F - Private :: ISRP4F - Private :: CALCA2 - Private :: CALCA1 - Private :: CALCB4 - Private :: CALCB3 - Private :: CALCB3A - Private :: CALCB3B - Private :: CALCB2 - Private :: CALCB2A - Private :: CALCB2A2 - Private :: CALCB2B - Private :: CALCB1 - Private :: CALCB1A - Private :: CALCB1B - Private :: CALCC2 - Private :: CALCC1 - Private :: CALCD3 - Private :: CALCD2 - Private :: CALCD1 - Private :: CALCD1A - Private :: CALCG5 - Private :: CALCG4 - Private :: CALCG3 - Private :: CALCG3A - Private :: CALCG2 - Private :: CALCG2A - Private :: CALCG1 - Private :: CALCG1A - Private :: CALCH6 - Private :: CALCH5 - Private :: CALCH4 - Private :: CALCH3 - Private :: CALCH2 - Private :: CALCH2A - Private :: CALCH1 - Private :: CALCH1A - Private :: CALCI6 - Private :: CALCI5 - Private :: CALCI4 - Private :: CALCI3 - Private :: CALCI3A - Private :: CALCI2 - Private :: CALCI2A - Private :: CALCI1 - Private :: CALCI1A - Private :: CALCJ3 - Private :: CALCJ2 - Private :: CALCJ1 - Private :: CALCO7 - Private :: CALCO6 - Private :: CALCO5 - Private :: CALCO4 - Private :: CALCO3 - Private :: CALCO3A - Private :: CALCO2 - Private :: CALCO2A - Private :: CALCO1 - Private :: CALCO1A - Private :: CALCM8 - Private :: CALCM7 - Private :: CALCM6 - Private :: CALCM5 - Private :: CALCM4 - Private :: CALCM3 - Private :: CALCM2 - Private :: CALCM2A - Private :: CALCM1 - Private :: CALCM1A - Private :: CALCP13 - Private :: CALCP12 - Private :: CALCP11 - Private :: CALCP10 - Private :: CALCP9 - Private :: CALCP8 - Private :: CALCP7 - Private :: CALCP6 - Private :: CALCP5 - Private :: CALCP5A - Private :: CALCP4 - Private :: CALCP4A - Private :: CALCP3 - Private :: CALCP3A - Private :: CALCP2 - Private :: CALCP2A - Private :: CALCP1 - Private :: CALCP1A - Private :: CALCL9 - Private :: CALCL8 - Private :: CALCL7 - Private :: CALCL6 - Private :: CALCL5 - Private :: CALCL4 - Private :: CALCL3 - Private :: CALCL3A - Private :: CALCL2 - Private :: CALCL2A - Private :: CALCL1 - Private :: CALCL1A - Private :: CALCK4 - Private :: CALCK3 - Private :: CALCK2 - Private :: CALCK1 - Private :: GETASR - Private :: EX10 - Private :: FUNCA2 - Private :: FUNCB3A - Private :: FUNCB2B - Private :: FUNCC1 - Private :: FUNCD3 - Private :: FUNCD2 - Private :: FUNCG5A - Private :: FUNCG4A - Private :: FUNCG3A - Private :: FUNCG2A - Private :: FUNCH6A - Private :: FUNCH5A - Private :: FUNCH4A - Private :: FUNCH3A - Private :: FUNCH2A - Private :: FUNCI5A - Private :: FUNCI4A - Private :: FUNCI3A - Private :: FUNCI3B - Private :: FUNCI2A - Private :: FUNCJ2 - Private :: FUNCJ1 - Private :: FUNCO7 - Private :: FUNCO6 - Private :: FUNCO5 - Private :: FUNCO4 - Private :: FUNCO3A - Private :: FUNCO2A - Private :: FUNCM8 - Private :: FUNCM7 - Private :: FUNCM6 - Private :: FUNCM5 - Private :: FUNCM4 - Private :: FUNCM3 - Private :: FUNCM2A - Private :: FUNCP13 - Private :: FUNCP12 - Private :: FUNCP11 - Private :: FUNCP10 - Private :: FUNCP9 - Private :: FUNCP8 - Private :: FUNCP7 - Private :: FUNCP6 - Private :: FUNCP5 - Private :: FUNCP4 - Private :: FUNCP3 - Private :: FUNCP2A - Private :: FUNCL8 - Private :: FUNCL7 - Private :: FUNCL6 - Private :: FUNCL5 - Private :: FUNCL4 - Private :: FUNCL3A - Private :: FUNCL3B - Private :: FUNCL2A - Private :: FUNCL2B - Private :: FUNCK3 - Private :: FUNCK2 - Private :: FUNCK1 - Private :: Init_IsoData - -! Original Documentation: -! *** ISORROPIA CODE II -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! *** UPDATE|ADJOINT BY SHANNON CAPPS -! -!****************************************************************************** -! - ! leave this implicit statement for isorropiaIIcode.f variables - ! ideally all variables would be declared - !IMPLICIT DOUBLE PRECISION (A-H,O-Z) - !IMPLICIT NONE - - !================================================================= - ! Constants - !================================================================= - - ! Kinds - Integer, Parameter :: sp = Selected_Real_Kind(6, 37 ) - Integer, Parameter :: dp = Selected_Real_Kind(15, 307 ) - Integer, Parameter :: qp = Selected_Real_Kind(33, 4931) - Integer, Parameter :: fp = dp - - !---------------------------------------------------------------------- - ! Prior to 6/28/10: - ! IONIC should be Real(kind=fp) for consistency with -r8 flag during - ! compiling of isorropiaIIcode routines (hotp 6/23/10) -#if defined( ESMF_ ) - Integer, Parameter :: IonicKind=sp -#else - Integer, Parameter :: IonicKind=fp -#endif - Real(Kind=IonicKind) :: IONIC_MAIN - !---------------------------------------------------------------------- -!$OMP THREADPRIVATE( IONIC_MAIN ) - -! INPUT: -! 1. [WFTYPI] -! INTEGER variable. -! Defines the type of weighting algorithm for the solution in Mutual -! Deliquescence Regions (MDR's): -! 0 - MDR's are assumed dry. This is equivalent to the approach -! used by SEQUILIB. -! 1 - The solution is assumed "half" dry and "half" wet throughout -! the MDR. -! 2 - The solution is a relative-humidity weighted mean of the -! dry and wet solutions (as defined in Nenes et al., 1998) -! -! 2. [IACALCI] -! INTEGER variable. -! Method of activity coefficient calculation: -! 0 - Calculate coefficients during runtime -! 1 - Use precalculated tables -! -! 3. [EPSI] -! DOUBLE PRECITION variable. -! Defines the convergence criterion for all iterative processes -! in ISORROPIA, except those for activity coefficient calculations -! (EPSACTI controls that). -! -! 4. [MAXITI] -! INTEGER variable. -! Defines the maximum number of iterations for all iterative -! processes in ISORROPIA, except for activity coefficient calculations -! (NSWEEPI controls that). -! -! 5. [NSWEEPI] -! INTEGER variable. -! Defines the maximum number of iterations for activity coefficient -! calculations. -! -! 6. [EPSACTI] -! Real(kind=fp) :: variable. -! Defines the convergence criterion for activity coefficient -! calculations. -! -! 7. [NDIV] -! INTEGER variable. -! Defines the number of subdivisions needed for the initial root -! tracking for the bisection method. Usually this parameter should -! not be altered, but is included for completeness. -! -! 8. [NADJ] -! INTEGER variable. -! Forces the solution obtained to satisfy total mass balance -! to machine precision -! 0 - No adjustment done (default) -! 1 - Do adjustment - ! Parameters - integers - - Integer, Parameter :: WFTYP = 2 - Integer, Parameter :: IACALC = 1 - Real(kind=fp), Parameter :: EPS = 1.0D-6 - Integer, Parameter :: MAXIT = 100 - Integer, Parameter :: NSWEEP = 4 - Real(kind=fp), Parameter :: EPSACT = 5.0D-2 - Integer, Parameter :: NDIV = 5 - Integer, Parameter :: NADJ = 1 - - ! Sizing parameters - Integer, Parameter :: NCOMP = 8 - Integer, Parameter :: NIONS = 10 - Integer, Parameter :: NGASAQ = 3 - Integer, Parameter :: NSLDS = 19 - Integer, Parameter :: NPAIR = 23 - Integer, Parameter :: NZSR = 100 - Integer, Parameter :: NERRMX = 25 - Integer, Parameter :: NCtrl = 2 - Integer, Parameter :: NOther = 9 - - ! Parameters - reals -#if defined( ISORROPIA_V22 ) - Real(kind=fp), Parameter :: Pi = 3.1415926535897932d0 -#else - Real(kind=fp), Parameter :: Pi = 3.14159265358932d0 -#endif - Real(kind=fp), Parameter :: R = 82.0567D-6 - Real(kind=fp), Parameter :: TINY = 1.0D-20 - Real(kind=fp), Parameter :: TINY2 = 1.0D-11 - Real(kind=fp), Parameter :: GREAT = 1.0D10 - Real(kind=fp), Parameter :: ZERO = 0.0D0 - Real(kind=fp), Parameter :: ONE = 1.0D0 - - ! Parameter arrays - reals - Real(kind=fp), Parameter :: IMW(NIONS) = - & (/ 1.0,23.0,18.0,35.5,96.0,97.0,62.0,40.1,39.1,24.3/) - Real(kind=fp), Parameter :: WMW(NComp) = - & (/23.0,98.0,17.0,63.0,36.5,40.1,39.1,24.3/) - Real(kind=fp), Parameter :: SMW(NPair) = - & (/58.5,142.,85.0,132.,80.0,53.5,98.0,98.0,115.,63.0, - & 36.5,120.,247.,136.1,164.,111.,174.2,136.1,101.1,74.5, - & 120.3,148.3,95.2/) - - ! Parameter arrays - integers - Integer, Parameter :: ZZ(NPAIR) = - & (/1,2,1,2,1,1,2,1,1,1,1,1,2,4,2,2,2,1,1,1,4,2,2/) - Integer, Parameter :: Z(NIONS) = (/1,1,1,1,2,1,1,2,1,2/) - - - !================================================================= - ! Input variables - !================================================================= - - INTEGER :: IPROB, METSTBL -!$OMP THREADPRIVATE( IPROB, METSTBL ) - - Real(kind=fp) :: W(NCOMP), WAER(NCOMP), TEMP, RH -!$OMP THREADPRIVATE( W, WAER, TEMP, RH ) - - !================================================================= - ! Water activities of pure salt solutions - !================================================================= - - ! /ZSR/ is read-only and doesn't have to be declared THREADPRIVATE - ! block does not need to be split up to speed compilation - Real(kind=fp) :: AWAS(NZSR), AWSS(NZSR), AWAC(NZSR), AWSC(NZSR) - Real(kind=fp) :: AWAN(NZSR), AWSN(NZSR), AWSB(NZSR), AWAB(NZSR) - Real(kind=fp) :: AWSA(NZSR), AWLC(NZSR), AWCS(NZSR), AWCN(NZSR) - Real(kind=fp) :: AWCC(NZSR), AWPS(NZSR), AWPB(NZSR), AWPN(NZSR) - Real(kind=fp) :: AWPC(NZSR), AWMS(NZSR), AWMN(NZSR), AWMC(NZSR) -!$OMP THREADPRIVATE( AWAS, AWSS, AWAC, AWSC ) -!$OMP THREADPRIVATE( AWAN, AWSN, AWSB, AWAB ) -!$OMP THREADPRIVATE( AWSA, AWLC, AWCS, AWCN ) -!$OMP THREADPRIVATE( AWCC, AWPS, AWPB, AWPN ) -!$OMP THREADPRIVATE( AWPC, AWMS, AWMN, AWMC ) - ! ZSR is read-only - - !================================================================= - ! Deliquescence relative humidities - !================================================================= - - Real(kind=fp) :: DRH2SO4, DRNH42S4,DRNAHSO4,DRNACL, DRNANO3 - Real(kind=fp) :: DRNA2SO4,DRNH4HS4,DRLC, DRNH4NO3,DRNH4CL - Real(kind=fp) :: DRCASO4, DRCANO32,DRCACL2, DRK2SO4, DRKHSO4 - Real(kind=fp) :: DRKNO3, DRKCL, DRMGSO4, DRMGNO32,DRMGCL2 -!$OMP THREADPRIVATE( DRH2SO4, DRNH42S4, DRNAHSO4, DRNACL, DRNANO3 ) -!$OMP THREADPRIVATE( DRNA2SO4, DRNH4HS4, DRLC, DRNH4NO3, DRNH4CL ) -!$OMP THREADPRIVATE( DRCASO4, DRCANO32, DRCACL2, DRK2SO4, DRKHSO4 ) -!$OMP THREADPRIVATE( DRKNO3, DRKCL, DRMGSO4, DRMGNO32, DRMGCL2 ) - - Real(kind=fp) :: DRMLCAB, DRMLCAS, DRMASAN, DRMG1, DRMG2 - Real(kind=fp) :: DRMG3, DRMH1, DRMH2, DRMI1, DRMI2 - Real(kind=fp) :: DRMI3, DRMQ1, DRMR1, DRMR2, DRMR3 - Real(kind=fp) :: DRMR4, DRMR5, DRMR6, DRMR7, DRMR8 - Real(kind=fp) :: DRMR9, DRMR10, DRMR11, DRMR12, DRMR13 -!$OMP THREADPRIVATE( DRMLCAB, DRMLCAS, DRMASAN, DRMG1, DRMG2 ) -!$OMP THREADPRIVATE( DRMG3, DRMH1, DRMH2, DRMI1, DRMI2 ) -!$OMP THREADPRIVATE( DRMI3, DRMQ1, DRMR1, DRMR2, DRMR3 ) -!$OMP THREADPRIVATE( DRMR4, DRMR5, DRMR6, DRMR7, DRMR8 ) -!$OMP THREADPRIVATE( DRMR9, DRMR10, DRMR11, DRMR12, DRMR13 ) - - Real(kind=fp) :: DRMO1, DRMO2, DRMO3, DRML1, DRML2 - Real(kind=fp) :: DRML3, DRMM1, DRMM2, DRMP1, DRMP2 - Real(kind=fp) :: DRMP3, DRMP4, DRMP5, DRMV1 -!$OMP THREADPRIVATE( DRMO1, DRMO2, DRMO3, DRML1, DRML2 ) -!$OMP THREADPRIVATE( DRML3, DRMM1, DRMM2, DRMP1, DRMP2 ) -!$OMP THREADPRIVATE( DRMP3, DRMP4, DRMP5, DRMV1 ) - - !================================================================= - ! Variables for liquid aerosol phase - !================================================================= - - ! /IONS/ size does not seem to slow compilation - Real(kind=fp) :: MOLAL(NIONS), MOLALR(NPAIR), M0(NPAIR) - Real(kind=fp) :: GAMA(NPAIR) - Real(kind=fp) :: GAMOU(NPAIR), GAMIN(NPAIR), GASAQ(NGASAQ) - Real(kind=fp) :: COH, CHNO3, CHCL - Real(kind=fp) :: WATER -!$OMP THREADPRIVATE( MOLAL, MOLALR, M0 ) -!$OMP THREADPRIVATE( GAMA ) -!$OMP THREADPRIVATE( GAMOU, GAMIN, GASAQ ) -!$OMP THREADPRIVATE( COH, CHNO3, CHCL ) -!$OMP THREADPRIVATE( WATER ) - - ! DRYF removed since it is not used (hotp) - LOGICAL :: CALAOU, CALAIN, FRST -!$OMP THREADPRIVATE( CALAOU, CALAIN, FRST ) - - !================================================================= - ! Variables for solid aerosol phase - !================================================================= - - Real(kind=fp) :: CH2SO4, CNH42S4,CNH4HS4,CNACL, CNA2SO4 - Real(kind=fp) :: CNANO3, CNH4NO3,CNH4CL, CNAHSO4,CLC, CCASO4 - Real(kind=fp) :: CCANO32,CCACL2, CK2SO4, CKHSO4, CKNO3, CKCL - Real(kind=fp) :: CMGSO4, CMGNO32,CMGCL2 -!$OMP THREADPRIVATE( CH2SO4, CNH42S4, CNH4HS4, CNACL, CNA2SO4 ) -!$OMP THREADPRIVATE( CNANO3, CNH4NO3, CNH4CL, CNAHSO4, CLC, CCASO4 ) -!$OMP THREADPRIVATE( CCANO32, CCACL2, CK2SO4, CKHSO4, CKNO3, CKCL ) -!$OMP THREADPRIVATE( CMGSO4, CMGNO32, CMGCL2 ) - - !================================================================= - ! Variables for gas phase - !================================================================= - - Real(kind=fp) :: GNH3, GHNO3, GHCL -!$OMP THREADPRIVATE( GNH3, GHNO3, GHCL ) - - !================================================================= - ! Equilibrium constants - !================================================================= - - Real(kind=fp) :: XK1, XK2, XK3, XK4, XK5, XK6, XK7, XK8, XK9 - Real(kind=fp) :: XK11,XK12,XK13,XK14,XKW, XK21,XK22,XK31,XK32 - Real(kind=fp) :: XK42,XK15,XK16,XK17,XK18,XK19,XK20,XK23 - Real(kind=fp) :: XK24,XK25,XK10,XK41 -!$OMP THREADPRIVATE( XK1, XK2, XK3, XK4, XK5, XK6, XK7, XK8, XK9, XK10 ) -!$OMP THREADPRIVATE( XK11,XK12,XK13,XK14,XKW, XK21,XK22,XK31,XK32,XK41 ) -!$OMP THREADPRIVATE( XK42,XK15,XK16,XK17,XK18,XK19,XK20,XK23 ) -!$OMP THREADPRIVATE( XK24,XK25 ) - !C & , XK26, XK27 - - !================================================================= - ! Solution/info variables - !================================================================= - - CHARACTER(LEN=15) :: SCASE -!$OMP THREADPRIVATE( SCASE ) - - Real(kind=fp) :: SULRATW, SULRAT, SODRAT, - & SO4RAT, CRNARAT, CRRAT -!$OMP THREADPRIVATE( SULRATW, SULRAT, SODRAT, SO4RAT, CRNARAT, CRRAT ) - - Integer :: ICLACT -!$OMP THREADPRIVATE( ICLACT ) - - !================================================================= - ! Error system - !================================================================= - - CHARACTER(LEN=40) :: ERRMSG(NERRMX) -!$OMP THREADPRIVATE( ERRMSG ) - - INTEGER :: ERRSTK(NERRMX), NOFER -!$OMP THREADPRIVATE( ERRSTK, NOFER ) - - LOGICAL :: STKOFL -!$OMP THREADPRIVATE( STKOFL ) - - !================================================================= - ! Generic Variables - !================================================================= - - CHARACTER(LEN=15) :: VERSION - - !================================================================= - ! coordinates for debugging - !================================================================= - INTEGER :: ICOOR, JCOOR, LCOOR -!$OMP THREADPRIVATE( ICOOR, JCOOR, LCOOR ) - - !================================================================= - ! Former common blocks - !================================================================= - - ! Formerly SOLUT - ! NOTE: CASEG was the subset as follows: - ! CHI1-CHI6 - ! PSI1-PSI7 - ! NOTE Previously LAMDA and A1-A17 were also declared here, but - ! that seemed to be unnecessary - Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 - Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 - Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5 - Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, PSI10, PSI11, PSI12 - Real(kind=fp) :: PSI13, PSI14, PSI15, PSI16, PSI17 -!$OMP THREADPRIVATE( CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 ) -!$OMP THREADPRIVATE( CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 ) -!$OMP THREADPRIVATE( CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 ) -!$OMP THREADPRIVATE( PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 ) -!$OMP THREADPRIVATE( PSI14, PSI15, PSI16, PSI17 ) - - - ! Formerly DRVINP - but only some are used. METSTBLI, IPROBI, - ! IACALCI, and NADJI aren't used, so they're not included here - ! SDE: Strongly suspect these should never be used like this -!=========! Real(kind=fp) :: WI(NCOMP), RHI, TEMPI -!=========!!$OMP THREADPRIVATE( WI, RHI, TEMPI ) - - !=========================DATA BLOCKS============================= - - ! Formerly BLOCK DATA AERSR - Integer, Parameter :: NSO4S = 14 - Integer, Parameter :: NRHS = 20 - Integer, Parameter :: NASRD=NSO4S*NRHS - - Real(kind=fp), Parameter, Dimension(NSO4S) :: ASSO4 = - & (/1.0E-9, 2.5E-9, 5.0E-9, 7.5E-9, 1.0E-8, - & 2.5E-8, 5.0E-8, 7.5E-8, 1.0E-7, 2.5E-7, - & 5.0E-7, 7.5E-7, 1.0E-6, 5.0E-6/) -! - Real(kind=fp), Parameter, Dimension(NASRD) :: ASRAT = (/ - & 1.020464, 0.9998130, 0.9960167, 0.9984423, 1.004004, - & 1.010885, 1.018356, 1.026726, 1.034268, 1.043846, - & 1.052933, 1.062230, 1.062213, 1.080050, 1.088350, - & 1.096603, 1.104289, 1.111745, 1.094662, 1.121594, - & 1.268909, 1.242444, 1.233815, 1.232088, 1.234020, - & 1.238068, 1.243455, 1.250636, 1.258734, 1.267543, - & 1.276948, 1.286642, 1.293337, 1.305592, 1.314726, - & 1.323463, 1.333258, 1.343604, 1.344793, 1.355571, - & 1.431463, 1.405204, 1.395791, 1.393190, 1.394403, - & 1.398107, 1.403811, 1.411744, 1.420560, 1.429990, - & 1.439742, 1.449507, 1.458986, 1.468403, 1.477394, - & 1.487373, 1.495385, 1.503854, 1.512281, 1.520394, - & 1.514464, 1.489699, 1.480686, 1.478187, 1.479446, - & 1.483310, 1.489316, 1.497517, 1.506501, 1.515816, - & 1.524724, 1.533950, 1.542758, 1.551730, 1.559587, - & 1.568343, 1.575610, 1.583140, 1.590440, 1.596481, - & 1.567743, 1.544426, 1.535928, 1.533645, 1.535016, - & 1.539003, 1.545124, 1.553283, 1.561886, 1.570530, - & 1.579234, 1.587813, 1.595956, 1.603901, 1.611349, - & 1.618833, 1.625819, 1.632543, 1.639032, 1.645276, - & 1.707390, 1.689553, 1.683198, 1.681810, 1.683490, - & 1.687477, 1.693148, 1.700084, 1.706917, 1.713507, - & 1.719952, 1.726190, 1.731985, 1.737544, 1.742673, - & 1.747756, 1.752431, 1.756890, 1.761141, 1.765190, - & 1.785657, 1.771851, 1.767063, 1.766229, 1.767901, - & 1.771455, 1.776223, 1.781769, 1.787065, 1.792081, - & 1.796922, 1.801561, 1.805832, 1.809896, 1.813622, - & 1.817292, 1.820651, 1.823841, 1.826871, 1.829745, - & 1.822215, 1.810497, 1.806496, 1.805898, 1.807480, - & 1.810684, 1.814860, 1.819613, 1.824093, 1.828306, - & 1.832352, 1.836209, 1.839748, 1.843105, 1.846175, - & 1.849192, 1.851948, 1.854574, 1.857038, 1.859387, - & 1.844588, 1.834208, 1.830701, 1.830233, 1.831727, - & 1.834665, 1.838429, 1.842658, 1.846615, 1.850321, - & 1.853869, 1.857243, 1.860332, 1.863257, 1.865928, - & 1.868550, 1.870942, 1.873208, 1.875355, 1.877389, - & 1.899556, 1.892637, 1.890367, 1.890165, 1.891317, - & 1.893436, 1.896036, 1.898872, 1.901485, 1.903908, - & 1.906212, 1.908391, 1.910375, 1.912248, 1.913952, - & 1.915621, 1.917140, 1.918576, 1.919934, 1.921220, - & 1.928264, 1.923245, 1.921625, 1.921523, 1.922421, - & 1.924016, 1.925931, 1.927991, 1.929875, 1.931614, - & 1.933262, 1.934816, 1.936229, 1.937560, 1.938769, - & 1.939951, 1.941026, 1.942042, 1.943003, 1.943911, - & 1.941205, 1.937060, 1.935734, 1.935666, 1.936430, - & 1.937769, 1.939359, 1.941061, 1.942612, 1.944041, - & 1.945393, 1.946666, 1.947823, 1.948911, 1.949900, - & 1.950866, 1.951744, 1.952574, 1.953358, 1.954099, - & 1.948985, 1.945372, 1.944221, 1.944171, 1.944850, - & 1.946027, 1.947419, 1.948902, 1.950251, 1.951494, - & 1.952668, 1.953773, 1.954776, 1.955719, 1.956576, - & 1.957413, 1.958174, 1.958892, 1.959571, 1.960213, - & 1.977193, 1.975540, 1.975023, 1.975015, 1.975346, - & 1.975903, 1.976547, 1.977225, 1.977838, 1.978401, - & 1.978930, 1.979428, 1.979879, 1.980302, 1.980686, - & 1.981060, 1.981401, 1.981722, 1.982025, 1.982312/) - - ! Formerly BLOCK DATA EXPON -! -! *** Integer part -! - Real(kind=fp), Parameter, Dimension(20) :: AINT10 = (/ - & 0.1000E-08, 0.1000E-07, 0.1000E-06, 0.1000E-05, 0.1000E-04, - & 0.1000E-03, 0.1000E-02, 0.1000E-01, 0.1000E+00, 0.1000E+01, - & 0.1000E+02, 0.1000E+03, 0.1000E+04, 0.1000E+05, 0.1000E+06, - & 0.1000E+07, 0.1000E+08, 0.1000E+09, 0.1000E+10, 0.1000E+11 - & /) -! -! *** decimal part -! - Real(kind=fp), Parameter, Dimension(200) :: ADEC10 = (/ - & 0.1023E+00, 0.1047E+00, 0.1072E+00, 0.1096E+00, 0.1122E+00, - & 0.1148E+00, 0.1175E+00, 0.1202E+00, 0.1230E+00, 0.1259E+00, - & 0.1288E+00, 0.1318E+00, 0.1349E+00, 0.1380E+00, 0.1413E+00, - & 0.1445E+00, 0.1479E+00, 0.1514E+00, 0.1549E+00, 0.1585E+00, - & 0.1622E+00, 0.1660E+00, 0.1698E+00, 0.1738E+00, 0.1778E+00, - & 0.1820E+00, 0.1862E+00, 0.1905E+00, 0.1950E+00, 0.1995E+00, - & 0.2042E+00, 0.2089E+00, 0.2138E+00, 0.2188E+00, 0.2239E+00, - & 0.2291E+00, 0.2344E+00, 0.2399E+00, 0.2455E+00, 0.2512E+00, - & 0.2570E+00, 0.2630E+00, 0.2692E+00, 0.2754E+00, 0.2818E+00, - & 0.2884E+00, 0.2951E+00, 0.3020E+00, 0.3090E+00, 0.3162E+00, - & 0.3236E+00, 0.3311E+00, 0.3388E+00, 0.3467E+00, 0.3548E+00, - & 0.3631E+00, 0.3715E+00, 0.3802E+00, 0.3890E+00, 0.3981E+00, - & 0.4074E+00, 0.4169E+00, 0.4266E+00, 0.4365E+00, 0.4467E+00, - & 0.4571E+00, 0.4677E+00, 0.4786E+00, 0.4898E+00, 0.5012E+00, - & 0.5129E+00, 0.5248E+00, 0.5370E+00, 0.5495E+00, 0.5623E+00, - & 0.5754E+00, 0.5888E+00, 0.6026E+00, 0.6166E+00, 0.6310E+00, - & 0.6457E+00, 0.6607E+00, 0.6761E+00, 0.6918E+00, 0.7079E+00, - & 0.7244E+00, 0.7413E+00, 0.7586E+00, 0.7762E+00, 0.7943E+00, - & 0.8128E+00, 0.8318E+00, 0.8511E+00, 0.8710E+00, 0.8913E+00, - & 0.9120E+00, 0.9333E+00, 0.9550E+00, 0.9772E+00, 0.1000E+01, - & 0.1023E+01, 0.1047E+01, 0.1072E+01, 0.1096E+01, 0.1122E+01, - & 0.1148E+01, 0.1175E+01, 0.1202E+01, 0.1230E+01, 0.1259E+01, - & 0.1288E+01, 0.1318E+01, 0.1349E+01, 0.1380E+01, 0.1413E+01, - & 0.1445E+01, 0.1479E+01, 0.1514E+01, 0.1549E+01, 0.1585E+01, - & 0.1622E+01, 0.1660E+01, 0.1698E+01, 0.1738E+01, 0.1778E+01, - & 0.1820E+01, 0.1862E+01, 0.1905E+01, 0.1950E+01, 0.1995E+01, - & 0.2042E+01, 0.2089E+01, 0.2138E+01, 0.2188E+01, 0.2239E+01, - & 0.2291E+01, 0.2344E+01, 0.2399E+01, 0.2455E+01, 0.2512E+01, - & 0.2570E+01, 0.2630E+01, 0.2692E+01, 0.2754E+01, 0.2818E+01, - & 0.2884E+01, 0.2951E+01, 0.3020E+01, 0.3090E+01, 0.3162E+01, - & 0.3236E+01, 0.3311E+01, 0.3388E+01, 0.3467E+01, 0.3548E+01, - & 0.3631E+01, 0.3715E+01, 0.3802E+01, 0.3890E+01, 0.3981E+01, - & 0.4074E+01, 0.4169E+01, 0.4266E+01, 0.4365E+01, 0.4467E+01, - & 0.4571E+01, 0.4677E+01, 0.4786E+01, 0.4898E+01, 0.5012E+01, - & 0.5129E+01, 0.5248E+01, 0.5370E+01, 0.5495E+01, 0.5623E+01, - & 0.5754E+01, 0.5888E+01, 0.6026E+01, 0.6166E+01, 0.6310E+01, - & 0.6457E+01, 0.6607E+01, 0.6761E+01, 0.6918E+01, 0.7079E+01, - & 0.7244E+01, 0.7413E+01, 0.7586E+01, 0.7762E+01, 0.7943E+01, - & 0.8128E+01, 0.8318E+01, 0.8511E+01, 0.8710E+01, 0.8913E+01, - & 0.9120E+01, 0.9333E+01, 0.9550E+01, 0.9772E+01, 0.1000E+02 - & /) - - ! Formerly BLOCK DATA KMCF198 -! -! *** NaCl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC01M_198 = (/ - &-0.050,-0.103,-0.127,-0.142,-0.154,-0.162,-0.169,-0.174,-0.178, - &-0.181,-0.184,-0.186,-0.188,-0.189,-0.190,-0.191,-0.191,-0.192, - &-0.192,-0.191,-0.191,-0.191,-0.190,-0.189,-0.188,-0.188,-0.187, - &-0.185,-0.184,-0.183,-0.182,-0.181,-0.179,-0.178,-0.176,-0.175, - &-0.173,-0.172,-0.170,-0.169,-0.167,-0.166,-0.164,-0.162,-0.161, - &-0.159,-0.157,-0.156,-0.154,-0.152,-0.151,-0.149,-0.147,-0.146, - &-0.144,-0.142,-0.140,-0.139,-0.137,-0.135,-0.134,-0.132,-0.130, - &-0.128,-0.127,-0.125,-0.123,-0.121,-0.120,-0.118,-0.116,-0.114, - &-0.112,-0.111,-0.109,-0.107,-0.105,-0.103,-0.101,-0.099,-0.098, - &-0.096,-0.094,-0.092,-0.090,-0.088,-0.086,-0.084,-0.082,-0.080, - &-0.078,-0.075,-0.073,-0.071,-0.069,-0.067,-0.065,-0.063,-0.060, - &-0.058,-0.056,-0.054,-0.051,-0.049,-0.047,-0.045,-0.042,-0.040, - &-0.038,-0.035,-0.033,-0.031,-0.028,-0.026,-0.024,-0.021,-0.019, - &-0.016,-0.014,-0.012,-0.009,-0.007,-0.004,-0.002, 0.000, 0.003, - & 0.005, 0.008, 0.010, 0.012, 0.015, 0.017, 0.020, 0.022, 0.024, - & 0.027, 0.029, 0.032, 0.034, 0.036, 0.039, 0.041, 0.044, 0.046, - & 0.048, 0.051, 0.053, 0.055, 0.058, 0.060, 0.063, 0.065, 0.067, - & 0.070, 0.072, 0.074, 0.077, 0.079, 0.081, 0.084, 0.086, 0.088, - & 0.091, 0.093, 0.095, 0.098, 0.100, 0.102, 0.105, 0.107, 0.109, - & 0.112, 0.114, 0.116, 0.118, 0.121, 0.123, 0.125, 0.127, 0.130, - & 0.132, 0.134, 0.137, 0.139, 0.141, 0.143, 0.146, 0.148, 0.150, - & 0.152, 0.154, 0.157, 0.159, 0.161, 0.163, 0.166, 0.168, 0.170, - & 0.172, 0.174, 0.176, 0.179, 0.181, 0.183, 0.185, 0.187, 0.190, - & 0.192, 0.194, 0.196, 0.198, 0.200, 0.202, 0.205, 0.207, 0.209, - & 0.211, 0.213, 0.215, 0.217, 0.219, 0.222, 0.224, 0.226, 0.228, - & 0.230, 0.232, 0.234, 0.236, 0.238, 0.240, 0.242, 0.244, 0.246, - & 0.249, 0.251, 0.253, 0.255, 0.257, 0.259, 0.261, 0.263, 0.265, - & 0.267, 0.269, 0.271, 0.273, 0.275, 0.277, 0.279, 0.281, 0.283, - & 0.285, 0.287, 0.289, 0.291, 0.293, 0.295, 0.297, 0.299, 0.301, - & 0.303, 0.304, 0.306, 0.308, 0.310, 0.312, 0.314, 0.316, 0.318, - & 0.320, 0.322, 0.324, 0.326, 0.328, 0.329, 0.331, 0.333, 0.335, - & 0.337, 0.339, 0.341, 0.343, 0.344, 0.346, 0.348, 0.350, 0.352, - & 0.354, 0.356, 0.357, 0.359, 0.361, 0.363, 0.365, 0.367, 0.368, - & 0.370, 0.372, 0.374, 0.376, 0.377, 0.379, 0.381, 0.383, 0.385, - & 0.386, 0.388, 0.390, 0.392, 0.393, 0.395, 0.397, 0.399, 0.401, - & 0.402, 0.404, 0.406, 0.408, 0.409, 0.411, 0.413, 0.414, 0.416, - & 0.418, 0.420, 0.421, 0.423, 0.425, 0.426, 0.428, 0.430, 0.432, - & 0.433, 0.435, 0.437, 0.438, 0.440, 0.442, 0.443, 0.445, 0.447, - & 0.448, 0.450, 0.452, 0.453, 0.455, 0.457, 0.458, 0.460, 0.461, - & 0.463, 0.465, 0.466, 0.468, 0.470, 0.471, 0.473, 0.474, 0.476, - & 0.478, 0.479, 0.481, 0.482, 0.484, 0.486, 0.487, 0.489, 0.490, - & 0.492, 0.493, 0.495, 0.497, 0.498, 0.500, 0.501, 0.503, 0.504, - & 0.506, 0.508, 0.509, 0.511, 0.512, 0.514, 0.515, 0.517, 0.518, - & 0.520, 0.521, 0.523, 0.524, 0.526, 0.527, 0.529, 0.530, 0.532, - & 0.533, 0.535, 0.536, 0.538, 0.554, 0.568, 0.582, 0.596, 0.610, - & 0.623, 0.636, 0.649, 0.661, 0.674, 0.686, 0.698, 0.709, 0.721, - & 0.732, 0.743, 0.754, 0.765, 0.775, 0.786, 0.796, 0.806, 0.815, - & 0.825, 0.834, 0.844, 0.853, 0.862, 0.870, 0.879, 0.887, 0.896, - & 0.904, 0.912, 0.920, 0.928, 0.935, 0.943, 0.950, 0.957, 0.964, - & 0.971, 0.978, 0.985, 0.992, 0.998, 1.005, 1.011, 1.017, 1.023, - & 1.029, 1.035, 1.041, 1.047, 1.052, 1.058, 1.063, 1.068, 1.074, - & 1.079, 1.084, 1.089, 1.094, 1.099, 1.103, 1.108, 1.112, 1.117, - & 1.121, 1.126, 1.130, 1.134, 1.138, 1.142, 1.146, 1.150, 1.154, - & 1.158, 1.161, 1.165, 1.169, 1.172, 1.175, 1.179, 1.182, 1.185, - & 1.189, 1.192, 1.195, 1.198, 1.201, 1.204, 1.206, 1.209, 1.212, - & 1.215, 1.217, 1.220, 1.222, 1.225, 1.227, 1.230, 1.232, 1.234, - & 1.236, 1.239, 1.241, 1.243, 1.245, 1.247, 1.249, 1.251, 1.253, - & 1.254, 1.256, 1.258, 1.260, 1.261, 1.263, 1.264, 1.266, 1.267, - & 1.269, 1.270, 1.272, 1.273, 1.274, 1.276, 1.277, 1.278, 1.279, - & 1.280, 1.281, 1.283, 1.284, 1.285, 1.286, 1.286, 1.287, 1.288, - & 1.289, 1.290, 1.291, 1.291, 1.292, 1.293, 1.293, 1.294, 1.295, - & 1.295, 1.296, 1.296, 1.297, 1.297, 1.297, 1.298, 1.298, 1.298, - & 1.299, 1.299, 1.299 - & /) -! -! *** Na2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC02M_198 = (/ - &-0.103,-0.225,-0.288,-0.332,-0.367,-0.397,-0.422,-0.445,-0.465, - &-0.484,-0.501,-0.516,-0.531,-0.545,-0.558,-0.570,-0.582,-0.593, - &-0.604,-0.614,-0.624,-0.633,-0.643,-0.651,-0.660,-0.668,-0.676, - &-0.684,-0.692,-0.699,-0.707,-0.714,-0.721,-0.727,-0.734,-0.741, - &-0.747,-0.753,-0.759,-0.765,-0.771,-0.777,-0.783,-0.788,-0.794, - &-0.799,-0.804,-0.810,-0.815,-0.820,-0.825,-0.830,-0.835,-0.840, - &-0.845,-0.849,-0.854,-0.859,-0.863,-0.868,-0.872,-0.877,-0.881, - &-0.885,-0.889,-0.894,-0.898,-0.902,-0.906,-0.910,-0.914,-0.918, - &-0.922,-0.926,-0.930,-0.934,-0.938,-0.942,-0.946,-0.949,-0.953, - &-0.957,-0.961,-0.964,-0.968,-0.971,-0.975,-0.979,-0.982,-0.986, - &-0.989,-0.993,-0.996,-1.000,-1.003,-1.007,-1.010,-1.014,-1.017, - &-1.020,-1.024,-1.027,-1.030,-1.034,-1.037,-1.040,-1.044,-1.047, - &-1.050,-1.053,-1.057,-1.060,-1.063,-1.066,-1.069,-1.072,-1.076, - &-1.079,-1.082,-1.085,-1.088,-1.091,-1.094,-1.097,-1.100,-1.103, - &-1.106,-1.109,-1.112,-1.115,-1.118,-1.121,-1.124,-1.127,-1.130, - &-1.133,-1.136,-1.139,-1.142,-1.145,-1.147,-1.150,-1.153,-1.156, - &-1.159,-1.162,-1.165,-1.167,-1.170,-1.173,-1.176,-1.179,-1.181, - &-1.184,-1.187,-1.190,-1.192,-1.195,-1.198,-1.200,-1.203,-1.206, - &-1.209,-1.211,-1.214,-1.217,-1.219,-1.222,-1.225,-1.227,-1.230, - &-1.232,-1.235,-1.238,-1.240,-1.243,-1.246,-1.248,-1.251,-1.253, - &-1.256,-1.258,-1.261,-1.264,-1.266,-1.269,-1.271,-1.274,-1.276, - &-1.279,-1.281,-1.284,-1.286,-1.289,-1.291,-1.294,-1.296,-1.299, - &-1.301,-1.304,-1.306,-1.309,-1.311,-1.313,-1.316,-1.318,-1.321, - &-1.323,-1.326,-1.328,-1.330,-1.333,-1.335,-1.338,-1.340,-1.342, - &-1.345,-1.347,-1.350,-1.352,-1.354,-1.357,-1.359,-1.361,-1.364, - &-1.366,-1.368,-1.371,-1.373,-1.375,-1.378,-1.380,-1.382,-1.385, - &-1.387,-1.389,-1.392,-1.394,-1.396,-1.399,-1.401,-1.403,-1.405, - &-1.408,-1.410,-1.412,-1.415,-1.417,-1.419,-1.421,-1.424,-1.426, - &-1.428,-1.430,-1.433,-1.435,-1.437,-1.439,-1.442,-1.444,-1.446, - &-1.448,-1.450,-1.453,-1.455,-1.457,-1.459,-1.461,-1.464,-1.466, - &-1.468,-1.470,-1.472,-1.475,-1.477,-1.479,-1.481,-1.483,-1.485, - &-1.488,-1.490,-1.492,-1.494,-1.496,-1.498,-1.501,-1.503,-1.505, - &-1.507,-1.509,-1.511,-1.513,-1.516,-1.518,-1.520,-1.522,-1.524, - &-1.526,-1.528,-1.530,-1.533,-1.535,-1.537,-1.539,-1.541,-1.543, - &-1.545,-1.547,-1.549,-1.551,-1.554,-1.556,-1.558,-1.560,-1.562, - &-1.564,-1.566,-1.568,-1.570,-1.572,-1.574,-1.576,-1.578,-1.580, - &-1.583,-1.585,-1.587,-1.589,-1.591,-1.593,-1.595,-1.597,-1.599, - &-1.601,-1.603,-1.605,-1.607,-1.609,-1.611,-1.613,-1.615,-1.617, - &-1.619,-1.621,-1.623,-1.625,-1.627,-1.629,-1.631,-1.633,-1.635, - &-1.637,-1.639,-1.641,-1.643,-1.645,-1.647,-1.649,-1.651,-1.653, - &-1.655,-1.657,-1.659,-1.661,-1.663,-1.665,-1.667,-1.669,-1.671, - &-1.673,-1.675,-1.677,-1.679,-1.681,-1.683,-1.685,-1.687,-1.689, - &-1.691,-1.693,-1.695,-1.696,-1.698,-1.700,-1.702,-1.704,-1.706, - &-1.708,-1.710,-1.712,-1.714,-1.716,-1.718,-1.720,-1.722,-1.724, - &-1.726,-1.727,-1.729,-1.731,-1.752,-1.771,-1.790,-1.808,-1.827, - &-1.845,-1.864,-1.882,-1.900,-1.918,-1.936,-1.954,-1.972,-1.989, - &-2.007,-2.024,-2.042,-2.059,-2.076,-2.093,-2.110,-2.127,-2.144, - &-2.161,-2.178,-2.194,-2.211,-2.228,-2.244,-2.261,-2.277,-2.293, - &-2.310,-2.326,-2.342,-2.358,-2.374,-2.390,-2.406,-2.422,-2.438, - &-2.454,-2.470,-2.486,-2.501,-2.517,-2.533,-2.548,-2.564,-2.579, - &-2.595,-2.610,-2.626,-2.641,-2.657,-2.672,-2.687,-2.702,-2.718, - &-2.733,-2.748,-2.763,-2.778,-2.793,-2.808,-2.823,-2.838,-2.853, - &-2.868,-2.883,-2.898,-2.913,-2.927,-2.942,-2.957,-2.972,-2.986, - &-3.001,-3.016,-3.030,-3.045,-3.059,-3.074,-3.089,-3.103,-3.118, - &-3.132,-3.147,-3.161,-3.175,-3.190,-3.204,-3.219,-3.233,-3.247, - &-3.261,-3.276,-3.290,-3.304,-3.318,-3.333,-3.347,-3.361,-3.375, - &-3.389,-3.403,-3.417,-3.432,-3.446,-3.460,-3.474,-3.488,-3.502, - &-3.516,-3.530,-3.544,-3.558,-3.571,-3.585,-3.599,-3.613,-3.627, - &-3.641,-3.655,-3.669,-3.682,-3.696,-3.710,-3.724,-3.737,-3.751, - &-3.765,-3.779,-3.792,-3.806,-3.820,-3.833,-3.847,-3.861,-3.874, - &-3.888,-3.901,-3.915,-3.929,-3.942,-3.956,-3.969,-3.983,-3.996, - &-4.010,-4.023,-4.037,-4.050,-4.064,-4.077,-4.091,-4.104,-4.118, - &-4.131,-4.144,-4.158 - & /) -! -! *** NaNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC03M_198 = (/ - &-0.052,-0.114,-0.145,-0.168,-0.187,-0.202,-0.215,-0.227,-0.238, - &-0.248,-0.257,-0.265,-0.273,-0.281,-0.288,-0.294,-0.301,-0.307, - &-0.313,-0.318,-0.324,-0.329,-0.334,-0.339,-0.344,-0.349,-0.353, - &-0.357,-0.362,-0.366,-0.370,-0.374,-0.378,-0.382,-0.386,-0.389, - &-0.393,-0.396,-0.400,-0.403,-0.407,-0.410,-0.413,-0.416,-0.419, - &-0.423,-0.426,-0.429,-0.432,-0.435,-0.437,-0.440,-0.443,-0.446, - &-0.449,-0.451,-0.454,-0.457,-0.459,-0.462,-0.464,-0.467,-0.469, - &-0.472,-0.474,-0.477,-0.479,-0.482,-0.484,-0.486,-0.489,-0.491, - &-0.493,-0.496,-0.498,-0.500,-0.502,-0.505,-0.507,-0.509,-0.511, - &-0.513,-0.516,-0.518,-0.520,-0.522,-0.524,-0.526,-0.528,-0.530, - &-0.532,-0.534,-0.537,-0.539,-0.541,-0.543,-0.545,-0.547,-0.549, - &-0.551,-0.553,-0.555,-0.557,-0.559,-0.561,-0.562,-0.564,-0.566, - &-0.568,-0.570,-0.572,-0.574,-0.576,-0.578,-0.580,-0.582,-0.583, - &-0.585,-0.587,-0.589,-0.591,-0.593,-0.594,-0.596,-0.598,-0.600, - &-0.602,-0.604,-0.605,-0.607,-0.609,-0.611,-0.612,-0.614,-0.616, - &-0.618,-0.619,-0.621,-0.623,-0.625,-0.626,-0.628,-0.630,-0.631, - &-0.633,-0.635,-0.637,-0.638,-0.640,-0.642,-0.643,-0.645,-0.647, - &-0.648,-0.650,-0.651,-0.653,-0.655,-0.656,-0.658,-0.660,-0.661, - &-0.663,-0.664,-0.666,-0.668,-0.669,-0.671,-0.672,-0.674,-0.676, - &-0.677,-0.679,-0.680,-0.682,-0.683,-0.685,-0.686,-0.688,-0.689, - &-0.691,-0.693,-0.694,-0.696,-0.697,-0.699,-0.700,-0.702,-0.703, - &-0.705,-0.706,-0.708,-0.709,-0.711,-0.712,-0.714,-0.715,-0.717, - &-0.718,-0.719,-0.721,-0.722,-0.724,-0.725,-0.727,-0.728,-0.730, - &-0.731,-0.733,-0.734,-0.735,-0.737,-0.738,-0.740,-0.741,-0.743, - &-0.744,-0.745,-0.747,-0.748,-0.750,-0.751,-0.752,-0.754,-0.755, - &-0.757,-0.758,-0.759,-0.761,-0.762,-0.763,-0.765,-0.766,-0.768, - &-0.769,-0.770,-0.772,-0.773,-0.774,-0.776,-0.777,-0.778,-0.780, - &-0.781,-0.782,-0.784,-0.785,-0.787,-0.788,-0.789,-0.791,-0.792, - &-0.793,-0.794,-0.796,-0.797,-0.798,-0.800,-0.801,-0.802,-0.804, - &-0.805,-0.806,-0.808,-0.809,-0.810,-0.812,-0.813,-0.814,-0.815, - &-0.817,-0.818,-0.819,-0.821,-0.822,-0.823,-0.824,-0.826,-0.827, - &-0.828,-0.829,-0.831,-0.832,-0.833,-0.835,-0.836,-0.837,-0.838, - &-0.840,-0.841,-0.842,-0.843,-0.845,-0.846,-0.847,-0.848,-0.850, - &-0.851,-0.852,-0.853,-0.854,-0.856,-0.857,-0.858,-0.859,-0.861, - &-0.862,-0.863,-0.864,-0.866,-0.867,-0.868,-0.869,-0.870,-0.872, - &-0.873,-0.874,-0.875,-0.876,-0.878,-0.879,-0.880,-0.881,-0.882, - &-0.884,-0.885,-0.886,-0.887,-0.888,-0.890,-0.891,-0.892,-0.893, - &-0.894,-0.896,-0.897,-0.898,-0.899,-0.900,-0.901,-0.903,-0.904, - &-0.905,-0.906,-0.907,-0.908,-0.910,-0.911,-0.912,-0.913,-0.914, - &-0.915,-0.917,-0.918,-0.919,-0.920,-0.921,-0.922,-0.924,-0.925, - &-0.926,-0.927,-0.928,-0.929,-0.930,-0.932,-0.933,-0.934,-0.935, - &-0.936,-0.937,-0.938,-0.940,-0.941,-0.942,-0.943,-0.944,-0.945, - &-0.946,-0.947,-0.949,-0.950,-0.951,-0.952,-0.953,-0.954,-0.955, - &-0.956,-0.958,-0.959,-0.960,-0.961,-0.962,-0.963,-0.964,-0.965, - &-0.966,-0.968,-0.969,-0.970,-0.982,-0.992,-1.003,-1.014,-1.025, - &-1.035,-1.046,-1.056,-1.066,-1.076,-1.087,-1.097,-1.107,-1.117, - &-1.126,-1.136,-1.146,-1.156,-1.165,-1.175,-1.185,-1.194,-1.203, - &-1.213,-1.222,-1.231,-1.241,-1.250,-1.259,-1.268,-1.277,-1.286, - &-1.295,-1.304,-1.313,-1.322,-1.331,-1.340,-1.349,-1.357,-1.366, - &-1.375,-1.383,-1.392,-1.401,-1.409,-1.418,-1.426,-1.435,-1.443, - &-1.452,-1.460,-1.468,-1.477,-1.485,-1.493,-1.502,-1.510,-1.518, - &-1.526,-1.535,-1.543,-1.551,-1.559,-1.567,-1.575,-1.583,-1.591, - &-1.599,-1.607,-1.615,-1.623,-1.631,-1.639,-1.647,-1.655,-1.663, - &-1.671,-1.679,-1.686,-1.694,-1.702,-1.710,-1.718,-1.725,-1.733, - &-1.741,-1.749,-1.756,-1.764,-1.772,-1.779,-1.787,-1.794,-1.802, - &-1.810,-1.817,-1.825,-1.832,-1.840,-1.847,-1.855,-1.862,-1.870, - &-1.877,-1.885,-1.892,-1.900,-1.907,-1.915,-1.922,-1.929,-1.937, - &-1.944,-1.952,-1.959,-1.966,-1.974,-1.981,-1.988,-1.996,-2.003, - &-2.010,-2.018,-2.025,-2.032,-2.039,-2.047,-2.054,-2.061,-2.068, - &-2.075,-2.083,-2.090,-2.097,-2.104,-2.111,-2.118,-2.126,-2.133, - &-2.140,-2.147,-2.154,-2.161,-2.168,-2.175,-2.183,-2.190,-2.197, - &-2.204,-2.211,-2.218,-2.225,-2.232,-2.239,-2.246,-2.253,-2.260, - &-2.267,-2.274,-2.281 - & /) -! -! *** (NH4)2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC04M_198 = (/ - &-0.103,-0.226,-0.289,-0.334,-0.369,-0.399,-0.425,-0.448,-0.468, - &-0.487,-0.505,-0.521,-0.536,-0.550,-0.563,-0.576,-0.588,-0.599, - &-0.610,-0.621,-0.631,-0.641,-0.650,-0.659,-0.668,-0.677,-0.685, - &-0.693,-0.701,-0.709,-0.717,-0.724,-0.731,-0.738,-0.745,-0.752, - &-0.758,-0.765,-0.771,-0.777,-0.784,-0.790,-0.796,-0.801,-0.807, - &-0.813,-0.818,-0.824,-0.829,-0.835,-0.840,-0.845,-0.850,-0.855, - &-0.860,-0.865,-0.870,-0.875,-0.880,-0.884,-0.889,-0.894,-0.898, - &-0.903,-0.907,-0.912,-0.916,-0.920,-0.925,-0.929,-0.933,-0.937, - &-0.942,-0.946,-0.950,-0.954,-0.958,-0.962,-0.966,-0.970,-0.974, - &-0.978,-0.982,-0.985,-0.989,-0.993,-0.997,-1.001,-1.004,-1.008, - &-1.012,-1.016,-1.019,-1.023,-1.027,-1.030,-1.034,-1.037,-1.041, - &-1.045,-1.048,-1.052,-1.055,-1.059,-1.062,-1.066,-1.069,-1.072, - &-1.076,-1.079,-1.083,-1.086,-1.089,-1.093,-1.096,-1.099,-1.103, - &-1.106,-1.109,-1.113,-1.116,-1.119,-1.122,-1.126,-1.129,-1.132, - &-1.135,-1.138,-1.142,-1.145,-1.148,-1.151,-1.154,-1.157,-1.160, - &-1.164,-1.167,-1.170,-1.173,-1.176,-1.179,-1.182,-1.185,-1.188, - &-1.191,-1.194,-1.197,-1.200,-1.203,-1.206,-1.209,-1.212,-1.215, - &-1.218,-1.221,-1.223,-1.226,-1.229,-1.232,-1.235,-1.238,-1.241, - &-1.244,-1.246,-1.249,-1.252,-1.255,-1.258,-1.261,-1.263,-1.266, - &-1.269,-1.272,-1.274,-1.277,-1.280,-1.283,-1.285,-1.288,-1.291, - &-1.294,-1.296,-1.299,-1.302,-1.304,-1.307,-1.310,-1.313,-1.315, - &-1.318,-1.321,-1.323,-1.326,-1.328,-1.331,-1.334,-1.336,-1.339, - &-1.342,-1.344,-1.347,-1.349,-1.352,-1.355,-1.357,-1.360,-1.362, - &-1.365,-1.367,-1.370,-1.373,-1.375,-1.378,-1.380,-1.383,-1.385, - &-1.388,-1.390,-1.393,-1.395,-1.398,-1.400,-1.403,-1.405,-1.408, - &-1.410,-1.413,-1.415,-1.418,-1.420,-1.423,-1.425,-1.427,-1.430, - &-1.432,-1.435,-1.437,-1.440,-1.442,-1.445,-1.447,-1.449,-1.452, - &-1.454,-1.457,-1.459,-1.461,-1.464,-1.466,-1.469,-1.471,-1.473, - &-1.476,-1.478,-1.480,-1.483,-1.485,-1.487,-1.490,-1.492,-1.495, - &-1.497,-1.499,-1.502,-1.504,-1.506,-1.509,-1.511,-1.513,-1.515, - &-1.518,-1.520,-1.522,-1.525,-1.527,-1.529,-1.532,-1.534,-1.536, - &-1.538,-1.541,-1.543,-1.545,-1.548,-1.550,-1.552,-1.554,-1.557, - &-1.559,-1.561,-1.563,-1.566,-1.568,-1.570,-1.572,-1.575,-1.577, - &-1.579,-1.581,-1.583,-1.586,-1.588,-1.590,-1.592,-1.595,-1.597, - &-1.599,-1.601,-1.603,-1.606,-1.608,-1.610,-1.612,-1.614,-1.616, - &-1.619,-1.621,-1.623,-1.625,-1.627,-1.630,-1.632,-1.634,-1.636, - &-1.638,-1.640,-1.642,-1.645,-1.647,-1.649,-1.651,-1.653,-1.655, - &-1.658,-1.660,-1.662,-1.664,-1.666,-1.668,-1.670,-1.672,-1.675, - &-1.677,-1.679,-1.681,-1.683,-1.685,-1.687,-1.689,-1.691,-1.694, - &-1.696,-1.698,-1.700,-1.702,-1.704,-1.706,-1.708,-1.710,-1.712, - &-1.714,-1.717,-1.719,-1.721,-1.723,-1.725,-1.727,-1.729,-1.731, - &-1.733,-1.735,-1.737,-1.739,-1.741,-1.743,-1.745,-1.748,-1.750, - &-1.752,-1.754,-1.756,-1.758,-1.760,-1.762,-1.764,-1.766,-1.768, - &-1.770,-1.772,-1.774,-1.776,-1.778,-1.780,-1.782,-1.784,-1.786, - &-1.788,-1.790,-1.792,-1.794,-1.816,-1.836,-1.855,-1.875,-1.894, - &-1.914,-1.933,-1.952,-1.971,-1.989,-2.008,-2.027,-2.045,-2.063, - &-2.082,-2.100,-2.118,-2.136,-2.154,-2.171,-2.189,-2.207,-2.224, - &-2.242,-2.259,-2.276,-2.293,-2.311,-2.328,-2.345,-2.362,-2.379, - &-2.395,-2.412,-2.429,-2.446,-2.462,-2.479,-2.495,-2.512,-2.528, - &-2.544,-2.561,-2.577,-2.593,-2.609,-2.625,-2.642,-2.658,-2.674, - &-2.689,-2.705,-2.721,-2.737,-2.753,-2.768,-2.784,-2.800,-2.815, - &-2.831,-2.847,-2.862,-2.878,-2.893,-2.908,-2.924,-2.939,-2.954, - &-2.970,-2.985,-3.000,-3.015,-3.031,-3.046,-3.061,-3.076,-3.091, - &-3.106,-3.121,-3.136,-3.151,-3.166,-3.181,-3.196,-3.210,-3.225, - &-3.240,-3.255,-3.270,-3.284,-3.299,-3.314,-3.328,-3.343,-3.358, - &-3.372,-3.387,-3.401,-3.416,-3.430,-3.445,-3.459,-3.474,-3.488, - &-3.503,-3.517,-3.531,-3.546,-3.560,-3.574,-3.589,-3.603,-3.617, - &-3.631,-3.646,-3.660,-3.674,-3.688,-3.702,-3.717,-3.731,-3.745, - &-3.759,-3.773,-3.787,-3.801,-3.815,-3.829,-3.843,-3.857,-3.871, - &-3.885,-3.899,-3.913,-3.927,-3.941,-3.955,-3.969,-3.982,-3.996, - &-4.010,-4.024,-4.038,-4.051,-4.065,-4.079,-4.093,-4.107,-4.120, - &-4.134,-4.148,-4.161,-4.175,-4.189,-4.202,-4.216,-4.230,-4.243, - &-4.257,-4.271,-4.284 - & /) -! -! *** NH4NO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC05M_198 = (/ - &-0.052,-0.117,-0.152,-0.178,-0.199,-0.217,-0.232,-0.247,-0.260, - &-0.272,-0.283,-0.294,-0.304,-0.314,-0.323,-0.332,-0.341,-0.349, - &-0.357,-0.365,-0.372,-0.379,-0.386,-0.393,-0.400,-0.407,-0.413, - &-0.419,-0.426,-0.432,-0.437,-0.443,-0.449,-0.455,-0.460,-0.466, - &-0.471,-0.476,-0.481,-0.486,-0.491,-0.496,-0.501,-0.506,-0.511, - &-0.515,-0.520,-0.524,-0.529,-0.533,-0.537,-0.542,-0.546,-0.550, - &-0.554,-0.558,-0.563,-0.567,-0.570,-0.574,-0.578,-0.582,-0.586, - &-0.590,-0.593,-0.597,-0.601,-0.604,-0.608,-0.612,-0.615,-0.619, - &-0.622,-0.626,-0.629,-0.633,-0.636,-0.640,-0.643,-0.646,-0.650, - &-0.653,-0.656,-0.660,-0.663,-0.666,-0.670,-0.673,-0.676,-0.679, - &-0.683,-0.686,-0.689,-0.692,-0.696,-0.699,-0.702,-0.705,-0.708, - &-0.711,-0.715,-0.718,-0.721,-0.724,-0.727,-0.730,-0.733,-0.736, - &-0.739,-0.742,-0.746,-0.749,-0.752,-0.755,-0.758,-0.761,-0.764, - &-0.767,-0.770,-0.773,-0.776,-0.778,-0.781,-0.784,-0.787,-0.790, - &-0.793,-0.796,-0.799,-0.802,-0.805,-0.807,-0.810,-0.813,-0.816, - &-0.819,-0.821,-0.824,-0.827,-0.830,-0.833,-0.835,-0.838,-0.841, - &-0.843,-0.846,-0.849,-0.852,-0.854,-0.857,-0.860,-0.862,-0.865, - &-0.867,-0.870,-0.873,-0.875,-0.878,-0.880,-0.883,-0.886,-0.888, - &-0.891,-0.893,-0.896,-0.898,-0.901,-0.903,-0.906,-0.908,-0.911, - &-0.913,-0.916,-0.918,-0.921,-0.923,-0.926,-0.928,-0.930,-0.933, - &-0.935,-0.938,-0.940,-0.942,-0.945,-0.947,-0.950,-0.952,-0.954, - &-0.957,-0.959,-0.961,-0.964,-0.966,-0.968,-0.971,-0.973,-0.975, - &-0.977,-0.980,-0.982,-0.984,-0.987,-0.989,-0.991,-0.993,-0.996, - &-0.998,-1.000,-1.002,-1.004,-1.007,-1.009,-1.011,-1.013,-1.015, - &-1.018,-1.020,-1.022,-1.024,-1.026,-1.028,-1.031,-1.033,-1.035, - &-1.037,-1.039,-1.041,-1.043,-1.046,-1.048,-1.050,-1.052,-1.054, - &-1.056,-1.058,-1.060,-1.062,-1.064,-1.066,-1.068,-1.070,-1.072, - &-1.075,-1.077,-1.079,-1.081,-1.083,-1.085,-1.087,-1.089,-1.091, - &-1.093,-1.095,-1.097,-1.099,-1.101,-1.103,-1.105,-1.107,-1.109, - &-1.110,-1.112,-1.114,-1.116,-1.118,-1.120,-1.122,-1.124,-1.126, - &-1.128,-1.130,-1.132,-1.134,-1.136,-1.137,-1.139,-1.141,-1.143, - &-1.145,-1.147,-1.149,-1.151,-1.153,-1.154,-1.156,-1.158,-1.160, - &-1.162,-1.164,-1.166,-1.167,-1.169,-1.171,-1.173,-1.175,-1.176, - &-1.178,-1.180,-1.182,-1.184,-1.186,-1.187,-1.189,-1.191,-1.193, - &-1.195,-1.196,-1.198,-1.200,-1.202,-1.203,-1.205,-1.207,-1.209, - &-1.210,-1.212,-1.214,-1.216,-1.217,-1.219,-1.221,-1.223,-1.224, - &-1.226,-1.228,-1.230,-1.231,-1.233,-1.235,-1.236,-1.238,-1.240, - &-1.241,-1.243,-1.245,-1.247,-1.248,-1.250,-1.252,-1.253,-1.255, - &-1.257,-1.258,-1.260,-1.262,-1.263,-1.265,-1.267,-1.268,-1.270, - &-1.272,-1.273,-1.275,-1.276,-1.278,-1.280,-1.281,-1.283,-1.285, - &-1.286,-1.288,-1.289,-1.291,-1.293,-1.294,-1.296,-1.298,-1.299, - &-1.301,-1.302,-1.304,-1.306,-1.307,-1.309,-1.310,-1.312,-1.313, - &-1.315,-1.317,-1.318,-1.320,-1.321,-1.323,-1.324,-1.326,-1.328, - &-1.329,-1.331,-1.332,-1.334,-1.335,-1.337,-1.338,-1.340,-1.341, - &-1.343,-1.345,-1.346,-1.348,-1.364,-1.379,-1.394,-1.408,-1.422, - &-1.436,-1.450,-1.464,-1.478,-1.491,-1.504,-1.518,-1.531,-1.543, - &-1.556,-1.569,-1.581,-1.593,-1.606,-1.618,-1.630,-1.641,-1.653, - &-1.665,-1.676,-1.688,-1.699,-1.710,-1.722,-1.733,-1.744,-1.755, - &-1.765,-1.776,-1.787,-1.797,-1.808,-1.818,-1.829,-1.839,-1.849, - &-1.859,-1.870,-1.880,-1.890,-1.900,-1.909,-1.919,-1.929,-1.939, - &-1.948,-1.958,-1.968,-1.977,-1.986,-1.996,-2.005,-2.015,-2.024, - &-2.033,-2.042,-2.051,-2.060,-2.070,-2.079,-2.088,-2.096,-2.105, - &-2.114,-2.123,-2.132,-2.141,-2.149,-2.158,-2.167,-2.175,-2.184, - &-2.193,-2.201,-2.210,-2.218,-2.226,-2.235,-2.243,-2.252,-2.260, - &-2.268,-2.277,-2.285,-2.293,-2.301,-2.309,-2.318,-2.326,-2.334, - &-2.342,-2.350,-2.358,-2.366,-2.374,-2.382,-2.390,-2.398,-2.406, - &-2.414,-2.422,-2.429,-2.437,-2.445,-2.453,-2.461,-2.468,-2.476, - &-2.484,-2.492,-2.499,-2.507,-2.515,-2.522,-2.530,-2.537,-2.545, - &-2.553,-2.560,-2.568,-2.575,-2.583,-2.590,-2.598,-2.605,-2.613, - &-2.620,-2.628,-2.635,-2.642,-2.650,-2.657,-2.664,-2.672,-2.679, - &-2.686,-2.694,-2.701,-2.708,-2.716,-2.723,-2.730,-2.737,-2.745, - &-2.752,-2.759,-2.766,-2.773,-2.781,-2.788,-2.795,-2.802,-2.809, - &-2.816,-2.823,-2.831 - & /) -! -! *** NH4Cl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC06M_198 = (/ - &-0.051,-0.108,-0.136,-0.155,-0.170,-0.182,-0.192,-0.200,-0.207, - &-0.214,-0.220,-0.225,-0.230,-0.234,-0.238,-0.242,-0.245,-0.248, - &-0.251,-0.254,-0.256,-0.259,-0.261,-0.263,-0.265,-0.267,-0.269, - &-0.270,-0.272,-0.274,-0.275,-0.276,-0.278,-0.279,-0.280,-0.281, - &-0.283,-0.284,-0.285,-0.286,-0.287,-0.288,-0.289,-0.289,-0.290, - &-0.291,-0.292,-0.293,-0.293,-0.294,-0.295,-0.296,-0.296,-0.297, - &-0.298,-0.298,-0.299,-0.300,-0.300,-0.301,-0.301,-0.302,-0.302, - &-0.303,-0.303,-0.304,-0.304,-0.305,-0.305,-0.306,-0.306,-0.307, - &-0.307,-0.308,-0.308,-0.308,-0.309,-0.309,-0.309,-0.310,-0.310, - &-0.310,-0.311,-0.311,-0.311,-0.312,-0.312,-0.312,-0.312,-0.313, - &-0.313,-0.313,-0.313,-0.313,-0.314,-0.314,-0.314,-0.314,-0.314, - &-0.314,-0.314,-0.314,-0.315,-0.315,-0.315,-0.315,-0.315,-0.315, - &-0.315,-0.315,-0.315,-0.315,-0.315,-0.315,-0.315,-0.315,-0.315, - &-0.315,-0.315,-0.315,-0.315,-0.315,-0.315,-0.315,-0.315,-0.315, - &-0.315,-0.315,-0.315,-0.315,-0.315,-0.315,-0.315,-0.315,-0.315, - &-0.315,-0.314,-0.314,-0.314,-0.314,-0.314,-0.314,-0.314,-0.314, - &-0.314,-0.314,-0.314,-0.314,-0.314,-0.314,-0.314,-0.314,-0.313, - &-0.313,-0.313,-0.313,-0.313,-0.313,-0.313,-0.313,-0.313,-0.313, - &-0.313,-0.313,-0.313,-0.313,-0.312,-0.312,-0.312,-0.312,-0.312, - &-0.312,-0.312,-0.312,-0.312,-0.312,-0.312,-0.312,-0.312,-0.312, - &-0.311,-0.311,-0.311,-0.311,-0.311,-0.311,-0.311,-0.311,-0.311, - &-0.311,-0.311,-0.311,-0.311,-0.311,-0.310,-0.310,-0.310,-0.310, - &-0.310,-0.310,-0.310,-0.310,-0.310,-0.310,-0.310,-0.310,-0.310, - &-0.310,-0.309,-0.309,-0.309,-0.309,-0.309,-0.309,-0.309,-0.309, - &-0.309,-0.309,-0.309,-0.309,-0.309,-0.309,-0.309,-0.309,-0.308, - &-0.308,-0.308,-0.308,-0.308,-0.308,-0.308,-0.308,-0.308,-0.308, - &-0.308,-0.308,-0.308,-0.308,-0.308,-0.308,-0.308,-0.308,-0.307, - &-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307, - &-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307, - &-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.306,-0.306,-0.306, - &-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306, - &-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306, - &-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306, - &-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306, - &-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306, - &-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306, - &-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306, - &-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306, - &-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306, - &-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306, - &-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.306,-0.307, - &-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307, - &-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307,-0.307, - &-0.307,-0.307,-0.307,-0.307,-0.307,-0.308,-0.308,-0.308,-0.308, - &-0.308,-0.308,-0.308,-0.308,-0.308,-0.309,-0.310,-0.311,-0.311, - &-0.312,-0.313,-0.314,-0.315,-0.316,-0.317,-0.319,-0.320,-0.321, - &-0.322,-0.324,-0.325,-0.327,-0.328,-0.330,-0.331,-0.333,-0.335, - &-0.336,-0.338,-0.340,-0.342,-0.344,-0.346,-0.348,-0.350,-0.352, - &-0.354,-0.356,-0.358,-0.360,-0.362,-0.365,-0.367,-0.369,-0.371, - &-0.374,-0.376,-0.379,-0.381,-0.383,-0.386,-0.389,-0.391,-0.394, - &-0.396,-0.399,-0.401,-0.404,-0.407,-0.410,-0.412,-0.415,-0.418, - &-0.421,-0.423,-0.426,-0.429,-0.432,-0.435,-0.438,-0.441,-0.444, - &-0.447,-0.450,-0.453,-0.456,-0.459,-0.462,-0.465,-0.468,-0.471, - &-0.475,-0.478,-0.481,-0.484,-0.487,-0.491,-0.494,-0.497,-0.500, - &-0.504,-0.507,-0.510,-0.514,-0.517,-0.520,-0.524,-0.527,-0.531, - &-0.534,-0.537,-0.541,-0.544,-0.548,-0.551,-0.555,-0.558,-0.562, - &-0.565,-0.569,-0.573,-0.576,-0.580,-0.583,-0.587,-0.591,-0.594, - &-0.598,-0.601,-0.605,-0.609,-0.612,-0.616,-0.620,-0.624,-0.627, - &-0.631,-0.635,-0.639,-0.642,-0.646,-0.650,-0.654,-0.657,-0.661, - &-0.665,-0.669,-0.673,-0.677,-0.680,-0.684,-0.688,-0.692,-0.696, - &-0.700,-0.704,-0.708,-0.711,-0.715,-0.719,-0.723,-0.727,-0.731, - &-0.735,-0.739,-0.743,-0.747,-0.751,-0.755,-0.759,-0.763,-0.767, - &-0.771,-0.775,-0.779 - & /) -! -! *** (2H,SO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC07M_198 = (/ - &-0.103,-0.225,-0.286,-0.330,-0.365,-0.394,-0.419,-0.441,-0.460, - &-0.478,-0.495,-0.510,-0.524,-0.538,-0.550,-0.562,-0.573,-0.584, - &-0.594,-0.604,-0.613,-0.622,-0.631,-0.640,-0.648,-0.656,-0.663, - &-0.671,-0.678,-0.685,-0.692,-0.699,-0.705,-0.711,-0.718,-0.724, - &-0.730,-0.736,-0.741,-0.747,-0.753,-0.758,-0.763,-0.769,-0.774, - &-0.779,-0.784,-0.789,-0.794,-0.798,-0.803,-0.808,-0.812,-0.817, - &-0.821,-0.826,-0.830,-0.834,-0.839,-0.843,-0.847,-0.851,-0.855, - &-0.859,-0.863,-0.867,-0.871,-0.875,-0.879,-0.883,-0.886,-0.890, - &-0.894,-0.897,-0.901,-0.905,-0.908,-0.912,-0.915,-0.919,-0.922, - &-0.926,-0.929,-0.933,-0.936,-0.939,-0.943,-0.946,-0.949,-0.953, - &-0.956,-0.959,-0.962,-0.965,-0.969,-0.972,-0.975,-0.978,-0.981, - &-0.984,-0.987,-0.990,-0.994,-0.997,-1.000,-1.003,-1.006,-1.009, - &-1.012,-1.015,-1.017,-1.020,-1.023,-1.026,-1.029,-1.032,-1.035, - &-1.038,-1.041,-1.043,-1.046,-1.049,-1.052,-1.055,-1.057,-1.060, - &-1.063,-1.066,-1.068,-1.071,-1.074,-1.077,-1.079,-1.082,-1.085, - &-1.087,-1.090,-1.093,-1.095,-1.098,-1.100,-1.103,-1.106,-1.108, - &-1.111,-1.113,-1.116,-1.119,-1.121,-1.124,-1.126,-1.129,-1.131, - &-1.134,-1.136,-1.139,-1.141,-1.144,-1.146,-1.149,-1.151,-1.154, - &-1.156,-1.159,-1.161,-1.163,-1.166,-1.168,-1.171,-1.173,-1.176, - &-1.178,-1.180,-1.183,-1.185,-1.187,-1.190,-1.192,-1.195,-1.197, - &-1.199,-1.202,-1.204,-1.206,-1.209,-1.211,-1.213,-1.216,-1.218, - &-1.220,-1.222,-1.225,-1.227,-1.229,-1.232,-1.234,-1.236,-1.238, - &-1.241,-1.243,-1.245,-1.247,-1.250,-1.252,-1.254,-1.256,-1.258, - &-1.261,-1.263,-1.265,-1.267,-1.270,-1.272,-1.274,-1.276,-1.278, - &-1.280,-1.283,-1.285,-1.287,-1.289,-1.291,-1.293,-1.296,-1.298, - &-1.300,-1.302,-1.304,-1.306,-1.308,-1.311,-1.313,-1.315,-1.317, - &-1.319,-1.321,-1.323,-1.325,-1.328,-1.330,-1.332,-1.334,-1.336, - &-1.338,-1.340,-1.342,-1.344,-1.346,-1.348,-1.350,-1.353,-1.355, - &-1.357,-1.359,-1.361,-1.363,-1.365,-1.367,-1.369,-1.371,-1.373, - &-1.375,-1.377,-1.379,-1.381,-1.383,-1.385,-1.387,-1.389,-1.391, - &-1.393,-1.395,-1.397,-1.399,-1.401,-1.403,-1.405,-1.407,-1.409, - &-1.411,-1.413,-1.415,-1.417,-1.419,-1.421,-1.423,-1.425,-1.427, - &-1.429,-1.431,-1.433,-1.435,-1.437,-1.439,-1.441,-1.443,-1.445, - &-1.447,-1.449,-1.451,-1.453,-1.455,-1.456,-1.458,-1.460,-1.462, - &-1.464,-1.466,-1.468,-1.470,-1.472,-1.474,-1.476,-1.478,-1.480, - &-1.481,-1.483,-1.485,-1.487,-1.489,-1.491,-1.493,-1.495,-1.497, - &-1.499,-1.500,-1.502,-1.504,-1.506,-1.508,-1.510,-1.512,-1.514, - &-1.516,-1.517,-1.519,-1.521,-1.523,-1.525,-1.527,-1.529,-1.531, - &-1.532,-1.534,-1.536,-1.538,-1.540,-1.542,-1.544,-1.545,-1.547, - &-1.549,-1.551,-1.553,-1.555,-1.557,-1.558,-1.560,-1.562,-1.564, - &-1.566,-1.568,-1.569,-1.571,-1.573,-1.575,-1.577,-1.579,-1.580, - &-1.582,-1.584,-1.586,-1.588,-1.589,-1.591,-1.593,-1.595,-1.597, - &-1.598,-1.600,-1.602,-1.604,-1.606,-1.608,-1.609,-1.611,-1.613, - &-1.615,-1.617,-1.618,-1.620,-1.622,-1.624,-1.625,-1.627,-1.629, - &-1.631,-1.633,-1.634,-1.636,-1.655,-1.673,-1.691,-1.708,-1.725, - &-1.742,-1.760,-1.777,-1.793,-1.810,-1.827,-1.844,-1.860,-1.877, - &-1.893,-1.910,-1.926,-1.942,-1.958,-1.974,-1.990,-2.006,-2.022, - &-2.038,-2.054,-2.070,-2.086,-2.101,-2.117,-2.132,-2.148,-2.163, - &-2.179,-2.194,-2.210,-2.225,-2.240,-2.255,-2.271,-2.286,-2.301, - &-2.316,-2.331,-2.346,-2.361,-2.376,-2.391,-2.406,-2.420,-2.435, - &-2.450,-2.465,-2.479,-2.494,-2.509,-2.523,-2.538,-2.553,-2.567, - &-2.582,-2.596,-2.611,-2.625,-2.640,-2.654,-2.668,-2.683,-2.697, - &-2.711,-2.726,-2.740,-2.754,-2.768,-2.783,-2.797,-2.811,-2.825, - &-2.839,-2.853,-2.867,-2.881,-2.895,-2.909,-2.923,-2.937,-2.951, - &-2.965,-2.979,-2.993,-3.007,-3.021,-3.035,-3.049,-3.063,-3.076, - &-3.090,-3.104,-3.118,-3.132,-3.145,-3.159,-3.173,-3.186,-3.200, - &-3.214,-3.227,-3.241,-3.255,-3.268,-3.282,-3.295,-3.309,-3.323, - &-3.336,-3.350,-3.363,-3.377,-3.390,-3.404,-3.417,-3.431,-3.444, - &-3.458,-3.471,-3.484,-3.498,-3.511,-3.525,-3.538,-3.551,-3.565, - &-3.578,-3.591,-3.605,-3.618,-3.631,-3.645,-3.658,-3.671,-3.684, - &-3.698,-3.711,-3.724,-3.737,-3.750,-3.764,-3.777,-3.790,-3.803, - &-3.816,-3.829,-3.843,-3.856,-3.869,-3.882,-3.895,-3.908,-3.921, - &-3.934,-3.947,-3.960 - & /) -! -! *** (H,HSO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC08M_198 = (/ - &-0.047,-0.093,-0.110,-0.119,-0.125,-0.128,-0.130,-0.130,-0.129, - &-0.128,-0.126,-0.123,-0.119,-0.116,-0.111,-0.107,-0.102,-0.096, - &-0.091,-0.085,-0.079,-0.073,-0.066,-0.059,-0.052,-0.045,-0.037, - &-0.030,-0.022,-0.014,-0.006, 0.003, 0.011, 0.020, 0.028, 0.037, - & 0.046, 0.055, 0.065, 0.074, 0.083, 0.093, 0.103, 0.113, 0.122, - & 0.132, 0.142, 0.152, 0.163, 0.173, 0.183, 0.194, 0.204, 0.215, - & 0.225, 0.236, 0.247, 0.258, 0.268, 0.279, 0.290, 0.301, 0.312, - & 0.323, 0.334, 0.346, 0.357, 0.368, 0.380, 0.391, 0.402, 0.414, - & 0.425, 0.437, 0.449, 0.461, 0.472, 0.484, 0.496, 0.508, 0.520, - & 0.532, 0.544, 0.557, 0.569, 0.581, 0.594, 0.606, 0.619, 0.631, - & 0.644, 0.657, 0.669, 0.682, 0.695, 0.708, 0.721, 0.734, 0.747, - & 0.761, 0.774, 0.787, 0.800, 0.814, 0.827, 0.841, 0.854, 0.868, - & 0.881, 0.895, 0.908, 0.922, 0.936, 0.949, 0.963, 0.977, 0.990, - & 1.004, 1.018, 1.031, 1.045, 1.059, 1.072, 1.086, 1.100, 1.114, - & 1.127, 1.141, 1.155, 1.168, 1.182, 1.195, 1.209, 1.223, 1.236, - & 1.250, 1.263, 1.277, 1.290, 1.304, 1.317, 1.331, 1.344, 1.358, - & 1.371, 1.384, 1.398, 1.411, 1.424, 1.437, 1.451, 1.464, 1.477, - & 1.490, 1.503, 1.516, 1.529, 1.542, 1.555, 1.568, 1.581, 1.594, - & 1.607, 1.620, 1.633, 1.646, 1.659, 1.671, 1.684, 1.697, 1.709, - & 1.722, 1.735, 1.747, 1.760, 1.772, 1.785, 1.798, 1.810, 1.822, - & 1.835, 1.847, 1.860, 1.872, 1.884, 1.896, 1.909, 1.921, 1.933, - & 1.945, 1.957, 1.970, 1.982, 1.994, 2.006, 2.018, 2.030, 2.042, - & 2.054, 2.065, 2.077, 2.089, 2.101, 2.113, 2.125, 2.136, 2.148, - & 2.160, 2.171, 2.183, 2.195, 2.206, 2.218, 2.229, 2.241, 2.252, - & 2.264, 2.275, 2.286, 2.298, 2.309, 2.320, 2.332, 2.343, 2.354, - & 2.365, 2.377, 2.388, 2.399, 2.410, 2.421, 2.432, 2.443, 2.454, - & 2.465, 2.476, 2.487, 2.498, 2.509, 2.520, 2.531, 2.541, 2.552, - & 2.563, 2.574, 2.584, 2.595, 2.606, 2.616, 2.627, 2.638, 2.648, - & 2.659, 2.669, 2.680, 2.690, 2.701, 2.711, 2.722, 2.732, 2.742, - & 2.753, 2.763, 2.773, 2.784, 2.794, 2.804, 2.814, 2.825, 2.835, - & 2.845, 2.855, 2.865, 2.875, 2.885, 2.895, 2.905, 2.915, 2.925, - & 2.935, 2.945, 2.955, 2.965, 2.975, 2.985, 2.995, 3.005, 3.014, - & 3.024, 3.034, 3.044, 3.053, 3.063, 3.073, 3.082, 3.092, 3.102, - & 3.111, 3.121, 3.130, 3.140, 3.149, 3.159, 3.168, 3.178, 3.187, - & 3.197, 3.206, 3.215, 3.225, 3.234, 3.243, 3.253, 3.262, 3.271, - & 3.280, 3.290, 3.299, 3.308, 3.317, 3.326, 3.336, 3.345, 3.354, - & 3.363, 3.372, 3.381, 3.390, 3.399, 3.408, 3.417, 3.426, 3.435, - & 3.444, 3.453, 3.462, 3.470, 3.479, 3.488, 3.497, 3.506, 3.514, - & 3.523, 3.532, 3.541, 3.549, 3.558, 3.567, 3.575, 3.584, 3.593, - & 3.601, 3.610, 3.619, 3.627, 3.636, 3.644, 3.653, 3.661, 3.670, - & 3.678, 3.687, 3.695, 3.704, 3.712, 3.720, 3.729, 3.737, 3.745, - & 3.754, 3.762, 3.770, 3.779, 3.787, 3.795, 3.803, 3.812, 3.820, - & 3.828, 3.836, 3.844, 3.852, 3.861, 3.869, 3.877, 3.885, 3.893, - & 3.901, 3.909, 3.917, 3.925, 3.933, 3.941, 3.949, 3.957, 3.965, - & 3.973, 3.981, 3.989, 3.997, 4.081, 4.158, 4.233, 4.307, 4.380, - & 4.452, 4.522, 4.592, 4.660, 4.727, 4.793, 4.859, 4.923, 4.986, - & 5.048, 5.110, 5.171, 5.230, 5.289, 5.347, 5.405, 5.461, 5.517, - & 5.572, 5.626, 5.680, 5.733, 5.785, 5.837, 5.888, 5.938, 5.988, - & 6.037, 6.085, 6.133, 6.181, 6.228, 6.274, 6.320, 6.365, 6.410, - & 6.454, 6.498, 6.541, 6.584, 6.626, 6.668, 6.710, 6.751, 6.792, - & 6.832, 6.872, 6.911, 6.950, 6.989, 7.027, 7.065, 7.102, 7.139, - & 7.176, 7.212, 7.248, 7.284, 7.319, 7.354, 7.389, 7.424, 7.458, - & 7.491, 7.525, 7.558, 7.591, 7.623, 7.656, 7.688, 7.719, 7.751, - & 7.782, 7.813, 7.844, 7.874, 7.904, 7.934, 7.964, 7.993, 8.022, - & 8.051, 8.080, 8.108, 8.137, 8.165, 8.192, 8.220, 8.247, 8.274, - & 8.301, 8.328, 8.354, 8.381, 8.407, 8.433, 8.458, 8.484, 8.509, - & 8.534, 8.559, 8.584, 8.609, 8.633, 8.657, 8.681, 8.705, 8.729, - & 8.752, 8.776, 8.799, 8.822, 8.845, 8.868, 8.890, 8.913, 8.935, - & 8.957, 8.979, 9.001, 9.022, 9.044, 9.065, 9.086, 9.107, 9.128, - & 9.149, 9.170, 9.190, 9.211, 9.231, 9.251, 9.271, 9.291, 9.311, - & 9.330, 9.350, 9.369, 9.388, 9.407, 9.426, 9.445, 9.464, 9.483, - & 9.501, 9.520, 9.538, 9.556, 9.574, 9.592, 9.610, 9.628, 9.645, - & 9.663, 9.680, 9.698 - & /) -! -! *** NH4HSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC09M_198 = (/ - &-0.050,-0.107,-0.134,-0.153,-0.167,-0.179,-0.189,-0.197,-0.204, - &-0.211,-0.216,-0.221,-0.226,-0.230,-0.234,-0.237,-0.240,-0.243, - &-0.245,-0.247,-0.249,-0.251,-0.252,-0.254,-0.255,-0.256,-0.256, - &-0.257,-0.257,-0.258,-0.258,-0.258,-0.258,-0.258,-0.257,-0.257, - &-0.256,-0.255,-0.255,-0.254,-0.253,-0.252,-0.250,-0.249,-0.248, - &-0.246,-0.245,-0.243,-0.242,-0.240,-0.238,-0.236,-0.234,-0.232, - &-0.230,-0.228,-0.226,-0.224,-0.221,-0.219,-0.217,-0.214,-0.212, - &-0.209,-0.207,-0.204,-0.201,-0.199,-0.196,-0.193,-0.190,-0.188, - &-0.185,-0.182,-0.179,-0.176,-0.173,-0.170,-0.167,-0.163,-0.160, - &-0.157,-0.154,-0.150,-0.147,-0.144,-0.140,-0.137,-0.133,-0.130, - &-0.126,-0.123,-0.119,-0.116,-0.112,-0.108,-0.104,-0.101,-0.097, - &-0.093,-0.089,-0.086,-0.082,-0.078,-0.074,-0.070,-0.066,-0.062, - &-0.058,-0.054,-0.050,-0.046,-0.042,-0.038,-0.034,-0.030,-0.026, - &-0.022,-0.018,-0.014,-0.010,-0.006,-0.002, 0.002, 0.006, 0.010, - & 0.014, 0.018, 0.022, 0.026, 0.030, 0.034, 0.038, 0.042, 0.046, - & 0.050, 0.054, 0.058, 0.062, 0.066, 0.070, 0.074, 0.078, 0.082, - & 0.086, 0.090, 0.094, 0.098, 0.102, 0.106, 0.110, 0.114, 0.117, - & 0.121, 0.125, 0.129, 0.133, 0.137, 0.140, 0.144, 0.148, 0.152, - & 0.156, 0.159, 0.163, 0.167, 0.171, 0.174, 0.178, 0.182, 0.186, - & 0.189, 0.193, 0.197, 0.200, 0.204, 0.208, 0.211, 0.215, 0.219, - & 0.222, 0.226, 0.229, 0.233, 0.237, 0.240, 0.244, 0.247, 0.251, - & 0.254, 0.258, 0.261, 0.265, 0.268, 0.272, 0.275, 0.279, 0.282, - & 0.286, 0.289, 0.293, 0.296, 0.299, 0.303, 0.306, 0.309, 0.313, - & 0.316, 0.320, 0.323, 0.326, 0.330, 0.333, 0.336, 0.339, 0.343, - & 0.346, 0.349, 0.353, 0.356, 0.359, 0.362, 0.366, 0.369, 0.372, - & 0.375, 0.378, 0.382, 0.385, 0.388, 0.391, 0.394, 0.397, 0.401, - & 0.404, 0.407, 0.410, 0.413, 0.416, 0.419, 0.422, 0.425, 0.428, - & 0.431, 0.434, 0.438, 0.441, 0.444, 0.447, 0.450, 0.453, 0.456, - & 0.459, 0.462, 0.465, 0.467, 0.470, 0.473, 0.476, 0.479, 0.482, - & 0.485, 0.488, 0.491, 0.494, 0.497, 0.500, 0.502, 0.505, 0.508, - & 0.511, 0.514, 0.517, 0.520, 0.522, 0.525, 0.528, 0.531, 0.534, - & 0.536, 0.539, 0.542, 0.545, 0.547, 0.550, 0.553, 0.556, 0.558, - & 0.561, 0.564, 0.567, 0.569, 0.572, 0.575, 0.577, 0.580, 0.583, - & 0.585, 0.588, 0.591, 0.593, 0.596, 0.599, 0.601, 0.604, 0.607, - & 0.609, 0.612, 0.614, 0.617, 0.620, 0.622, 0.625, 0.627, 0.630, - & 0.633, 0.635, 0.638, 0.640, 0.643, 0.645, 0.648, 0.650, 0.653, - & 0.655, 0.658, 0.660, 0.663, 0.665, 0.668, 0.670, 0.673, 0.675, - & 0.678, 0.680, 0.683, 0.685, 0.687, 0.690, 0.692, 0.695, 0.697, - & 0.700, 0.702, 0.704, 0.707, 0.709, 0.711, 0.714, 0.716, 0.719, - & 0.721, 0.723, 0.726, 0.728, 0.730, 0.733, 0.735, 0.737, 0.740, - & 0.742, 0.744, 0.747, 0.749, 0.751, 0.754, 0.756, 0.758, 0.760, - & 0.763, 0.765, 0.767, 0.769, 0.772, 0.774, 0.776, 0.778, 0.781, - & 0.783, 0.785, 0.787, 0.790, 0.792, 0.794, 0.796, 0.798, 0.801, - & 0.803, 0.805, 0.807, 0.809, 0.811, 0.814, 0.816, 0.818, 0.820, - & 0.822, 0.824, 0.827, 0.829, 0.851, 0.872, 0.892, 0.912, 0.932, - & 0.951, 0.969, 0.988, 1.006, 1.024, 1.041, 1.058, 1.075, 1.091, - & 1.107, 1.123, 1.139, 1.154, 1.169, 1.184, 1.199, 1.213, 1.227, - & 1.241, 1.255, 1.268, 1.282, 1.295, 1.307, 1.320, 1.332, 1.345, - & 1.357, 1.368, 1.380, 1.392, 1.403, 1.414, 1.425, 1.436, 1.446, - & 1.457, 1.467, 1.478, 1.488, 1.497, 1.507, 1.517, 1.526, 1.536, - & 1.545, 1.554, 1.563, 1.572, 1.580, 1.589, 1.597, 1.606, 1.614, - & 1.622, 1.630, 1.638, 1.646, 1.653, 1.661, 1.668, 1.676, 1.683, - & 1.690, 1.697, 1.704, 1.711, 1.718, 1.724, 1.731, 1.737, 1.744, - & 1.750, 1.756, 1.762, 1.769, 1.775, 1.780, 1.786, 1.792, 1.798, - & 1.803, 1.809, 1.814, 1.820, 1.825, 1.830, 1.835, 1.840, 1.845, - & 1.850, 1.855, 1.860, 1.865, 1.870, 1.874, 1.879, 1.883, 1.888, - & 1.892, 1.896, 1.901, 1.905, 1.909, 1.913, 1.917, 1.921, 1.925, - & 1.929, 1.933, 1.936, 1.940, 1.944, 1.947, 1.951, 1.955, 1.958, - & 1.961, 1.965, 1.968, 1.971, 1.975, 1.978, 1.981, 1.984, 1.987, - & 1.990, 1.993, 1.996, 1.999, 2.001, 2.004, 2.007, 2.010, 2.012, - & 2.015, 2.017, 2.020, 2.022, 2.025, 2.027, 2.030, 2.032, 2.034, - & 2.037, 2.039, 2.041, 2.043, 2.045, 2.047, 2.049, 2.051, 2.053, - & 2.055, 2.057, 2.059 - & /) -! -! *** (H,NO3) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC10M_198 = (/ - &-0.049,-0.102,-0.125,-0.140,-0.150,-0.158,-0.163,-0.168,-0.171, - &-0.174,-0.176,-0.178,-0.179,-0.179,-0.179,-0.179,-0.179,-0.179, - &-0.178,-0.177,-0.176,-0.175,-0.174,-0.172,-0.171,-0.169,-0.168, - &-0.166,-0.164,-0.162,-0.160,-0.158,-0.156,-0.154,-0.152,-0.150, - &-0.148,-0.146,-0.144,-0.141,-0.139,-0.137,-0.135,-0.132,-0.130, - &-0.128,-0.126,-0.123,-0.121,-0.119,-0.116,-0.114,-0.112,-0.109, - &-0.107,-0.105,-0.102,-0.100,-0.098,-0.095,-0.093,-0.091,-0.088, - &-0.086,-0.084,-0.081,-0.079,-0.077,-0.074,-0.072,-0.070,-0.067, - &-0.065,-0.062,-0.060,-0.057,-0.055,-0.052,-0.050,-0.048,-0.045, - &-0.042,-0.040,-0.037,-0.035,-0.032,-0.030,-0.027,-0.024,-0.022, - &-0.019,-0.016,-0.013,-0.011,-0.008,-0.005,-0.002, 0.001, 0.003, - & 0.006, 0.009, 0.012, 0.015, 0.018, 0.021, 0.024, 0.027, 0.030, - & 0.033, 0.036, 0.039, 0.042, 0.045, 0.048, 0.051, 0.054, 0.057, - & 0.060, 0.063, 0.066, 0.069, 0.072, 0.075, 0.078, 0.081, 0.084, - & 0.087, 0.091, 0.094, 0.097, 0.100, 0.103, 0.106, 0.109, 0.112, - & 0.115, 0.118, 0.121, 0.124, 0.127, 0.130, 0.133, 0.136, 0.139, - & 0.142, 0.146, 0.149, 0.152, 0.155, 0.158, 0.161, 0.164, 0.167, - & 0.170, 0.173, 0.176, 0.179, 0.182, 0.185, 0.188, 0.191, 0.193, - & 0.196, 0.199, 0.202, 0.205, 0.208, 0.211, 0.214, 0.217, 0.220, - & 0.223, 0.226, 0.229, 0.232, 0.235, 0.237, 0.240, 0.243, 0.246, - & 0.249, 0.252, 0.255, 0.258, 0.260, 0.263, 0.266, 0.269, 0.272, - & 0.275, 0.278, 0.280, 0.283, 0.286, 0.289, 0.292, 0.294, 0.297, - & 0.300, 0.303, 0.306, 0.308, 0.311, 0.314, 0.317, 0.319, 0.322, - & 0.325, 0.328, 0.330, 0.333, 0.336, 0.339, 0.341, 0.344, 0.347, - & 0.349, 0.352, 0.355, 0.358, 0.360, 0.363, 0.366, 0.368, 0.371, - & 0.374, 0.376, 0.379, 0.382, 0.384, 0.387, 0.389, 0.392, 0.395, - & 0.397, 0.400, 0.403, 0.405, 0.408, 0.410, 0.413, 0.415, 0.418, - & 0.421, 0.423, 0.426, 0.428, 0.431, 0.433, 0.436, 0.438, 0.441, - & 0.444, 0.446, 0.449, 0.451, 0.454, 0.456, 0.459, 0.461, 0.464, - & 0.466, 0.469, 0.471, 0.473, 0.476, 0.478, 0.481, 0.483, 0.486, - & 0.488, 0.491, 0.493, 0.495, 0.498, 0.500, 0.503, 0.505, 0.508, - & 0.510, 0.512, 0.515, 0.517, 0.519, 0.522, 0.524, 0.527, 0.529, - & 0.531, 0.534, 0.536, 0.538, 0.541, 0.543, 0.545, 0.548, 0.550, - & 0.552, 0.555, 0.557, 0.559, 0.562, 0.564, 0.566, 0.568, 0.571, - & 0.573, 0.575, 0.578, 0.580, 0.582, 0.584, 0.587, 0.589, 0.591, - & 0.593, 0.595, 0.598, 0.600, 0.602, 0.604, 0.607, 0.609, 0.611, - & 0.613, 0.615, 0.618, 0.620, 0.622, 0.624, 0.626, 0.628, 0.631, - & 0.633, 0.635, 0.637, 0.639, 0.641, 0.644, 0.646, 0.648, 0.650, - & 0.652, 0.654, 0.656, 0.658, 0.660, 0.663, 0.665, 0.667, 0.669, - & 0.671, 0.673, 0.675, 0.677, 0.679, 0.681, 0.683, 0.685, 0.688, - & 0.690, 0.692, 0.694, 0.696, 0.698, 0.700, 0.702, 0.704, 0.706, - & 0.708, 0.710, 0.712, 0.714, 0.716, 0.718, 0.720, 0.722, 0.724, - & 0.726, 0.728, 0.730, 0.732, 0.734, 0.736, 0.738, 0.740, 0.742, - & 0.743, 0.745, 0.747, 0.749, 0.751, 0.753, 0.755, 0.757, 0.759, - & 0.761, 0.763, 0.765, 0.767, 0.787, 0.805, 0.824, 0.841, 0.859, - & 0.876, 0.893, 0.909, 0.926, 0.942, 0.957, 0.973, 0.988, 1.003, - & 1.017, 1.032, 1.046, 1.060, 1.073, 1.087, 1.100, 1.113, 1.126, - & 1.138, 1.151, 1.163, 1.175, 1.187, 1.198, 1.210, 1.221, 1.232, - & 1.243, 1.253, 1.264, 1.274, 1.285, 1.295, 1.305, 1.314, 1.324, - & 1.333, 1.343, 1.352, 1.361, 1.370, 1.378, 1.387, 1.395, 1.404, - & 1.412, 1.420, 1.428, 1.436, 1.444, 1.451, 1.459, 1.466, 1.474, - & 1.481, 1.488, 1.495, 1.502, 1.509, 1.515, 1.522, 1.529, 1.535, - & 1.541, 1.548, 1.554, 1.560, 1.566, 1.572, 1.577, 1.583, 1.589, - & 1.594, 1.600, 1.605, 1.610, 1.616, 1.621, 1.626, 1.631, 1.636, - & 1.641, 1.645, 1.650, 1.655, 1.659, 1.664, 1.668, 1.673, 1.677, - & 1.681, 1.685, 1.690, 1.694, 1.698, 1.702, 1.705, 1.709, 1.713, - & 1.717, 1.720, 1.724, 1.728, 1.731, 1.734, 1.738, 1.741, 1.744, - & 1.748, 1.751, 1.754, 1.757, 1.760, 1.763, 1.766, 1.769, 1.772, - & 1.775, 1.777, 1.780, 1.783, 1.785, 1.788, 1.790, 1.793, 1.795, - & 1.798, 1.800, 1.802, 1.805, 1.807, 1.809, 1.811, 1.813, 1.815, - & 1.817, 1.819, 1.821, 1.823, 1.825, 1.827, 1.829, 1.831, 1.832, - & 1.834, 1.836, 1.838, 1.839, 1.841, 1.842, 1.844, 1.845, 1.847, - & 1.848, 1.849, 1.851 - & /) -! -! *** (H,Cl) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC11M_198 = (/ - &-0.048,-0.094,-0.112,-0.122,-0.128,-0.131,-0.133,-0.133,-0.133, - &-0.131,-0.129,-0.126,-0.123,-0.119,-0.116,-0.111,-0.107,-0.102, - &-0.097,-0.092,-0.086,-0.080,-0.075,-0.069,-0.062,-0.056,-0.050, - &-0.043,-0.037,-0.030,-0.023,-0.016,-0.009,-0.002, 0.005, 0.012, - & 0.020, 0.027, 0.035, 0.042, 0.050, 0.057, 0.065, 0.072, 0.080, - & 0.088, 0.095, 0.103, 0.111, 0.119, 0.126, 0.134, 0.142, 0.150, - & 0.158, 0.166, 0.174, 0.182, 0.190, 0.198, 0.206, 0.214, 0.222, - & 0.230, 0.238, 0.246, 0.254, 0.262, 0.270, 0.278, 0.287, 0.295, - & 0.303, 0.311, 0.320, 0.328, 0.336, 0.345, 0.353, 0.362, 0.370, - & 0.379, 0.387, 0.396, 0.405, 0.413, 0.422, 0.431, 0.440, 0.449, - & 0.457, 0.466, 0.475, 0.484, 0.494, 0.503, 0.512, 0.521, 0.530, - & 0.540, 0.549, 0.558, 0.568, 0.577, 0.587, 0.596, 0.606, 0.615, - & 0.625, 0.634, 0.644, 0.653, 0.663, 0.673, 0.682, 0.692, 0.702, - & 0.711, 0.721, 0.731, 0.740, 0.750, 0.760, 0.769, 0.779, 0.789, - & 0.798, 0.808, 0.818, 0.827, 0.837, 0.847, 0.856, 0.866, 0.875, - & 0.885, 0.895, 0.904, 0.914, 0.923, 0.933, 0.942, 0.952, 0.961, - & 0.971, 0.980, 0.990, 0.999, 1.009, 1.018, 1.027, 1.037, 1.046, - & 1.055, 1.065, 1.074, 1.083, 1.093, 1.102, 1.111, 1.120, 1.130, - & 1.139, 1.148, 1.157, 1.166, 1.175, 1.184, 1.194, 1.203, 1.212, - & 1.221, 1.230, 1.239, 1.248, 1.257, 1.266, 1.275, 1.283, 1.292, - & 1.301, 1.310, 1.319, 1.328, 1.336, 1.345, 1.354, 1.363, 1.372, - & 1.380, 1.389, 1.398, 1.406, 1.415, 1.423, 1.432, 1.441, 1.449, - & 1.458, 1.466, 1.475, 1.483, 1.492, 1.500, 1.509, 1.517, 1.526, - & 1.534, 1.542, 1.551, 1.559, 1.567, 1.576, 1.584, 1.592, 1.600, - & 1.609, 1.617, 1.625, 1.633, 1.641, 1.649, 1.658, 1.666, 1.674, - & 1.682, 1.690, 1.698, 1.706, 1.714, 1.722, 1.730, 1.738, 1.746, - & 1.754, 1.762, 1.769, 1.777, 1.785, 1.793, 1.801, 1.809, 1.816, - & 1.824, 1.832, 1.840, 1.847, 1.855, 1.863, 1.870, 1.878, 1.886, - & 1.893, 1.901, 1.908, 1.916, 1.924, 1.931, 1.939, 1.946, 1.954, - & 1.961, 1.969, 1.976, 1.983, 1.991, 1.998, 2.006, 2.013, 2.020, - & 2.028, 2.035, 2.042, 2.049, 2.057, 2.064, 2.071, 2.078, 2.086, - & 2.093, 2.100, 2.107, 2.114, 2.122, 2.129, 2.136, 2.143, 2.150, - & 2.157, 2.164, 2.171, 2.178, 2.185, 2.192, 2.199, 2.206, 2.213, - & 2.220, 2.227, 2.234, 2.241, 2.247, 2.254, 2.261, 2.268, 2.275, - & 2.282, 2.288, 2.295, 2.302, 2.309, 2.315, 2.322, 2.329, 2.336, - & 2.342, 2.349, 2.356, 2.362, 2.369, 2.376, 2.382, 2.389, 2.395, - & 2.402, 2.408, 2.415, 2.421, 2.428, 2.434, 2.441, 2.447, 2.454, - & 2.460, 2.467, 2.473, 2.480, 2.486, 2.492, 2.499, 2.505, 2.512, - & 2.518, 2.524, 2.531, 2.537, 2.543, 2.549, 2.556, 2.562, 2.568, - & 2.574, 2.581, 2.587, 2.593, 2.599, 2.605, 2.612, 2.618, 2.624, - & 2.630, 2.636, 2.642, 2.648, 2.654, 2.660, 2.666, 2.672, 2.679, - & 2.685, 2.691, 2.697, 2.703, 2.709, 2.714, 2.720, 2.726, 2.732, - & 2.738, 2.744, 2.750, 2.756, 2.762, 2.768, 2.774, 2.779, 2.785, - & 2.791, 2.797, 2.803, 2.808, 2.814, 2.820, 2.826, 2.832, 2.837, - & 2.843, 2.849, 2.854, 2.860, 2.921, 2.976, 3.031, 3.084, 3.137, - & 3.189, 3.240, 3.290, 3.339, 3.387, 3.435, 3.482, 3.528, 3.574, - & 3.619, 3.663, 3.706, 3.749, 3.792, 3.833, 3.874, 3.915, 3.955, - & 3.994, 4.033, 4.072, 4.109, 4.147, 4.184, 4.220, 4.256, 4.291, - & 4.327, 4.361, 4.395, 4.429, 4.462, 4.495, 4.528, 4.560, 4.592, - & 4.623, 4.654, 4.685, 4.716, 4.746, 4.775, 4.805, 4.834, 4.862, - & 4.891, 4.919, 4.947, 4.974, 5.001, 5.028, 5.055, 5.081, 5.107, - & 5.133, 5.159, 5.184, 5.209, 5.234, 5.259, 5.283, 5.307, 5.331, - & 5.355, 5.378, 5.401, 5.424, 5.447, 5.469, 5.492, 5.514, 5.536, - & 5.557, 5.579, 5.600, 5.621, 5.642, 5.663, 5.684, 5.704, 5.724, - & 5.744, 5.764, 5.784, 5.803, 5.823, 5.842, 5.861, 5.880, 5.898, - & 5.917, 5.935, 5.953, 5.972, 5.989, 6.007, 6.025, 6.042, 6.060, - & 6.077, 6.094, 6.111, 6.128, 6.144, 6.161, 6.177, 6.194, 6.210, - & 6.226, 6.242, 6.257, 6.273, 6.289, 6.304, 6.319, 6.334, 6.350, - & 6.365, 6.379, 6.394, 6.409, 6.423, 6.438, 6.452, 6.466, 6.480, - & 6.494, 6.508, 6.522, 6.536, 6.549, 6.563, 6.576, 6.589, 6.602, - & 6.616, 6.629, 6.641, 6.654, 6.667, 6.680, 6.692, 6.705, 6.717, - & 6.729, 6.742, 6.754, 6.766, 6.778, 6.790, 6.801, 6.813, 6.825, - & 6.836, 6.848, 6.859 - & /) -! -! *** NaHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC12M_198 = (/ - &-0.049,-0.101,-0.125,-0.140,-0.151,-0.159,-0.166,-0.171,-0.175, - &-0.178,-0.181,-0.183,-0.184,-0.185,-0.186,-0.186,-0.186,-0.186, - &-0.186,-0.185,-0.184,-0.183,-0.181,-0.180,-0.178,-0.176,-0.174, - &-0.172,-0.170,-0.167,-0.165,-0.162,-0.159,-0.156,-0.153,-0.150, - &-0.147,-0.144,-0.140,-0.137,-0.133,-0.130,-0.126,-0.122,-0.118, - &-0.114,-0.110,-0.106,-0.102,-0.098,-0.094,-0.090,-0.085,-0.081, - &-0.076,-0.072,-0.068,-0.063,-0.058,-0.054,-0.049,-0.044,-0.040, - &-0.035,-0.030,-0.025,-0.020,-0.015,-0.010,-0.005, 0.000, 0.005, - & 0.010, 0.015, 0.020, 0.026, 0.031, 0.036, 0.042, 0.047, 0.052, - & 0.058, 0.063, 0.069, 0.075, 0.080, 0.086, 0.092, 0.097, 0.103, - & 0.109, 0.115, 0.121, 0.127, 0.133, 0.139, 0.145, 0.151, 0.157, - & 0.163, 0.169, 0.175, 0.181, 0.188, 0.194, 0.200, 0.206, 0.213, - & 0.219, 0.225, 0.232, 0.238, 0.244, 0.251, 0.257, 0.264, 0.270, - & 0.276, 0.283, 0.289, 0.296, 0.302, 0.308, 0.315, 0.321, 0.328, - & 0.334, 0.341, 0.347, 0.353, 0.360, 0.366, 0.373, 0.379, 0.385, - & 0.392, 0.398, 0.404, 0.411, 0.417, 0.423, 0.430, 0.436, 0.442, - & 0.448, 0.455, 0.461, 0.467, 0.473, 0.480, 0.486, 0.492, 0.498, - & 0.504, 0.510, 0.517, 0.523, 0.529, 0.535, 0.541, 0.547, 0.553, - & 0.559, 0.565, 0.571, 0.577, 0.583, 0.589, 0.595, 0.601, 0.607, - & 0.613, 0.619, 0.625, 0.631, 0.637, 0.642, 0.648, 0.654, 0.660, - & 0.666, 0.671, 0.677, 0.683, 0.689, 0.694, 0.700, 0.706, 0.712, - & 0.717, 0.723, 0.729, 0.734, 0.740, 0.746, 0.751, 0.757, 0.762, - & 0.768, 0.773, 0.779, 0.785, 0.790, 0.796, 0.801, 0.807, 0.812, - & 0.817, 0.823, 0.828, 0.834, 0.839, 0.845, 0.850, 0.855, 0.861, - & 0.866, 0.871, 0.877, 0.882, 0.887, 0.893, 0.898, 0.903, 0.908, - & 0.914, 0.919, 0.924, 0.929, 0.934, 0.939, 0.945, 0.950, 0.955, - & 0.960, 0.965, 0.970, 0.975, 0.980, 0.986, 0.991, 0.996, 1.001, - & 1.006, 1.011, 1.016, 1.021, 1.026, 1.031, 1.036, 1.041, 1.046, - & 1.050, 1.055, 1.060, 1.065, 1.070, 1.075, 1.080, 1.085, 1.089, - & 1.094, 1.099, 1.104, 1.109, 1.114, 1.118, 1.123, 1.128, 1.133, - & 1.137, 1.142, 1.147, 1.151, 1.156, 1.161, 1.165, 1.170, 1.175, - & 1.179, 1.184, 1.189, 1.193, 1.198, 1.203, 1.207, 1.212, 1.216, - & 1.221, 1.225, 1.230, 1.234, 1.239, 1.243, 1.248, 1.252, 1.257, - & 1.261, 1.266, 1.270, 1.275, 1.279, 1.284, 1.288, 1.293, 1.297, - & 1.301, 1.306, 1.310, 1.314, 1.319, 1.323, 1.327, 1.332, 1.336, - & 1.340, 1.345, 1.349, 1.353, 1.358, 1.362, 1.366, 1.370, 1.375, - & 1.379, 1.383, 1.387, 1.391, 1.396, 1.400, 1.404, 1.408, 1.412, - & 1.417, 1.421, 1.425, 1.429, 1.433, 1.437, 1.441, 1.445, 1.450, - & 1.454, 1.458, 1.462, 1.466, 1.470, 1.474, 1.478, 1.482, 1.486, - & 1.490, 1.494, 1.498, 1.502, 1.506, 1.510, 1.514, 1.518, 1.522, - & 1.526, 1.530, 1.534, 1.538, 1.542, 1.546, 1.549, 1.553, 1.557, - & 1.561, 1.565, 1.569, 1.573, 1.577, 1.580, 1.584, 1.588, 1.592, - & 1.596, 1.600, 1.603, 1.607, 1.611, 1.615, 1.618, 1.622, 1.626, - & 1.630, 1.633, 1.637, 1.641, 1.645, 1.648, 1.652, 1.656, 1.660, - & 1.663, 1.667, 1.671, 1.674, 1.714, 1.749, 1.784, 1.819, 1.853, - & 1.886, 1.919, 1.951, 1.982, 2.014, 2.044, 2.074, 2.104, 2.133, - & 2.162, 2.190, 2.218, 2.246, 2.273, 2.300, 2.326, 2.352, 2.377, - & 2.403, 2.427, 2.452, 2.476, 2.500, 2.523, 2.547, 2.569, 2.592, - & 2.614, 2.636, 2.658, 2.679, 2.700, 2.721, 2.742, 2.762, 2.782, - & 2.802, 2.822, 2.841, 2.860, 2.879, 2.898, 2.916, 2.934, 2.952, - & 2.970, 2.988, 3.005, 3.022, 3.039, 3.056, 3.073, 3.089, 3.105, - & 3.121, 3.137, 3.153, 3.168, 3.184, 3.199, 3.214, 3.229, 3.244, - & 3.258, 3.273, 3.287, 3.301, 3.315, 3.329, 3.342, 3.356, 3.369, - & 3.382, 3.395, 3.408, 3.421, 3.434, 3.446, 3.459, 3.471, 3.483, - & 3.496, 3.507, 3.519, 3.531, 3.543, 3.554, 3.566, 3.577, 3.588, - & 3.599, 3.610, 3.621, 3.632, 3.642, 3.653, 3.663, 3.674, 3.684, - & 3.694, 3.704, 3.714, 3.724, 3.734, 3.743, 3.753, 3.762, 3.772, - & 3.781, 3.790, 3.800, 3.809, 3.818, 3.826, 3.835, 3.844, 3.853, - & 3.861, 3.870, 3.878, 3.887, 3.895, 3.903, 3.911, 3.919, 3.927, - & 3.935, 3.943, 3.951, 3.959, 3.966, 3.974, 3.981, 3.989, 3.996, - & 4.004, 4.011, 4.018, 4.025, 4.032, 4.039, 4.046, 4.053, 4.060, - & 4.067, 4.073, 4.080, 4.087, 4.093, 4.100, 4.106, 4.113, 4.119, - & 4.125, 4.131, 4.138 - & /) -! -! *** (NH4)3H(SO4)2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC13M_198 = (/ - &-0.082,-0.178,-0.227,-0.261,-0.288,-0.311,-0.330,-0.347,-0.363, - &-0.377,-0.389,-0.401,-0.412,-0.422,-0.431,-0.440,-0.449,-0.457, - &-0.464,-0.471,-0.478,-0.485,-0.491,-0.497,-0.503,-0.508,-0.514, - &-0.519,-0.524,-0.529,-0.533,-0.538,-0.542,-0.546,-0.550,-0.554, - &-0.557,-0.561,-0.565,-0.568,-0.571,-0.574,-0.578,-0.581,-0.583, - &-0.586,-0.589,-0.592,-0.594,-0.597,-0.599,-0.602,-0.604,-0.606, - &-0.608,-0.610,-0.612,-0.614,-0.616,-0.618,-0.620,-0.622,-0.624, - &-0.625,-0.627,-0.629,-0.630,-0.632,-0.633,-0.635,-0.636,-0.637, - &-0.639,-0.640,-0.641,-0.643,-0.644,-0.645,-0.646,-0.647,-0.648, - &-0.649,-0.650,-0.651,-0.652,-0.653,-0.654,-0.655,-0.656,-0.657, - &-0.658,-0.658,-0.659,-0.660,-0.661,-0.661,-0.662,-0.663,-0.663, - &-0.664,-0.665,-0.665,-0.666,-0.666,-0.667,-0.667,-0.668,-0.668, - &-0.669,-0.669,-0.670,-0.670,-0.671,-0.671,-0.671,-0.672,-0.672, - &-0.673,-0.673,-0.673,-0.674,-0.674,-0.674,-0.675,-0.675,-0.675, - &-0.676,-0.676,-0.676,-0.676,-0.677,-0.677,-0.677,-0.677,-0.678, - &-0.678,-0.678,-0.679,-0.679,-0.679,-0.679,-0.679,-0.680,-0.680, - &-0.680,-0.680,-0.681,-0.681,-0.681,-0.681,-0.681,-0.682,-0.682, - &-0.682,-0.682,-0.682,-0.683,-0.683,-0.683,-0.683,-0.683,-0.684, - &-0.684,-0.684,-0.684,-0.684,-0.685,-0.685,-0.685,-0.685,-0.685, - &-0.686,-0.686,-0.686,-0.686,-0.686,-0.687,-0.687,-0.687,-0.687, - &-0.687,-0.687,-0.688,-0.688,-0.688,-0.688,-0.688,-0.689,-0.689, - &-0.689,-0.689,-0.689,-0.690,-0.690,-0.690,-0.690,-0.690,-0.691, - &-0.691,-0.691,-0.691,-0.691,-0.691,-0.692,-0.692,-0.692,-0.692, - &-0.692,-0.693,-0.693,-0.693,-0.693,-0.693,-0.694,-0.694,-0.694, - &-0.694,-0.694,-0.695,-0.695,-0.695,-0.695,-0.695,-0.696,-0.696, - &-0.696,-0.696,-0.696,-0.697,-0.697,-0.697,-0.697,-0.698,-0.698, - &-0.698,-0.698,-0.698,-0.699,-0.699,-0.699,-0.699,-0.699,-0.700, - &-0.700,-0.700,-0.700,-0.701,-0.701,-0.701,-0.701,-0.702,-0.702, - &-0.702,-0.702,-0.702,-0.703,-0.703,-0.703,-0.703,-0.704,-0.704, - &-0.704,-0.704,-0.705,-0.705,-0.705,-0.705,-0.706,-0.706,-0.706, - &-0.706,-0.706,-0.707,-0.707,-0.707,-0.707,-0.708,-0.708,-0.708, - &-0.708,-0.709,-0.709,-0.709,-0.710,-0.710,-0.710,-0.710,-0.711, - &-0.711,-0.711,-0.711,-0.712,-0.712,-0.712,-0.712,-0.713,-0.713, - &-0.713,-0.713,-0.714,-0.714,-0.714,-0.715,-0.715,-0.715,-0.715, - &-0.716,-0.716,-0.716,-0.716,-0.717,-0.717,-0.717,-0.718,-0.718, - &-0.718,-0.718,-0.719,-0.719,-0.719,-0.720,-0.720,-0.720,-0.720, - &-0.721,-0.721,-0.721,-0.722,-0.722,-0.722,-0.723,-0.723,-0.723, - &-0.723,-0.724,-0.724,-0.724,-0.725,-0.725,-0.725,-0.726,-0.726, - &-0.726,-0.727,-0.727,-0.727,-0.727,-0.728,-0.728,-0.728,-0.729, - &-0.729,-0.729,-0.730,-0.730,-0.730,-0.731,-0.731,-0.731,-0.732, - &-0.732,-0.732,-0.733,-0.733,-0.733,-0.733,-0.734,-0.734,-0.734, - &-0.735,-0.735,-0.735,-0.736,-0.736,-0.736,-0.737,-0.737,-0.737, - &-0.738,-0.738,-0.738,-0.739,-0.739,-0.740,-0.740,-0.740,-0.741, - &-0.741,-0.741,-0.742,-0.742,-0.742,-0.743,-0.743,-0.743,-0.744, - &-0.744,-0.744,-0.745,-0.745,-0.749,-0.753,-0.756,-0.760,-0.764, - &-0.768,-0.772,-0.776,-0.780,-0.784,-0.788,-0.793,-0.797,-0.801, - &-0.806,-0.810,-0.815,-0.820,-0.824,-0.829,-0.834,-0.839,-0.844, - &-0.848,-0.853,-0.858,-0.863,-0.869,-0.874,-0.879,-0.884,-0.889, - &-0.895,-0.900,-0.905,-0.911,-0.916,-0.922,-0.927,-0.933,-0.938, - &-0.944,-0.950,-0.955,-0.961,-0.967,-0.972,-0.978,-0.984,-0.990, - &-0.996,-1.002,-1.008,-1.014,-1.020,-1.026,-1.032,-1.038,-1.044, - &-1.050,-1.056,-1.062,-1.068,-1.075,-1.081,-1.087,-1.093,-1.100, - &-1.106,-1.112,-1.119,-1.125,-1.131,-1.138,-1.144,-1.151,-1.157, - &-1.164,-1.170,-1.177,-1.183,-1.190,-1.196,-1.203,-1.209,-1.216, - &-1.223,-1.229,-1.236,-1.243,-1.249,-1.256,-1.263,-1.270,-1.276, - &-1.283,-1.290,-1.297,-1.304,-1.310,-1.317,-1.324,-1.331,-1.338, - &-1.345,-1.352,-1.359,-1.365,-1.372,-1.379,-1.386,-1.393,-1.400, - &-1.407,-1.414,-1.421,-1.428,-1.435,-1.442,-1.450,-1.457,-1.464, - &-1.471,-1.478,-1.485,-1.492,-1.499,-1.506,-1.514,-1.521,-1.528, - &-1.535,-1.542,-1.549,-1.557,-1.564,-1.571,-1.578,-1.586,-1.593, - &-1.600,-1.607,-1.615,-1.622,-1.629,-1.636,-1.644,-1.651,-1.658, - &-1.666,-1.673,-1.680,-1.688,-1.695,-1.702,-1.710,-1.717,-1.725, - &-1.732,-1.739,-1.747 - & /) -! -! *** CASO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC14M_198 = (/ - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000 - & /) -! -! *** CANO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC15M_198 = (/ - &-0.101,-0.216,-0.271,-0.308,-0.337,-0.360,-0.379,-0.396,-0.410, - &-0.422,-0.433,-0.443,-0.452,-0.460,-0.468,-0.475,-0.481,-0.487, - &-0.492,-0.497,-0.502,-0.506,-0.510,-0.514,-0.517,-0.520,-0.524, - &-0.526,-0.529,-0.532,-0.534,-0.537,-0.539,-0.541,-0.543,-0.545, - &-0.547,-0.549,-0.550,-0.552,-0.553,-0.555,-0.556,-0.558,-0.559, - &-0.560,-0.561,-0.563,-0.564,-0.565,-0.566,-0.567,-0.568,-0.569, - &-0.570,-0.571,-0.572,-0.572,-0.573,-0.574,-0.575,-0.576,-0.576, - &-0.577,-0.578,-0.578,-0.579,-0.580,-0.580,-0.581,-0.581,-0.582, - &-0.582,-0.583,-0.583,-0.584,-0.584,-0.585,-0.585,-0.585,-0.586, - &-0.586,-0.586,-0.586,-0.587,-0.587,-0.587,-0.587,-0.587,-0.587, - &-0.587,-0.588,-0.588,-0.588,-0.588,-0.588,-0.587,-0.587,-0.587, - &-0.587,-0.587,-0.587,-0.587,-0.587,-0.586,-0.586,-0.586,-0.586, - &-0.585,-0.585,-0.585,-0.585,-0.584,-0.584,-0.584,-0.583,-0.583, - &-0.583,-0.582,-0.582,-0.581,-0.581,-0.581,-0.580,-0.580,-0.579, - &-0.579,-0.579,-0.578,-0.578,-0.577,-0.577,-0.576,-0.576,-0.576, - &-0.575,-0.575,-0.574,-0.574,-0.573,-0.573,-0.572,-0.572,-0.571, - &-0.571,-0.570,-0.570,-0.570,-0.569,-0.569,-0.568,-0.568,-0.567, - &-0.567,-0.566,-0.566,-0.565,-0.565,-0.564,-0.564,-0.563,-0.563, - &-0.562,-0.562,-0.562,-0.561,-0.561,-0.560,-0.560,-0.559,-0.559, - &-0.558,-0.558,-0.557,-0.557,-0.556,-0.556,-0.555,-0.555,-0.554, - &-0.554,-0.554,-0.553,-0.553,-0.552,-0.552,-0.551,-0.551,-0.550, - &-0.550,-0.549,-0.549,-0.548,-0.548,-0.548,-0.547,-0.547,-0.546, - &-0.546,-0.545,-0.545,-0.544,-0.544,-0.544,-0.543,-0.543,-0.542, - &-0.542,-0.541,-0.541,-0.540,-0.540,-0.540,-0.539,-0.539,-0.538, - &-0.538,-0.537,-0.537,-0.537,-0.536,-0.536,-0.535,-0.535,-0.535, - &-0.534,-0.534,-0.533,-0.533,-0.533,-0.532,-0.532,-0.531,-0.531, - &-0.531,-0.530,-0.530,-0.529,-0.529,-0.529,-0.528,-0.528,-0.527, - &-0.527,-0.527,-0.526,-0.526,-0.525,-0.525,-0.525,-0.524,-0.524, - &-0.524,-0.523,-0.523,-0.523,-0.522,-0.522,-0.521,-0.521,-0.521, - &-0.520,-0.520,-0.520,-0.519,-0.519,-0.519,-0.518,-0.518,-0.518, - &-0.517,-0.517,-0.517,-0.516,-0.516,-0.516,-0.515,-0.515,-0.515, - &-0.514,-0.514,-0.514,-0.513,-0.513,-0.513,-0.512,-0.512,-0.512, - &-0.512,-0.511,-0.511,-0.511,-0.510,-0.510,-0.510,-0.509,-0.509, - &-0.509,-0.509,-0.508,-0.508,-0.508,-0.507,-0.507,-0.507,-0.507, - &-0.506,-0.506,-0.506,-0.506,-0.505,-0.505,-0.505,-0.504,-0.504, - &-0.504,-0.504,-0.503,-0.503,-0.503,-0.503,-0.502,-0.502,-0.502, - &-0.502,-0.501,-0.501,-0.501,-0.501,-0.501,-0.500,-0.500,-0.500, - &-0.500,-0.499,-0.499,-0.499,-0.499,-0.499,-0.498,-0.498,-0.498, - &-0.498,-0.497,-0.497,-0.497,-0.497,-0.497,-0.496,-0.496,-0.496, - &-0.496,-0.496,-0.495,-0.495,-0.495,-0.495,-0.495,-0.495,-0.494, - &-0.494,-0.494,-0.494,-0.494,-0.493,-0.493,-0.493,-0.493,-0.493, - &-0.493,-0.492,-0.492,-0.492,-0.492,-0.492,-0.492,-0.491,-0.491, - &-0.491,-0.491,-0.491,-0.491,-0.491,-0.490,-0.490,-0.490,-0.490, - &-0.490,-0.490,-0.490,-0.489,-0.489,-0.489,-0.489,-0.489,-0.489, - &-0.489,-0.489,-0.488,-0.488,-0.487,-0.486,-0.485,-0.485,-0.484, - &-0.484,-0.484,-0.484,-0.484,-0.484,-0.484,-0.485,-0.485,-0.486, - &-0.487,-0.488,-0.489,-0.490,-0.491,-0.492,-0.494,-0.495,-0.497, - &-0.499,-0.501,-0.503,-0.505,-0.507,-0.509,-0.511,-0.514,-0.516, - &-0.519,-0.522,-0.524,-0.527,-0.530,-0.533,-0.536,-0.539,-0.543, - &-0.546,-0.549,-0.553,-0.556,-0.560,-0.563,-0.567,-0.571,-0.575, - &-0.578,-0.582,-0.586,-0.590,-0.595,-0.599,-0.603,-0.607,-0.612, - &-0.616,-0.620,-0.625,-0.629,-0.634,-0.639,-0.643,-0.648,-0.653, - &-0.658,-0.663,-0.668,-0.673,-0.678,-0.683,-0.688,-0.693,-0.698, - &-0.703,-0.709,-0.714,-0.719,-0.725,-0.730,-0.736,-0.741,-0.747, - &-0.752,-0.758,-0.764,-0.769,-0.775,-0.781,-0.787,-0.792,-0.798, - &-0.804,-0.810,-0.816,-0.822,-0.828,-0.834,-0.840,-0.846,-0.853, - &-0.859,-0.865,-0.871,-0.877,-0.884,-0.890,-0.896,-0.903,-0.909, - &-0.916,-0.922,-0.929,-0.935,-0.942,-0.948,-0.955,-0.961,-0.968, - &-0.975,-0.981,-0.988,-0.995,-1.001,-1.008,-1.015,-1.022,-1.029, - &-1.036,-1.042,-1.049,-1.056,-1.063,-1.070,-1.077,-1.084,-1.091, - &-1.098,-1.105,-1.112,-1.119,-1.127,-1.134,-1.141,-1.148,-1.155, - &-1.162,-1.170,-1.177,-1.184,-1.191,-1.199,-1.206,-1.213,-1.221, - &-1.228,-1.235,-1.243 - & /) -! -! *** CACL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC16M_198 = (/ - &-0.099,-0.205,-0.252,-0.282,-0.304,-0.320,-0.332,-0.342,-0.350, - &-0.356,-0.361,-0.364,-0.367,-0.369,-0.370,-0.371,-0.371,-0.371, - &-0.370,-0.370,-0.368,-0.367,-0.365,-0.363,-0.361,-0.358,-0.356, - &-0.353,-0.350,-0.347,-0.344,-0.341,-0.337,-0.334,-0.330,-0.327, - &-0.323,-0.320,-0.316,-0.312,-0.308,-0.305,-0.301,-0.297,-0.293, - &-0.289,-0.285,-0.281,-0.277,-0.273,-0.269,-0.265,-0.262,-0.258, - &-0.254,-0.250,-0.246,-0.242,-0.238,-0.234,-0.230,-0.226,-0.222, - &-0.218,-0.213,-0.209,-0.205,-0.201,-0.197,-0.193,-0.189,-0.185, - &-0.181,-0.176,-0.172,-0.168,-0.164,-0.160,-0.155,-0.151,-0.146, - &-0.142,-0.138,-0.133,-0.129,-0.124,-0.120,-0.115,-0.110,-0.106, - &-0.101,-0.096,-0.091,-0.086,-0.082,-0.077,-0.072,-0.067,-0.062, - &-0.057,-0.052,-0.047,-0.042,-0.036,-0.031,-0.026,-0.021,-0.016, - &-0.010,-0.005, 0.000, 0.005, 0.011, 0.016, 0.021, 0.027, 0.032, - & 0.037, 0.043, 0.048, 0.054, 0.059, 0.064, 0.070, 0.075, 0.081, - & 0.086, 0.092, 0.097, 0.102, 0.108, 0.113, 0.119, 0.124, 0.129, - & 0.135, 0.140, 0.146, 0.151, 0.156, 0.162, 0.167, 0.173, 0.178, - & 0.183, 0.189, 0.194, 0.199, 0.205, 0.210, 0.215, 0.221, 0.226, - & 0.231, 0.237, 0.242, 0.247, 0.252, 0.258, 0.263, 0.268, 0.273, - & 0.279, 0.284, 0.289, 0.294, 0.299, 0.305, 0.310, 0.315, 0.320, - & 0.325, 0.331, 0.336, 0.341, 0.346, 0.351, 0.356, 0.361, 0.366, - & 0.371, 0.377, 0.382, 0.387, 0.392, 0.397, 0.402, 0.407, 0.412, - & 0.417, 0.422, 0.427, 0.432, 0.437, 0.442, 0.447, 0.452, 0.457, - & 0.462, 0.467, 0.472, 0.476, 0.481, 0.486, 0.491, 0.496, 0.501, - & 0.506, 0.511, 0.515, 0.520, 0.525, 0.530, 0.535, 0.539, 0.544, - & 0.549, 0.554, 0.559, 0.563, 0.568, 0.573, 0.578, 0.582, 0.587, - & 0.592, 0.596, 0.601, 0.606, 0.610, 0.615, 0.620, 0.624, 0.629, - & 0.634, 0.638, 0.643, 0.647, 0.652, 0.657, 0.661, 0.666, 0.670, - & 0.675, 0.679, 0.684, 0.688, 0.693, 0.697, 0.702, 0.706, 0.711, - & 0.715, 0.720, 0.724, 0.729, 0.733, 0.737, 0.742, 0.746, 0.751, - & 0.755, 0.759, 0.764, 0.768, 0.773, 0.777, 0.781, 0.786, 0.790, - & 0.794, 0.798, 0.803, 0.807, 0.811, 0.816, 0.820, 0.824, 0.828, - & 0.833, 0.837, 0.841, 0.845, 0.849, 0.854, 0.858, 0.862, 0.866, - & 0.870, 0.874, 0.879, 0.883, 0.887, 0.891, 0.895, 0.899, 0.903, - & 0.907, 0.912, 0.916, 0.920, 0.924, 0.928, 0.932, 0.936, 0.940, - & 0.944, 0.948, 0.952, 0.956, 0.960, 0.964, 0.968, 0.972, 0.976, - & 0.980, 0.984, 0.988, 0.992, 0.995, 0.999, 1.003, 1.007, 1.011, - & 1.015, 1.019, 1.023, 1.026, 1.030, 1.034, 1.038, 1.042, 1.046, - & 1.049, 1.053, 1.057, 1.061, 1.065, 1.068, 1.072, 1.076, 1.080, - & 1.083, 1.087, 1.091, 1.095, 1.098, 1.102, 1.106, 1.109, 1.113, - & 1.117, 1.120, 1.124, 1.128, 1.131, 1.135, 1.139, 1.142, 1.146, - & 1.150, 1.153, 1.157, 1.160, 1.164, 1.168, 1.171, 1.175, 1.178, - & 1.182, 1.185, 1.189, 1.192, 1.196, 1.200, 1.203, 1.207, 1.210, - & 1.214, 1.217, 1.221, 1.224, 1.227, 1.231, 1.234, 1.238, 1.241, - & 1.245, 1.248, 1.252, 1.255, 1.258, 1.262, 1.265, 1.269, 1.272, - & 1.275, 1.279, 1.282, 1.285, 1.321, 1.354, 1.386, 1.417, 1.448, - & 1.478, 1.508, 1.537, 1.565, 1.593, 1.621, 1.648, 1.674, 1.700, - & 1.726, 1.751, 1.776, 1.800, 1.824, 1.848, 1.871, 1.893, 1.916, - & 1.938, 1.959, 1.980, 2.001, 2.022, 2.042, 2.061, 2.081, 2.100, - & 2.119, 2.137, 2.156, 2.173, 2.191, 2.208, 2.225, 2.242, 2.259, - & 2.275, 2.291, 2.307, 2.322, 2.337, 2.352, 2.367, 2.382, 2.396, - & 2.410, 2.424, 2.438, 2.451, 2.464, 2.477, 2.490, 2.502, 2.515, - & 2.527, 2.539, 2.551, 2.562, 2.574, 2.585, 2.596, 2.607, 2.618, - & 2.628, 2.639, 2.649, 2.659, 2.669, 2.679, 2.688, 2.698, 2.707, - & 2.716, 2.725, 2.734, 2.743, 2.751, 2.760, 2.768, 2.776, 2.784, - & 2.792, 2.800, 2.808, 2.815, 2.823, 2.830, 2.837, 2.844, 2.851, - & 2.858, 2.865, 2.871, 2.878, 2.884, 2.890, 2.896, 2.902, 2.908, - & 2.914, 2.920, 2.925, 2.931, 2.936, 2.942, 2.947, 2.952, 2.957, - & 2.962, 2.967, 2.972, 2.976, 2.981, 2.985, 2.990, 2.994, 2.998, - & 3.003, 3.007, 3.011, 3.014, 3.018, 3.022, 3.026, 3.029, 3.033, - & 3.036, 3.040, 3.043, 3.046, 3.049, 3.052, 3.055, 3.058, 3.061, - & 3.064, 3.066, 3.069, 3.072, 3.074, 3.077, 3.079, 3.081, 3.083, - & 3.086, 3.088, 3.090, 3.092, 3.094, 3.096, 3.097, 3.099, 3.101, - & 3.102, 3.104, 3.105 - & /) -! -! *** K2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC17M_198 = (/ - &-0.103,-0.226,-0.289,-0.334,-0.369,-0.399,-0.425,-0.448,-0.468, - &-0.487,-0.505,-0.521,-0.536,-0.550,-0.563,-0.576,-0.588,-0.599, - &-0.610,-0.621,-0.631,-0.641,-0.650,-0.659,-0.668,-0.677,-0.685, - &-0.693,-0.701,-0.709,-0.717,-0.724,-0.731,-0.738,-0.745,-0.752, - &-0.758,-0.765,-0.771,-0.777,-0.784,-0.790,-0.796,-0.801,-0.807, - &-0.813,-0.818,-0.824,-0.829,-0.835,-0.840,-0.845,-0.850,-0.855, - &-0.860,-0.865,-0.870,-0.875,-0.880,-0.884,-0.889,-0.894,-0.898, - &-0.903,-0.907,-0.912,-0.916,-0.920,-0.925,-0.929,-0.933,-0.937, - &-0.942,-0.946,-0.950,-0.954,-0.958,-0.962,-0.966,-0.970,-0.974, - &-0.978,-0.982,-0.985,-0.989,-0.993,-0.997,-1.001,-1.004,-1.008, - &-1.012,-1.016,-1.019,-1.023,-1.027,-1.030,-1.034,-1.037,-1.041, - &-1.045,-1.048,-1.052,-1.055,-1.059,-1.062,-1.066,-1.069,-1.072, - &-1.076,-1.079,-1.083,-1.086,-1.089,-1.093,-1.096,-1.099,-1.103, - &-1.106,-1.109,-1.113,-1.116,-1.119,-1.122,-1.126,-1.129,-1.132, - &-1.135,-1.138,-1.142,-1.145,-1.148,-1.151,-1.154,-1.157,-1.160, - &-1.164,-1.167,-1.170,-1.173,-1.176,-1.179,-1.182,-1.185,-1.188, - &-1.191,-1.194,-1.197,-1.200,-1.203,-1.206,-1.209,-1.212,-1.215, - &-1.218,-1.221,-1.223,-1.226,-1.229,-1.232,-1.235,-1.238,-1.241, - &-1.244,-1.246,-1.249,-1.252,-1.255,-1.258,-1.261,-1.263,-1.266, - &-1.269,-1.272,-1.274,-1.277,-1.280,-1.283,-1.285,-1.288,-1.291, - &-1.294,-1.296,-1.299,-1.302,-1.304,-1.307,-1.310,-1.313,-1.315, - &-1.318,-1.321,-1.323,-1.326,-1.328,-1.331,-1.334,-1.336,-1.339, - &-1.342,-1.344,-1.347,-1.349,-1.352,-1.355,-1.357,-1.360,-1.362, - &-1.365,-1.367,-1.370,-1.373,-1.375,-1.378,-1.380,-1.383,-1.385, - &-1.388,-1.390,-1.393,-1.395,-1.398,-1.400,-1.403,-1.405,-1.408, - &-1.410,-1.413,-1.415,-1.418,-1.420,-1.423,-1.425,-1.427,-1.430, - &-1.432,-1.435,-1.437,-1.440,-1.442,-1.445,-1.447,-1.449,-1.452, - &-1.454,-1.457,-1.459,-1.461,-1.464,-1.466,-1.469,-1.471,-1.473, - &-1.476,-1.478,-1.480,-1.483,-1.485,-1.487,-1.490,-1.492,-1.495, - &-1.497,-1.499,-1.502,-1.504,-1.506,-1.509,-1.511,-1.513,-1.515, - &-1.518,-1.520,-1.522,-1.525,-1.527,-1.529,-1.532,-1.534,-1.536, - &-1.538,-1.541,-1.543,-1.545,-1.548,-1.550,-1.552,-1.554,-1.557, - &-1.559,-1.561,-1.563,-1.566,-1.568,-1.570,-1.572,-1.575,-1.577, - &-1.579,-1.581,-1.583,-1.586,-1.588,-1.590,-1.592,-1.595,-1.597, - &-1.599,-1.601,-1.603,-1.606,-1.608,-1.610,-1.612,-1.614,-1.616, - &-1.619,-1.621,-1.623,-1.625,-1.627,-1.630,-1.632,-1.634,-1.636, - &-1.638,-1.640,-1.642,-1.645,-1.647,-1.649,-1.651,-1.653,-1.655, - &-1.658,-1.660,-1.662,-1.664,-1.666,-1.668,-1.670,-1.672,-1.675, - &-1.677,-1.679,-1.681,-1.683,-1.685,-1.687,-1.689,-1.691,-1.694, - &-1.696,-1.698,-1.700,-1.702,-1.704,-1.706,-1.708,-1.710,-1.712, - &-1.714,-1.717,-1.719,-1.721,-1.723,-1.725,-1.727,-1.729,-1.731, - &-1.733,-1.735,-1.737,-1.739,-1.741,-1.743,-1.745,-1.748,-1.750, - &-1.752,-1.754,-1.756,-1.758,-1.760,-1.762,-1.764,-1.766,-1.768, - &-1.770,-1.772,-1.774,-1.776,-1.778,-1.780,-1.782,-1.784,-1.786, - &-1.788,-1.790,-1.792,-1.794,-1.816,-1.836,-1.855,-1.875,-1.894, - &-1.914,-1.933,-1.952,-1.971,-1.989,-2.008,-2.027,-2.045,-2.063, - &-2.082,-2.100,-2.118,-2.136,-2.154,-2.171,-2.189,-2.207,-2.224, - &-2.242,-2.259,-2.276,-2.293,-2.311,-2.328,-2.345,-2.362,-2.379, - &-2.395,-2.412,-2.429,-2.446,-2.462,-2.479,-2.495,-2.512,-2.528, - &-2.544,-2.561,-2.577,-2.593,-2.609,-2.625,-2.642,-2.658,-2.674, - &-2.689,-2.705,-2.721,-2.737,-2.753,-2.768,-2.784,-2.800,-2.815, - &-2.831,-2.847,-2.862,-2.878,-2.893,-2.908,-2.924,-2.939,-2.954, - &-2.970,-2.985,-3.000,-3.015,-3.031,-3.046,-3.061,-3.076,-3.091, - &-3.106,-3.121,-3.136,-3.151,-3.166,-3.181,-3.196,-3.210,-3.225, - &-3.240,-3.255,-3.270,-3.284,-3.299,-3.314,-3.328,-3.343,-3.358, - &-3.372,-3.387,-3.401,-3.416,-3.430,-3.445,-3.459,-3.474,-3.488, - &-3.503,-3.517,-3.531,-3.546,-3.560,-3.574,-3.589,-3.603,-3.617, - &-3.631,-3.646,-3.660,-3.674,-3.688,-3.702,-3.717,-3.731,-3.745, - &-3.759,-3.773,-3.787,-3.801,-3.815,-3.829,-3.843,-3.857,-3.871, - &-3.885,-3.899,-3.913,-3.927,-3.941,-3.955,-3.969,-3.982,-3.996, - &-4.010,-4.024,-4.038,-4.051,-4.065,-4.079,-4.093,-4.107,-4.120, - &-4.134,-4.148,-4.161,-4.175,-4.189,-4.202,-4.216,-4.230,-4.243, - &-4.257,-4.271,-4.284 - & /) -! -! *** KHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC18M_198 = (/ - &-0.050,-0.106,-0.133,-0.152,-0.166,-0.177,-0.187,-0.195,-0.202, - &-0.208,-0.214,-0.218,-0.223,-0.227,-0.230,-0.233,-0.236,-0.238, - &-0.240,-0.242,-0.244,-0.246,-0.247,-0.248,-0.249,-0.250,-0.250, - &-0.250,-0.251,-0.251,-0.251,-0.251,-0.250,-0.250,-0.249,-0.249, - &-0.248,-0.247,-0.246,-0.245,-0.244,-0.242,-0.241,-0.240,-0.238, - &-0.236,-0.235,-0.233,-0.231,-0.229,-0.227,-0.225,-0.223,-0.221, - &-0.219,-0.216,-0.214,-0.212,-0.209,-0.207,-0.204,-0.202,-0.199, - &-0.196,-0.193,-0.191,-0.188,-0.185,-0.182,-0.179,-0.176,-0.173, - &-0.170,-0.167,-0.164,-0.161,-0.158,-0.154,-0.151,-0.148,-0.144, - &-0.141,-0.138,-0.134,-0.131,-0.127,-0.124,-0.120,-0.116,-0.113, - &-0.109,-0.105,-0.102,-0.098,-0.094,-0.090,-0.086,-0.082,-0.078, - &-0.074,-0.071,-0.067,-0.063,-0.059,-0.054,-0.050,-0.046,-0.042, - &-0.038,-0.034,-0.030,-0.026,-0.022,-0.017,-0.013,-0.009,-0.005, - &-0.001, 0.004, 0.008, 0.012, 0.016, 0.020, 0.025, 0.029, 0.033, - & 0.037, 0.041, 0.046, 0.050, 0.054, 0.058, 0.062, 0.067, 0.071, - & 0.075, 0.079, 0.083, 0.087, 0.091, 0.096, 0.100, 0.104, 0.108, - & 0.112, 0.116, 0.120, 0.124, 0.128, 0.132, 0.136, 0.141, 0.145, - & 0.149, 0.153, 0.157, 0.161, 0.165, 0.169, 0.173, 0.176, 0.180, - & 0.184, 0.188, 0.192, 0.196, 0.200, 0.204, 0.208, 0.212, 0.215, - & 0.219, 0.223, 0.227, 0.231, 0.235, 0.238, 0.242, 0.246, 0.250, - & 0.254, 0.257, 0.261, 0.265, 0.268, 0.272, 0.276, 0.280, 0.283, - & 0.287, 0.291, 0.294, 0.298, 0.302, 0.305, 0.309, 0.312, 0.316, - & 0.320, 0.323, 0.327, 0.330, 0.334, 0.337, 0.341, 0.344, 0.348, - & 0.351, 0.355, 0.358, 0.362, 0.365, 0.369, 0.372, 0.376, 0.379, - & 0.382, 0.386, 0.389, 0.393, 0.396, 0.399, 0.403, 0.406, 0.409, - & 0.413, 0.416, 0.419, 0.423, 0.426, 0.429, 0.433, 0.436, 0.439, - & 0.442, 0.446, 0.449, 0.452, 0.455, 0.459, 0.462, 0.465, 0.468, - & 0.471, 0.475, 0.478, 0.481, 0.484, 0.487, 0.490, 0.493, 0.497, - & 0.500, 0.503, 0.506, 0.509, 0.512, 0.515, 0.518, 0.521, 0.524, - & 0.527, 0.530, 0.533, 0.536, 0.539, 0.542, 0.545, 0.548, 0.551, - & 0.554, 0.557, 0.560, 0.563, 0.566, 0.569, 0.572, 0.575, 0.578, - & 0.581, 0.584, 0.587, 0.590, 0.592, 0.595, 0.598, 0.601, 0.604, - & 0.607, 0.610, 0.612, 0.615, 0.618, 0.621, 0.624, 0.627, 0.629, - & 0.632, 0.635, 0.638, 0.640, 0.643, 0.646, 0.649, 0.651, 0.654, - & 0.657, 0.660, 0.662, 0.665, 0.668, 0.671, 0.673, 0.676, 0.679, - & 0.681, 0.684, 0.687, 0.689, 0.692, 0.695, 0.697, 0.700, 0.702, - & 0.705, 0.708, 0.710, 0.713, 0.716, 0.718, 0.721, 0.723, 0.726, - & 0.728, 0.731, 0.734, 0.736, 0.739, 0.741, 0.744, 0.746, 0.749, - & 0.751, 0.754, 0.756, 0.759, 0.761, 0.764, 0.766, 0.769, 0.771, - & 0.774, 0.776, 0.779, 0.781, 0.784, 0.786, 0.788, 0.791, 0.793, - & 0.796, 0.798, 0.801, 0.803, 0.805, 0.808, 0.810, 0.813, 0.815, - & 0.817, 0.820, 0.822, 0.824, 0.827, 0.829, 0.832, 0.834, 0.836, - & 0.839, 0.841, 0.843, 0.846, 0.848, 0.850, 0.852, 0.855, 0.857, - & 0.859, 0.862, 0.864, 0.866, 0.868, 0.871, 0.873, 0.875, 0.878, - & 0.880, 0.882, 0.884, 0.887, 0.910, 0.932, 0.953, 0.974, 0.995, - & 1.015, 1.034, 1.054, 1.072, 1.091, 1.109, 1.127, 1.145, 1.162, - & 1.179, 1.196, 1.213, 1.229, 1.245, 1.260, 1.276, 1.291, 1.306, - & 1.320, 1.335, 1.349, 1.363, 1.377, 1.390, 1.404, 1.417, 1.430, - & 1.442, 1.455, 1.467, 1.479, 1.491, 1.503, 1.515, 1.526, 1.538, - & 1.549, 1.560, 1.570, 1.581, 1.592, 1.602, 1.612, 1.622, 1.632, - & 1.642, 1.652, 1.661, 1.671, 1.680, 1.689, 1.698, 1.707, 1.716, - & 1.724, 1.733, 1.741, 1.750, 1.758, 1.766, 1.774, 1.782, 1.789, - & 1.797, 1.805, 1.812, 1.820, 1.827, 1.834, 1.841, 1.848, 1.855, - & 1.862, 1.868, 1.875, 1.882, 1.888, 1.894, 1.901, 1.907, 1.913, - & 1.919, 1.925, 1.931, 1.937, 1.943, 1.948, 1.954, 1.959, 1.965, - & 1.970, 1.976, 1.981, 1.986, 1.991, 1.996, 2.001, 2.006, 2.011, - & 2.016, 2.020, 2.025, 2.030, 2.034, 2.039, 2.043, 2.048, 2.052, - & 2.056, 2.060, 2.064, 2.069, 2.073, 2.077, 2.080, 2.084, 2.088, - & 2.092, 2.096, 2.099, 2.103, 2.107, 2.110, 2.114, 2.117, 2.120, - & 2.124, 2.127, 2.130, 2.133, 2.137, 2.140, 2.143, 2.146, 2.149, - & 2.152, 2.155, 2.158, 2.160, 2.163, 2.166, 2.169, 2.171, 2.174, - & 2.176, 2.179, 2.181, 2.184, 2.186, 2.189, 2.191, 2.193, 2.196, - & 2.198, 2.200, 2.202 - & /) -! -! *** KNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC19M_198 = (/ - &-0.053,-0.124,-0.164,-0.194,-0.219,-0.242,-0.262,-0.281,-0.298, - &-0.314,-0.330,-0.345,-0.359,-0.372,-0.385,-0.398,-0.411,-0.423, - &-0.434,-0.446,-0.457,-0.468,-0.478,-0.489,-0.499,-0.509,-0.519, - &-0.528,-0.538,-0.547,-0.556,-0.565,-0.574,-0.583,-0.592,-0.600, - &-0.608,-0.617,-0.625,-0.633,-0.641,-0.648,-0.656,-0.664,-0.671, - &-0.678,-0.686,-0.693,-0.700,-0.707,-0.714,-0.721,-0.727,-0.734, - &-0.741,-0.747,-0.754,-0.760,-0.766,-0.773,-0.779,-0.785,-0.791, - &-0.797,-0.803,-0.809,-0.815,-0.821,-0.827,-0.832,-0.838,-0.844, - &-0.849,-0.855,-0.861,-0.866,-0.872,-0.877,-0.883,-0.888,-0.894, - &-0.899,-0.904,-0.910,-0.915,-0.920,-0.926,-0.931,-0.936,-0.942, - &-0.947,-0.952,-0.957,-0.963,-0.968,-0.973,-0.978,-0.983,-0.988, - &-0.994,-0.999,-1.004,-1.009,-1.014,-1.019,-1.024,-1.029,-1.034, - &-1.039,-1.044,-1.049,-1.054,-1.059,-1.064,-1.069,-1.074,-1.079, - &-1.083,-1.088,-1.093,-1.098,-1.103,-1.107,-1.112,-1.117,-1.122, - &-1.126,-1.131,-1.136,-1.140,-1.145,-1.149,-1.154,-1.158,-1.163, - &-1.168,-1.172,-1.176,-1.181,-1.185,-1.190,-1.194,-1.199,-1.203, - &-1.207,-1.212,-1.216,-1.220,-1.224,-1.229,-1.233,-1.237,-1.241, - &-1.245,-1.250,-1.254,-1.258,-1.262,-1.266,-1.270,-1.274,-1.278, - &-1.282,-1.286,-1.290,-1.294,-1.298,-1.302,-1.306,-1.310,-1.314, - &-1.318,-1.321,-1.325,-1.329,-1.333,-1.337,-1.341,-1.344,-1.348, - &-1.352,-1.355,-1.359,-1.363,-1.367,-1.370,-1.374,-1.378,-1.381, - &-1.385,-1.388,-1.392,-1.395,-1.399,-1.403,-1.406,-1.410,-1.413, - &-1.417,-1.420,-1.423,-1.427,-1.430,-1.434,-1.437,-1.441,-1.444, - &-1.447,-1.451,-1.454,-1.457,-1.461,-1.464,-1.467,-1.470,-1.474, - &-1.477,-1.480,-1.483,-1.487,-1.490,-1.493,-1.496,-1.499,-1.503, - &-1.506,-1.509,-1.512,-1.515,-1.518,-1.521,-1.524,-1.528,-1.531, - &-1.534,-1.537,-1.540,-1.543,-1.546,-1.549,-1.552,-1.555,-1.558, - &-1.561,-1.564,-1.566,-1.569,-1.572,-1.575,-1.578,-1.581,-1.584, - &-1.587,-1.590,-1.592,-1.595,-1.598,-1.601,-1.604,-1.607,-1.609, - &-1.612,-1.615,-1.618,-1.620,-1.623,-1.626,-1.629,-1.631,-1.634, - &-1.637,-1.639,-1.642,-1.645,-1.647,-1.650,-1.653,-1.655,-1.658, - &-1.661,-1.663,-1.666,-1.668,-1.671,-1.674,-1.676,-1.679,-1.681, - &-1.684,-1.686,-1.689,-1.691,-1.694,-1.696,-1.699,-1.701,-1.704, - &-1.706,-1.709,-1.711,-1.714,-1.716,-1.719,-1.721,-1.724,-1.726, - &-1.728,-1.731,-1.733,-1.736,-1.738,-1.740,-1.743,-1.745,-1.747, - &-1.750,-1.752,-1.754,-1.757,-1.759,-1.761,-1.764,-1.766,-1.768, - &-1.771,-1.773,-1.775,-1.777,-1.780,-1.782,-1.784,-1.786,-1.789, - &-1.791,-1.793,-1.795,-1.797,-1.800,-1.802,-1.804,-1.806,-1.808, - &-1.811,-1.813,-1.815,-1.817,-1.819,-1.821,-1.823,-1.826,-1.828, - &-1.830,-1.832,-1.834,-1.836,-1.838,-1.840,-1.842,-1.844,-1.847, - &-1.849,-1.851,-1.853,-1.855,-1.857,-1.859,-1.861,-1.863,-1.865, - &-1.867,-1.869,-1.871,-1.873,-1.875,-1.877,-1.879,-1.881,-1.883, - &-1.885,-1.887,-1.889,-1.891,-1.893,-1.895,-1.897,-1.898,-1.900, - &-1.902,-1.904,-1.906,-1.908,-1.910,-1.912,-1.914,-1.916,-1.917, - &-1.919,-1.921,-1.923,-1.925,-1.945,-1.963,-1.980,-1.997,-2.014, - &-2.030,-2.046,-2.062,-2.077,-2.092,-2.107,-2.122,-2.136,-2.150, - &-2.163,-2.177,-2.190,-2.203,-2.216,-2.228,-2.241,-2.253,-2.265, - &-2.277,-2.289,-2.300,-2.311,-2.323,-2.334,-2.345,-2.356,-2.366, - &-2.377,-2.387,-2.398,-2.408,-2.418,-2.428,-2.438,-2.448,-2.457, - &-2.467,-2.477,-2.486,-2.496,-2.505,-2.514,-2.523,-2.532,-2.541, - &-2.550,-2.559,-2.568,-2.577,-2.586,-2.594,-2.603,-2.611,-2.620, - &-2.628,-2.637,-2.645,-2.653,-2.662,-2.670,-2.678,-2.686,-2.694, - &-2.702,-2.710,-2.718,-2.726,-2.734,-2.742,-2.750,-2.758,-2.765, - &-2.773,-2.781,-2.789,-2.796,-2.804,-2.811,-2.819,-2.827,-2.834, - &-2.842,-2.849,-2.857,-2.864,-2.871,-2.879,-2.886,-2.893,-2.901, - &-2.908,-2.915,-2.923,-2.930,-2.937,-2.944,-2.951,-2.959,-2.966, - &-2.973,-2.980,-2.987,-2.994,-3.001,-3.008,-3.015,-3.022,-3.029, - &-3.036,-3.043,-3.050,-3.057,-3.064,-3.071,-3.078,-3.085,-3.092, - &-3.099,-3.106,-3.113,-3.119,-3.126,-3.133,-3.140,-3.147,-3.154, - &-3.160,-3.167,-3.174,-3.181,-3.187,-3.194,-3.201,-3.208,-3.214, - &-3.221,-3.228,-3.234,-3.241,-3.248,-3.254,-3.261,-3.268,-3.274, - &-3.281,-3.287,-3.294,-3.301,-3.307,-3.314,-3.320,-3.327,-3.334, - &-3.340,-3.347,-3.353 - & /) -! -! *** KCL -! - Real(kind=fp), Parameter, Dimension(561) :: BNC20M_198 = (/ - &-0.051,-0.108,-0.135,-0.154,-0.169,-0.180,-0.190,-0.198,-0.205, - &-0.211,-0.217,-0.222,-0.226,-0.231,-0.234,-0.238,-0.241,-0.244, - &-0.246,-0.249,-0.251,-0.253,-0.255,-0.257,-0.259,-0.261,-0.262, - &-0.264,-0.265,-0.267,-0.268,-0.269,-0.270,-0.271,-0.272,-0.273, - &-0.274,-0.275,-0.276,-0.277,-0.278,-0.278,-0.279,-0.280,-0.280, - &-0.281,-0.282,-0.282,-0.283,-0.283,-0.284,-0.285,-0.285,-0.286, - &-0.286,-0.287,-0.287,-0.287,-0.288,-0.288,-0.289,-0.289,-0.289, - &-0.290,-0.290,-0.291,-0.291,-0.291,-0.292,-0.292,-0.292,-0.292, - &-0.293,-0.293,-0.293,-0.293,-0.294,-0.294,-0.294,-0.294,-0.294, - &-0.295,-0.295,-0.295,-0.295,-0.295,-0.295,-0.295,-0.295,-0.295, - &-0.295,-0.296,-0.296,-0.296,-0.296,-0.296,-0.296,-0.296,-0.296, - &-0.295,-0.295,-0.295,-0.295,-0.295,-0.295,-0.295,-0.295,-0.295, - &-0.295,-0.295,-0.294,-0.294,-0.294,-0.294,-0.294,-0.294,-0.294, - &-0.293,-0.293,-0.293,-0.293,-0.293,-0.293,-0.292,-0.292,-0.292, - &-0.292,-0.292,-0.291,-0.291,-0.291,-0.291,-0.291,-0.290,-0.290, - &-0.290,-0.290,-0.290,-0.289,-0.289,-0.289,-0.289,-0.289,-0.288, - &-0.288,-0.288,-0.288,-0.287,-0.287,-0.287,-0.287,-0.287,-0.286, - &-0.286,-0.286,-0.286,-0.285,-0.285,-0.285,-0.285,-0.285,-0.284, - &-0.284,-0.284,-0.284,-0.283,-0.283,-0.283,-0.283,-0.283,-0.282, - &-0.282,-0.282,-0.282,-0.281,-0.281,-0.281,-0.281,-0.281,-0.280, - &-0.280,-0.280,-0.280,-0.279,-0.279,-0.279,-0.279,-0.279,-0.278, - &-0.278,-0.278,-0.278,-0.278,-0.277,-0.277,-0.277,-0.277,-0.276, - &-0.276,-0.276,-0.276,-0.276,-0.275,-0.275,-0.275,-0.275,-0.275, - &-0.274,-0.274,-0.274,-0.274,-0.274,-0.273,-0.273,-0.273,-0.273, - &-0.273,-0.272,-0.272,-0.272,-0.272,-0.272,-0.271,-0.271,-0.271, - &-0.271,-0.271,-0.270,-0.270,-0.270,-0.270,-0.270,-0.270,-0.269, - &-0.269,-0.269,-0.269,-0.269,-0.268,-0.268,-0.268,-0.268,-0.268, - &-0.268,-0.267,-0.267,-0.267,-0.267,-0.267,-0.266,-0.266,-0.266, - &-0.266,-0.266,-0.266,-0.265,-0.265,-0.265,-0.265,-0.265,-0.265, - &-0.264,-0.264,-0.264,-0.264,-0.264,-0.264,-0.263,-0.263,-0.263, - &-0.263,-0.263,-0.263,-0.263,-0.262,-0.262,-0.262,-0.262,-0.262, - &-0.262,-0.261,-0.261,-0.261,-0.261,-0.261,-0.261,-0.261,-0.260, - &-0.260,-0.260,-0.260,-0.260,-0.260,-0.260,-0.260,-0.259,-0.259, - &-0.259,-0.259,-0.259,-0.259,-0.259,-0.258,-0.258,-0.258,-0.258, - &-0.258,-0.258,-0.258,-0.258,-0.257,-0.257,-0.257,-0.257,-0.257, - &-0.257,-0.257,-0.257,-0.257,-0.256,-0.256,-0.256,-0.256,-0.256, - &-0.256,-0.256,-0.256,-0.256,-0.255,-0.255,-0.255,-0.255,-0.255, - &-0.255,-0.255,-0.255,-0.255,-0.255,-0.254,-0.254,-0.254,-0.254, - &-0.254,-0.254,-0.254,-0.254,-0.254,-0.254,-0.253,-0.253,-0.253, - &-0.253,-0.253,-0.253,-0.253,-0.253,-0.253,-0.253,-0.253,-0.253, - &-0.252,-0.252,-0.252,-0.252,-0.252,-0.252,-0.252,-0.252,-0.252, - &-0.252,-0.252,-0.252,-0.252,-0.252,-0.251,-0.251,-0.251,-0.251, - &-0.251,-0.251,-0.251,-0.251,-0.251,-0.251,-0.251,-0.251,-0.251, - &-0.251,-0.251,-0.251,-0.250,-0.250,-0.250,-0.250,-0.250,-0.250, - &-0.250,-0.250,-0.250,-0.250,-0.250,-0.249,-0.249,-0.249,-0.248, - &-0.248,-0.248,-0.248,-0.249,-0.249,-0.249,-0.249,-0.250,-0.250, - &-0.251,-0.251,-0.252,-0.252,-0.253,-0.254,-0.255,-0.255,-0.256, - &-0.257,-0.258,-0.259,-0.261,-0.262,-0.263,-0.264,-0.265,-0.267, - &-0.268,-0.269,-0.271,-0.272,-0.274,-0.276,-0.277,-0.279,-0.280, - &-0.282,-0.284,-0.286,-0.287,-0.289,-0.291,-0.293,-0.295,-0.297, - &-0.299,-0.301,-0.303,-0.305,-0.307,-0.309,-0.312,-0.314,-0.316, - &-0.318,-0.321,-0.323,-0.325,-0.328,-0.330,-0.332,-0.335,-0.337, - &-0.340,-0.342,-0.345,-0.347,-0.350,-0.352,-0.355,-0.358,-0.360, - &-0.363,-0.366,-0.368,-0.371,-0.374,-0.377,-0.379,-0.382,-0.385, - &-0.388,-0.391,-0.394,-0.396,-0.399,-0.402,-0.405,-0.408,-0.411, - &-0.414,-0.417,-0.420,-0.423,-0.426,-0.429,-0.432,-0.436,-0.439, - &-0.442,-0.445,-0.448,-0.451,-0.454,-0.458,-0.461,-0.464,-0.467, - &-0.471,-0.474,-0.477,-0.480,-0.484,-0.487,-0.490,-0.494,-0.497, - &-0.500,-0.504,-0.507,-0.511,-0.514,-0.517,-0.521,-0.524,-0.528, - &-0.531,-0.535,-0.538,-0.542,-0.545,-0.549,-0.552,-0.556,-0.559, - &-0.563,-0.566,-0.570,-0.574,-0.577,-0.581,-0.584,-0.588,-0.592, - &-0.595,-0.599,-0.603,-0.606,-0.610,-0.614,-0.617,-0.621,-0.625, - &-0.628,-0.632,-0.636 - & /) -! -! *** MGSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC21M_198 = (/ - &-0.205,-0.445,-0.564,-0.649,-0.715,-0.770,-0.817,-0.858,-0.895, - &-0.928,-0.958,-0.986,-1.012,-1.036,-1.058,-1.079,-1.099,-1.118, - &-1.136,-1.153,-1.170,-1.185,-1.200,-1.215,-1.229,-1.242,-1.255, - &-1.268,-1.280,-1.292,-1.303,-1.315,-1.325,-1.336,-1.346,-1.357, - &-1.366,-1.376,-1.386,-1.395,-1.404,-1.413,-1.421,-1.430,-1.438, - &-1.447,-1.455,-1.463,-1.471,-1.478,-1.486,-1.494,-1.501,-1.508, - &-1.515,-1.523,-1.530,-1.536,-1.543,-1.550,-1.557,-1.563,-1.570, - &-1.576,-1.583,-1.589,-1.595,-1.601,-1.607,-1.613,-1.619,-1.625, - &-1.631,-1.637,-1.643,-1.648,-1.654,-1.659,-1.665,-1.670,-1.676, - &-1.681,-1.687,-1.692,-1.697,-1.702,-1.707,-1.713,-1.718,-1.723, - &-1.728,-1.733,-1.738,-1.742,-1.747,-1.752,-1.757,-1.762,-1.766, - &-1.771,-1.776,-1.780,-1.785,-1.789,-1.794,-1.798,-1.803,-1.807, - &-1.812,-1.816,-1.820,-1.825,-1.829,-1.833,-1.838,-1.842,-1.846, - &-1.850,-1.854,-1.858,-1.863,-1.867,-1.871,-1.875,-1.879,-1.883, - &-1.887,-1.891,-1.895,-1.899,-1.903,-1.907,-1.911,-1.915,-1.919, - &-1.922,-1.926,-1.930,-1.934,-1.938,-1.942,-1.945,-1.949,-1.953, - &-1.957,-1.960,-1.964,-1.968,-1.972,-1.975,-1.979,-1.983,-1.986, - &-1.990,-1.994,-1.997,-2.001,-2.004,-2.008,-2.012,-2.015,-2.019, - &-2.022,-2.026,-2.029,-2.033,-2.036,-2.040,-2.043,-2.047,-2.050, - &-2.054,-2.057,-2.061,-2.064,-2.068,-2.071,-2.074,-2.078,-2.081, - &-2.085,-2.088,-2.091,-2.095,-2.098,-2.102,-2.105,-2.108,-2.112, - &-2.115,-2.118,-2.122,-2.125,-2.128,-2.132,-2.135,-2.138,-2.141, - &-2.145,-2.148,-2.151,-2.154,-2.158,-2.161,-2.164,-2.167,-2.171, - &-2.174,-2.177,-2.180,-2.184,-2.187,-2.190,-2.193,-2.196,-2.200, - &-2.203,-2.206,-2.209,-2.212,-2.215,-2.219,-2.222,-2.225,-2.228, - &-2.231,-2.234,-2.237,-2.241,-2.244,-2.247,-2.250,-2.253,-2.256, - &-2.259,-2.262,-2.265,-2.269,-2.272,-2.275,-2.278,-2.281,-2.284, - &-2.287,-2.290,-2.293,-2.296,-2.299,-2.302,-2.305,-2.308,-2.311, - &-2.314,-2.317,-2.320,-2.324,-2.327,-2.330,-2.333,-2.336,-2.339, - &-2.342,-2.345,-2.348,-2.351,-2.354,-2.357,-2.360,-2.363,-2.366, - &-2.369,-2.371,-2.374,-2.377,-2.380,-2.383,-2.386,-2.389,-2.392, - &-2.395,-2.398,-2.401,-2.404,-2.407,-2.410,-2.413,-2.416,-2.419, - &-2.422,-2.425,-2.427,-2.430,-2.433,-2.436,-2.439,-2.442,-2.445, - &-2.448,-2.451,-2.454,-2.457,-2.460,-2.462,-2.465,-2.468,-2.471, - &-2.474,-2.477,-2.480,-2.483,-2.485,-2.488,-2.491,-2.494,-2.497, - &-2.500,-2.503,-2.506,-2.508,-2.511,-2.514,-2.517,-2.520,-2.523, - &-2.526,-2.528,-2.531,-2.534,-2.537,-2.540,-2.543,-2.546,-2.548, - &-2.551,-2.554,-2.557,-2.560,-2.563,-2.565,-2.568,-2.571,-2.574, - &-2.577,-2.579,-2.582,-2.585,-2.588,-2.591,-2.594,-2.596,-2.599, - &-2.602,-2.605,-2.608,-2.610,-2.613,-2.616,-2.619,-2.622,-2.624, - &-2.627,-2.630,-2.633,-2.635,-2.638,-2.641,-2.644,-2.647,-2.649, - &-2.652,-2.655,-2.658,-2.661,-2.663,-2.666,-2.669,-2.672,-2.674, - &-2.677,-2.680,-2.683,-2.685,-2.688,-2.691,-2.694,-2.696,-2.699, - &-2.702,-2.705,-2.707,-2.710,-2.713,-2.716,-2.718,-2.721,-2.724, - &-2.727,-2.729,-2.732,-2.735,-2.765,-2.792,-2.819,-2.846,-2.873, - &-2.900,-2.927,-2.953,-2.980,-3.006,-3.033,-3.059,-3.086,-3.112, - &-3.138,-3.164,-3.191,-3.217,-3.243,-3.269,-3.295,-3.321,-3.346, - &-3.372,-3.398,-3.424,-3.449,-3.475,-3.501,-3.526,-3.552,-3.578, - &-3.603,-3.629,-3.654,-3.679,-3.705,-3.730,-3.755,-3.781,-3.806, - &-3.831,-3.857,-3.882,-3.907,-3.932,-3.957,-3.982,-4.008,-4.033, - &-4.058,-4.083,-4.108,-4.133,-4.158,-4.183,-4.208,-4.233,-4.258, - &-4.282,-4.307,-4.332,-4.357,-4.382,-4.407,-4.431,-4.456,-4.481, - &-4.506,-4.530,-4.555,-4.580,-4.605,-4.629,-4.654,-4.679,-4.703, - &-4.728,-4.752,-4.777,-4.802,-4.826,-4.851,-4.875,-4.900,-4.924, - &-4.949,-4.973,-4.998,-5.022,-5.047,-5.071,-5.096,-5.120,-5.145, - &-5.169,-5.193,-5.218,-5.242,-5.267,-5.291,-5.315,-5.340,-5.364, - &-5.388,-5.413,-5.437,-5.461,-5.485,-5.510,-5.534,-5.558,-5.582, - &-5.607,-5.631,-5.655,-5.679,-5.703,-5.728,-5.752,-5.776,-5.800, - &-5.824,-5.848,-5.873,-5.897,-5.921,-5.945,-5.969,-5.993,-6.017, - &-6.041,-6.065,-6.089,-6.113,-6.137,-6.161,-6.186,-6.210,-6.234, - &-6.258,-6.282,-6.306,-6.329,-6.353,-6.377,-6.401,-6.425,-6.449, - &-6.473,-6.497,-6.521,-6.545,-6.569,-6.593,-6.617,-6.641,-6.664, - &-6.688,-6.712,-6.736 - & /) -! -! *** MGNO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC22M_198 = (/ - &-0.099,-0.205,-0.253,-0.283,-0.305,-0.322,-0.335,-0.345,-0.353, - &-0.359,-0.364,-0.368,-0.371,-0.374,-0.375,-0.376,-0.377,-0.377, - &-0.376,-0.376,-0.375,-0.373,-0.372,-0.370,-0.368,-0.366,-0.364, - &-0.361,-0.359,-0.356,-0.353,-0.350,-0.347,-0.344,-0.341,-0.338, - &-0.334,-0.331,-0.328,-0.324,-0.321,-0.317,-0.314,-0.310,-0.306, - &-0.303,-0.299,-0.295,-0.292,-0.288,-0.284,-0.281,-0.277,-0.273, - &-0.270,-0.266,-0.262,-0.258,-0.255,-0.251,-0.247,-0.243,-0.240, - &-0.236,-0.232,-0.228,-0.225,-0.221,-0.217,-0.213,-0.209,-0.205, - &-0.201,-0.197,-0.194,-0.190,-0.186,-0.182,-0.177,-0.173,-0.169, - &-0.165,-0.161,-0.157,-0.153,-0.148,-0.144,-0.140,-0.135,-0.131, - &-0.126,-0.122,-0.117,-0.113,-0.108,-0.104,-0.099,-0.094,-0.090, - &-0.085,-0.080,-0.075,-0.070,-0.066,-0.061,-0.056,-0.051,-0.046, - &-0.041,-0.036,-0.031,-0.026,-0.021,-0.016,-0.011,-0.006,-0.001, - & 0.004, 0.010, 0.015, 0.020, 0.025, 0.030, 0.035, 0.040, 0.045, - & 0.050, 0.056, 0.061, 0.066, 0.071, 0.076, 0.081, 0.086, 0.092, - & 0.097, 0.102, 0.107, 0.112, 0.117, 0.122, 0.127, 0.132, 0.137, - & 0.143, 0.148, 0.153, 0.158, 0.163, 0.168, 0.173, 0.178, 0.183, - & 0.188, 0.193, 0.198, 0.203, 0.208, 0.213, 0.218, 0.223, 0.228, - & 0.233, 0.238, 0.243, 0.248, 0.253, 0.258, 0.262, 0.267, 0.272, - & 0.277, 0.282, 0.287, 0.292, 0.297, 0.302, 0.306, 0.311, 0.316, - & 0.321, 0.326, 0.331, 0.335, 0.340, 0.345, 0.350, 0.354, 0.359, - & 0.364, 0.369, 0.373, 0.378, 0.383, 0.388, 0.392, 0.397, 0.402, - & 0.406, 0.411, 0.416, 0.420, 0.425, 0.430, 0.434, 0.439, 0.444, - & 0.448, 0.453, 0.457, 0.462, 0.466, 0.471, 0.476, 0.480, 0.485, - & 0.489, 0.494, 0.498, 0.503, 0.507, 0.512, 0.516, 0.521, 0.525, - & 0.530, 0.534, 0.538, 0.543, 0.547, 0.552, 0.556, 0.561, 0.565, - & 0.569, 0.574, 0.578, 0.582, 0.587, 0.591, 0.595, 0.600, 0.604, - & 0.608, 0.613, 0.617, 0.621, 0.625, 0.630, 0.634, 0.638, 0.642, - & 0.647, 0.651, 0.655, 0.659, 0.664, 0.668, 0.672, 0.676, 0.680, - & 0.684, 0.689, 0.693, 0.697, 0.701, 0.705, 0.709, 0.713, 0.717, - & 0.721, 0.726, 0.730, 0.734, 0.738, 0.742, 0.746, 0.750, 0.754, - & 0.758, 0.762, 0.766, 0.770, 0.774, 0.778, 0.782, 0.786, 0.790, - & 0.794, 0.798, 0.801, 0.805, 0.809, 0.813, 0.817, 0.821, 0.825, - & 0.829, 0.833, 0.836, 0.840, 0.844, 0.848, 0.852, 0.856, 0.859, - & 0.863, 0.867, 0.871, 0.875, 0.878, 0.882, 0.886, 0.890, 0.893, - & 0.897, 0.901, 0.905, 0.908, 0.912, 0.916, 0.919, 0.923, 0.927, - & 0.931, 0.934, 0.938, 0.941, 0.945, 0.949, 0.952, 0.956, 0.960, - & 0.963, 0.967, 0.970, 0.974, 0.978, 0.981, 0.985, 0.988, 0.992, - & 0.995, 0.999, 1.002, 1.006, 1.010, 1.013, 1.017, 1.020, 1.024, - & 1.027, 1.031, 1.034, 1.037, 1.041, 1.044, 1.048, 1.051, 1.055, - & 1.058, 1.061, 1.065, 1.068, 1.072, 1.075, 1.078, 1.082, 1.085, - & 1.089, 1.092, 1.095, 1.099, 1.102, 1.105, 1.109, 1.112, 1.115, - & 1.119, 1.122, 1.125, 1.128, 1.132, 1.135, 1.138, 1.142, 1.145, - & 1.148, 1.151, 1.155, 1.158, 1.161, 1.164, 1.167, 1.171, 1.174, - & 1.177, 1.180, 1.183, 1.187, 1.220, 1.251, 1.281, 1.311, 1.340, - & 1.369, 1.397, 1.424, 1.451, 1.477, 1.503, 1.529, 1.554, 1.579, - & 1.603, 1.627, 1.650, 1.673, 1.695, 1.717, 1.739, 1.760, 1.781, - & 1.802, 1.822, 1.842, 1.862, 1.881, 1.900, 1.918, 1.937, 1.955, - & 1.972, 1.990, 2.007, 2.024, 2.040, 2.056, 2.072, 2.088, 2.103, - & 2.119, 2.134, 2.148, 2.163, 2.177, 2.191, 2.205, 2.218, 2.231, - & 2.245, 2.257, 2.270, 2.283, 2.295, 2.307, 2.319, 2.330, 2.342, - & 2.353, 2.364, 2.375, 2.386, 2.397, 2.407, 2.417, 2.427, 2.437, - & 2.447, 2.456, 2.466, 2.475, 2.484, 2.493, 2.502, 2.511, 2.519, - & 2.528, 2.536, 2.544, 2.552, 2.560, 2.567, 2.575, 2.582, 2.590, - & 2.597, 2.604, 2.611, 2.618, 2.624, 2.631, 2.637, 2.644, 2.650, - & 2.656, 2.662, 2.668, 2.674, 2.680, 2.685, 2.691, 2.696, 2.701, - & 2.706, 2.712, 2.717, 2.721, 2.726, 2.731, 2.735, 2.740, 2.744, - & 2.749, 2.753, 2.757, 2.761, 2.765, 2.769, 2.773, 2.777, 2.780, - & 2.784, 2.787, 2.791, 2.794, 2.797, 2.801, 2.804, 2.807, 2.810, - & 2.812, 2.815, 2.818, 2.821, 2.823, 2.826, 2.828, 2.831, 2.833, - & 2.835, 2.837, 2.839, 2.841, 2.843, 2.845, 2.847, 2.849, 2.851, - & 2.852, 2.854, 2.856, 2.857, 2.859, 2.860, 2.861, 2.862, 2.864, - & 2.865, 2.866, 2.867 - & /) -! -! *** MGCL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC23M_198 = (/ - &-0.098,-0.202,-0.247,-0.275,-0.294,-0.308,-0.319,-0.327,-0.333, - &-0.337,-0.340,-0.342,-0.343,-0.343,-0.343,-0.341,-0.340,-0.338, - &-0.336,-0.333,-0.330,-0.326,-0.323,-0.319,-0.315,-0.311,-0.306, - &-0.302,-0.297,-0.293,-0.288,-0.283,-0.278,-0.273,-0.267,-0.262, - &-0.257,-0.251,-0.246,-0.241,-0.235,-0.230,-0.224,-0.218,-0.213, - &-0.207,-0.202,-0.196,-0.190,-0.185,-0.179,-0.174,-0.168,-0.162, - &-0.157,-0.151,-0.145,-0.140,-0.134,-0.128,-0.123,-0.117,-0.111, - &-0.106,-0.100,-0.094,-0.089,-0.083,-0.077,-0.071,-0.066,-0.060, - &-0.054,-0.048,-0.042,-0.037,-0.031,-0.025,-0.019,-0.013,-0.007, - &-0.001, 0.006, 0.012, 0.018, 0.024, 0.030, 0.037, 0.043, 0.049, - & 0.056, 0.062, 0.069, 0.075, 0.082, 0.089, 0.095, 0.102, 0.109, - & 0.116, 0.122, 0.129, 0.136, 0.143, 0.150, 0.157, 0.164, 0.171, - & 0.178, 0.185, 0.192, 0.199, 0.207, 0.214, 0.221, 0.228, 0.235, - & 0.242, 0.250, 0.257, 0.264, 0.271, 0.278, 0.286, 0.293, 0.300, - & 0.307, 0.315, 0.322, 0.329, 0.336, 0.344, 0.351, 0.358, 0.365, - & 0.372, 0.380, 0.387, 0.394, 0.401, 0.408, 0.416, 0.423, 0.430, - & 0.437, 0.444, 0.451, 0.458, 0.466, 0.473, 0.480, 0.487, 0.494, - & 0.501, 0.508, 0.515, 0.522, 0.529, 0.536, 0.543, 0.550, 0.557, - & 0.564, 0.571, 0.578, 0.585, 0.592, 0.599, 0.606, 0.613, 0.620, - & 0.626, 0.633, 0.640, 0.647, 0.654, 0.661, 0.667, 0.674, 0.681, - & 0.688, 0.695, 0.701, 0.708, 0.715, 0.722, 0.728, 0.735, 0.742, - & 0.748, 0.755, 0.762, 0.768, 0.775, 0.782, 0.788, 0.795, 0.801, - & 0.808, 0.815, 0.821, 0.828, 0.834, 0.841, 0.847, 0.854, 0.860, - & 0.867, 0.873, 0.879, 0.886, 0.892, 0.899, 0.905, 0.912, 0.918, - & 0.924, 0.931, 0.937, 0.943, 0.950, 0.956, 0.962, 0.968, 0.975, - & 0.981, 0.987, 0.993, 1.000, 1.006, 1.012, 1.018, 1.024, 1.031, - & 1.037, 1.043, 1.049, 1.055, 1.061, 1.067, 1.073, 1.080, 1.086, - & 1.092, 1.098, 1.104, 1.110, 1.116, 1.122, 1.128, 1.134, 1.140, - & 1.146, 1.151, 1.157, 1.163, 1.169, 1.175, 1.181, 1.187, 1.193, - & 1.199, 1.204, 1.210, 1.216, 1.222, 1.228, 1.233, 1.239, 1.245, - & 1.251, 1.256, 1.262, 1.268, 1.273, 1.279, 1.285, 1.291, 1.296, - & 1.302, 1.307, 1.313, 1.319, 1.324, 1.330, 1.335, 1.341, 1.347, - & 1.352, 1.358, 1.363, 1.369, 1.374, 1.380, 1.385, 1.391, 1.396, - & 1.402, 1.407, 1.412, 1.418, 1.423, 1.429, 1.434, 1.439, 1.445, - & 1.450, 1.455, 1.461, 1.466, 1.471, 1.477, 1.482, 1.487, 1.493, - & 1.498, 1.503, 1.508, 1.514, 1.519, 1.524, 1.529, 1.534, 1.540, - & 1.545, 1.550, 1.555, 1.560, 1.565, 1.570, 1.576, 1.581, 1.586, - & 1.591, 1.596, 1.601, 1.606, 1.611, 1.616, 1.621, 1.626, 1.631, - & 1.636, 1.641, 1.646, 1.651, 1.656, 1.661, 1.666, 1.671, 1.676, - & 1.681, 1.686, 1.691, 1.695, 1.700, 1.705, 1.710, 1.715, 1.720, - & 1.725, 1.729, 1.734, 1.739, 1.744, 1.749, 1.753, 1.758, 1.763, - & 1.768, 1.772, 1.777, 1.782, 1.786, 1.791, 1.796, 1.801, 1.805, - & 1.810, 1.815, 1.819, 1.824, 1.829, 1.833, 1.838, 1.842, 1.847, - & 1.852, 1.856, 1.861, 1.865, 1.870, 1.874, 1.879, 1.883, 1.888, - & 1.892, 1.897, 1.902, 1.906, 1.954, 1.998, 2.040, 2.082, 2.124, - & 2.164, 2.204, 2.243, 2.282, 2.319, 2.356, 2.393, 2.429, 2.464, - & 2.499, 2.533, 2.567, 2.600, 2.632, 2.664, 2.695, 2.726, 2.757, - & 2.787, 2.816, 2.845, 2.874, 2.902, 2.930, 2.957, 2.984, 3.010, - & 3.036, 3.062, 3.087, 3.112, 3.137, 3.161, 3.185, 3.208, 3.232, - & 3.254, 3.277, 3.299, 3.321, 3.342, 3.364, 3.385, 3.405, 3.426, - & 3.446, 3.466, 3.485, 3.504, 3.523, 3.542, 3.561, 3.579, 3.597, - & 3.615, 3.632, 3.649, 3.666, 3.683, 3.700, 3.716, 3.732, 3.748, - & 3.764, 3.779, 3.795, 3.810, 3.825, 3.839, 3.854, 3.868, 3.882, - & 3.896, 3.910, 3.924, 3.937, 3.950, 3.964, 3.976, 3.989, 4.002, - & 4.014, 4.026, 4.039, 4.050, 4.062, 4.074, 4.085, 4.097, 4.108, - & 4.119, 4.130, 4.141, 4.151, 4.162, 4.172, 4.182, 4.192, 4.202, - & 4.212, 4.222, 4.231, 4.241, 4.250, 4.259, 4.268, 4.277, 4.286, - & 4.295, 4.304, 4.312, 4.321, 4.329, 4.337, 4.345, 4.353, 4.361, - & 4.369, 4.376, 4.384, 4.391, 4.399, 4.406, 4.413, 4.420, 4.427, - & 4.434, 4.441, 4.447, 4.454, 4.460, 4.467, 4.473, 4.479, 4.485, - & 4.491, 4.497, 4.503, 4.509, 4.515, 4.520, 4.526, 4.531, 4.537, - & 4.542, 4.547, 4.552, 4.557, 4.562, 4.567, 4.572, 4.577, 4.582, - & 4.586, 4.591, 4.595 - & /) - - ! Formerly BLOCK DATA KMCF223 -! -! *** NaCl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC01M_223 = (/ - &-0.049,-0.101,-0.124,-0.140,-0.151,-0.159,-0.166,-0.171,-0.175, - &-0.178,-0.181,-0.183,-0.185,-0.187,-0.188,-0.188,-0.189,-0.189, - &-0.189,-0.189,-0.189,-0.189,-0.188,-0.187,-0.187,-0.186,-0.185, - &-0.184,-0.183,-0.182,-0.181,-0.180,-0.178,-0.177,-0.176,-0.174, - &-0.173,-0.172,-0.170,-0.169,-0.167,-0.166,-0.164,-0.163,-0.161, - &-0.159,-0.158,-0.156,-0.155,-0.153,-0.151,-0.150,-0.148,-0.147, - &-0.145,-0.143,-0.142,-0.140,-0.138,-0.137,-0.135,-0.134,-0.132, - &-0.130,-0.128,-0.127,-0.125,-0.123,-0.122,-0.120,-0.118,-0.117, - &-0.115,-0.113,-0.111,-0.110,-0.108,-0.106,-0.104,-0.102,-0.101, - &-0.099,-0.097,-0.095,-0.093,-0.091,-0.089,-0.087,-0.085,-0.083, - &-0.081,-0.079,-0.077,-0.075,-0.073,-0.071,-0.069,-0.067,-0.065, - &-0.063,-0.061,-0.058,-0.056,-0.054,-0.052,-0.050,-0.048,-0.045, - &-0.043,-0.041,-0.039,-0.036,-0.034,-0.032,-0.030,-0.027,-0.025, - &-0.023,-0.020,-0.018,-0.016,-0.014,-0.011,-0.009,-0.007,-0.004, - &-0.002, 0.000, 0.003, 0.005, 0.007, 0.010, 0.012, 0.014, 0.016, - & 0.019, 0.021, 0.023, 0.026, 0.028, 0.030, 0.033, 0.035, 0.037, - & 0.039, 0.042, 0.044, 0.046, 0.049, 0.051, 0.053, 0.055, 0.058, - & 0.060, 0.062, 0.064, 0.067, 0.069, 0.071, 0.073, 0.076, 0.078, - & 0.080, 0.082, 0.085, 0.087, 0.089, 0.091, 0.094, 0.096, 0.098, - & 0.100, 0.102, 0.105, 0.107, 0.109, 0.111, 0.113, 0.116, 0.118, - & 0.120, 0.122, 0.124, 0.126, 0.129, 0.131, 0.133, 0.135, 0.137, - & 0.139, 0.142, 0.144, 0.146, 0.148, 0.150, 0.152, 0.154, 0.157, - & 0.159, 0.161, 0.163, 0.165, 0.167, 0.169, 0.171, 0.173, 0.175, - & 0.178, 0.180, 0.182, 0.184, 0.186, 0.188, 0.190, 0.192, 0.194, - & 0.196, 0.198, 0.200, 0.202, 0.204, 0.206, 0.208, 0.211, 0.213, - & 0.215, 0.217, 0.219, 0.221, 0.223, 0.225, 0.227, 0.229, 0.231, - & 0.233, 0.235, 0.237, 0.239, 0.241, 0.243, 0.245, 0.246, 0.248, - & 0.250, 0.252, 0.254, 0.256, 0.258, 0.260, 0.262, 0.264, 0.266, - & 0.268, 0.270, 0.272, 0.274, 0.276, 0.277, 0.279, 0.281, 0.283, - & 0.285, 0.287, 0.289, 0.291, 0.293, 0.295, 0.296, 0.298, 0.300, - & 0.302, 0.304, 0.306, 0.308, 0.309, 0.311, 0.313, 0.315, 0.317, - & 0.319, 0.320, 0.322, 0.324, 0.326, 0.328, 0.330, 0.331, 0.333, - & 0.335, 0.337, 0.339, 0.340, 0.342, 0.344, 0.346, 0.348, 0.349, - & 0.351, 0.353, 0.355, 0.356, 0.358, 0.360, 0.362, 0.363, 0.365, - & 0.367, 0.369, 0.370, 0.372, 0.374, 0.376, 0.377, 0.379, 0.381, - & 0.383, 0.384, 0.386, 0.388, 0.389, 0.391, 0.393, 0.394, 0.396, - & 0.398, 0.400, 0.401, 0.403, 0.405, 0.406, 0.408, 0.410, 0.411, - & 0.413, 0.415, 0.416, 0.418, 0.420, 0.421, 0.423, 0.424, 0.426, - & 0.428, 0.429, 0.431, 0.433, 0.434, 0.436, 0.437, 0.439, 0.441, - & 0.442, 0.444, 0.446, 0.447, 0.449, 0.450, 0.452, 0.453, 0.455, - & 0.457, 0.458, 0.460, 0.461, 0.463, 0.464, 0.466, 0.468, 0.469, - & 0.471, 0.472, 0.474, 0.475, 0.477, 0.478, 0.480, 0.482, 0.483, - & 0.485, 0.486, 0.488, 0.489, 0.491, 0.492, 0.494, 0.495, 0.497, - & 0.498, 0.500, 0.501, 0.503, 0.504, 0.506, 0.507, 0.509, 0.510, - & 0.512, 0.513, 0.515, 0.516, 0.532, 0.546, 0.560, 0.574, 0.588, - & 0.601, 0.614, 0.627, 0.639, 0.652, 0.664, 0.676, 0.688, 0.700, - & 0.711, 0.722, 0.733, 0.744, 0.755, 0.765, 0.776, 0.786, 0.796, - & 0.806, 0.816, 0.825, 0.835, 0.844, 0.853, 0.862, 0.871, 0.880, - & 0.888, 0.897, 0.905, 0.913, 0.921, 0.929, 0.937, 0.945, 0.952, - & 0.960, 0.967, 0.975, 0.982, 0.989, 0.996, 1.003, 1.009, 1.016, - & 1.023, 1.029, 1.036, 1.042, 1.048, 1.054, 1.060, 1.066, 1.072, - & 1.078, 1.084, 1.089, 1.095, 1.100, 1.106, 1.111, 1.116, 1.121, - & 1.126, 1.131, 1.136, 1.141, 1.146, 1.151, 1.156, 1.160, 1.165, - & 1.169, 1.174, 1.178, 1.182, 1.187, 1.191, 1.195, 1.199, 1.203, - & 1.207, 1.211, 1.215, 1.219, 1.223, 1.226, 1.230, 1.234, 1.237, - & 1.241, 1.244, 1.247, 1.251, 1.254, 1.257, 1.261, 1.264, 1.267, - & 1.270, 1.273, 1.276, 1.279, 1.282, 1.285, 1.288, 1.291, 1.293, - & 1.296, 1.299, 1.301, 1.304, 1.306, 1.309, 1.311, 1.314, 1.316, - & 1.319, 1.321, 1.323, 1.326, 1.328, 1.330, 1.332, 1.334, 1.336, - & 1.339, 1.341, 1.343, 1.345, 1.347, 1.348, 1.350, 1.352, 1.354, - & 1.356, 1.358, 1.359, 1.361, 1.363, 1.364, 1.366, 1.368, 1.369, - & 1.371, 1.372, 1.374, 1.375, 1.377, 1.378, 1.379, 1.381, 1.382, - & 1.383, 1.385, 1.386 - & /) -! -! *** Na2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC02M_223 = (/ - &-0.100,-0.220,-0.280,-0.323,-0.357,-0.385,-0.409,-0.431,-0.450, - &-0.468,-0.484,-0.499,-0.513,-0.526,-0.538,-0.549,-0.560,-0.571, - &-0.581,-0.590,-0.600,-0.608,-0.617,-0.625,-0.633,-0.641,-0.648, - &-0.655,-0.662,-0.669,-0.676,-0.682,-0.689,-0.695,-0.701,-0.707, - &-0.713,-0.718,-0.724,-0.729,-0.735,-0.740,-0.745,-0.750,-0.755, - &-0.760,-0.765,-0.769,-0.774,-0.779,-0.783,-0.788,-0.792,-0.796, - &-0.800,-0.805,-0.809,-0.813,-0.817,-0.821,-0.825,-0.829,-0.833, - &-0.836,-0.840,-0.844,-0.848,-0.851,-0.855,-0.858,-0.862,-0.866, - &-0.869,-0.873,-0.876,-0.879,-0.883,-0.886,-0.889,-0.893,-0.896, - &-0.899,-0.902,-0.906,-0.909,-0.912,-0.915,-0.918,-0.921,-0.924, - &-0.927,-0.930,-0.933,-0.936,-0.939,-0.942,-0.945,-0.948,-0.951, - &-0.954,-0.957,-0.960,-0.963,-0.966,-0.968,-0.971,-0.974,-0.977, - &-0.980,-0.982,-0.985,-0.988,-0.991,-0.993,-0.996,-0.999,-1.001, - &-1.004,-1.007,-1.009,-1.012,-1.015,-1.017,-1.020,-1.022,-1.025, - &-1.028,-1.030,-1.033,-1.035,-1.038,-1.040,-1.043,-1.045,-1.048, - &-1.050,-1.053,-1.055,-1.058,-1.060,-1.062,-1.065,-1.067,-1.070, - &-1.072,-1.074,-1.077,-1.079,-1.082,-1.084,-1.086,-1.089,-1.091, - &-1.093,-1.096,-1.098,-1.100,-1.102,-1.105,-1.107,-1.109,-1.112, - &-1.114,-1.116,-1.118,-1.121,-1.123,-1.125,-1.127,-1.129,-1.132, - &-1.134,-1.136,-1.138,-1.140,-1.143,-1.145,-1.147,-1.149,-1.151, - &-1.153,-1.155,-1.158,-1.160,-1.162,-1.164,-1.166,-1.168,-1.170, - &-1.172,-1.174,-1.177,-1.179,-1.181,-1.183,-1.185,-1.187,-1.189, - &-1.191,-1.193,-1.195,-1.197,-1.199,-1.201,-1.203,-1.205,-1.207, - &-1.209,-1.211,-1.213,-1.215,-1.217,-1.219,-1.221,-1.223,-1.225, - &-1.227,-1.229,-1.231,-1.233,-1.235,-1.237,-1.239,-1.241,-1.243, - &-1.245,-1.247,-1.248,-1.250,-1.252,-1.254,-1.256,-1.258,-1.260, - &-1.262,-1.264,-1.266,-1.268,-1.269,-1.271,-1.273,-1.275,-1.277, - &-1.279,-1.281,-1.283,-1.284,-1.286,-1.288,-1.290,-1.292,-1.294, - &-1.296,-1.297,-1.299,-1.301,-1.303,-1.305,-1.306,-1.308,-1.310, - &-1.312,-1.314,-1.316,-1.317,-1.319,-1.321,-1.323,-1.325,-1.326, - &-1.328,-1.330,-1.332,-1.333,-1.335,-1.337,-1.339,-1.341,-1.342, - &-1.344,-1.346,-1.348,-1.349,-1.351,-1.353,-1.355,-1.356,-1.358, - &-1.360,-1.362,-1.363,-1.365,-1.367,-1.369,-1.370,-1.372,-1.374, - &-1.375,-1.377,-1.379,-1.381,-1.382,-1.384,-1.386,-1.387,-1.389, - &-1.391,-1.393,-1.394,-1.396,-1.398,-1.399,-1.401,-1.403,-1.404, - &-1.406,-1.408,-1.409,-1.411,-1.413,-1.414,-1.416,-1.418,-1.419, - &-1.421,-1.423,-1.424,-1.426,-1.428,-1.429,-1.431,-1.433,-1.434, - &-1.436,-1.438,-1.439,-1.441,-1.442,-1.444,-1.446,-1.447,-1.449, - &-1.451,-1.452,-1.454,-1.456,-1.457,-1.459,-1.460,-1.462,-1.464, - &-1.465,-1.467,-1.468,-1.470,-1.472,-1.473,-1.475,-1.476,-1.478, - &-1.480,-1.481,-1.483,-1.484,-1.486,-1.488,-1.489,-1.491,-1.492, - &-1.494,-1.496,-1.497,-1.499,-1.500,-1.502,-1.503,-1.505,-1.507, - &-1.508,-1.510,-1.511,-1.513,-1.514,-1.516,-1.518,-1.519,-1.521, - &-1.522,-1.524,-1.525,-1.527,-1.528,-1.530,-1.531,-1.533,-1.535, - &-1.536,-1.538,-1.539,-1.541,-1.557,-1.572,-1.587,-1.602,-1.617, - &-1.632,-1.647,-1.661,-1.675,-1.690,-1.704,-1.718,-1.732,-1.746, - &-1.760,-1.774,-1.787,-1.801,-1.815,-1.828,-1.841,-1.855,-1.868, - &-1.881,-1.895,-1.908,-1.921,-1.934,-1.947,-1.960,-1.972,-1.985, - &-1.998,-2.011,-2.023,-2.036,-2.048,-2.061,-2.074,-2.086,-2.098, - &-2.111,-2.123,-2.135,-2.148,-2.160,-2.172,-2.184,-2.196,-2.208, - &-2.220,-2.232,-2.244,-2.256,-2.268,-2.280,-2.292,-2.304,-2.315, - &-2.327,-2.339,-2.351,-2.362,-2.374,-2.386,-2.397,-2.409,-2.420, - &-2.432,-2.443,-2.455,-2.466,-2.478,-2.489,-2.501,-2.512,-2.523, - &-2.535,-2.546,-2.557,-2.568,-2.580,-2.591,-2.602,-2.613,-2.625, - &-2.636,-2.647,-2.658,-2.669,-2.680,-2.691,-2.702,-2.713,-2.724, - &-2.735,-2.746,-2.757,-2.768,-2.779,-2.790,-2.801,-2.812,-2.823, - &-2.833,-2.844,-2.855,-2.866,-2.877,-2.888,-2.898,-2.909,-2.920, - &-2.930,-2.941,-2.952,-2.963,-2.973,-2.984,-2.995,-3.005,-3.016, - &-3.026,-3.037,-3.048,-3.058,-3.069,-3.079,-3.090,-3.100,-3.111, - &-3.121,-3.132,-3.142,-3.153,-3.163,-3.174,-3.184,-3.195,-3.205, - &-3.215,-3.226,-3.236,-3.247,-3.257,-3.267,-3.278,-3.288,-3.298, - &-3.309,-3.319,-3.329,-3.340,-3.350,-3.360,-3.370,-3.381,-3.391, - &-3.401,-3.411,-3.422 - & /) -! -! *** NaNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC03M_223 = (/ - &-0.050,-0.111,-0.141,-0.164,-0.181,-0.196,-0.209,-0.220,-0.230, - &-0.239,-0.248,-0.256,-0.263,-0.270,-0.277,-0.283,-0.289,-0.295, - &-0.300,-0.306,-0.311,-0.316,-0.320,-0.325,-0.329,-0.334,-0.338, - &-0.342,-0.346,-0.350,-0.353,-0.357,-0.360,-0.364,-0.367,-0.371, - &-0.374,-0.377,-0.380,-0.384,-0.387,-0.390,-0.392,-0.395,-0.398, - &-0.401,-0.404,-0.406,-0.409,-0.412,-0.414,-0.417,-0.419,-0.422, - &-0.424,-0.427,-0.429,-0.432,-0.434,-0.436,-0.438,-0.441,-0.443, - &-0.445,-0.447,-0.449,-0.452,-0.454,-0.456,-0.458,-0.460,-0.462, - &-0.464,-0.466,-0.468,-0.470,-0.472,-0.474,-0.476,-0.478,-0.480, - &-0.482,-0.484,-0.485,-0.487,-0.489,-0.491,-0.493,-0.495,-0.496, - &-0.498,-0.500,-0.502,-0.504,-0.505,-0.507,-0.509,-0.511,-0.512, - &-0.514,-0.516,-0.518,-0.519,-0.521,-0.523,-0.524,-0.526,-0.528, - &-0.529,-0.531,-0.533,-0.534,-0.536,-0.538,-0.539,-0.541,-0.543, - &-0.544,-0.546,-0.547,-0.549,-0.551,-0.552,-0.554,-0.555,-0.557, - &-0.558,-0.560,-0.561,-0.563,-0.564,-0.566,-0.568,-0.569,-0.571, - &-0.572,-0.574,-0.575,-0.576,-0.578,-0.579,-0.581,-0.582,-0.584, - &-0.585,-0.587,-0.588,-0.590,-0.591,-0.592,-0.594,-0.595,-0.597, - &-0.598,-0.600,-0.601,-0.602,-0.604,-0.605,-0.606,-0.608,-0.609, - &-0.611,-0.612,-0.613,-0.615,-0.616,-0.617,-0.619,-0.620,-0.621, - &-0.623,-0.624,-0.625,-0.627,-0.628,-0.629,-0.631,-0.632,-0.633, - &-0.635,-0.636,-0.637,-0.638,-0.640,-0.641,-0.642,-0.643,-0.645, - &-0.646,-0.647,-0.649,-0.650,-0.651,-0.652,-0.654,-0.655,-0.656, - &-0.657,-0.659,-0.660,-0.661,-0.662,-0.663,-0.665,-0.666,-0.667, - &-0.668,-0.670,-0.671,-0.672,-0.673,-0.674,-0.676,-0.677,-0.678, - &-0.679,-0.680,-0.681,-0.683,-0.684,-0.685,-0.686,-0.687,-0.689, - &-0.690,-0.691,-0.692,-0.693,-0.694,-0.695,-0.697,-0.698,-0.699, - &-0.700,-0.701,-0.702,-0.703,-0.705,-0.706,-0.707,-0.708,-0.709, - &-0.710,-0.711,-0.712,-0.714,-0.715,-0.716,-0.717,-0.718,-0.719, - &-0.720,-0.721,-0.722,-0.724,-0.725,-0.726,-0.727,-0.728,-0.729, - &-0.730,-0.731,-0.732,-0.733,-0.734,-0.736,-0.737,-0.738,-0.739, - &-0.740,-0.741,-0.742,-0.743,-0.744,-0.745,-0.746,-0.747,-0.748, - &-0.749,-0.750,-0.751,-0.753,-0.754,-0.755,-0.756,-0.757,-0.758, - &-0.759,-0.760,-0.761,-0.762,-0.763,-0.764,-0.765,-0.766,-0.767, - &-0.768,-0.769,-0.770,-0.771,-0.772,-0.773,-0.774,-0.775,-0.776, - &-0.777,-0.778,-0.779,-0.780,-0.781,-0.782,-0.783,-0.784,-0.785, - &-0.786,-0.787,-0.788,-0.789,-0.790,-0.791,-0.792,-0.793,-0.794, - &-0.795,-0.796,-0.797,-0.798,-0.799,-0.800,-0.801,-0.802,-0.803, - &-0.804,-0.805,-0.806,-0.807,-0.808,-0.809,-0.810,-0.811,-0.812, - &-0.813,-0.814,-0.815,-0.816,-0.817,-0.818,-0.818,-0.819,-0.820, - &-0.821,-0.822,-0.823,-0.824,-0.825,-0.826,-0.827,-0.828,-0.829, - &-0.830,-0.831,-0.832,-0.833,-0.834,-0.835,-0.835,-0.836,-0.837, - &-0.838,-0.839,-0.840,-0.841,-0.842,-0.843,-0.844,-0.845,-0.846, - &-0.847,-0.848,-0.848,-0.849,-0.850,-0.851,-0.852,-0.853,-0.854, - &-0.855,-0.856,-0.857,-0.858,-0.859,-0.859,-0.860,-0.861,-0.862, - &-0.863,-0.864,-0.865,-0.866,-0.875,-0.884,-0.893,-0.902,-0.910, - &-0.919,-0.927,-0.936,-0.944,-0.952,-0.961,-0.969,-0.977,-0.985, - &-0.993,-1.001,-1.008,-1.016,-1.024,-1.032,-1.039,-1.047,-1.054, - &-1.062,-1.069,-1.077,-1.084,-1.092,-1.099,-1.106,-1.113,-1.121, - &-1.128,-1.135,-1.142,-1.149,-1.156,-1.163,-1.170,-1.177,-1.184, - &-1.191,-1.198,-1.204,-1.211,-1.218,-1.225,-1.231,-1.238,-1.245, - &-1.251,-1.258,-1.265,-1.271,-1.278,-1.284,-1.291,-1.297,-1.304, - &-1.310,-1.317,-1.323,-1.330,-1.336,-1.342,-1.349,-1.355,-1.361, - &-1.368,-1.374,-1.380,-1.386,-1.393,-1.399,-1.405,-1.411,-1.417, - &-1.423,-1.430,-1.436,-1.442,-1.448,-1.454,-1.460,-1.466,-1.472, - &-1.478,-1.484,-1.490,-1.496,-1.502,-1.508,-1.514,-1.520,-1.526, - &-1.532,-1.538,-1.543,-1.549,-1.555,-1.561,-1.567,-1.573,-1.578, - &-1.584,-1.590,-1.596,-1.602,-1.607,-1.613,-1.619,-1.625,-1.630, - &-1.636,-1.642,-1.648,-1.653,-1.659,-1.665,-1.670,-1.676,-1.682, - &-1.687,-1.693,-1.698,-1.704,-1.710,-1.715,-1.721,-1.726,-1.732, - &-1.738,-1.743,-1.749,-1.754,-1.760,-1.765,-1.771,-1.776,-1.782, - &-1.787,-1.793,-1.798,-1.804,-1.809,-1.815,-1.820,-1.826,-1.831, - &-1.837,-1.842,-1.847,-1.853,-1.858,-1.864,-1.869,-1.875,-1.880, - &-1.885,-1.891,-1.896 - & /) -! -! *** (NH4)2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC04M_223 = (/ - &-0.101,-0.220,-0.281,-0.324,-0.358,-0.387,-0.412,-0.434,-0.453, - &-0.471,-0.487,-0.503,-0.517,-0.530,-0.543,-0.555,-0.566,-0.577, - &-0.587,-0.597,-0.606,-0.615,-0.624,-0.632,-0.641,-0.649,-0.656, - &-0.664,-0.671,-0.678,-0.685,-0.692,-0.698,-0.705,-0.711,-0.717, - &-0.723,-0.729,-0.735,-0.740,-0.746,-0.752,-0.757,-0.762,-0.767, - &-0.772,-0.777,-0.782,-0.787,-0.792,-0.797,-0.801,-0.806,-0.810, - &-0.815,-0.819,-0.824,-0.828,-0.832,-0.836,-0.840,-0.844,-0.848, - &-0.852,-0.856,-0.860,-0.864,-0.868,-0.872,-0.876,-0.879,-0.883, - &-0.887,-0.890,-0.894,-0.897,-0.901,-0.904,-0.908,-0.911,-0.915, - &-0.918,-0.922,-0.925,-0.928,-0.932,-0.935,-0.938,-0.942,-0.945, - &-0.948,-0.951,-0.954,-0.958,-0.961,-0.964,-0.967,-0.970,-0.973, - &-0.976,-0.979,-0.982,-0.985,-0.988,-0.991,-0.994,-0.997,-1.000, - &-1.003,-1.006,-1.009,-1.012,-1.015,-1.018,-1.021,-1.024,-1.026, - &-1.029,-1.032,-1.035,-1.038,-1.040,-1.043,-1.046,-1.049,-1.051, - &-1.054,-1.057,-1.060,-1.062,-1.065,-1.068,-1.070,-1.073,-1.076, - &-1.078,-1.081,-1.083,-1.086,-1.089,-1.091,-1.094,-1.096,-1.099, - &-1.102,-1.104,-1.107,-1.109,-1.112,-1.114,-1.117,-1.119,-1.122, - &-1.124,-1.127,-1.129,-1.131,-1.134,-1.136,-1.139,-1.141,-1.144, - &-1.146,-1.148,-1.151,-1.153,-1.155,-1.158,-1.160,-1.163,-1.165, - &-1.167,-1.170,-1.172,-1.174,-1.177,-1.179,-1.181,-1.183,-1.186, - &-1.188,-1.190,-1.193,-1.195,-1.197,-1.199,-1.202,-1.204,-1.206, - &-1.208,-1.210,-1.213,-1.215,-1.217,-1.219,-1.221,-1.224,-1.226, - &-1.228,-1.230,-1.232,-1.235,-1.237,-1.239,-1.241,-1.243,-1.245, - &-1.247,-1.250,-1.252,-1.254,-1.256,-1.258,-1.260,-1.262,-1.264, - &-1.266,-1.269,-1.271,-1.273,-1.275,-1.277,-1.279,-1.281,-1.283, - &-1.285,-1.287,-1.289,-1.291,-1.293,-1.295,-1.297,-1.299,-1.301, - &-1.303,-1.305,-1.307,-1.309,-1.311,-1.313,-1.315,-1.317,-1.319, - &-1.321,-1.323,-1.325,-1.327,-1.329,-1.331,-1.333,-1.335,-1.337, - &-1.339,-1.341,-1.343,-1.345,-1.347,-1.349,-1.351,-1.353,-1.355, - &-1.357,-1.358,-1.360,-1.362,-1.364,-1.366,-1.368,-1.370,-1.372, - &-1.374,-1.376,-1.377,-1.379,-1.381,-1.383,-1.385,-1.387,-1.389, - &-1.391,-1.392,-1.394,-1.396,-1.398,-1.400,-1.402,-1.404,-1.405, - &-1.407,-1.409,-1.411,-1.413,-1.415,-1.417,-1.418,-1.420,-1.422, - &-1.424,-1.426,-1.427,-1.429,-1.431,-1.433,-1.435,-1.437,-1.438, - &-1.440,-1.442,-1.444,-1.445,-1.447,-1.449,-1.451,-1.453,-1.454, - &-1.456,-1.458,-1.460,-1.462,-1.463,-1.465,-1.467,-1.469,-1.470, - &-1.472,-1.474,-1.476,-1.477,-1.479,-1.481,-1.483,-1.484,-1.486, - &-1.488,-1.490,-1.491,-1.493,-1.495,-1.496,-1.498,-1.500,-1.502, - &-1.503,-1.505,-1.507,-1.509,-1.510,-1.512,-1.514,-1.515,-1.517, - &-1.519,-1.520,-1.522,-1.524,-1.526,-1.527,-1.529,-1.531,-1.532, - &-1.534,-1.536,-1.537,-1.539,-1.541,-1.542,-1.544,-1.546,-1.547, - &-1.549,-1.551,-1.552,-1.554,-1.556,-1.557,-1.559,-1.561,-1.562, - &-1.564,-1.566,-1.567,-1.569,-1.571,-1.572,-1.574,-1.576,-1.577, - &-1.579,-1.580,-1.582,-1.584,-1.585,-1.587,-1.589,-1.590,-1.592, - &-1.594,-1.595,-1.597,-1.598,-1.616,-1.632,-1.648,-1.663,-1.679, - &-1.694,-1.710,-1.725,-1.740,-1.755,-1.770,-1.785,-1.799,-1.814, - &-1.828,-1.843,-1.857,-1.871,-1.885,-1.900,-1.914,-1.928,-1.941, - &-1.955,-1.969,-1.983,-1.996,-2.010,-2.023,-2.037,-2.050,-2.063, - &-2.077,-2.090,-2.103,-2.116,-2.129,-2.142,-2.155,-2.168,-2.181, - &-2.194,-2.206,-2.219,-2.232,-2.244,-2.257,-2.269,-2.282,-2.294, - &-2.307,-2.319,-2.332,-2.344,-2.356,-2.369,-2.381,-2.393,-2.405, - &-2.417,-2.429,-2.441,-2.454,-2.466,-2.478,-2.489,-2.501,-2.513, - &-2.525,-2.537,-2.549,-2.561,-2.572,-2.584,-2.596,-2.608,-2.619, - &-2.631,-2.642,-2.654,-2.666,-2.677,-2.689,-2.700,-2.712,-2.723, - &-2.735,-2.746,-2.757,-2.769,-2.780,-2.792,-2.803,-2.814,-2.825, - &-2.837,-2.848,-2.859,-2.870,-2.882,-2.893,-2.904,-2.915,-2.926, - &-2.937,-2.948,-2.959,-2.971,-2.982,-2.993,-3.004,-3.015,-3.026, - &-3.037,-3.048,-3.058,-3.069,-3.080,-3.091,-3.102,-3.113,-3.124, - &-3.135,-3.145,-3.156,-3.167,-3.178,-3.189,-3.199,-3.210,-3.221, - &-3.232,-3.242,-3.253,-3.264,-3.274,-3.285,-3.296,-3.306,-3.317, - &-3.327,-3.338,-3.349,-3.359,-3.370,-3.380,-3.391,-3.401,-3.412, - &-3.422,-3.433,-3.443,-3.454,-3.464,-3.475,-3.485,-3.496,-3.506, - &-3.517,-3.527,-3.537 - & /) -! -! *** NH4NO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC05M_223 = (/ - &-0.051,-0.114,-0.148,-0.172,-0.192,-0.209,-0.224,-0.238,-0.250, - &-0.262,-0.272,-0.282,-0.292,-0.301,-0.310,-0.318,-0.326,-0.333, - &-0.341,-0.348,-0.355,-0.362,-0.368,-0.375,-0.381,-0.387,-0.393, - &-0.398,-0.404,-0.410,-0.415,-0.420,-0.426,-0.431,-0.436,-0.441, - &-0.446,-0.450,-0.455,-0.460,-0.464,-0.469,-0.473,-0.477,-0.482, - &-0.486,-0.490,-0.494,-0.498,-0.502,-0.506,-0.510,-0.514,-0.518, - &-0.521,-0.525,-0.529,-0.532,-0.536,-0.539,-0.543,-0.546,-0.550, - &-0.553,-0.556,-0.560,-0.563,-0.566,-0.570,-0.573,-0.576,-0.579, - &-0.582,-0.585,-0.588,-0.592,-0.595,-0.598,-0.601,-0.604,-0.607, - &-0.610,-0.613,-0.616,-0.619,-0.622,-0.624,-0.627,-0.630,-0.633, - &-0.636,-0.639,-0.642,-0.645,-0.647,-0.650,-0.653,-0.656,-0.659, - &-0.662,-0.664,-0.667,-0.670,-0.673,-0.675,-0.678,-0.681,-0.684, - &-0.686,-0.689,-0.692,-0.694,-0.697,-0.700,-0.702,-0.705,-0.708, - &-0.710,-0.713,-0.716,-0.718,-0.721,-0.723,-0.726,-0.729,-0.731, - &-0.734,-0.736,-0.739,-0.741,-0.744,-0.746,-0.749,-0.751,-0.754, - &-0.756,-0.759,-0.761,-0.764,-0.766,-0.768,-0.771,-0.773,-0.776, - &-0.778,-0.780,-0.783,-0.785,-0.787,-0.790,-0.792,-0.794,-0.797, - &-0.799,-0.801,-0.804,-0.806,-0.808,-0.810,-0.813,-0.815,-0.817, - &-0.819,-0.822,-0.824,-0.826,-0.828,-0.831,-0.833,-0.835,-0.837, - &-0.839,-0.841,-0.844,-0.846,-0.848,-0.850,-0.852,-0.854,-0.856, - &-0.858,-0.860,-0.863,-0.865,-0.867,-0.869,-0.871,-0.873,-0.875, - &-0.877,-0.879,-0.881,-0.883,-0.885,-0.887,-0.889,-0.891,-0.893, - &-0.895,-0.897,-0.899,-0.901,-0.903,-0.905,-0.907,-0.909,-0.911, - &-0.913,-0.915,-0.917,-0.919,-0.920,-0.922,-0.924,-0.926,-0.928, - &-0.930,-0.932,-0.934,-0.936,-0.938,-0.939,-0.941,-0.943,-0.945, - &-0.947,-0.949,-0.950,-0.952,-0.954,-0.956,-0.958,-0.960,-0.961, - &-0.963,-0.965,-0.967,-0.969,-0.970,-0.972,-0.974,-0.976,-0.977, - &-0.979,-0.981,-0.983,-0.984,-0.986,-0.988,-0.990,-0.991,-0.993, - &-0.995,-0.997,-0.998,-1.000,-1.002,-1.003,-1.005,-1.007,-1.008, - &-1.010,-1.012,-1.013,-1.015,-1.017,-1.019,-1.020,-1.022,-1.023, - &-1.025,-1.027,-1.028,-1.030,-1.032,-1.033,-1.035,-1.037,-1.038, - &-1.040,-1.041,-1.043,-1.045,-1.046,-1.048,-1.049,-1.051,-1.053, - &-1.054,-1.056,-1.057,-1.059,-1.061,-1.062,-1.064,-1.065,-1.067, - &-1.068,-1.070,-1.071,-1.073,-1.075,-1.076,-1.078,-1.079,-1.081, - &-1.082,-1.084,-1.085,-1.087,-1.088,-1.090,-1.091,-1.093,-1.094, - &-1.096,-1.097,-1.099,-1.100,-1.102,-1.103,-1.105,-1.106,-1.108, - &-1.109,-1.111,-1.112,-1.114,-1.115,-1.116,-1.118,-1.119,-1.121, - &-1.122,-1.124,-1.125,-1.127,-1.128,-1.129,-1.131,-1.132,-1.134, - &-1.135,-1.137,-1.138,-1.139,-1.141,-1.142,-1.144,-1.145,-1.146, - &-1.148,-1.149,-1.151,-1.152,-1.153,-1.155,-1.156,-1.158,-1.159, - &-1.160,-1.162,-1.163,-1.164,-1.166,-1.167,-1.168,-1.170,-1.171, - &-1.173,-1.174,-1.175,-1.177,-1.178,-1.179,-1.181,-1.182,-1.183, - &-1.185,-1.186,-1.187,-1.189,-1.190,-1.191,-1.193,-1.194,-1.195, - &-1.197,-1.198,-1.199,-1.200,-1.202,-1.203,-1.204,-1.206,-1.207, - &-1.208,-1.210,-1.211,-1.212,-1.226,-1.238,-1.251,-1.263,-1.275, - &-1.287,-1.298,-1.310,-1.321,-1.333,-1.344,-1.355,-1.365,-1.376, - &-1.387,-1.397,-1.407,-1.417,-1.427,-1.437,-1.447,-1.457,-1.467, - &-1.476,-1.486,-1.495,-1.505,-1.514,-1.523,-1.532,-1.541,-1.550, - &-1.559,-1.567,-1.576,-1.585,-1.593,-1.602,-1.610,-1.619,-1.627, - &-1.635,-1.643,-1.651,-1.659,-1.667,-1.675,-1.683,-1.691,-1.699, - &-1.707,-1.715,-1.722,-1.730,-1.737,-1.745,-1.752,-1.760,-1.767, - &-1.775,-1.782,-1.789,-1.797,-1.804,-1.811,-1.818,-1.825,-1.832, - &-1.840,-1.847,-1.854,-1.861,-1.867,-1.874,-1.881,-1.888,-1.895, - &-1.902,-1.908,-1.915,-1.922,-1.929,-1.935,-1.942,-1.948,-1.955, - &-1.962,-1.968,-1.975,-1.981,-1.988,-1.994,-2.000,-2.007,-2.013, - &-2.020,-2.026,-2.032,-2.039,-2.045,-2.051,-2.057,-2.064,-2.070, - &-2.076,-2.082,-2.088,-2.094,-2.100,-2.107,-2.113,-2.119,-2.125, - &-2.131,-2.137,-2.143,-2.149,-2.155,-2.161,-2.167,-2.173,-2.179, - &-2.184,-2.190,-2.196,-2.202,-2.208,-2.214,-2.220,-2.225,-2.231, - &-2.237,-2.243,-2.248,-2.254,-2.260,-2.266,-2.271,-2.277,-2.283, - &-2.288,-2.294,-2.300,-2.305,-2.311,-2.317,-2.322,-2.328,-2.333, - &-2.339,-2.345,-2.350,-2.356,-2.361,-2.367,-2.372,-2.378,-2.383, - &-2.389,-2.394,-2.400 - & /) -! -! *** NH4Cl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC06M_223 = (/ - &-0.049,-0.106,-0.133,-0.151,-0.166,-0.177,-0.187,-0.195,-0.202, - &-0.208,-0.214,-0.219,-0.224,-0.228,-0.231,-0.235,-0.238,-0.241, - &-0.244,-0.246,-0.249,-0.251,-0.253,-0.255,-0.257,-0.259,-0.260, - &-0.262,-0.264,-0.265,-0.266,-0.268,-0.269,-0.270,-0.271,-0.272, - &-0.273,-0.274,-0.275,-0.276,-0.277,-0.278,-0.278,-0.279,-0.280, - &-0.281,-0.281,-0.282,-0.283,-0.283,-0.284,-0.284,-0.285,-0.285, - &-0.286,-0.287,-0.287,-0.288,-0.288,-0.288,-0.289,-0.289,-0.290, - &-0.290,-0.291,-0.291,-0.291,-0.292,-0.292,-0.292,-0.293,-0.293, - &-0.293,-0.294,-0.294,-0.294,-0.294,-0.295,-0.295,-0.295,-0.295, - &-0.296,-0.296,-0.296,-0.296,-0.296,-0.296,-0.297,-0.297,-0.297, - &-0.297,-0.297,-0.297,-0.297,-0.297,-0.297,-0.297,-0.297,-0.297, - &-0.297,-0.297,-0.297,-0.297,-0.297,-0.297,-0.297,-0.297,-0.297, - &-0.297,-0.297,-0.297,-0.297,-0.297,-0.297,-0.297,-0.297,-0.297, - &-0.296,-0.296,-0.296,-0.296,-0.296,-0.296,-0.296,-0.296,-0.296, - &-0.295,-0.295,-0.295,-0.295,-0.295,-0.295,-0.295,-0.294,-0.294, - &-0.294,-0.294,-0.294,-0.294,-0.294,-0.293,-0.293,-0.293,-0.293, - &-0.293,-0.293,-0.292,-0.292,-0.292,-0.292,-0.292,-0.292,-0.291, - &-0.291,-0.291,-0.291,-0.291,-0.291,-0.290,-0.290,-0.290,-0.290, - &-0.290,-0.290,-0.289,-0.289,-0.289,-0.289,-0.289,-0.288,-0.288, - &-0.288,-0.288,-0.288,-0.288,-0.287,-0.287,-0.287,-0.287,-0.287, - &-0.287,-0.286,-0.286,-0.286,-0.286,-0.286,-0.286,-0.285,-0.285, - &-0.285,-0.285,-0.285,-0.284,-0.284,-0.284,-0.284,-0.284,-0.284, - &-0.283,-0.283,-0.283,-0.283,-0.283,-0.283,-0.282,-0.282,-0.282, - &-0.282,-0.282,-0.282,-0.281,-0.281,-0.281,-0.281,-0.281,-0.281, - &-0.280,-0.280,-0.280,-0.280,-0.280,-0.280,-0.279,-0.279,-0.279, - &-0.279,-0.279,-0.279,-0.278,-0.278,-0.278,-0.278,-0.278,-0.278, - &-0.277,-0.277,-0.277,-0.277,-0.277,-0.277,-0.276,-0.276,-0.276, - &-0.276,-0.276,-0.276,-0.276,-0.275,-0.275,-0.275,-0.275,-0.275, - &-0.275,-0.275,-0.274,-0.274,-0.274,-0.274,-0.274,-0.274,-0.273, - &-0.273,-0.273,-0.273,-0.273,-0.273,-0.273,-0.272,-0.272,-0.272, - &-0.272,-0.272,-0.272,-0.272,-0.271,-0.271,-0.271,-0.271,-0.271, - &-0.271,-0.271,-0.271,-0.270,-0.270,-0.270,-0.270,-0.270,-0.270, - &-0.270,-0.270,-0.269,-0.269,-0.269,-0.269,-0.269,-0.269,-0.269, - &-0.268,-0.268,-0.268,-0.268,-0.268,-0.268,-0.268,-0.268,-0.268, - &-0.267,-0.267,-0.267,-0.267,-0.267,-0.267,-0.267,-0.267,-0.266, - &-0.266,-0.266,-0.266,-0.266,-0.266,-0.266,-0.266,-0.266,-0.265, - &-0.265,-0.265,-0.265,-0.265,-0.265,-0.265,-0.265,-0.265,-0.265, - &-0.264,-0.264,-0.264,-0.264,-0.264,-0.264,-0.264,-0.264,-0.264, - &-0.264,-0.263,-0.263,-0.263,-0.263,-0.263,-0.263,-0.263,-0.263, - &-0.263,-0.263,-0.263,-0.262,-0.262,-0.262,-0.262,-0.262,-0.262, - &-0.262,-0.262,-0.262,-0.262,-0.262,-0.262,-0.261,-0.261,-0.261, - &-0.261,-0.261,-0.261,-0.261,-0.261,-0.261,-0.261,-0.261,-0.261, - &-0.261,-0.260,-0.260,-0.260,-0.260,-0.260,-0.260,-0.260,-0.260, - &-0.260,-0.260,-0.260,-0.260,-0.260,-0.260,-0.259,-0.259,-0.259, - &-0.259,-0.259,-0.259,-0.259,-0.258,-0.258,-0.257,-0.257,-0.257, - &-0.256,-0.256,-0.256,-0.256,-0.256,-0.255,-0.255,-0.256,-0.256, - &-0.256,-0.256,-0.256,-0.256,-0.257,-0.257,-0.257,-0.258,-0.258, - &-0.259,-0.259,-0.260,-0.260,-0.261,-0.262,-0.262,-0.263,-0.264, - &-0.265,-0.265,-0.266,-0.267,-0.268,-0.269,-0.270,-0.271,-0.272, - &-0.273,-0.274,-0.275,-0.277,-0.278,-0.279,-0.280,-0.281,-0.283, - &-0.284,-0.285,-0.287,-0.288,-0.289,-0.291,-0.292,-0.294,-0.295, - &-0.297,-0.298,-0.300,-0.301,-0.303,-0.304,-0.306,-0.308,-0.309, - &-0.311,-0.313,-0.314,-0.316,-0.318,-0.320,-0.321,-0.323,-0.325, - &-0.327,-0.329,-0.331,-0.332,-0.334,-0.336,-0.338,-0.340,-0.342, - &-0.344,-0.346,-0.348,-0.350,-0.352,-0.354,-0.356,-0.358,-0.360, - &-0.362,-0.364,-0.367,-0.369,-0.371,-0.373,-0.375,-0.377,-0.379, - &-0.382,-0.384,-0.386,-0.388,-0.391,-0.393,-0.395,-0.397,-0.400, - &-0.402,-0.404,-0.406,-0.409,-0.411,-0.413,-0.416,-0.418,-0.421, - &-0.423,-0.425,-0.428,-0.430,-0.433,-0.435,-0.437,-0.440,-0.442, - &-0.445,-0.447,-0.450,-0.452,-0.455,-0.457,-0.460,-0.462,-0.465, - &-0.467,-0.470,-0.472,-0.475,-0.477,-0.480,-0.483,-0.485,-0.488, - &-0.490,-0.493,-0.496,-0.498,-0.501,-0.503,-0.506,-0.509,-0.511, - &-0.514,-0.517,-0.519 - & /) -! -! *** (2H,SO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC07M_223 = (/ - &-0.100,-0.219,-0.279,-0.321,-0.354,-0.382,-0.406,-0.427,-0.446, - &-0.463,-0.479,-0.493,-0.506,-0.519,-0.531,-0.542,-0.552,-0.562, - &-0.572,-0.581,-0.590,-0.598,-0.606,-0.614,-0.622,-0.629,-0.636, - &-0.643,-0.650,-0.656,-0.662,-0.668,-0.674,-0.680,-0.686,-0.692, - &-0.697,-0.702,-0.707,-0.713,-0.718,-0.722,-0.727,-0.732,-0.737, - &-0.741,-0.746,-0.750,-0.754,-0.759,-0.763,-0.767,-0.771,-0.775, - &-0.779,-0.783,-0.787,-0.791,-0.794,-0.798,-0.802,-0.805,-0.809, - &-0.813,-0.816,-0.820,-0.823,-0.826,-0.830,-0.833,-0.836,-0.840, - &-0.843,-0.846,-0.849,-0.852,-0.855,-0.859,-0.862,-0.865,-0.868, - &-0.871,-0.874,-0.877,-0.879,-0.882,-0.885,-0.888,-0.891,-0.894, - &-0.897,-0.899,-0.902,-0.905,-0.908,-0.910,-0.913,-0.916,-0.918, - &-0.921,-0.924,-0.926,-0.929,-0.932,-0.934,-0.937,-0.939,-0.942, - &-0.944,-0.947,-0.949,-0.952,-0.954,-0.957,-0.959,-0.962,-0.964, - &-0.967,-0.969,-0.971,-0.974,-0.976,-0.978,-0.981,-0.983,-0.985, - &-0.988,-0.990,-0.992,-0.995,-0.997,-0.999,-1.002,-1.004,-1.006, - &-1.008,-1.011,-1.013,-1.015,-1.017,-1.019,-1.022,-1.024,-1.026, - &-1.028,-1.030,-1.032,-1.034,-1.037,-1.039,-1.041,-1.043,-1.045, - &-1.047,-1.049,-1.051,-1.053,-1.056,-1.058,-1.060,-1.062,-1.064, - &-1.066,-1.068,-1.070,-1.072,-1.074,-1.076,-1.078,-1.080,-1.082, - &-1.084,-1.086,-1.088,-1.090,-1.092,-1.094,-1.096,-1.098,-1.099, - &-1.101,-1.103,-1.105,-1.107,-1.109,-1.111,-1.113,-1.115,-1.117, - &-1.119,-1.121,-1.122,-1.124,-1.126,-1.128,-1.130,-1.132,-1.134, - &-1.135,-1.137,-1.139,-1.141,-1.143,-1.145,-1.146,-1.148,-1.150, - &-1.152,-1.154,-1.156,-1.157,-1.159,-1.161,-1.163,-1.165,-1.166, - &-1.168,-1.170,-1.172,-1.173,-1.175,-1.177,-1.179,-1.180,-1.182, - &-1.184,-1.186,-1.187,-1.189,-1.191,-1.193,-1.194,-1.196,-1.198, - &-1.200,-1.201,-1.203,-1.205,-1.206,-1.208,-1.210,-1.212,-1.213, - &-1.215,-1.217,-1.218,-1.220,-1.222,-1.223,-1.225,-1.227,-1.228, - &-1.230,-1.232,-1.233,-1.235,-1.237,-1.238,-1.240,-1.242,-1.243, - &-1.245,-1.247,-1.248,-1.250,-1.251,-1.253,-1.255,-1.256,-1.258, - &-1.260,-1.261,-1.263,-1.264,-1.266,-1.268,-1.269,-1.271,-1.273, - &-1.274,-1.276,-1.277,-1.279,-1.280,-1.282,-1.284,-1.285,-1.287, - &-1.288,-1.290,-1.292,-1.293,-1.295,-1.296,-1.298,-1.299,-1.301, - &-1.303,-1.304,-1.306,-1.307,-1.309,-1.310,-1.312,-1.313,-1.315, - &-1.317,-1.318,-1.320,-1.321,-1.323,-1.324,-1.326,-1.327,-1.329, - &-1.330,-1.332,-1.333,-1.335,-1.337,-1.338,-1.340,-1.341,-1.343, - &-1.344,-1.346,-1.347,-1.349,-1.350,-1.352,-1.353,-1.355,-1.356, - &-1.358,-1.359,-1.361,-1.362,-1.364,-1.365,-1.367,-1.368,-1.370, - &-1.371,-1.373,-1.374,-1.376,-1.377,-1.379,-1.380,-1.381,-1.383, - &-1.384,-1.386,-1.387,-1.389,-1.390,-1.392,-1.393,-1.395,-1.396, - &-1.398,-1.399,-1.401,-1.402,-1.403,-1.405,-1.406,-1.408,-1.409, - &-1.411,-1.412,-1.414,-1.415,-1.416,-1.418,-1.419,-1.421,-1.422, - &-1.424,-1.425,-1.427,-1.428,-1.429,-1.431,-1.432,-1.434,-1.435, - &-1.437,-1.438,-1.439,-1.441,-1.442,-1.444,-1.445,-1.447,-1.448, - &-1.449,-1.451,-1.452,-1.454,-1.469,-1.483,-1.497,-1.510,-1.524, - &-1.537,-1.551,-1.564,-1.578,-1.591,-1.604,-1.617,-1.630,-1.643, - &-1.656,-1.669,-1.681,-1.694,-1.707,-1.719,-1.732,-1.744,-1.756, - &-1.769,-1.781,-1.793,-1.806,-1.818,-1.830,-1.842,-1.854,-1.866, - &-1.878,-1.890,-1.902,-1.914,-1.925,-1.937,-1.949,-1.961,-1.972, - &-1.984,-1.996,-2.007,-2.019,-2.030,-2.042,-2.053,-2.065,-2.076, - &-2.087,-2.099,-2.110,-2.121,-2.133,-2.144,-2.155,-2.166,-2.178, - &-2.189,-2.200,-2.211,-2.222,-2.233,-2.244,-2.255,-2.266,-2.277, - &-2.288,-2.299,-2.310,-2.321,-2.332,-2.343,-2.354,-2.365,-2.375, - &-2.386,-2.397,-2.408,-2.419,-2.429,-2.440,-2.451,-2.461,-2.472, - &-2.483,-2.494,-2.504,-2.515,-2.525,-2.536,-2.547,-2.557,-2.568, - &-2.578,-2.589,-2.599,-2.610,-2.620,-2.631,-2.641,-2.652,-2.662, - &-2.673,-2.683,-2.693,-2.704,-2.714,-2.725,-2.735,-2.745,-2.756, - &-2.766,-2.776,-2.787,-2.797,-2.807,-2.817,-2.828,-2.838,-2.848, - &-2.858,-2.869,-2.879,-2.889,-2.899,-2.909,-2.920,-2.930,-2.940, - &-2.950,-2.960,-2.970,-2.980,-2.991,-3.001,-3.011,-3.021,-3.031, - &-3.041,-3.051,-3.061,-3.071,-3.081,-3.091,-3.101,-3.111,-3.121, - &-3.131,-3.141,-3.151,-3.161,-3.171,-3.181,-3.191,-3.201,-3.211, - &-3.221,-3.231,-3.241 - & /) -! -! *** (H,HSO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC08M_223 = (/ - &-0.047,-0.091,-0.109,-0.119,-0.125,-0.128,-0.130,-0.131,-0.130, - &-0.129,-0.128,-0.125,-0.122,-0.119,-0.115,-0.111,-0.107,-0.102, - &-0.097,-0.092,-0.086,-0.080,-0.074,-0.068,-0.062,-0.055,-0.048, - &-0.041,-0.034,-0.027,-0.019,-0.012,-0.004, 0.004, 0.012, 0.020, - & 0.028, 0.037, 0.045, 0.054, 0.063, 0.071, 0.080, 0.089, 0.098, - & 0.108, 0.117, 0.126, 0.136, 0.145, 0.155, 0.164, 0.174, 0.184, - & 0.193, 0.203, 0.213, 0.223, 0.233, 0.243, 0.253, 0.263, 0.274, - & 0.284, 0.294, 0.304, 0.315, 0.325, 0.336, 0.346, 0.357, 0.368, - & 0.378, 0.389, 0.400, 0.411, 0.421, 0.432, 0.443, 0.455, 0.466, - & 0.477, 0.488, 0.499, 0.511, 0.522, 0.534, 0.545, 0.557, 0.568, - & 0.580, 0.592, 0.604, 0.615, 0.627, 0.639, 0.651, 0.664, 0.676, - & 0.688, 0.700, 0.712, 0.725, 0.737, 0.749, 0.762, 0.774, 0.787, - & 0.799, 0.812, 0.824, 0.837, 0.849, 0.862, 0.875, 0.887, 0.900, - & 0.913, 0.925, 0.938, 0.951, 0.963, 0.976, 0.989, 1.001, 1.014, - & 1.027, 1.039, 1.052, 1.064, 1.077, 1.090, 1.102, 1.115, 1.127, - & 1.140, 1.152, 1.165, 1.177, 1.190, 1.202, 1.215, 1.227, 1.239, - & 1.252, 1.264, 1.276, 1.289, 1.301, 1.313, 1.325, 1.338, 1.350, - & 1.362, 1.374, 1.386, 1.398, 1.410, 1.422, 1.434, 1.446, 1.458, - & 1.470, 1.482, 1.494, 1.506, 1.518, 1.530, 1.541, 1.553, 1.565, - & 1.577, 1.588, 1.600, 1.612, 1.623, 1.635, 1.646, 1.658, 1.669, - & 1.681, 1.692, 1.704, 1.715, 1.727, 1.738, 1.749, 1.761, 1.772, - & 1.783, 1.794, 1.806, 1.817, 1.828, 1.839, 1.850, 1.861, 1.872, - & 1.883, 1.894, 1.905, 1.916, 1.927, 1.938, 1.949, 1.960, 1.971, - & 1.982, 1.992, 2.003, 2.014, 2.025, 2.035, 2.046, 2.057, 2.067, - & 2.078, 2.088, 2.099, 2.109, 2.120, 2.130, 2.141, 2.151, 2.162, - & 2.172, 2.182, 2.193, 2.203, 2.213, 2.224, 2.234, 2.244, 2.254, - & 2.265, 2.275, 2.285, 2.295, 2.305, 2.315, 2.325, 2.335, 2.345, - & 2.355, 2.365, 2.375, 2.385, 2.395, 2.405, 2.415, 2.424, 2.434, - & 2.444, 2.454, 2.464, 2.473, 2.483, 2.493, 2.502, 2.512, 2.522, - & 2.531, 2.541, 2.550, 2.560, 2.569, 2.579, 2.588, 2.598, 2.607, - & 2.617, 2.626, 2.635, 2.645, 2.654, 2.663, 2.673, 2.682, 2.691, - & 2.701, 2.710, 2.719, 2.728, 2.737, 2.746, 2.756, 2.765, 2.774, - & 2.783, 2.792, 2.801, 2.810, 2.819, 2.828, 2.837, 2.846, 2.855, - & 2.864, 2.873, 2.881, 2.890, 2.899, 2.908, 2.917, 2.925, 2.934, - & 2.943, 2.952, 2.960, 2.969, 2.978, 2.986, 2.995, 3.004, 3.012, - & 3.021, 3.029, 3.038, 3.047, 3.055, 3.064, 3.072, 3.080, 3.089, - & 3.097, 3.106, 3.114, 3.123, 3.131, 3.139, 3.148, 3.156, 3.164, - & 3.173, 3.181, 3.189, 3.197, 3.206, 3.214, 3.222, 3.230, 3.238, - & 3.246, 3.255, 3.263, 3.271, 3.279, 3.287, 3.295, 3.303, 3.311, - & 3.319, 3.327, 3.335, 3.343, 3.351, 3.359, 3.367, 3.375, 3.383, - & 3.390, 3.398, 3.406, 3.414, 3.422, 3.430, 3.437, 3.445, 3.453, - & 3.461, 3.468, 3.476, 3.484, 3.492, 3.499, 3.507, 3.515, 3.522, - & 3.530, 3.537, 3.545, 3.553, 3.560, 3.568, 3.575, 3.583, 3.590, - & 3.598, 3.605, 3.613, 3.620, 3.628, 3.635, 3.642, 3.650, 3.657, - & 3.665, 3.672, 3.679, 3.687, 3.765, 3.837, 3.907, 3.976, 4.044, - & 4.111, 4.176, 4.241, 4.305, 4.368, 4.429, 4.490, 4.550, 4.609, - & 4.668, 4.725, 4.782, 4.838, 4.893, 4.947, 5.001, 5.054, 5.106, - & 5.157, 5.208, 5.259, 5.308, 5.357, 5.406, 5.453, 5.501, 5.547, - & 5.593, 5.639, 5.684, 5.729, 5.773, 5.816, 5.859, 5.902, 5.944, - & 5.986, 6.027, 6.068, 6.108, 6.148, 6.188, 6.227, 6.265, 6.304, - & 6.342, 6.379, 6.416, 6.453, 6.490, 6.526, 6.562, 6.597, 6.632, - & 6.667, 6.701, 6.735, 6.769, 6.803, 6.836, 6.869, 6.901, 6.934, - & 6.966, 6.997, 7.029, 7.060, 7.091, 7.122, 7.152, 7.182, 7.212, - & 7.242, 7.271, 7.300, 7.329, 7.358, 7.386, 7.415, 7.443, 7.470, - & 7.498, 7.525, 7.552, 7.579, 7.606, 7.633, 7.659, 7.685, 7.711, - & 7.737, 7.762, 7.788, 7.813, 7.838, 7.862, 7.887, 7.912, 7.936, - & 7.960, 7.984, 8.008, 8.031, 8.055, 8.078, 8.101, 8.124, 8.147, - & 8.169, 8.192, 8.214, 8.236, 8.258, 8.280, 8.302, 8.323, 8.345, - & 8.366, 8.387, 8.408, 8.429, 8.450, 8.470, 8.491, 8.511, 8.531, - & 8.552, 8.572, 8.591, 8.611, 8.631, 8.650, 8.670, 8.689, 8.708, - & 8.727, 8.746, 8.765, 8.783, 8.802, 8.820, 8.839, 8.857, 8.875, - & 8.893, 8.911, 8.929, 8.946, 8.964, 8.981, 8.999, 9.016, 9.033, - & 9.050, 9.067, 9.084 - & /) -! -! *** NH4HSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC09M_223 = (/ - &-0.049,-0.104,-0.131,-0.149,-0.163,-0.174,-0.184,-0.192,-0.199, - &-0.205,-0.211,-0.216,-0.220,-0.224,-0.228,-0.231,-0.234,-0.236, - &-0.238,-0.240,-0.242,-0.244,-0.245,-0.247,-0.248,-0.248,-0.249, - &-0.250,-0.250,-0.250,-0.251,-0.251,-0.250,-0.250,-0.250,-0.249, - &-0.249,-0.248,-0.247,-0.247,-0.246,-0.245,-0.243,-0.242,-0.241, - &-0.240,-0.238,-0.237,-0.235,-0.233,-0.232,-0.230,-0.228,-0.226, - &-0.224,-0.222,-0.220,-0.218,-0.216,-0.214,-0.211,-0.209,-0.207, - &-0.204,-0.202,-0.199,-0.197,-0.194,-0.192,-0.189,-0.187,-0.184, - &-0.181,-0.178,-0.176,-0.173,-0.170,-0.167,-0.164,-0.161,-0.158, - &-0.155,-0.152,-0.149,-0.146,-0.142,-0.139,-0.136,-0.133,-0.129, - &-0.126,-0.123,-0.119,-0.116,-0.112,-0.109,-0.105,-0.102,-0.098, - &-0.095,-0.091,-0.088,-0.084,-0.080,-0.077,-0.073,-0.069,-0.066, - &-0.062,-0.058,-0.055,-0.051,-0.047,-0.043,-0.039,-0.036,-0.032, - &-0.028,-0.024,-0.020,-0.017,-0.013,-0.009,-0.005,-0.001, 0.002, - & 0.006, 0.010, 0.014, 0.018, 0.021, 0.025, 0.029, 0.033, 0.037, - & 0.040, 0.044, 0.048, 0.052, 0.055, 0.059, 0.063, 0.067, 0.070, - & 0.074, 0.078, 0.081, 0.085, 0.089, 0.093, 0.096, 0.100, 0.104, - & 0.107, 0.111, 0.114, 0.118, 0.122, 0.125, 0.129, 0.133, 0.136, - & 0.140, 0.143, 0.147, 0.150, 0.154, 0.157, 0.161, 0.165, 0.168, - & 0.172, 0.175, 0.178, 0.182, 0.185, 0.189, 0.192, 0.196, 0.199, - & 0.203, 0.206, 0.209, 0.213, 0.216, 0.220, 0.223, 0.226, 0.230, - & 0.233, 0.236, 0.240, 0.243, 0.246, 0.250, 0.253, 0.256, 0.259, - & 0.263, 0.266, 0.269, 0.272, 0.276, 0.279, 0.282, 0.285, 0.289, - & 0.292, 0.295, 0.298, 0.301, 0.304, 0.308, 0.311, 0.314, 0.317, - & 0.320, 0.323, 0.326, 0.329, 0.332, 0.336, 0.339, 0.342, 0.345, - & 0.348, 0.351, 0.354, 0.357, 0.360, 0.363, 0.366, 0.369, 0.372, - & 0.375, 0.378, 0.381, 0.384, 0.387, 0.390, 0.393, 0.395, 0.398, - & 0.401, 0.404, 0.407, 0.410, 0.413, 0.416, 0.419, 0.421, 0.424, - & 0.427, 0.430, 0.433, 0.436, 0.438, 0.441, 0.444, 0.447, 0.450, - & 0.452, 0.455, 0.458, 0.461, 0.464, 0.466, 0.469, 0.472, 0.475, - & 0.477, 0.480, 0.483, 0.485, 0.488, 0.491, 0.493, 0.496, 0.499, - & 0.501, 0.504, 0.507, 0.509, 0.512, 0.515, 0.517, 0.520, 0.523, - & 0.525, 0.528, 0.530, 0.533, 0.536, 0.538, 0.541, 0.543, 0.546, - & 0.548, 0.551, 0.554, 0.556, 0.559, 0.561, 0.564, 0.566, 0.569, - & 0.571, 0.574, 0.576, 0.579, 0.581, 0.584, 0.586, 0.589, 0.591, - & 0.594, 0.596, 0.598, 0.601, 0.603, 0.606, 0.608, 0.611, 0.613, - & 0.615, 0.618, 0.620, 0.623, 0.625, 0.627, 0.630, 0.632, 0.635, - & 0.637, 0.639, 0.642, 0.644, 0.646, 0.649, 0.651, 0.653, 0.656, - & 0.658, 0.660, 0.663, 0.665, 0.667, 0.670, 0.672, 0.674, 0.676, - & 0.679, 0.681, 0.683, 0.685, 0.688, 0.690, 0.692, 0.694, 0.697, - & 0.699, 0.701, 0.703, 0.706, 0.708, 0.710, 0.712, 0.714, 0.717, - & 0.719, 0.721, 0.723, 0.725, 0.728, 0.730, 0.732, 0.734, 0.736, - & 0.738, 0.741, 0.743, 0.745, 0.747, 0.749, 0.751, 0.753, 0.756, - & 0.758, 0.760, 0.762, 0.764, 0.766, 0.768, 0.770, 0.772, 0.774, - & 0.777, 0.779, 0.781, 0.783, 0.805, 0.825, 0.845, 0.864, 0.883, - & 0.901, 0.920, 0.938, 0.955, 0.973, 0.990, 1.006, 1.023, 1.039, - & 1.055, 1.071, 1.086, 1.101, 1.116, 1.131, 1.145, 1.160, 1.174, - & 1.188, 1.201, 1.215, 1.228, 1.241, 1.254, 1.266, 1.279, 1.291, - & 1.303, 1.315, 1.327, 1.339, 1.350, 1.361, 1.372, 1.383, 1.394, - & 1.405, 1.416, 1.426, 1.436, 1.446, 1.456, 1.466, 1.476, 1.486, - & 1.495, 1.505, 1.514, 1.523, 1.532, 1.541, 1.550, 1.559, 1.567, - & 1.576, 1.584, 1.592, 1.601, 1.609, 1.617, 1.625, 1.632, 1.640, - & 1.648, 1.655, 1.663, 1.670, 1.677, 1.684, 1.692, 1.699, 1.706, - & 1.712, 1.719, 1.726, 1.732, 1.739, 1.746, 1.752, 1.758, 1.765, - & 1.771, 1.777, 1.783, 1.789, 1.795, 1.801, 1.806, 1.812, 1.818, - & 1.823, 1.829, 1.834, 1.840, 1.845, 1.850, 1.856, 1.861, 1.866, - & 1.871, 1.876, 1.881, 1.886, 1.891, 1.896, 1.900, 1.905, 1.910, - & 1.914, 1.919, 1.923, 1.928, 1.932, 1.937, 1.941, 1.945, 1.949, - & 1.953, 1.958, 1.962, 1.966, 1.970, 1.974, 1.978, 1.981, 1.985, - & 1.989, 1.993, 1.996, 2.000, 2.004, 2.007, 2.011, 2.014, 2.018, - & 2.021, 2.025, 2.028, 2.031, 2.035, 2.038, 2.041, 2.044, 2.047, - & 2.050, 2.053, 2.056, 2.059, 2.062, 2.065, 2.068, 2.071, 2.074, - & 2.077, 2.080, 2.082 - & /) -! -! *** (H,NO3) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC10M_223 = (/ - &-0.048,-0.100,-0.123,-0.137,-0.147,-0.155,-0.161,-0.165,-0.169, - &-0.172,-0.174,-0.175,-0.177,-0.177,-0.178,-0.178,-0.178,-0.177, - &-0.177,-0.176,-0.175,-0.174,-0.173,-0.172,-0.171,-0.169,-0.168, - &-0.166,-0.165,-0.163,-0.161,-0.159,-0.157,-0.156,-0.154,-0.152, - &-0.150,-0.148,-0.146,-0.144,-0.141,-0.139,-0.137,-0.135,-0.133, - &-0.131,-0.129,-0.127,-0.124,-0.122,-0.120,-0.118,-0.116,-0.113, - &-0.111,-0.109,-0.107,-0.105,-0.102,-0.100,-0.098,-0.096,-0.094, - &-0.091,-0.089,-0.087,-0.085,-0.082,-0.080,-0.078,-0.076,-0.073, - &-0.071,-0.069,-0.067,-0.064,-0.062,-0.060,-0.057,-0.055,-0.052, - &-0.050,-0.048,-0.045,-0.043,-0.040,-0.038,-0.035,-0.033,-0.030, - &-0.027,-0.025,-0.022,-0.020,-0.017,-0.014,-0.012,-0.009,-0.006, - &-0.004,-0.001, 0.002, 0.005, 0.007, 0.010, 0.013, 0.016, 0.019, - & 0.021, 0.024, 0.027, 0.030, 0.033, 0.036, 0.039, 0.041, 0.044, - & 0.047, 0.050, 0.053, 0.056, 0.059, 0.062, 0.065, 0.068, 0.071, - & 0.073, 0.076, 0.079, 0.082, 0.085, 0.088, 0.091, 0.094, 0.097, - & 0.100, 0.103, 0.105, 0.108, 0.111, 0.114, 0.117, 0.120, 0.123, - & 0.126, 0.129, 0.131, 0.134, 0.137, 0.140, 0.143, 0.146, 0.149, - & 0.152, 0.154, 0.157, 0.160, 0.163, 0.166, 0.169, 0.171, 0.174, - & 0.177, 0.180, 0.183, 0.186, 0.188, 0.191, 0.194, 0.197, 0.200, - & 0.202, 0.205, 0.208, 0.211, 0.213, 0.216, 0.219, 0.222, 0.224, - & 0.227, 0.230, 0.233, 0.235, 0.238, 0.241, 0.244, 0.246, 0.249, - & 0.252, 0.254, 0.257, 0.260, 0.263, 0.265, 0.268, 0.271, 0.273, - & 0.276, 0.279, 0.281, 0.284, 0.287, 0.289, 0.292, 0.294, 0.297, - & 0.300, 0.302, 0.305, 0.308, 0.310, 0.313, 0.315, 0.318, 0.321, - & 0.323, 0.326, 0.328, 0.331, 0.333, 0.336, 0.339, 0.341, 0.344, - & 0.346, 0.349, 0.351, 0.354, 0.356, 0.359, 0.361, 0.364, 0.366, - & 0.369, 0.372, 0.374, 0.376, 0.379, 0.381, 0.384, 0.386, 0.389, - & 0.391, 0.394, 0.396, 0.399, 0.401, 0.404, 0.406, 0.409, 0.411, - & 0.413, 0.416, 0.418, 0.421, 0.423, 0.425, 0.428, 0.430, 0.433, - & 0.435, 0.437, 0.440, 0.442, 0.445, 0.447, 0.449, 0.452, 0.454, - & 0.456, 0.459, 0.461, 0.463, 0.466, 0.468, 0.470, 0.473, 0.475, - & 0.477, 0.480, 0.482, 0.484, 0.486, 0.489, 0.491, 0.493, 0.496, - & 0.498, 0.500, 0.502, 0.505, 0.507, 0.509, 0.511, 0.514, 0.516, - & 0.518, 0.520, 0.523, 0.525, 0.527, 0.529, 0.531, 0.534, 0.536, - & 0.538, 0.540, 0.542, 0.545, 0.547, 0.549, 0.551, 0.553, 0.555, - & 0.558, 0.560, 0.562, 0.564, 0.566, 0.568, 0.570, 0.573, 0.575, - & 0.577, 0.579, 0.581, 0.583, 0.585, 0.587, 0.590, 0.592, 0.594, - & 0.596, 0.598, 0.600, 0.602, 0.604, 0.606, 0.608, 0.610, 0.612, - & 0.614, 0.617, 0.619, 0.621, 0.623, 0.625, 0.627, 0.629, 0.631, - & 0.633, 0.635, 0.637, 0.639, 0.641, 0.643, 0.645, 0.647, 0.649, - & 0.651, 0.653, 0.655, 0.657, 0.659, 0.661, 0.663, 0.665, 0.667, - & 0.669, 0.671, 0.673, 0.674, 0.676, 0.678, 0.680, 0.682, 0.684, - & 0.686, 0.688, 0.690, 0.692, 0.694, 0.696, 0.698, 0.700, 0.701, - & 0.703, 0.705, 0.707, 0.709, 0.711, 0.713, 0.715, 0.716, 0.718, - & 0.720, 0.722, 0.724, 0.726, 0.746, 0.764, 0.781, 0.799, 0.816, - & 0.833, 0.849, 0.866, 0.882, 0.897, 0.913, 0.928, 0.943, 0.958, - & 0.972, 0.987, 1.001, 1.015, 1.028, 1.042, 1.055, 1.068, 1.081, - & 1.093, 1.106, 1.118, 1.130, 1.142, 1.154, 1.165, 1.177, 1.188, - & 1.199, 1.210, 1.221, 1.231, 1.242, 1.252, 1.262, 1.272, 1.282, - & 1.292, 1.301, 1.311, 1.320, 1.329, 1.338, 1.347, 1.356, 1.365, - & 1.374, 1.382, 1.391, 1.399, 1.407, 1.415, 1.423, 1.431, 1.439, - & 1.446, 1.454, 1.462, 1.469, 1.476, 1.483, 1.491, 1.498, 1.505, - & 1.511, 1.518, 1.525, 1.531, 1.538, 1.544, 1.551, 1.557, 1.563, - & 1.569, 1.576, 1.582, 1.587, 1.593, 1.599, 1.605, 1.610, 1.616, - & 1.622, 1.627, 1.632, 1.638, 1.643, 1.648, 1.653, 1.658, 1.663, - & 1.668, 1.673, 1.678, 1.683, 1.688, 1.692, 1.697, 1.701, 1.706, - & 1.710, 1.715, 1.719, 1.723, 1.728, 1.732, 1.736, 1.740, 1.744, - & 1.748, 1.752, 1.756, 1.760, 1.764, 1.768, 1.771, 1.775, 1.779, - & 1.782, 1.786, 1.789, 1.793, 1.796, 1.800, 1.803, 1.806, 1.810, - & 1.813, 1.816, 1.819, 1.822, 1.825, 1.828, 1.831, 1.834, 1.837, - & 1.840, 1.843, 1.846, 1.849, 1.852, 1.854, 1.857, 1.860, 1.862, - & 1.865, 1.867, 1.870, 1.872, 1.875, 1.877, 1.880, 1.882, 1.885, - & 1.887, 1.889, 1.891 - & /) -! -! *** (H,Cl) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC11M_223 = (/ - &-0.047,-0.093,-0.111,-0.121,-0.127,-0.131,-0.133,-0.134,-0.133, - &-0.132,-0.131,-0.128,-0.126,-0.123,-0.119,-0.115,-0.111,-0.107, - &-0.102,-0.098,-0.093,-0.088,-0.082,-0.077,-0.071,-0.065,-0.060, - &-0.054,-0.048,-0.041,-0.035,-0.029,-0.022,-0.016,-0.009,-0.003, - & 0.004, 0.011, 0.018, 0.025, 0.032, 0.038, 0.045, 0.053, 0.060, - & 0.067, 0.074, 0.081, 0.088, 0.095, 0.103, 0.110, 0.117, 0.124, - & 0.132, 0.139, 0.146, 0.154, 0.161, 0.168, 0.176, 0.183, 0.191, - & 0.198, 0.206, 0.213, 0.221, 0.228, 0.236, 0.243, 0.251, 0.258, - & 0.266, 0.274, 0.281, 0.289, 0.297, 0.305, 0.312, 0.320, 0.328, - & 0.336, 0.344, 0.352, 0.360, 0.368, 0.376, 0.384, 0.393, 0.401, - & 0.409, 0.417, 0.426, 0.434, 0.443, 0.451, 0.460, 0.468, 0.477, - & 0.485, 0.494, 0.503, 0.511, 0.520, 0.529, 0.538, 0.546, 0.555, - & 0.564, 0.573, 0.582, 0.591, 0.600, 0.608, 0.617, 0.626, 0.635, - & 0.644, 0.653, 0.662, 0.671, 0.680, 0.689, 0.698, 0.707, 0.716, - & 0.725, 0.734, 0.743, 0.752, 0.761, 0.770, 0.779, 0.788, 0.796, - & 0.805, 0.814, 0.823, 0.832, 0.841, 0.850, 0.859, 0.867, 0.876, - & 0.885, 0.894, 0.903, 0.911, 0.920, 0.929, 0.937, 0.946, 0.955, - & 0.964, 0.972, 0.981, 0.989, 0.998, 1.007, 1.015, 1.024, 1.032, - & 1.041, 1.049, 1.058, 1.066, 1.075, 1.083, 1.092, 1.100, 1.109, - & 1.117, 1.125, 1.134, 1.142, 1.150, 1.159, 1.167, 1.175, 1.183, - & 1.192, 1.200, 1.208, 1.216, 1.224, 1.233, 1.241, 1.249, 1.257, - & 1.265, 1.273, 1.281, 1.289, 1.297, 1.305, 1.313, 1.321, 1.329, - & 1.337, 1.345, 1.353, 1.361, 1.369, 1.377, 1.384, 1.392, 1.400, - & 1.408, 1.416, 1.423, 1.431, 1.439, 1.447, 1.454, 1.462, 1.470, - & 1.477, 1.485, 1.493, 1.500, 1.508, 1.515, 1.523, 1.530, 1.538, - & 1.545, 1.553, 1.560, 1.568, 1.575, 1.583, 1.590, 1.598, 1.605, - & 1.612, 1.620, 1.627, 1.634, 1.642, 1.649, 1.656, 1.663, 1.671, - & 1.678, 1.685, 1.692, 1.699, 1.707, 1.714, 1.721, 1.728, 1.735, - & 1.742, 1.749, 1.756, 1.763, 1.770, 1.778, 1.785, 1.791, 1.798, - & 1.805, 1.812, 1.819, 1.826, 1.833, 1.840, 1.847, 1.854, 1.861, - & 1.867, 1.874, 1.881, 1.888, 1.895, 1.901, 1.908, 1.915, 1.922, - & 1.928, 1.935, 1.942, 1.948, 1.955, 1.962, 1.968, 1.975, 1.981, - & 1.988, 1.995, 2.001, 2.008, 2.014, 2.021, 2.027, 2.034, 2.040, - & 2.047, 2.053, 2.060, 2.066, 2.072, 2.079, 2.085, 2.092, 2.098, - & 2.104, 2.111, 2.117, 2.123, 2.130, 2.136, 2.142, 2.148, 2.155, - & 2.161, 2.167, 2.173, 2.180, 2.186, 2.192, 2.198, 2.204, 2.210, - & 2.216, 2.223, 2.229, 2.235, 2.241, 2.247, 2.253, 2.259, 2.265, - & 2.271, 2.277, 2.283, 2.289, 2.295, 2.301, 2.307, 2.313, 2.319, - & 2.325, 2.331, 2.337, 2.343, 2.348, 2.354, 2.360, 2.366, 2.372, - & 2.378, 2.383, 2.389, 2.395, 2.401, 2.407, 2.412, 2.418, 2.424, - & 2.430, 2.435, 2.441, 2.447, 2.452, 2.458, 2.464, 2.469, 2.475, - & 2.481, 2.486, 2.492, 2.497, 2.503, 2.509, 2.514, 2.520, 2.525, - & 2.531, 2.536, 2.542, 2.547, 2.553, 2.558, 2.564, 2.569, 2.575, - & 2.580, 2.586, 2.591, 2.597, 2.602, 2.607, 2.613, 2.618, 2.624, - & 2.629, 2.634, 2.640, 2.645, 2.702, 2.754, 2.805, 2.855, 2.904, - & 2.953, 3.001, 3.048, 3.094, 3.139, 3.184, 3.228, 3.272, 3.315, - & 3.357, 3.399, 3.440, 3.480, 3.520, 3.559, 3.598, 3.636, 3.674, - & 3.711, 3.748, 3.784, 3.820, 3.855, 3.890, 3.925, 3.959, 3.992, - & 4.026, 4.058, 4.091, 4.123, 4.155, 4.186, 4.217, 4.247, 4.278, - & 4.308, 4.337, 4.366, 4.395, 4.424, 4.452, 4.480, 4.508, 4.535, - & 4.562, 4.589, 4.616, 4.642, 4.668, 4.694, 4.719, 4.745, 4.770, - & 4.794, 4.819, 4.843, 4.867, 4.891, 4.915, 4.938, 4.961, 4.984, - & 5.007, 5.029, 5.052, 5.074, 5.096, 5.117, 5.139, 5.160, 5.181, - & 5.202, 5.223, 5.244, 5.264, 5.285, 5.305, 5.324, 5.344, 5.364, - & 5.383, 5.402, 5.422, 5.441, 5.459, 5.478, 5.496, 5.515, 5.533, - & 5.551, 5.569, 5.587, 5.604, 5.622, 5.639, 5.656, 5.673, 5.690, - & 5.707, 5.724, 5.740, 5.757, 5.773, 5.789, 5.806, 5.821, 5.837, - & 5.853, 5.869, 5.884, 5.900, 5.915, 5.930, 5.945, 5.960, 5.975, - & 5.990, 6.004, 6.019, 6.033, 6.048, 6.062, 6.076, 6.090, 6.104, - & 6.118, 6.132, 6.145, 6.159, 6.172, 6.186, 6.199, 6.212, 6.225, - & 6.238, 6.251, 6.264, 6.277, 6.290, 6.302, 6.315, 6.327, 6.340, - & 6.352, 6.364, 6.377, 6.389, 6.401, 6.413, 6.424, 6.436, 6.448, - & 6.459, 6.471, 6.482 - & /) -! -! *** NaHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC12M_223 = (/ - &-0.048,-0.099,-0.122,-0.137,-0.148,-0.156,-0.163,-0.168,-0.172, - &-0.175,-0.178,-0.180,-0.182,-0.183,-0.184,-0.184,-0.184,-0.184, - &-0.184,-0.183,-0.182,-0.181,-0.180,-0.179,-0.177,-0.176,-0.174, - &-0.172,-0.170,-0.167,-0.165,-0.163,-0.160,-0.157,-0.155,-0.152, - &-0.149,-0.146,-0.143,-0.139,-0.136,-0.133,-0.129,-0.126,-0.122, - &-0.118,-0.115,-0.111,-0.107,-0.103,-0.099,-0.095,-0.091,-0.087, - &-0.083,-0.079,-0.075,-0.071,-0.066,-0.062,-0.058,-0.053,-0.049, - &-0.044,-0.040,-0.035,-0.031,-0.026,-0.022,-0.017,-0.012,-0.007, - &-0.003, 0.002, 0.007, 0.012, 0.017, 0.022, 0.027, 0.032, 0.037, - & 0.042, 0.047, 0.052, 0.058, 0.063, 0.068, 0.073, 0.079, 0.084, - & 0.090, 0.095, 0.101, 0.106, 0.112, 0.117, 0.123, 0.128, 0.134, - & 0.140, 0.146, 0.151, 0.157, 0.163, 0.169, 0.175, 0.180, 0.186, - & 0.192, 0.198, 0.204, 0.210, 0.216, 0.222, 0.228, 0.234, 0.240, - & 0.246, 0.252, 0.258, 0.264, 0.270, 0.276, 0.282, 0.288, 0.294, - & 0.300, 0.306, 0.312, 0.318, 0.323, 0.329, 0.335, 0.341, 0.347, - & 0.353, 0.359, 0.365, 0.371, 0.377, 0.383, 0.389, 0.394, 0.400, - & 0.406, 0.412, 0.418, 0.424, 0.429, 0.435, 0.441, 0.447, 0.453, - & 0.458, 0.464, 0.470, 0.476, 0.481, 0.487, 0.493, 0.498, 0.504, - & 0.510, 0.515, 0.521, 0.526, 0.532, 0.538, 0.543, 0.549, 0.554, - & 0.560, 0.565, 0.571, 0.576, 0.582, 0.587, 0.593, 0.598, 0.604, - & 0.609, 0.615, 0.620, 0.625, 0.631, 0.636, 0.641, 0.647, 0.652, - & 0.657, 0.663, 0.668, 0.673, 0.679, 0.684, 0.689, 0.694, 0.700, - & 0.705, 0.710, 0.715, 0.720, 0.726, 0.731, 0.736, 0.741, 0.746, - & 0.751, 0.756, 0.761, 0.766, 0.772, 0.777, 0.782, 0.787, 0.792, - & 0.797, 0.802, 0.807, 0.812, 0.817, 0.822, 0.826, 0.831, 0.836, - & 0.841, 0.846, 0.851, 0.856, 0.861, 0.866, 0.870, 0.875, 0.880, - & 0.885, 0.890, 0.894, 0.899, 0.904, 0.909, 0.914, 0.918, 0.923, - & 0.928, 0.932, 0.937, 0.942, 0.946, 0.951, 0.956, 0.960, 0.965, - & 0.970, 0.974, 0.979, 0.984, 0.988, 0.993, 0.997, 1.002, 1.006, - & 1.011, 1.015, 1.020, 1.024, 1.029, 1.033, 1.038, 1.042, 1.047, - & 1.051, 1.056, 1.060, 1.065, 1.069, 1.073, 1.078, 1.082, 1.087, - & 1.091, 1.095, 1.100, 1.104, 1.108, 1.113, 1.117, 1.121, 1.126, - & 1.130, 1.134, 1.138, 1.143, 1.147, 1.151, 1.155, 1.160, 1.164, - & 1.168, 1.172, 1.177, 1.181, 1.185, 1.189, 1.193, 1.197, 1.202, - & 1.206, 1.210, 1.214, 1.218, 1.222, 1.226, 1.230, 1.234, 1.238, - & 1.243, 1.247, 1.251, 1.255, 1.259, 1.263, 1.267, 1.271, 1.275, - & 1.279, 1.283, 1.287, 1.291, 1.295, 1.299, 1.303, 1.306, 1.310, - & 1.314, 1.318, 1.322, 1.326, 1.330, 1.334, 1.338, 1.342, 1.345, - & 1.349, 1.353, 1.357, 1.361, 1.365, 1.368, 1.372, 1.376, 1.380, - & 1.384, 1.387, 1.391, 1.395, 1.399, 1.403, 1.406, 1.410, 1.414, - & 1.418, 1.421, 1.425, 1.429, 1.432, 1.436, 1.440, 1.443, 1.447, - & 1.451, 1.454, 1.458, 1.462, 1.465, 1.469, 1.473, 1.476, 1.480, - & 1.484, 1.487, 1.491, 1.494, 1.498, 1.501, 1.505, 1.509, 1.512, - & 1.516, 1.519, 1.523, 1.526, 1.530, 1.533, 1.537, 1.540, 1.544, - & 1.547, 1.551, 1.554, 1.558, 1.595, 1.629, 1.662, 1.695, 1.727, - & 1.759, 1.790, 1.820, 1.850, 1.880, 1.909, 1.938, 1.966, 1.994, - & 2.022, 2.049, 2.076, 2.102, 2.128, 2.153, 2.179, 2.203, 2.228, - & 2.252, 2.276, 2.300, 2.323, 2.346, 2.368, 2.391, 2.413, 2.435, - & 2.456, 2.477, 2.498, 2.519, 2.539, 2.560, 2.580, 2.599, 2.619, - & 2.638, 2.657, 2.676, 2.695, 2.713, 2.731, 2.749, 2.767, 2.785, - & 2.802, 2.819, 2.836, 2.853, 2.870, 2.886, 2.902, 2.918, 2.934, - & 2.950, 2.966, 2.981, 2.997, 3.012, 3.027, 3.042, 3.056, 3.071, - & 3.085, 3.099, 3.114, 3.128, 3.141, 3.155, 3.169, 3.182, 3.195, - & 3.209, 3.222, 3.235, 3.247, 3.260, 3.273, 3.285, 3.298, 3.310, - & 3.322, 3.334, 3.346, 3.358, 3.369, 3.381, 3.392, 3.404, 3.415, - & 3.426, 3.437, 3.448, 3.459, 3.470, 3.481, 3.491, 3.502, 3.512, - & 3.523, 3.533, 3.543, 3.553, 3.563, 3.573, 3.583, 3.593, 3.603, - & 3.612, 3.622, 3.631, 3.640, 3.650, 3.659, 3.668, 3.677, 3.686, - & 3.695, 3.704, 3.713, 3.721, 3.730, 3.739, 3.747, 3.756, 3.764, - & 3.772, 3.781, 3.789, 3.797, 3.805, 3.813, 3.821, 3.829, 3.836, - & 3.844, 3.852, 3.860, 3.867, 3.875, 3.882, 3.889, 3.897, 3.904, - & 3.911, 3.919, 3.926, 3.933, 3.940, 3.947, 3.954, 3.961, 3.967, - & 3.974, 3.981, 3.988 - & /) -! -! *** (NH4)3H(SO4)2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC13M_223 = (/ - &-0.080,-0.174,-0.221,-0.254,-0.280,-0.302,-0.321,-0.337,-0.352, - &-0.365,-0.377,-0.388,-0.398,-0.408,-0.417,-0.425,-0.433,-0.440, - &-0.447,-0.454,-0.461,-0.467,-0.472,-0.478,-0.483,-0.488,-0.493, - &-0.498,-0.503,-0.507,-0.511,-0.515,-0.519,-0.523,-0.527,-0.530, - &-0.533,-0.537,-0.540,-0.543,-0.546,-0.549,-0.551,-0.554,-0.557, - &-0.559,-0.562,-0.564,-0.566,-0.569,-0.571,-0.573,-0.575,-0.577, - &-0.579,-0.580,-0.582,-0.584,-0.586,-0.587,-0.589,-0.590,-0.592, - &-0.593,-0.595,-0.596,-0.597,-0.599,-0.600,-0.601,-0.602,-0.603, - &-0.604,-0.605,-0.607,-0.608,-0.609,-0.609,-0.610,-0.611,-0.612, - &-0.613,-0.614,-0.614,-0.615,-0.616,-0.617,-0.617,-0.618,-0.619, - &-0.619,-0.620,-0.620,-0.621,-0.621,-0.622,-0.622,-0.623,-0.623, - &-0.624,-0.624,-0.624,-0.625,-0.625,-0.626,-0.626,-0.626,-0.626, - &-0.627,-0.627,-0.627,-0.628,-0.628,-0.628,-0.628,-0.628,-0.629, - &-0.629,-0.629,-0.629,-0.629,-0.629,-0.630,-0.630,-0.630,-0.630, - &-0.630,-0.630,-0.630,-0.630,-0.630,-0.631,-0.631,-0.631,-0.631, - &-0.631,-0.631,-0.631,-0.631,-0.631,-0.631,-0.631,-0.631,-0.631, - &-0.631,-0.631,-0.631,-0.631,-0.631,-0.631,-0.631,-0.632,-0.632, - &-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632, - &-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632, - &-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632, - &-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632, - &-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632, - &-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632, - &-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632, - &-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632, - &-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632, - &-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632, - &-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.632,-0.633,-0.633, - &-0.633,-0.633,-0.633,-0.633,-0.633,-0.633,-0.633,-0.633,-0.633, - &-0.633,-0.633,-0.633,-0.633,-0.633,-0.633,-0.633,-0.633,-0.633, - &-0.633,-0.633,-0.633,-0.633,-0.634,-0.634,-0.634,-0.634,-0.634, - &-0.634,-0.634,-0.634,-0.634,-0.634,-0.634,-0.634,-0.634,-0.634, - &-0.634,-0.634,-0.634,-0.634,-0.635,-0.635,-0.635,-0.635,-0.635, - &-0.635,-0.635,-0.635,-0.635,-0.635,-0.635,-0.635,-0.635,-0.635, - &-0.636,-0.636,-0.636,-0.636,-0.636,-0.636,-0.636,-0.636,-0.636, - &-0.636,-0.636,-0.636,-0.637,-0.637,-0.637,-0.637,-0.637,-0.637, - &-0.637,-0.637,-0.637,-0.637,-0.637,-0.638,-0.638,-0.638,-0.638, - &-0.638,-0.638,-0.638,-0.638,-0.638,-0.638,-0.639,-0.639,-0.639, - &-0.639,-0.639,-0.639,-0.639,-0.639,-0.639,-0.639,-0.640,-0.640, - &-0.640,-0.640,-0.640,-0.640,-0.640,-0.640,-0.640,-0.641,-0.641, - &-0.641,-0.641,-0.641,-0.641,-0.641,-0.641,-0.642,-0.642,-0.642, - &-0.642,-0.642,-0.642,-0.642,-0.642,-0.643,-0.643,-0.643,-0.643, - &-0.643,-0.643,-0.643,-0.643,-0.644,-0.644,-0.644,-0.644,-0.644, - &-0.644,-0.644,-0.645,-0.645,-0.645,-0.645,-0.645,-0.645,-0.645, - &-0.646,-0.646,-0.646,-0.646,-0.648,-0.649,-0.651,-0.652,-0.654, - &-0.656,-0.658,-0.660,-0.662,-0.664,-0.666,-0.668,-0.670,-0.673, - &-0.675,-0.677,-0.680,-0.682,-0.685,-0.687,-0.690,-0.693,-0.695, - &-0.698,-0.701,-0.704,-0.707,-0.709,-0.712,-0.715,-0.718,-0.722, - &-0.725,-0.728,-0.731,-0.734,-0.737,-0.741,-0.744,-0.747,-0.751, - &-0.754,-0.758,-0.761,-0.764,-0.768,-0.772,-0.775,-0.779,-0.782, - &-0.786,-0.790,-0.793,-0.797,-0.801,-0.805,-0.809,-0.812,-0.816, - &-0.820,-0.824,-0.828,-0.832,-0.836,-0.840,-0.844,-0.848,-0.852, - &-0.856,-0.860,-0.864,-0.868,-0.873,-0.877,-0.881,-0.885,-0.889, - &-0.894,-0.898,-0.902,-0.906,-0.911,-0.915,-0.919,-0.924,-0.928, - &-0.932,-0.937,-0.941,-0.946,-0.950,-0.955,-0.959,-0.964,-0.968, - &-0.973,-0.977,-0.982,-0.986,-0.991,-0.995,-1.000,-1.005,-1.009, - &-1.014,-1.019,-1.023,-1.028,-1.033,-1.037,-1.042,-1.047,-1.051, - &-1.056,-1.061,-1.066,-1.071,-1.075,-1.080,-1.085,-1.090,-1.095, - &-1.099,-1.104,-1.109,-1.114,-1.119,-1.124,-1.129,-1.134,-1.138, - &-1.143,-1.148,-1.153,-1.158,-1.163,-1.168,-1.173,-1.178,-1.183, - &-1.188,-1.193,-1.198,-1.203,-1.208,-1.213,-1.218,-1.223,-1.228, - &-1.233,-1.238,-1.244,-1.249,-1.254,-1.259,-1.264,-1.269,-1.274, - &-1.279,-1.284,-1.290 - & /) -! -! *** CASO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC14M_223 = (/ - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000 - & /) -! -! *** CANO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC15M_223 = (/ - &-0.099,-0.211,-0.264,-0.301,-0.329,-0.351,-0.370,-0.386,-0.399, - &-0.411,-0.422,-0.432,-0.440,-0.448,-0.455,-0.462,-0.468,-0.473, - &-0.478,-0.483,-0.487,-0.491,-0.495,-0.499,-0.502,-0.505,-0.508, - &-0.511,-0.513,-0.516,-0.518,-0.520,-0.522,-0.524,-0.526,-0.528, - &-0.529,-0.531,-0.532,-0.534,-0.535,-0.536,-0.537,-0.539,-0.540, - &-0.541,-0.542,-0.543,-0.544,-0.545,-0.545,-0.546,-0.547,-0.548, - &-0.549,-0.549,-0.550,-0.551,-0.551,-0.552,-0.552,-0.553,-0.553, - &-0.554,-0.554,-0.555,-0.555,-0.556,-0.556,-0.556,-0.557,-0.557, - &-0.557,-0.558,-0.558,-0.558,-0.558,-0.559,-0.559,-0.559,-0.559, - &-0.559,-0.559,-0.559,-0.559,-0.559,-0.559,-0.559,-0.559,-0.559, - &-0.559,-0.559,-0.559,-0.559,-0.558,-0.558,-0.558,-0.558,-0.557, - &-0.557,-0.557,-0.556,-0.556,-0.556,-0.555,-0.555,-0.555,-0.554, - &-0.554,-0.553,-0.553,-0.552,-0.552,-0.551,-0.551,-0.550,-0.550, - &-0.549,-0.549,-0.548,-0.548,-0.547,-0.547,-0.546,-0.545,-0.545, - &-0.544,-0.544,-0.543,-0.542,-0.542,-0.541,-0.541,-0.540,-0.539, - &-0.539,-0.538,-0.538,-0.537,-0.536,-0.536,-0.535,-0.534,-0.534, - &-0.533,-0.533,-0.532,-0.531,-0.531,-0.530,-0.529,-0.529,-0.528, - &-0.527,-0.527,-0.526,-0.525,-0.525,-0.524,-0.524,-0.523,-0.522, - &-0.522,-0.521,-0.520,-0.520,-0.519,-0.518,-0.518,-0.517,-0.516, - &-0.516,-0.515,-0.514,-0.514,-0.513,-0.513,-0.512,-0.511,-0.511, - &-0.510,-0.509,-0.509,-0.508,-0.507,-0.507,-0.506,-0.505,-0.505, - &-0.504,-0.504,-0.503,-0.502,-0.502,-0.501,-0.500,-0.500,-0.499, - &-0.499,-0.498,-0.497,-0.497,-0.496,-0.495,-0.495,-0.494,-0.494, - &-0.493,-0.492,-0.492,-0.491,-0.490,-0.490,-0.489,-0.489,-0.488, - &-0.487,-0.487,-0.486,-0.486,-0.485,-0.484,-0.484,-0.483,-0.483, - &-0.482,-0.481,-0.481,-0.480,-0.480,-0.479,-0.478,-0.478,-0.477, - &-0.477,-0.476,-0.475,-0.475,-0.474,-0.474,-0.473,-0.473,-0.472, - &-0.471,-0.471,-0.470,-0.470,-0.469,-0.469,-0.468,-0.468,-0.467, - &-0.466,-0.466,-0.465,-0.465,-0.464,-0.464,-0.463,-0.463,-0.462, - &-0.461,-0.461,-0.460,-0.460,-0.459,-0.459,-0.458,-0.458,-0.457, - &-0.457,-0.456,-0.456,-0.455,-0.455,-0.454,-0.453,-0.453,-0.452, - &-0.452,-0.451,-0.451,-0.450,-0.450,-0.449,-0.449,-0.448,-0.448, - &-0.447,-0.447,-0.446,-0.446,-0.445,-0.445,-0.444,-0.444,-0.443, - &-0.443,-0.442,-0.442,-0.441,-0.441,-0.440,-0.440,-0.440,-0.439, - &-0.439,-0.438,-0.438,-0.437,-0.437,-0.436,-0.436,-0.435,-0.435, - &-0.434,-0.434,-0.433,-0.433,-0.433,-0.432,-0.432,-0.431,-0.431, - &-0.430,-0.430,-0.429,-0.429,-0.429,-0.428,-0.428,-0.427,-0.427, - &-0.426,-0.426,-0.426,-0.425,-0.425,-0.424,-0.424,-0.423,-0.423, - &-0.423,-0.422,-0.422,-0.421,-0.421,-0.421,-0.420,-0.420,-0.419, - &-0.419,-0.419,-0.418,-0.418,-0.417,-0.417,-0.417,-0.416,-0.416, - &-0.415,-0.415,-0.415,-0.414,-0.414,-0.413,-0.413,-0.413,-0.412, - &-0.412,-0.412,-0.411,-0.411,-0.410,-0.410,-0.410,-0.409,-0.409, - &-0.409,-0.408,-0.408,-0.408,-0.407,-0.407,-0.407,-0.406,-0.406, - &-0.405,-0.405,-0.405,-0.404,-0.404,-0.404,-0.403,-0.403,-0.403, - &-0.402,-0.402,-0.402,-0.401,-0.398,-0.395,-0.392,-0.389,-0.386, - &-0.384,-0.381,-0.379,-0.377,-0.375,-0.373,-0.371,-0.369,-0.368, - &-0.366,-0.365,-0.364,-0.363,-0.362,-0.361,-0.360,-0.359,-0.358, - &-0.358,-0.357,-0.357,-0.357,-0.356,-0.356,-0.356,-0.356,-0.356, - &-0.356,-0.357,-0.357,-0.357,-0.358,-0.358,-0.359,-0.360,-0.361, - &-0.361,-0.362,-0.363,-0.364,-0.365,-0.367,-0.368,-0.369,-0.370, - &-0.372,-0.373,-0.375,-0.376,-0.378,-0.380,-0.381,-0.383,-0.385, - &-0.387,-0.389,-0.391,-0.393,-0.395,-0.397,-0.399,-0.401,-0.404, - &-0.406,-0.408,-0.411,-0.413,-0.416,-0.418,-0.421,-0.423,-0.426, - &-0.429,-0.431,-0.434,-0.437,-0.440,-0.442,-0.445,-0.448,-0.451, - &-0.454,-0.457,-0.460,-0.463,-0.467,-0.470,-0.473,-0.476,-0.480, - &-0.483,-0.486,-0.490,-0.493,-0.496,-0.500,-0.503,-0.507,-0.510, - &-0.514,-0.517,-0.521,-0.525,-0.528,-0.532,-0.536,-0.540,-0.543, - &-0.547,-0.551,-0.555,-0.559,-0.563,-0.566,-0.570,-0.574,-0.578, - &-0.582,-0.586,-0.590,-0.595,-0.599,-0.603,-0.607,-0.611,-0.615, - &-0.619,-0.624,-0.628,-0.632,-0.637,-0.641,-0.645,-0.650,-0.654, - &-0.658,-0.663,-0.667,-0.672,-0.676,-0.680,-0.685,-0.689,-0.694, - &-0.699,-0.703,-0.708,-0.712,-0.717,-0.722,-0.726,-0.731,-0.736, - &-0.740,-0.745,-0.750 - & /) -! -! *** CACL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC16M_223 = (/ - &-0.097,-0.201,-0.247,-0.277,-0.298,-0.314,-0.327,-0.337,-0.345, - &-0.351,-0.356,-0.359,-0.362,-0.365,-0.366,-0.367,-0.367,-0.367, - &-0.367,-0.366,-0.365,-0.364,-0.362,-0.361,-0.359,-0.356,-0.354, - &-0.352,-0.349,-0.346,-0.343,-0.340,-0.337,-0.334,-0.331,-0.328, - &-0.324,-0.321,-0.317,-0.314,-0.310,-0.307,-0.303,-0.300,-0.296, - &-0.292,-0.289,-0.285,-0.281,-0.277,-0.274,-0.270,-0.266,-0.262, - &-0.259,-0.255,-0.251,-0.247,-0.244,-0.240,-0.236,-0.232,-0.228, - &-0.224,-0.221,-0.217,-0.213,-0.209,-0.205,-0.201,-0.197,-0.193, - &-0.189,-0.185,-0.181,-0.177,-0.173,-0.169,-0.165,-0.161,-0.157, - &-0.152,-0.148,-0.144,-0.139,-0.135,-0.131,-0.126,-0.122,-0.117, - &-0.113,-0.108,-0.104,-0.099,-0.095,-0.090,-0.085,-0.080,-0.076, - &-0.071,-0.066,-0.061,-0.056,-0.051,-0.047,-0.042,-0.037,-0.032, - &-0.027,-0.022,-0.017,-0.012,-0.006,-0.001, 0.004, 0.009, 0.014, - & 0.019, 0.024, 0.029, 0.034, 0.040, 0.045, 0.050, 0.055, 0.060, - & 0.065, 0.071, 0.076, 0.081, 0.086, 0.091, 0.096, 0.102, 0.107, - & 0.112, 0.117, 0.122, 0.127, 0.133, 0.138, 0.143, 0.148, 0.153, - & 0.158, 0.163, 0.168, 0.174, 0.179, 0.184, 0.189, 0.194, 0.199, - & 0.204, 0.209, 0.214, 0.219, 0.224, 0.229, 0.234, 0.239, 0.244, - & 0.249, 0.254, 0.259, 0.264, 0.269, 0.274, 0.279, 0.284, 0.289, - & 0.294, 0.299, 0.304, 0.309, 0.314, 0.319, 0.324, 0.329, 0.334, - & 0.338, 0.343, 0.348, 0.353, 0.358, 0.363, 0.368, 0.372, 0.377, - & 0.382, 0.387, 0.392, 0.396, 0.401, 0.406, 0.411, 0.415, 0.420, - & 0.425, 0.430, 0.434, 0.439, 0.444, 0.449, 0.453, 0.458, 0.463, - & 0.467, 0.472, 0.477, 0.481, 0.486, 0.491, 0.495, 0.500, 0.504, - & 0.509, 0.514, 0.518, 0.523, 0.527, 0.532, 0.536, 0.541, 0.545, - & 0.550, 0.555, 0.559, 0.564, 0.568, 0.573, 0.577, 0.581, 0.586, - & 0.590, 0.595, 0.599, 0.604, 0.608, 0.613, 0.617, 0.621, 0.626, - & 0.630, 0.635, 0.639, 0.643, 0.648, 0.652, 0.656, 0.661, 0.665, - & 0.669, 0.674, 0.678, 0.682, 0.686, 0.691, 0.695, 0.699, 0.703, - & 0.708, 0.712, 0.716, 0.720, 0.725, 0.729, 0.733, 0.737, 0.741, - & 0.746, 0.750, 0.754, 0.758, 0.762, 0.766, 0.770, 0.775, 0.779, - & 0.783, 0.787, 0.791, 0.795, 0.799, 0.803, 0.807, 0.811, 0.815, - & 0.819, 0.823, 0.827, 0.831, 0.835, 0.839, 0.843, 0.847, 0.851, - & 0.855, 0.859, 0.863, 0.867, 0.871, 0.875, 0.879, 0.883, 0.887, - & 0.891, 0.895, 0.899, 0.902, 0.906, 0.910, 0.914, 0.918, 0.922, - & 0.926, 0.929, 0.933, 0.937, 0.941, 0.945, 0.949, 0.952, 0.956, - & 0.960, 0.964, 0.967, 0.971, 0.975, 0.979, 0.982, 0.986, 0.990, - & 0.994, 0.997, 1.001, 1.005, 1.008, 1.012, 1.016, 1.019, 1.023, - & 1.027, 1.030, 1.034, 1.038, 1.041, 1.045, 1.049, 1.052, 1.056, - & 1.059, 1.063, 1.067, 1.070, 1.074, 1.077, 1.081, 1.084, 1.088, - & 1.091, 1.095, 1.098, 1.102, 1.106, 1.109, 1.113, 1.116, 1.119, - & 1.123, 1.126, 1.130, 1.133, 1.137, 1.140, 1.144, 1.147, 1.151, - & 1.154, 1.157, 1.161, 1.164, 1.168, 1.171, 1.174, 1.178, 1.181, - & 1.185, 1.188, 1.191, 1.195, 1.198, 1.201, 1.205, 1.208, 1.211, - & 1.215, 1.218, 1.221, 1.225, 1.260, 1.292, 1.323, 1.354, 1.385, - & 1.415, 1.444, 1.473, 1.501, 1.529, 1.557, 1.584, 1.610, 1.636, - & 1.662, 1.687, 1.712, 1.737, 1.761, 1.784, 1.808, 1.831, 1.853, - & 1.876, 1.898, 1.919, 1.940, 1.961, 1.982, 2.002, 2.022, 2.042, - & 2.062, 2.081, 2.100, 2.118, 2.137, 2.155, 2.172, 2.190, 2.207, - & 2.224, 2.241, 2.258, 2.274, 2.290, 2.306, 2.322, 2.337, 2.353, - & 2.368, 2.382, 2.397, 2.412, 2.426, 2.440, 2.454, 2.467, 2.481, - & 2.494, 2.507, 2.520, 2.533, 2.546, 2.558, 2.571, 2.583, 2.595, - & 2.606, 2.618, 2.630, 2.641, 2.652, 2.663, 2.674, 2.685, 2.696, - & 2.706, 2.717, 2.727, 2.737, 2.747, 2.757, 2.767, 2.776, 2.786, - & 2.795, 2.804, 2.813, 2.822, 2.831, 2.840, 2.849, 2.857, 2.866, - & 2.874, 2.882, 2.891, 2.899, 2.907, 2.914, 2.922, 2.930, 2.937, - & 2.945, 2.952, 2.959, 2.966, 2.973, 2.980, 2.987, 2.994, 3.001, - & 3.007, 3.014, 3.020, 3.027, 3.033, 3.039, 3.045, 3.051, 3.057, - & 3.063, 3.069, 3.075, 3.081, 3.086, 3.092, 3.097, 3.102, 3.108, - & 3.113, 3.118, 3.123, 3.128, 3.133, 3.138, 3.143, 3.147, 3.152, - & 3.157, 3.161, 3.166, 3.170, 3.175, 3.179, 3.183, 3.187, 3.191, - & 3.195, 3.199, 3.203, 3.207, 3.211, 3.215, 3.219, 3.222, 3.226, - & 3.229, 3.233, 3.236 - & /) -! -! *** K2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC17M_223 = (/ - &-0.101,-0.220,-0.281,-0.324,-0.358,-0.387,-0.412,-0.434,-0.453, - &-0.471,-0.487,-0.503,-0.517,-0.530,-0.543,-0.555,-0.566,-0.577, - &-0.587,-0.597,-0.606,-0.615,-0.624,-0.632,-0.641,-0.649,-0.656, - &-0.664,-0.671,-0.678,-0.685,-0.692,-0.698,-0.705,-0.711,-0.717, - &-0.723,-0.729,-0.735,-0.740,-0.746,-0.752,-0.757,-0.762,-0.767, - &-0.772,-0.777,-0.782,-0.787,-0.792,-0.797,-0.801,-0.806,-0.810, - &-0.815,-0.819,-0.824,-0.828,-0.832,-0.836,-0.840,-0.844,-0.848, - &-0.852,-0.856,-0.860,-0.864,-0.868,-0.872,-0.876,-0.879,-0.883, - &-0.887,-0.890,-0.894,-0.897,-0.901,-0.904,-0.908,-0.911,-0.915, - &-0.918,-0.922,-0.925,-0.928,-0.932,-0.935,-0.938,-0.942,-0.945, - &-0.948,-0.951,-0.954,-0.958,-0.961,-0.964,-0.967,-0.970,-0.973, - &-0.976,-0.979,-0.982,-0.985,-0.988,-0.991,-0.994,-0.997,-1.000, - &-1.003,-1.006,-1.009,-1.012,-1.015,-1.018,-1.021,-1.024,-1.026, - &-1.029,-1.032,-1.035,-1.038,-1.040,-1.043,-1.046,-1.049,-1.051, - &-1.054,-1.057,-1.060,-1.062,-1.065,-1.068,-1.070,-1.073,-1.076, - &-1.078,-1.081,-1.083,-1.086,-1.089,-1.091,-1.094,-1.096,-1.099, - &-1.102,-1.104,-1.107,-1.109,-1.112,-1.114,-1.117,-1.119,-1.122, - &-1.124,-1.127,-1.129,-1.131,-1.134,-1.136,-1.139,-1.141,-1.144, - &-1.146,-1.148,-1.151,-1.153,-1.155,-1.158,-1.160,-1.163,-1.165, - &-1.167,-1.170,-1.172,-1.174,-1.177,-1.179,-1.181,-1.183,-1.186, - &-1.188,-1.190,-1.193,-1.195,-1.197,-1.199,-1.202,-1.204,-1.206, - &-1.208,-1.210,-1.213,-1.215,-1.217,-1.219,-1.221,-1.224,-1.226, - &-1.228,-1.230,-1.232,-1.235,-1.237,-1.239,-1.241,-1.243,-1.245, - &-1.247,-1.250,-1.252,-1.254,-1.256,-1.258,-1.260,-1.262,-1.264, - &-1.266,-1.269,-1.271,-1.273,-1.275,-1.277,-1.279,-1.281,-1.283, - &-1.285,-1.287,-1.289,-1.291,-1.293,-1.295,-1.297,-1.299,-1.301, - &-1.303,-1.305,-1.307,-1.309,-1.311,-1.313,-1.315,-1.317,-1.319, - &-1.321,-1.323,-1.325,-1.327,-1.329,-1.331,-1.333,-1.335,-1.337, - &-1.339,-1.341,-1.343,-1.345,-1.347,-1.349,-1.351,-1.353,-1.355, - &-1.357,-1.358,-1.360,-1.362,-1.364,-1.366,-1.368,-1.370,-1.372, - &-1.374,-1.376,-1.377,-1.379,-1.381,-1.383,-1.385,-1.387,-1.389, - &-1.391,-1.392,-1.394,-1.396,-1.398,-1.400,-1.402,-1.404,-1.405, - &-1.407,-1.409,-1.411,-1.413,-1.415,-1.417,-1.418,-1.420,-1.422, - &-1.424,-1.426,-1.427,-1.429,-1.431,-1.433,-1.435,-1.437,-1.438, - &-1.440,-1.442,-1.444,-1.445,-1.447,-1.449,-1.451,-1.453,-1.454, - &-1.456,-1.458,-1.460,-1.462,-1.463,-1.465,-1.467,-1.469,-1.470, - &-1.472,-1.474,-1.476,-1.477,-1.479,-1.481,-1.483,-1.484,-1.486, - &-1.488,-1.490,-1.491,-1.493,-1.495,-1.496,-1.498,-1.500,-1.502, - &-1.503,-1.505,-1.507,-1.509,-1.510,-1.512,-1.514,-1.515,-1.517, - &-1.519,-1.520,-1.522,-1.524,-1.526,-1.527,-1.529,-1.531,-1.532, - &-1.534,-1.536,-1.537,-1.539,-1.541,-1.542,-1.544,-1.546,-1.547, - &-1.549,-1.551,-1.552,-1.554,-1.556,-1.557,-1.559,-1.561,-1.562, - &-1.564,-1.566,-1.567,-1.569,-1.571,-1.572,-1.574,-1.576,-1.577, - &-1.579,-1.580,-1.582,-1.584,-1.585,-1.587,-1.589,-1.590,-1.592, - &-1.594,-1.595,-1.597,-1.598,-1.616,-1.632,-1.648,-1.663,-1.679, - &-1.694,-1.710,-1.725,-1.740,-1.755,-1.770,-1.785,-1.799,-1.814, - &-1.828,-1.843,-1.857,-1.871,-1.885,-1.900,-1.914,-1.928,-1.941, - &-1.955,-1.969,-1.983,-1.996,-2.010,-2.023,-2.037,-2.050,-2.063, - &-2.077,-2.090,-2.103,-2.116,-2.129,-2.142,-2.155,-2.168,-2.181, - &-2.194,-2.206,-2.219,-2.232,-2.244,-2.257,-2.269,-2.282,-2.294, - &-2.307,-2.319,-2.332,-2.344,-2.356,-2.369,-2.381,-2.393,-2.405, - &-2.417,-2.429,-2.441,-2.454,-2.466,-2.478,-2.489,-2.501,-2.513, - &-2.525,-2.537,-2.549,-2.561,-2.572,-2.584,-2.596,-2.608,-2.619, - &-2.631,-2.642,-2.654,-2.666,-2.677,-2.689,-2.700,-2.712,-2.723, - &-2.735,-2.746,-2.757,-2.769,-2.780,-2.792,-2.803,-2.814,-2.825, - &-2.837,-2.848,-2.859,-2.870,-2.882,-2.893,-2.904,-2.915,-2.926, - &-2.937,-2.948,-2.959,-2.971,-2.982,-2.993,-3.004,-3.015,-3.026, - &-3.037,-3.048,-3.058,-3.069,-3.080,-3.091,-3.102,-3.113,-3.124, - &-3.135,-3.145,-3.156,-3.167,-3.178,-3.189,-3.199,-3.210,-3.221, - &-3.232,-3.242,-3.253,-3.264,-3.274,-3.285,-3.296,-3.306,-3.317, - &-3.327,-3.338,-3.349,-3.359,-3.370,-3.380,-3.391,-3.401,-3.412, - &-3.422,-3.433,-3.443,-3.454,-3.464,-3.475,-3.485,-3.496,-3.506, - &-3.517,-3.527,-3.537 - & /) -! -! *** KHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC18M_223 = (/ - &-0.049,-0.104,-0.130,-0.148,-0.162,-0.173,-0.182,-0.190,-0.197, - &-0.203,-0.208,-0.213,-0.217,-0.221,-0.224,-0.227,-0.230,-0.232, - &-0.234,-0.236,-0.238,-0.239,-0.240,-0.241,-0.242,-0.243,-0.243, - &-0.244,-0.244,-0.244,-0.244,-0.244,-0.243,-0.243,-0.242,-0.242, - &-0.241,-0.240,-0.239,-0.238,-0.237,-0.236,-0.235,-0.233,-0.232, - &-0.230,-0.229,-0.227,-0.225,-0.223,-0.222,-0.220,-0.218,-0.216, - &-0.214,-0.211,-0.209,-0.207,-0.205,-0.202,-0.200,-0.197,-0.195, - &-0.192,-0.190,-0.187,-0.185,-0.182,-0.179,-0.176,-0.174,-0.171, - &-0.168,-0.165,-0.162,-0.159,-0.156,-0.153,-0.150,-0.147,-0.143, - &-0.140,-0.137,-0.134,-0.131,-0.127,-0.124,-0.120,-0.117,-0.114, - &-0.110,-0.107,-0.103,-0.100,-0.096,-0.092,-0.089,-0.085,-0.081, - &-0.078,-0.074,-0.070,-0.066,-0.063,-0.059,-0.055,-0.051,-0.047, - &-0.043,-0.040,-0.036,-0.032,-0.028,-0.024,-0.020,-0.016,-0.012, - &-0.008,-0.004, 0.000, 0.004, 0.008, 0.012, 0.015, 0.019, 0.023, - & 0.027, 0.031, 0.035, 0.039, 0.043, 0.047, 0.051, 0.055, 0.059, - & 0.063, 0.067, 0.071, 0.075, 0.078, 0.082, 0.086, 0.090, 0.094, - & 0.098, 0.102, 0.106, 0.109, 0.113, 0.117, 0.121, 0.125, 0.128, - & 0.132, 0.136, 0.140, 0.144, 0.147, 0.151, 0.155, 0.159, 0.162, - & 0.166, 0.170, 0.173, 0.177, 0.181, 0.184, 0.188, 0.192, 0.195, - & 0.199, 0.203, 0.206, 0.210, 0.213, 0.217, 0.221, 0.224, 0.228, - & 0.231, 0.235, 0.238, 0.242, 0.245, 0.249, 0.252, 0.256, 0.259, - & 0.263, 0.266, 0.270, 0.273, 0.277, 0.280, 0.284, 0.287, 0.290, - & 0.294, 0.297, 0.301, 0.304, 0.307, 0.311, 0.314, 0.317, 0.321, - & 0.324, 0.327, 0.331, 0.334, 0.337, 0.340, 0.344, 0.347, 0.350, - & 0.353, 0.357, 0.360, 0.363, 0.366, 0.369, 0.373, 0.376, 0.379, - & 0.382, 0.385, 0.389, 0.392, 0.395, 0.398, 0.401, 0.404, 0.407, - & 0.410, 0.413, 0.417, 0.420, 0.423, 0.426, 0.429, 0.432, 0.435, - & 0.438, 0.441, 0.444, 0.447, 0.450, 0.453, 0.456, 0.459, 0.462, - & 0.465, 0.468, 0.471, 0.474, 0.477, 0.480, 0.482, 0.485, 0.488, - & 0.491, 0.494, 0.497, 0.500, 0.503, 0.506, 0.508, 0.511, 0.514, - & 0.517, 0.520, 0.523, 0.525, 0.528, 0.531, 0.534, 0.537, 0.539, - & 0.542, 0.545, 0.548, 0.551, 0.553, 0.556, 0.559, 0.562, 0.564, - & 0.567, 0.570, 0.572, 0.575, 0.578, 0.581, 0.583, 0.586, 0.589, - & 0.591, 0.594, 0.597, 0.599, 0.602, 0.604, 0.607, 0.610, 0.612, - & 0.615, 0.618, 0.620, 0.623, 0.625, 0.628, 0.631, 0.633, 0.636, - & 0.638, 0.641, 0.643, 0.646, 0.648, 0.651, 0.654, 0.656, 0.659, - & 0.661, 0.664, 0.666, 0.669, 0.671, 0.674, 0.676, 0.679, 0.681, - & 0.684, 0.686, 0.688, 0.691, 0.693, 0.696, 0.698, 0.701, 0.703, - & 0.706, 0.708, 0.710, 0.713, 0.715, 0.718, 0.720, 0.722, 0.725, - & 0.727, 0.729, 0.732, 0.734, 0.737, 0.739, 0.741, 0.744, 0.746, - & 0.748, 0.751, 0.753, 0.755, 0.758, 0.760, 0.762, 0.764, 0.767, - & 0.769, 0.771, 0.774, 0.776, 0.778, 0.780, 0.783, 0.785, 0.787, - & 0.789, 0.792, 0.794, 0.796, 0.798, 0.801, 0.803, 0.805, 0.807, - & 0.810, 0.812, 0.814, 0.816, 0.818, 0.821, 0.823, 0.825, 0.827, - & 0.829, 0.831, 0.834, 0.836, 0.859, 0.880, 0.900, 0.921, 0.940, - & 0.960, 0.979, 0.998, 1.016, 1.034, 1.052, 1.070, 1.087, 1.104, - & 1.121, 1.137, 1.154, 1.169, 1.185, 1.201, 1.216, 1.231, 1.246, - & 1.260, 1.274, 1.289, 1.302, 1.316, 1.330, 1.343, 1.356, 1.369, - & 1.382, 1.394, 1.407, 1.419, 1.431, 1.443, 1.455, 1.466, 1.478, - & 1.489, 1.500, 1.511, 1.522, 1.533, 1.543, 1.554, 1.564, 1.574, - & 1.584, 1.594, 1.604, 1.614, 1.623, 1.633, 1.642, 1.651, 1.660, - & 1.670, 1.678, 1.687, 1.696, 1.704, 1.713, 1.721, 1.730, 1.738, - & 1.746, 1.754, 1.762, 1.770, 1.777, 1.785, 1.793, 1.800, 1.807, - & 1.815, 1.822, 1.829, 1.836, 1.843, 1.850, 1.857, 1.864, 1.870, - & 1.877, 1.883, 1.890, 1.896, 1.903, 1.909, 1.915, 1.921, 1.927, - & 1.933, 1.939, 1.945, 1.951, 1.957, 1.962, 1.968, 1.973, 1.979, - & 1.984, 1.990, 1.995, 2.000, 2.006, 2.011, 2.016, 2.021, 2.026, - & 2.031, 2.036, 2.041, 2.045, 2.050, 2.055, 2.059, 2.064, 2.069, - & 2.073, 2.078, 2.082, 2.086, 2.091, 2.095, 2.099, 2.103, 2.108, - & 2.112, 2.116, 2.120, 2.124, 2.128, 2.132, 2.135, 2.139, 2.143, - & 2.147, 2.150, 2.154, 2.158, 2.161, 2.165, 2.168, 2.172, 2.175, - & 2.179, 2.182, 2.185, 2.189, 2.192, 2.195, 2.198, 2.201, 2.205, - & 2.208, 2.211, 2.214 - & /) -! -! *** KNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC19M_223 = (/ - &-0.052,-0.120,-0.158,-0.187,-0.211,-0.232,-0.251,-0.269,-0.285, - &-0.300,-0.315,-0.329,-0.342,-0.354,-0.367,-0.378,-0.390,-0.401, - &-0.412,-0.422,-0.432,-0.443,-0.452,-0.462,-0.471,-0.481,-0.490, - &-0.498,-0.507,-0.516,-0.524,-0.532,-0.540,-0.548,-0.556,-0.564, - &-0.572,-0.579,-0.587,-0.594,-0.601,-0.608,-0.615,-0.622,-0.629, - &-0.636,-0.642,-0.649,-0.655,-0.661,-0.668,-0.674,-0.680,-0.686, - &-0.692,-0.698,-0.704,-0.710,-0.715,-0.721,-0.727,-0.732,-0.738, - &-0.743,-0.749,-0.754,-0.759,-0.765,-0.770,-0.775,-0.780,-0.785, - &-0.790,-0.796,-0.801,-0.806,-0.811,-0.816,-0.820,-0.825,-0.830, - &-0.835,-0.840,-0.845,-0.850,-0.854,-0.859,-0.864,-0.869,-0.873, - &-0.878,-0.883,-0.888,-0.892,-0.897,-0.902,-0.906,-0.911,-0.916, - &-0.920,-0.925,-0.929,-0.934,-0.938,-0.943,-0.948,-0.952,-0.957, - &-0.961,-0.966,-0.970,-0.974,-0.979,-0.983,-0.988,-0.992,-0.996, - &-1.001,-1.005,-1.009,-1.014,-1.018,-1.022,-1.026,-1.031,-1.035, - &-1.039,-1.043,-1.047,-1.052,-1.056,-1.060,-1.064,-1.068,-1.072, - &-1.076,-1.080,-1.084,-1.088,-1.092,-1.096,-1.100,-1.104,-1.108, - &-1.112,-1.115,-1.119,-1.123,-1.127,-1.131,-1.134,-1.138,-1.142, - &-1.146,-1.149,-1.153,-1.157,-1.160,-1.164,-1.168,-1.171,-1.175, - &-1.178,-1.182,-1.185,-1.189,-1.192,-1.196,-1.199,-1.203,-1.206, - &-1.210,-1.213,-1.217,-1.220,-1.223,-1.227,-1.230,-1.234,-1.237, - &-1.240,-1.243,-1.247,-1.250,-1.253,-1.257,-1.260,-1.263,-1.266, - &-1.269,-1.273,-1.276,-1.279,-1.282,-1.285,-1.288,-1.291,-1.295, - &-1.298,-1.301,-1.304,-1.307,-1.310,-1.313,-1.316,-1.319,-1.322, - &-1.325,-1.328,-1.331,-1.334,-1.337,-1.340,-1.342,-1.345,-1.348, - &-1.351,-1.354,-1.357,-1.360,-1.362,-1.365,-1.368,-1.371,-1.374, - &-1.376,-1.379,-1.382,-1.385,-1.387,-1.390,-1.393,-1.396,-1.398, - &-1.401,-1.404,-1.406,-1.409,-1.412,-1.414,-1.417,-1.420,-1.422, - &-1.425,-1.427,-1.430,-1.432,-1.435,-1.438,-1.440,-1.443,-1.445, - &-1.448,-1.450,-1.453,-1.455,-1.458,-1.460,-1.463,-1.465,-1.468, - &-1.470,-1.472,-1.475,-1.477,-1.480,-1.482,-1.484,-1.487,-1.489, - &-1.492,-1.494,-1.496,-1.499,-1.501,-1.503,-1.506,-1.508,-1.510, - &-1.512,-1.515,-1.517,-1.519,-1.522,-1.524,-1.526,-1.528,-1.531, - &-1.533,-1.535,-1.537,-1.539,-1.542,-1.544,-1.546,-1.548,-1.550, - &-1.552,-1.555,-1.557,-1.559,-1.561,-1.563,-1.565,-1.567,-1.569, - &-1.572,-1.574,-1.576,-1.578,-1.580,-1.582,-1.584,-1.586,-1.588, - &-1.590,-1.592,-1.594,-1.596,-1.598,-1.600,-1.602,-1.604,-1.606, - &-1.608,-1.610,-1.612,-1.614,-1.616,-1.618,-1.620,-1.622,-1.624, - &-1.626,-1.628,-1.630,-1.632,-1.633,-1.635,-1.637,-1.639,-1.641, - &-1.643,-1.645,-1.647,-1.648,-1.650,-1.652,-1.654,-1.656,-1.658, - &-1.660,-1.661,-1.663,-1.665,-1.667,-1.669,-1.670,-1.672,-1.674, - &-1.676,-1.678,-1.679,-1.681,-1.683,-1.685,-1.686,-1.688,-1.690, - &-1.692,-1.693,-1.695,-1.697,-1.698,-1.700,-1.702,-1.704,-1.705, - &-1.707,-1.709,-1.710,-1.712,-1.714,-1.715,-1.717,-1.719,-1.720, - &-1.722,-1.724,-1.725,-1.727,-1.729,-1.730,-1.732,-1.733,-1.735, - &-1.737,-1.738,-1.740,-1.741,-1.758,-1.774,-1.789,-1.803,-1.817, - &-1.831,-1.845,-1.858,-1.871,-1.884,-1.896,-1.908,-1.920,-1.932, - &-1.943,-1.954,-1.965,-1.976,-1.987,-1.997,-2.008,-2.018,-2.028, - &-2.037,-2.047,-2.056,-2.066,-2.075,-2.084,-2.093,-2.102,-2.111, - &-2.119,-2.128,-2.136,-2.144,-2.152,-2.161,-2.169,-2.176,-2.184, - &-2.192,-2.200,-2.207,-2.215,-2.222,-2.230,-2.237,-2.244,-2.251, - &-2.259,-2.266,-2.273,-2.280,-2.287,-2.293,-2.300,-2.307,-2.314, - &-2.320,-2.327,-2.334,-2.340,-2.347,-2.353,-2.360,-2.366,-2.372, - &-2.379,-2.385,-2.391,-2.397,-2.403,-2.410,-2.416,-2.422,-2.428, - &-2.434,-2.440,-2.446,-2.452,-2.458,-2.464,-2.470,-2.475,-2.481, - &-2.487,-2.493,-2.499,-2.504,-2.510,-2.516,-2.522,-2.527,-2.533, - &-2.539,-2.544,-2.550,-2.555,-2.561,-2.566,-2.572,-2.578,-2.583, - &-2.588,-2.594,-2.599,-2.605,-2.610,-2.616,-2.621,-2.627,-2.632, - &-2.637,-2.643,-2.648,-2.653,-2.659,-2.664,-2.669,-2.675,-2.680, - &-2.685,-2.690,-2.696,-2.701,-2.706,-2.711,-2.716,-2.722,-2.727, - &-2.732,-2.737,-2.742,-2.748,-2.753,-2.758,-2.763,-2.768,-2.773, - &-2.778,-2.783,-2.788,-2.794,-2.799,-2.804,-2.809,-2.814,-2.819, - &-2.824,-2.829,-2.834,-2.839,-2.844,-2.849,-2.854,-2.859,-2.864, - &-2.869,-2.874,-2.879 - & /) -! -! *** KCL -! - Real(kind=fp), Parameter, Dimension(561) :: BNC20M_223 = (/ - &-0.049,-0.105,-0.132,-0.151,-0.164,-0.176,-0.185,-0.193,-0.200, - &-0.206,-0.211,-0.216,-0.221,-0.224,-0.228,-0.231,-0.234,-0.237, - &-0.240,-0.242,-0.244,-0.246,-0.248,-0.250,-0.252,-0.253,-0.255, - &-0.256,-0.257,-0.258,-0.260,-0.261,-0.262,-0.263,-0.264,-0.265, - &-0.265,-0.266,-0.267,-0.268,-0.268,-0.269,-0.270,-0.270,-0.271, - &-0.271,-0.272,-0.272,-0.273,-0.273,-0.274,-0.274,-0.275,-0.275, - &-0.275,-0.276,-0.276,-0.276,-0.277,-0.277,-0.277,-0.278,-0.278, - &-0.278,-0.278,-0.279,-0.279,-0.279,-0.279,-0.280,-0.280,-0.280, - &-0.280,-0.280,-0.280,-0.280,-0.281,-0.281,-0.281,-0.281,-0.281, - &-0.281,-0.281,-0.281,-0.281,-0.281,-0.281,-0.281,-0.281,-0.281, - &-0.281,-0.281,-0.281,-0.281,-0.281,-0.281,-0.281,-0.280,-0.280, - &-0.280,-0.280,-0.280,-0.280,-0.280,-0.279,-0.279,-0.279,-0.279, - &-0.279,-0.278,-0.278,-0.278,-0.278,-0.278,-0.277,-0.277,-0.277, - &-0.277,-0.276,-0.276,-0.276,-0.276,-0.275,-0.275,-0.275,-0.275, - &-0.274,-0.274,-0.274,-0.273,-0.273,-0.273,-0.273,-0.272,-0.272, - &-0.272,-0.271,-0.271,-0.271,-0.270,-0.270,-0.270,-0.270,-0.269, - &-0.269,-0.269,-0.268,-0.268,-0.268,-0.267,-0.267,-0.267,-0.267, - &-0.266,-0.266,-0.266,-0.265,-0.265,-0.265,-0.264,-0.264,-0.264, - &-0.263,-0.263,-0.263,-0.262,-0.262,-0.262,-0.262,-0.261,-0.261, - &-0.261,-0.260,-0.260,-0.260,-0.259,-0.259,-0.259,-0.258,-0.258, - &-0.258,-0.258,-0.257,-0.257,-0.257,-0.256,-0.256,-0.256,-0.255, - &-0.255,-0.255,-0.254,-0.254,-0.254,-0.254,-0.253,-0.253,-0.253, - &-0.252,-0.252,-0.252,-0.251,-0.251,-0.251,-0.251,-0.250,-0.250, - &-0.250,-0.249,-0.249,-0.249,-0.248,-0.248,-0.248,-0.248,-0.247, - &-0.247,-0.247,-0.246,-0.246,-0.246,-0.246,-0.245,-0.245,-0.245, - &-0.244,-0.244,-0.244,-0.244,-0.243,-0.243,-0.243,-0.242,-0.242, - &-0.242,-0.242,-0.241,-0.241,-0.241,-0.241,-0.240,-0.240,-0.240, - &-0.239,-0.239,-0.239,-0.239,-0.238,-0.238,-0.238,-0.238,-0.237, - &-0.237,-0.237,-0.236,-0.236,-0.236,-0.236,-0.235,-0.235,-0.235, - &-0.235,-0.234,-0.234,-0.234,-0.234,-0.233,-0.233,-0.233,-0.233, - &-0.232,-0.232,-0.232,-0.232,-0.231,-0.231,-0.231,-0.231,-0.230, - &-0.230,-0.230,-0.230,-0.229,-0.229,-0.229,-0.229,-0.228,-0.228, - &-0.228,-0.228,-0.227,-0.227,-0.227,-0.227,-0.226,-0.226,-0.226, - &-0.226,-0.226,-0.225,-0.225,-0.225,-0.225,-0.224,-0.224,-0.224, - &-0.224,-0.223,-0.223,-0.223,-0.223,-0.223,-0.222,-0.222,-0.222, - &-0.222,-0.221,-0.221,-0.221,-0.221,-0.221,-0.220,-0.220,-0.220, - &-0.220,-0.220,-0.219,-0.219,-0.219,-0.219,-0.218,-0.218,-0.218, - &-0.218,-0.218,-0.217,-0.217,-0.217,-0.217,-0.217,-0.216,-0.216, - &-0.216,-0.216,-0.216,-0.215,-0.215,-0.215,-0.215,-0.215,-0.215, - &-0.214,-0.214,-0.214,-0.214,-0.214,-0.213,-0.213,-0.213,-0.213, - &-0.213,-0.212,-0.212,-0.212,-0.212,-0.212,-0.212,-0.211,-0.211, - &-0.211,-0.211,-0.211,-0.210,-0.210,-0.210,-0.210,-0.210,-0.210, - &-0.209,-0.209,-0.209,-0.209,-0.209,-0.209,-0.208,-0.208,-0.208, - &-0.208,-0.208,-0.208,-0.207,-0.207,-0.207,-0.207,-0.207,-0.207, - &-0.206,-0.206,-0.206,-0.206,-0.204,-0.203,-0.202,-0.200,-0.199, - &-0.198,-0.197,-0.196,-0.195,-0.194,-0.193,-0.192,-0.191,-0.190, - &-0.190,-0.189,-0.189,-0.188,-0.188,-0.187,-0.187,-0.187,-0.186, - &-0.186,-0.186,-0.186,-0.186,-0.186,-0.186,-0.186,-0.186,-0.186, - &-0.186,-0.186,-0.187,-0.187,-0.187,-0.187,-0.188,-0.188,-0.189, - &-0.189,-0.190,-0.190,-0.191,-0.191,-0.192,-0.193,-0.193,-0.194, - &-0.195,-0.196,-0.196,-0.197,-0.198,-0.199,-0.200,-0.201,-0.202, - &-0.203,-0.204,-0.205,-0.206,-0.207,-0.208,-0.209,-0.210,-0.212, - &-0.213,-0.214,-0.215,-0.217,-0.218,-0.219,-0.220,-0.222,-0.223, - &-0.225,-0.226,-0.227,-0.229,-0.230,-0.232,-0.233,-0.235,-0.236, - &-0.238,-0.239,-0.241,-0.243,-0.244,-0.246,-0.247,-0.249,-0.251, - &-0.252,-0.254,-0.256,-0.258,-0.259,-0.261,-0.263,-0.265,-0.266, - &-0.268,-0.270,-0.272,-0.274,-0.276,-0.278,-0.280,-0.281,-0.283, - &-0.285,-0.287,-0.289,-0.291,-0.293,-0.295,-0.297,-0.299,-0.301, - &-0.303,-0.305,-0.307,-0.309,-0.311,-0.314,-0.316,-0.318,-0.320, - &-0.322,-0.324,-0.326,-0.329,-0.331,-0.333,-0.335,-0.337,-0.340, - &-0.342,-0.344,-0.346,-0.348,-0.351,-0.353,-0.355,-0.358,-0.360, - &-0.362,-0.364,-0.367,-0.369,-0.371,-0.374,-0.376,-0.379,-0.381, - &-0.383,-0.386,-0.388 - & /) -! -! *** MGSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC21M_223 = (/ - &-0.200,-0.434,-0.550,-0.632,-0.696,-0.748,-0.793,-0.833,-0.868, - &-0.900,-0.928,-0.955,-0.979,-1.002,-1.023,-1.043,-1.062,-1.079, - &-1.096,-1.112,-1.127,-1.142,-1.156,-1.170,-1.182,-1.195,-1.207, - &-1.218,-1.230,-1.241,-1.251,-1.261,-1.271,-1.281,-1.290,-1.300, - &-1.309,-1.317,-1.326,-1.334,-1.342,-1.350,-1.358,-1.366,-1.373, - &-1.381,-1.388,-1.395,-1.402,-1.409,-1.416,-1.422,-1.429,-1.435, - &-1.442,-1.448,-1.454,-1.460,-1.466,-1.472,-1.478,-1.484,-1.489, - &-1.495,-1.500,-1.506,-1.511,-1.517,-1.522,-1.527,-1.532,-1.537, - &-1.542,-1.547,-1.552,-1.557,-1.562,-1.567,-1.571,-1.576,-1.581, - &-1.585,-1.590,-1.594,-1.599,-1.603,-1.608,-1.612,-1.616,-1.620, - &-1.625,-1.629,-1.633,-1.637,-1.641,-1.645,-1.649,-1.653,-1.657, - &-1.661,-1.665,-1.669,-1.672,-1.676,-1.680,-1.684,-1.687,-1.691, - &-1.695,-1.698,-1.702,-1.706,-1.709,-1.713,-1.716,-1.720,-1.723, - &-1.727,-1.730,-1.733,-1.737,-1.740,-1.744,-1.747,-1.750,-1.753, - &-1.757,-1.760,-1.763,-1.766,-1.770,-1.773,-1.776,-1.779,-1.782, - &-1.786,-1.789,-1.792,-1.795,-1.798,-1.801,-1.804,-1.807,-1.810, - &-1.813,-1.816,-1.819,-1.822,-1.825,-1.828,-1.831,-1.834,-1.837, - &-1.840,-1.843,-1.846,-1.849,-1.851,-1.854,-1.857,-1.860,-1.863, - &-1.866,-1.868,-1.871,-1.874,-1.877,-1.880,-1.882,-1.885,-1.888, - &-1.891,-1.894,-1.896,-1.899,-1.902,-1.904,-1.907,-1.910,-1.913, - &-1.915,-1.918,-1.921,-1.923,-1.926,-1.929,-1.931,-1.934,-1.936, - &-1.939,-1.942,-1.944,-1.947,-1.950,-1.952,-1.955,-1.957,-1.960, - &-1.962,-1.965,-1.968,-1.970,-1.973,-1.975,-1.978,-1.980,-1.983, - &-1.985,-1.988,-1.990,-1.993,-1.995,-1.998,-2.000,-2.003,-2.005, - &-2.008,-2.010,-2.013,-2.015,-2.018,-2.020,-2.023,-2.025,-2.028, - &-2.030,-2.032,-2.035,-2.037,-2.040,-2.042,-2.044,-2.047,-2.049, - &-2.052,-2.054,-2.057,-2.059,-2.061,-2.064,-2.066,-2.068,-2.071, - &-2.073,-2.076,-2.078,-2.080,-2.083,-2.085,-2.087,-2.090,-2.092, - &-2.094,-2.097,-2.099,-2.101,-2.104,-2.106,-2.108,-2.111,-2.113, - &-2.115,-2.118,-2.120,-2.122,-2.124,-2.127,-2.129,-2.131,-2.134, - &-2.136,-2.138,-2.141,-2.143,-2.145,-2.147,-2.150,-2.152,-2.154, - &-2.156,-2.159,-2.161,-2.163,-2.165,-2.168,-2.170,-2.172,-2.174, - &-2.177,-2.179,-2.181,-2.183,-2.186,-2.188,-2.190,-2.192,-2.195, - &-2.197,-2.199,-2.201,-2.203,-2.206,-2.208,-2.210,-2.212,-2.214, - &-2.217,-2.219,-2.221,-2.223,-2.225,-2.228,-2.230,-2.232,-2.234, - &-2.236,-2.239,-2.241,-2.243,-2.245,-2.247,-2.249,-2.252,-2.254, - &-2.256,-2.258,-2.260,-2.262,-2.265,-2.267,-2.269,-2.271,-2.273, - &-2.275,-2.278,-2.280,-2.282,-2.284,-2.286,-2.288,-2.290,-2.293, - &-2.295,-2.297,-2.299,-2.301,-2.303,-2.305,-2.308,-2.310,-2.312, - &-2.314,-2.316,-2.318,-2.320,-2.322,-2.325,-2.327,-2.329,-2.331, - &-2.333,-2.335,-2.337,-2.339,-2.341,-2.344,-2.346,-2.348,-2.350, - &-2.352,-2.354,-2.356,-2.358,-2.360,-2.362,-2.365,-2.367,-2.369, - &-2.371,-2.373,-2.375,-2.377,-2.379,-2.381,-2.383,-2.385,-2.388, - &-2.390,-2.392,-2.394,-2.396,-2.398,-2.400,-2.402,-2.404,-2.406, - &-2.408,-2.410,-2.412,-2.415,-2.437,-2.457,-2.478,-2.498,-2.518, - &-2.539,-2.559,-2.579,-2.599,-2.619,-2.638,-2.658,-2.678,-2.698, - &-2.717,-2.737,-2.756,-2.776,-2.795,-2.815,-2.834,-2.854,-2.873, - &-2.892,-2.911,-2.931,-2.950,-2.969,-2.988,-3.007,-3.026,-3.045, - &-3.064,-3.083,-3.102,-3.121,-3.140,-3.159,-3.178,-3.197,-3.215, - &-3.234,-3.253,-3.272,-3.291,-3.309,-3.328,-3.347,-3.365,-3.384, - &-3.403,-3.421,-3.440,-3.459,-3.477,-3.496,-3.514,-3.533,-3.551, - &-3.570,-3.588,-3.607,-3.625,-3.644,-3.662,-3.681,-3.699,-3.718, - &-3.736,-3.754,-3.773,-3.791,-3.810,-3.828,-3.846,-3.865,-3.883, - &-3.901,-3.920,-3.938,-3.956,-3.974,-3.993,-4.011,-4.029,-4.047, - &-4.066,-4.084,-4.102,-4.120,-4.139,-4.157,-4.175,-4.193,-4.211, - &-4.229,-4.248,-4.266,-4.284,-4.302,-4.320,-4.338,-4.356,-4.374, - &-4.392,-4.411,-4.429,-4.447,-4.465,-4.483,-4.501,-4.519,-4.537, - &-4.555,-4.573,-4.591,-4.609,-4.627,-4.645,-4.663,-4.681,-4.699, - &-4.717,-4.735,-4.753,-4.771,-4.789,-4.807,-4.825,-4.842,-4.860, - &-4.878,-4.896,-4.914,-4.932,-4.950,-4.968,-4.986,-5.004,-5.021, - &-5.039,-5.057,-5.075,-5.093,-5.111,-5.129,-5.146,-5.164,-5.182, - &-5.200,-5.218,-5.235,-5.253,-5.271,-5.289,-5.307,-5.324,-5.342, - &-5.360,-5.378,-5.395 - & /) -! -! *** MGNO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC22M_223 = (/ - &-0.097,-0.201,-0.248,-0.278,-0.300,-0.316,-0.329,-0.339,-0.347, - &-0.354,-0.359,-0.363,-0.366,-0.369,-0.370,-0.372,-0.372,-0.373, - &-0.372,-0.372,-0.371,-0.370,-0.369,-0.367,-0.366,-0.364,-0.362, - &-0.359,-0.357,-0.354,-0.352,-0.349,-0.346,-0.344,-0.341,-0.338, - &-0.334,-0.331,-0.328,-0.325,-0.322,-0.318,-0.315,-0.312,-0.308, - &-0.305,-0.301,-0.298,-0.294,-0.291,-0.287,-0.284,-0.280,-0.277, - &-0.273,-0.270,-0.266,-0.263,-0.259,-0.256,-0.252,-0.248,-0.245, - &-0.241,-0.238,-0.234,-0.230,-0.227,-0.223,-0.219,-0.216,-0.212, - &-0.208,-0.204,-0.201,-0.197,-0.193,-0.189,-0.185,-0.181,-0.177, - &-0.173,-0.169,-0.165,-0.161,-0.157,-0.153,-0.149,-0.145,-0.141, - &-0.136,-0.132,-0.128,-0.123,-0.119,-0.115,-0.110,-0.106,-0.101, - &-0.097,-0.092,-0.087,-0.083,-0.078,-0.073,-0.069,-0.064,-0.059, - &-0.055,-0.050,-0.045,-0.040,-0.035,-0.031,-0.026,-0.021,-0.016, - &-0.011,-0.006,-0.001, 0.003, 0.008, 0.013, 0.018, 0.023, 0.028, - & 0.033, 0.038, 0.043, 0.048, 0.052, 0.057, 0.062, 0.067, 0.072, - & 0.077, 0.082, 0.087, 0.092, 0.097, 0.101, 0.106, 0.111, 0.116, - & 0.121, 0.126, 0.131, 0.135, 0.140, 0.145, 0.150, 0.155, 0.160, - & 0.164, 0.169, 0.174, 0.179, 0.184, 0.188, 0.193, 0.198, 0.203, - & 0.207, 0.212, 0.217, 0.222, 0.226, 0.231, 0.236, 0.241, 0.245, - & 0.250, 0.255, 0.259, 0.264, 0.269, 0.273, 0.278, 0.283, 0.287, - & 0.292, 0.297, 0.301, 0.306, 0.311, 0.315, 0.320, 0.324, 0.329, - & 0.333, 0.338, 0.343, 0.347, 0.352, 0.356, 0.361, 0.365, 0.370, - & 0.374, 0.379, 0.383, 0.388, 0.392, 0.397, 0.401, 0.406, 0.410, - & 0.414, 0.419, 0.423, 0.428, 0.432, 0.437, 0.441, 0.445, 0.450, - & 0.454, 0.458, 0.463, 0.467, 0.472, 0.476, 0.480, 0.484, 0.489, - & 0.493, 0.497, 0.502, 0.506, 0.510, 0.514, 0.519, 0.523, 0.527, - & 0.531, 0.536, 0.540, 0.544, 0.548, 0.553, 0.557, 0.561, 0.565, - & 0.569, 0.573, 0.578, 0.582, 0.586, 0.590, 0.594, 0.598, 0.602, - & 0.606, 0.610, 0.615, 0.619, 0.623, 0.627, 0.631, 0.635, 0.639, - & 0.643, 0.647, 0.651, 0.655, 0.659, 0.663, 0.667, 0.671, 0.675, - & 0.679, 0.683, 0.687, 0.691, 0.695, 0.699, 0.703, 0.706, 0.710, - & 0.714, 0.718, 0.722, 0.726, 0.730, 0.734, 0.738, 0.741, 0.745, - & 0.749, 0.753, 0.757, 0.761, 0.764, 0.768, 0.772, 0.776, 0.779, - & 0.783, 0.787, 0.791, 0.795, 0.798, 0.802, 0.806, 0.809, 0.813, - & 0.817, 0.821, 0.824, 0.828, 0.832, 0.835, 0.839, 0.843, 0.846, - & 0.850, 0.854, 0.857, 0.861, 0.865, 0.868, 0.872, 0.875, 0.879, - & 0.883, 0.886, 0.890, 0.893, 0.897, 0.900, 0.904, 0.907, 0.911, - & 0.915, 0.918, 0.922, 0.925, 0.929, 0.932, 0.936, 0.939, 0.943, - & 0.946, 0.950, 0.953, 0.956, 0.960, 0.963, 0.967, 0.970, 0.974, - & 0.977, 0.980, 0.984, 0.987, 0.991, 0.994, 0.997, 1.001, 1.004, - & 1.007, 1.011, 1.014, 1.018, 1.021, 1.024, 1.028, 1.031, 1.034, - & 1.037, 1.041, 1.044, 1.047, 1.051, 1.054, 1.057, 1.060, 1.064, - & 1.067, 1.070, 1.073, 1.077, 1.080, 1.083, 1.086, 1.090, 1.093, - & 1.096, 1.099, 1.102, 1.106, 1.109, 1.112, 1.115, 1.118, 1.121, - & 1.125, 1.128, 1.131, 1.134, 1.167, 1.198, 1.228, 1.257, 1.286, - & 1.314, 1.342, 1.370, 1.397, 1.423, 1.449, 1.475, 1.500, 1.525, - & 1.549, 1.573, 1.597, 1.620, 1.643, 1.665, 1.687, 1.709, 1.730, - & 1.751, 1.772, 1.793, 1.813, 1.833, 1.852, 1.871, 1.890, 1.909, - & 1.927, 1.945, 1.963, 1.981, 1.998, 2.015, 2.032, 2.049, 2.065, - & 2.081, 2.097, 2.112, 2.128, 2.143, 2.158, 2.173, 2.187, 2.202, - & 2.216, 2.230, 2.244, 2.257, 2.271, 2.284, 2.297, 2.310, 2.322, - & 2.335, 2.347, 2.359, 2.371, 2.383, 2.395, 2.406, 2.418, 2.429, - & 2.440, 2.451, 2.462, 2.472, 2.483, 2.493, 2.503, 2.513, 2.523, - & 2.533, 2.543, 2.552, 2.562, 2.571, 2.580, 2.589, 2.598, 2.607, - & 2.616, 2.624, 2.633, 2.641, 2.650, 2.658, 2.666, 2.674, 2.681, - & 2.689, 2.697, 2.704, 2.712, 2.719, 2.726, 2.733, 2.740, 2.747, - & 2.754, 2.761, 2.768, 2.774, 2.781, 2.787, 2.793, 2.800, 2.806, - & 2.812, 2.818, 2.824, 2.830, 2.835, 2.841, 2.847, 2.852, 2.858, - & 2.863, 2.868, 2.873, 2.879, 2.884, 2.889, 2.893, 2.898, 2.903, - & 2.908, 2.912, 2.917, 2.922, 2.926, 2.930, 2.935, 2.939, 2.943, - & 2.947, 2.951, 2.955, 2.959, 2.963, 2.967, 2.971, 2.974, 2.978, - & 2.982, 2.985, 2.989, 2.992, 2.996, 2.999, 3.002, 3.005, 3.009, - & 3.012, 3.015, 3.018 - & /) -! -! *** MGCL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC23M_223 = (/ - &-0.096,-0.198,-0.242,-0.270,-0.290,-0.304,-0.315,-0.323,-0.329, - &-0.333,-0.337,-0.339,-0.340,-0.341,-0.340,-0.340,-0.339,-0.337, - &-0.335,-0.333,-0.330,-0.327,-0.324,-0.320,-0.317,-0.313,-0.309, - &-0.305,-0.301,-0.296,-0.292,-0.287,-0.283,-0.278,-0.273,-0.268, - &-0.263,-0.258,-0.253,-0.248,-0.243,-0.238,-0.233,-0.228,-0.222, - &-0.217,-0.212,-0.207,-0.202,-0.196,-0.191,-0.186,-0.180,-0.175, - &-0.170,-0.164,-0.159,-0.154,-0.149,-0.143,-0.138,-0.133,-0.127, - &-0.122,-0.117,-0.111,-0.106,-0.100,-0.095,-0.090,-0.084,-0.079, - &-0.073,-0.068,-0.062,-0.057,-0.051,-0.045,-0.040,-0.034,-0.028, - &-0.023,-0.017,-0.011,-0.005, 0.001, 0.007, 0.013, 0.019, 0.025, - & 0.031, 0.037, 0.043, 0.049, 0.055, 0.062, 0.068, 0.074, 0.081, - & 0.087, 0.094, 0.100, 0.107, 0.113, 0.120, 0.126, 0.133, 0.140, - & 0.146, 0.153, 0.160, 0.166, 0.173, 0.180, 0.187, 0.193, 0.200, - & 0.207, 0.214, 0.220, 0.227, 0.234, 0.241, 0.248, 0.255, 0.261, - & 0.268, 0.275, 0.282, 0.289, 0.296, 0.302, 0.309, 0.316, 0.323, - & 0.330, 0.337, 0.343, 0.350, 0.357, 0.364, 0.371, 0.377, 0.384, - & 0.391, 0.398, 0.404, 0.411, 0.418, 0.425, 0.431, 0.438, 0.445, - & 0.451, 0.458, 0.465, 0.471, 0.478, 0.485, 0.491, 0.498, 0.505, - & 0.511, 0.518, 0.524, 0.531, 0.537, 0.544, 0.551, 0.557, 0.564, - & 0.570, 0.577, 0.583, 0.590, 0.596, 0.603, 0.609, 0.616, 0.622, - & 0.628, 0.635, 0.641, 0.648, 0.654, 0.660, 0.667, 0.673, 0.679, - & 0.686, 0.692, 0.698, 0.705, 0.711, 0.717, 0.724, 0.730, 0.736, - & 0.742, 0.749, 0.755, 0.761, 0.767, 0.773, 0.780, 0.786, 0.792, - & 0.798, 0.804, 0.810, 0.816, 0.823, 0.829, 0.835, 0.841, 0.847, - & 0.853, 0.859, 0.865, 0.871, 0.877, 0.883, 0.889, 0.895, 0.901, - & 0.907, 0.913, 0.919, 0.925, 0.931, 0.937, 0.942, 0.948, 0.954, - & 0.960, 0.966, 0.972, 0.978, 0.983, 0.989, 0.995, 1.001, 1.007, - & 1.012, 1.018, 1.024, 1.030, 1.035, 1.041, 1.047, 1.052, 1.058, - & 1.064, 1.069, 1.075, 1.081, 1.086, 1.092, 1.098, 1.103, 1.109, - & 1.114, 1.120, 1.125, 1.131, 1.136, 1.142, 1.148, 1.153, 1.159, - & 1.164, 1.169, 1.175, 1.180, 1.186, 1.191, 1.197, 1.202, 1.208, - & 1.213, 1.218, 1.224, 1.229, 1.234, 1.240, 1.245, 1.250, 1.256, - & 1.261, 1.266, 1.272, 1.277, 1.282, 1.287, 1.293, 1.298, 1.303, - & 1.308, 1.314, 1.319, 1.324, 1.329, 1.334, 1.339, 1.345, 1.350, - & 1.355, 1.360, 1.365, 1.370, 1.375, 1.380, 1.385, 1.390, 1.396, - & 1.401, 1.406, 1.411, 1.416, 1.421, 1.426, 1.431, 1.436, 1.441, - & 1.446, 1.451, 1.456, 1.460, 1.465, 1.470, 1.475, 1.480, 1.485, - & 1.490, 1.495, 1.500, 1.504, 1.509, 1.514, 1.519, 1.524, 1.529, - & 1.533, 1.538, 1.543, 1.548, 1.553, 1.557, 1.562, 1.567, 1.572, - & 1.576, 1.581, 1.586, 1.590, 1.595, 1.600, 1.604, 1.609, 1.614, - & 1.618, 1.623, 1.628, 1.632, 1.637, 1.642, 1.646, 1.651, 1.655, - & 1.660, 1.664, 1.669, 1.674, 1.678, 1.683, 1.687, 1.692, 1.696, - & 1.701, 1.705, 1.710, 1.714, 1.719, 1.723, 1.728, 1.732, 1.736, - & 1.741, 1.745, 1.750, 1.754, 1.759, 1.763, 1.767, 1.772, 1.776, - & 1.780, 1.785, 1.789, 1.793, 1.840, 1.882, 1.923, 1.964, 2.004, - & 2.044, 2.082, 2.120, 2.158, 2.195, 2.231, 2.267, 2.302, 2.336, - & 2.370, 2.404, 2.437, 2.469, 2.501, 2.533, 2.564, 2.594, 2.624, - & 2.654, 2.683, 2.712, 2.741, 2.768, 2.796, 2.823, 2.850, 2.877, - & 2.903, 2.928, 2.954, 2.979, 3.003, 3.028, 3.052, 3.076, 3.099, - & 3.122, 3.145, 3.167, 3.190, 3.211, 3.233, 3.254, 3.276, 3.296, - & 3.317, 3.337, 3.357, 3.377, 3.397, 3.416, 3.435, 3.454, 3.473, - & 3.491, 3.509, 3.527, 3.545, 3.563, 3.580, 3.597, 3.614, 3.631, - & 3.647, 3.664, 3.680, 3.696, 3.712, 3.727, 3.743, 3.758, 3.773, - & 3.788, 3.803, 3.817, 3.832, 3.846, 3.860, 3.874, 3.888, 3.902, - & 3.915, 3.928, 3.942, 3.955, 3.968, 3.980, 3.993, 4.006, 4.018, - & 4.030, 4.042, 4.054, 4.066, 4.078, 4.089, 4.101, 4.112, 4.123, - & 4.134, 4.145, 4.156, 4.167, 4.178, 4.188, 4.199, 4.209, 4.219, - & 4.229, 4.239, 4.249, 4.259, 4.269, 4.278, 4.288, 4.297, 4.306, - & 4.316, 4.325, 4.334, 4.343, 4.351, 4.360, 4.369, 4.377, 4.386, - & 4.394, 4.402, 4.411, 4.419, 4.427, 4.435, 4.442, 4.450, 4.458, - & 4.466, 4.473, 4.480, 4.488, 4.495, 4.502, 4.510, 4.517, 4.524, - & 4.531, 4.537, 4.544, 4.551, 4.558, 4.564, 4.571, 4.577, 4.583, - & 4.590, 4.596, 4.602 - & /) - - ! Formerly BLOCK DATA KMCF248 -! -! *** NaCl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC01M_248 = (/ - &-0.047,-0.099,-0.122,-0.137,-0.148,-0.156,-0.163,-0.168,-0.172, - &-0.176,-0.178,-0.181,-0.182,-0.184,-0.185,-0.186,-0.186,-0.187, - &-0.187,-0.187,-0.187,-0.187,-0.186,-0.186,-0.185,-0.184,-0.184, - &-0.183,-0.182,-0.181,-0.180,-0.179,-0.178,-0.176,-0.175,-0.174, - &-0.173,-0.171,-0.170,-0.168,-0.167,-0.166,-0.164,-0.163,-0.161, - &-0.160,-0.158,-0.157,-0.155,-0.154,-0.152,-0.151,-0.149,-0.148, - &-0.146,-0.145,-0.143,-0.141,-0.140,-0.138,-0.137,-0.135,-0.134, - &-0.132,-0.130,-0.129,-0.127,-0.126,-0.124,-0.122,-0.121,-0.119, - &-0.117,-0.116,-0.114,-0.112,-0.111,-0.109,-0.107,-0.105,-0.104, - &-0.102,-0.100,-0.098,-0.096,-0.095,-0.093,-0.091,-0.089,-0.087, - &-0.085,-0.083,-0.081,-0.079,-0.077,-0.075,-0.073,-0.071,-0.069, - &-0.067,-0.065,-0.063,-0.061,-0.059,-0.057,-0.055,-0.053,-0.051, - &-0.048,-0.046,-0.044,-0.042,-0.040,-0.038,-0.036,-0.033,-0.031, - &-0.029,-0.027,-0.025,-0.022,-0.020,-0.018,-0.016,-0.014,-0.011, - &-0.009,-0.007,-0.005,-0.003, 0.000, 0.002, 0.004, 0.006, 0.008, - & 0.011, 0.013, 0.015, 0.017, 0.020, 0.022, 0.024, 0.026, 0.028, - & 0.030, 0.033, 0.035, 0.037, 0.039, 0.041, 0.044, 0.046, 0.048, - & 0.050, 0.052, 0.054, 0.057, 0.059, 0.061, 0.063, 0.065, 0.067, - & 0.070, 0.072, 0.074, 0.076, 0.078, 0.080, 0.082, 0.085, 0.087, - & 0.089, 0.091, 0.093, 0.095, 0.097, 0.099, 0.102, 0.104, 0.106, - & 0.108, 0.110, 0.112, 0.114, 0.116, 0.118, 0.120, 0.122, 0.125, - & 0.127, 0.129, 0.131, 0.133, 0.135, 0.137, 0.139, 0.141, 0.143, - & 0.145, 0.147, 0.149, 0.151, 0.153, 0.155, 0.157, 0.159, 0.161, - & 0.163, 0.165, 0.167, 0.169, 0.171, 0.173, 0.175, 0.177, 0.179, - & 0.181, 0.183, 0.185, 0.187, 0.189, 0.191, 0.193, 0.195, 0.197, - & 0.199, 0.201, 0.203, 0.205, 0.207, 0.209, 0.211, 0.213, 0.215, - & 0.217, 0.219, 0.221, 0.223, 0.224, 0.226, 0.228, 0.230, 0.232, - & 0.234, 0.236, 0.238, 0.240, 0.242, 0.243, 0.245, 0.247, 0.249, - & 0.251, 0.253, 0.255, 0.257, 0.258, 0.260, 0.262, 0.264, 0.266, - & 0.268, 0.270, 0.271, 0.273, 0.275, 0.277, 0.279, 0.281, 0.282, - & 0.284, 0.286, 0.288, 0.290, 0.291, 0.293, 0.295, 0.297, 0.299, - & 0.300, 0.302, 0.304, 0.306, 0.308, 0.309, 0.311, 0.313, 0.315, - & 0.316, 0.318, 0.320, 0.322, 0.323, 0.325, 0.327, 0.329, 0.330, - & 0.332, 0.334, 0.336, 0.337, 0.339, 0.341, 0.342, 0.344, 0.346, - & 0.348, 0.349, 0.351, 0.353, 0.354, 0.356, 0.358, 0.359, 0.361, - & 0.363, 0.364, 0.366, 0.368, 0.370, 0.371, 0.373, 0.374, 0.376, - & 0.378, 0.379, 0.381, 0.383, 0.384, 0.386, 0.388, 0.389, 0.391, - & 0.393, 0.394, 0.396, 0.397, 0.399, 0.401, 0.402, 0.404, 0.406, - & 0.407, 0.409, 0.410, 0.412, 0.414, 0.415, 0.417, 0.418, 0.420, - & 0.421, 0.423, 0.425, 0.426, 0.428, 0.429, 0.431, 0.433, 0.434, - & 0.436, 0.437, 0.439, 0.440, 0.442, 0.443, 0.445, 0.446, 0.448, - & 0.450, 0.451, 0.453, 0.454, 0.456, 0.457, 0.459, 0.460, 0.462, - & 0.463, 0.465, 0.466, 0.468, 0.469, 0.471, 0.472, 0.474, 0.475, - & 0.477, 0.478, 0.480, 0.481, 0.483, 0.484, 0.486, 0.487, 0.489, - & 0.490, 0.491, 0.493, 0.494, 0.510, 0.524, 0.538, 0.552, 0.566, - & 0.579, 0.592, 0.605, 0.618, 0.630, 0.642, 0.655, 0.667, 0.678, - & 0.690, 0.701, 0.713, 0.724, 0.735, 0.745, 0.756, 0.766, 0.777, - & 0.787, 0.797, 0.807, 0.817, 0.826, 0.836, 0.845, 0.854, 0.864, - & 0.873, 0.881, 0.890, 0.899, 0.907, 0.916, 0.924, 0.932, 0.940, - & 0.948, 0.956, 0.964, 0.972, 0.979, 0.987, 0.994, 1.002, 1.009, - & 1.016, 1.023, 1.030, 1.037, 1.044, 1.051, 1.057, 1.064, 1.070, - & 1.077, 1.083, 1.089, 1.096, 1.102, 1.108, 1.114, 1.120, 1.126, - & 1.132, 1.137, 1.143, 1.149, 1.154, 1.160, 1.165, 1.170, 1.176, - & 1.181, 1.186, 1.191, 1.196, 1.201, 1.206, 1.211, 1.216, 1.221, - & 1.226, 1.231, 1.235, 1.240, 1.244, 1.249, 1.253, 1.258, 1.262, - & 1.267, 1.271, 1.275, 1.279, 1.284, 1.288, 1.292, 1.296, 1.300, - & 1.304, 1.308, 1.312, 1.315, 1.319, 1.323, 1.327, 1.330, 1.334, - & 1.338, 1.341, 1.345, 1.348, 1.352, 1.355, 1.358, 1.362, 1.365, - & 1.368, 1.372, 1.375, 1.378, 1.381, 1.384, 1.388, 1.391, 1.394, - & 1.397, 1.400, 1.403, 1.406, 1.409, 1.411, 1.414, 1.417, 1.420, - & 1.423, 1.425, 1.428, 1.431, 1.433, 1.436, 1.439, 1.441, 1.444, - & 1.446, 1.449, 1.451, 1.454, 1.456, 1.458, 1.461, 1.463, 1.466, - & 1.468, 1.470, 1.472 - & /) -! -! *** Na2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC02M_248 = (/ - &-0.098,-0.214,-0.272,-0.313,-0.346,-0.373,-0.396,-0.417,-0.435, - &-0.452,-0.467,-0.481,-0.494,-0.506,-0.518,-0.529,-0.539,-0.549, - &-0.558,-0.567,-0.575,-0.583,-0.591,-0.599,-0.606,-0.613,-0.620, - &-0.627,-0.633,-0.639,-0.645,-0.651,-0.657,-0.662,-0.668,-0.673, - &-0.678,-0.683,-0.688,-0.693,-0.698,-0.703,-0.707,-0.712,-0.716, - &-0.721,-0.725,-0.729,-0.733,-0.737,-0.741,-0.745,-0.749,-0.753, - &-0.756,-0.760,-0.764,-0.767,-0.771,-0.774,-0.778,-0.781,-0.784, - &-0.788,-0.791,-0.794,-0.797,-0.801,-0.804,-0.807,-0.810,-0.813, - &-0.816,-0.819,-0.822,-0.825,-0.827,-0.830,-0.833,-0.836,-0.839, - &-0.841,-0.844,-0.847,-0.850,-0.852,-0.855,-0.858,-0.860,-0.863, - &-0.865,-0.868,-0.871,-0.873,-0.876,-0.878,-0.881,-0.883,-0.885, - &-0.888,-0.890,-0.893,-0.895,-0.897,-0.900,-0.902,-0.905,-0.907, - &-0.909,-0.911,-0.914,-0.916,-0.918,-0.921,-0.923,-0.925,-0.927, - &-0.929,-0.932,-0.934,-0.936,-0.938,-0.940,-0.942,-0.945,-0.947, - &-0.949,-0.951,-0.953,-0.955,-0.957,-0.959,-0.961,-0.963,-0.965, - &-0.967,-0.969,-0.971,-0.973,-0.975,-0.977,-0.979,-0.981,-0.983, - &-0.985,-0.987,-0.989,-0.991,-0.993,-0.995,-0.997,-0.999,-1.001, - &-1.002,-1.004,-1.006,-1.008,-1.010,-1.012,-1.014,-1.015,-1.017, - &-1.019,-1.021,-1.023,-1.025,-1.026,-1.028,-1.030,-1.032,-1.033, - &-1.035,-1.037,-1.039,-1.040,-1.042,-1.044,-1.046,-1.047,-1.049, - &-1.051,-1.053,-1.054,-1.056,-1.058,-1.059,-1.061,-1.063,-1.064, - &-1.066,-1.068,-1.069,-1.071,-1.073,-1.074,-1.076,-1.078,-1.079, - &-1.081,-1.082,-1.084,-1.086,-1.087,-1.089,-1.090,-1.092,-1.094, - &-1.095,-1.097,-1.098,-1.100,-1.102,-1.103,-1.105,-1.106,-1.108, - &-1.109,-1.111,-1.112,-1.114,-1.116,-1.117,-1.119,-1.120,-1.122, - &-1.123,-1.125,-1.126,-1.128,-1.129,-1.131,-1.132,-1.134,-1.135, - &-1.137,-1.138,-1.140,-1.141,-1.143,-1.144,-1.146,-1.147,-1.148, - &-1.150,-1.151,-1.153,-1.154,-1.156,-1.157,-1.159,-1.160,-1.161, - &-1.163,-1.164,-1.166,-1.167,-1.169,-1.170,-1.171,-1.173,-1.174, - &-1.176,-1.177,-1.178,-1.180,-1.181,-1.183,-1.184,-1.185,-1.187, - &-1.188,-1.190,-1.191,-1.192,-1.194,-1.195,-1.196,-1.198,-1.199, - &-1.201,-1.202,-1.203,-1.205,-1.206,-1.207,-1.209,-1.210,-1.211, - &-1.213,-1.214,-1.215,-1.217,-1.218,-1.219,-1.221,-1.222,-1.223, - &-1.225,-1.226,-1.227,-1.229,-1.230,-1.231,-1.233,-1.234,-1.235, - &-1.236,-1.238,-1.239,-1.240,-1.242,-1.243,-1.244,-1.246,-1.247, - &-1.248,-1.249,-1.251,-1.252,-1.253,-1.255,-1.256,-1.257,-1.258, - &-1.260,-1.261,-1.262,-1.263,-1.265,-1.266,-1.267,-1.268,-1.270, - &-1.271,-1.272,-1.273,-1.275,-1.276,-1.277,-1.278,-1.280,-1.281, - &-1.282,-1.283,-1.285,-1.286,-1.287,-1.288,-1.290,-1.291,-1.292, - &-1.293,-1.294,-1.296,-1.297,-1.298,-1.299,-1.301,-1.302,-1.303, - &-1.304,-1.305,-1.307,-1.308,-1.309,-1.310,-1.311,-1.313,-1.314, - &-1.315,-1.316,-1.317,-1.319,-1.320,-1.321,-1.322,-1.323,-1.324, - &-1.326,-1.327,-1.328,-1.329,-1.330,-1.332,-1.333,-1.334,-1.335, - &-1.336,-1.337,-1.339,-1.340,-1.341,-1.342,-1.343,-1.344,-1.346, - &-1.347,-1.348,-1.349,-1.350,-1.363,-1.374,-1.385,-1.396,-1.407, - &-1.418,-1.429,-1.440,-1.451,-1.461,-1.472,-1.482,-1.492,-1.503, - &-1.513,-1.523,-1.533,-1.543,-1.553,-1.563,-1.573,-1.582,-1.592, - &-1.602,-1.611,-1.621,-1.630,-1.640,-1.649,-1.658,-1.668,-1.677, - &-1.686,-1.695,-1.704,-1.714,-1.723,-1.732,-1.741,-1.750,-1.758, - &-1.767,-1.776,-1.785,-1.794,-1.802,-1.811,-1.820,-1.828,-1.837, - &-1.846,-1.854,-1.863,-1.871,-1.880,-1.888,-1.897,-1.905,-1.913, - &-1.922,-1.930,-1.938,-1.947,-1.955,-1.963,-1.971,-1.979,-1.988, - &-1.996,-2.004,-2.012,-2.020,-2.028,-2.036,-2.044,-2.052,-2.060, - &-2.068,-2.076,-2.084,-2.092,-2.100,-2.108,-2.116,-2.124,-2.131, - &-2.139,-2.147,-2.155,-2.163,-2.170,-2.178,-2.186,-2.194,-2.201, - &-2.209,-2.217,-2.224,-2.232,-2.240,-2.247,-2.255,-2.262,-2.270, - &-2.278,-2.285,-2.293,-2.300,-2.308,-2.315,-2.323,-2.330,-2.338, - &-2.345,-2.353,-2.360,-2.368,-2.375,-2.382,-2.390,-2.397,-2.405, - &-2.412,-2.419,-2.427,-2.434,-2.441,-2.449,-2.456,-2.463,-2.471, - &-2.478,-2.485,-2.492,-2.500,-2.507,-2.514,-2.521,-2.529,-2.536, - &-2.543,-2.550,-2.557,-2.565,-2.572,-2.579,-2.586,-2.593,-2.600, - &-2.608,-2.615,-2.622,-2.629,-2.636,-2.643,-2.650,-2.657,-2.664, - &-2.671,-2.679,-2.686 - & /) -! -! *** NaNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC03M_248 = (/ - &-0.049,-0.108,-0.137,-0.159,-0.175,-0.190,-0.202,-0.212,-0.222, - &-0.231,-0.239,-0.247,-0.254,-0.260,-0.266,-0.272,-0.278,-0.283, - &-0.288,-0.293,-0.298,-0.302,-0.306,-0.311,-0.315,-0.319,-0.322, - &-0.326,-0.330,-0.333,-0.337,-0.340,-0.343,-0.346,-0.349,-0.352, - &-0.355,-0.358,-0.361,-0.364,-0.367,-0.369,-0.372,-0.374,-0.377, - &-0.379,-0.382,-0.384,-0.387,-0.389,-0.391,-0.394,-0.396,-0.398, - &-0.400,-0.402,-0.404,-0.406,-0.408,-0.410,-0.412,-0.414,-0.416, - &-0.418,-0.420,-0.422,-0.424,-0.426,-0.428,-0.429,-0.431,-0.433, - &-0.435,-0.436,-0.438,-0.440,-0.442,-0.443,-0.445,-0.447,-0.448, - &-0.450,-0.452,-0.453,-0.455,-0.456,-0.458,-0.459,-0.461,-0.463, - &-0.464,-0.466,-0.467,-0.469,-0.470,-0.472,-0.473,-0.475,-0.476, - &-0.478,-0.479,-0.481,-0.482,-0.483,-0.485,-0.486,-0.488,-0.489, - &-0.491,-0.492,-0.493,-0.495,-0.496,-0.498,-0.499,-0.500,-0.502, - &-0.503,-0.504,-0.506,-0.507,-0.508,-0.510,-0.511,-0.512,-0.514, - &-0.515,-0.516,-0.518,-0.519,-0.520,-0.521,-0.523,-0.524,-0.525, - &-0.526,-0.528,-0.529,-0.530,-0.531,-0.533,-0.534,-0.535,-0.536, - &-0.537,-0.539,-0.540,-0.541,-0.542,-0.543,-0.545,-0.546,-0.547, - &-0.548,-0.549,-0.550,-0.552,-0.553,-0.554,-0.555,-0.556,-0.557, - &-0.558,-0.559,-0.561,-0.562,-0.563,-0.564,-0.565,-0.566,-0.567, - &-0.568,-0.569,-0.570,-0.572,-0.573,-0.574,-0.575,-0.576,-0.577, - &-0.578,-0.579,-0.580,-0.581,-0.582,-0.583,-0.584,-0.585,-0.586, - &-0.587,-0.588,-0.589,-0.590,-0.592,-0.593,-0.594,-0.595,-0.596, - &-0.597,-0.598,-0.599,-0.600,-0.601,-0.602,-0.603,-0.604,-0.605, - &-0.606,-0.607,-0.607,-0.608,-0.609,-0.610,-0.611,-0.612,-0.613, - &-0.614,-0.615,-0.616,-0.617,-0.618,-0.619,-0.620,-0.621,-0.622, - &-0.623,-0.624,-0.625,-0.626,-0.627,-0.627,-0.628,-0.629,-0.630, - &-0.631,-0.632,-0.633,-0.634,-0.635,-0.636,-0.637,-0.638,-0.638, - &-0.639,-0.640,-0.641,-0.642,-0.643,-0.644,-0.645,-0.646,-0.646, - &-0.647,-0.648,-0.649,-0.650,-0.651,-0.652,-0.653,-0.654,-0.654, - &-0.655,-0.656,-0.657,-0.658,-0.659,-0.660,-0.660,-0.661,-0.662, - &-0.663,-0.664,-0.665,-0.666,-0.666,-0.667,-0.668,-0.669,-0.670, - &-0.671,-0.671,-0.672,-0.673,-0.674,-0.675,-0.676,-0.676,-0.677, - &-0.678,-0.679,-0.680,-0.681,-0.681,-0.682,-0.683,-0.684,-0.685, - &-0.685,-0.686,-0.687,-0.688,-0.689,-0.689,-0.690,-0.691,-0.692, - &-0.693,-0.693,-0.694,-0.695,-0.696,-0.697,-0.697,-0.698,-0.699, - &-0.700,-0.701,-0.701,-0.702,-0.703,-0.704,-0.704,-0.705,-0.706, - &-0.707,-0.708,-0.708,-0.709,-0.710,-0.711,-0.711,-0.712,-0.713, - &-0.714,-0.714,-0.715,-0.716,-0.717,-0.718,-0.718,-0.719,-0.720, - &-0.721,-0.721,-0.722,-0.723,-0.724,-0.724,-0.725,-0.726,-0.727, - &-0.727,-0.728,-0.729,-0.729,-0.730,-0.731,-0.732,-0.732,-0.733, - &-0.734,-0.735,-0.735,-0.736,-0.737,-0.738,-0.738,-0.739,-0.740, - &-0.740,-0.741,-0.742,-0.743,-0.743,-0.744,-0.745,-0.746,-0.746, - &-0.747,-0.748,-0.748,-0.749,-0.750,-0.751,-0.751,-0.752,-0.753, - &-0.753,-0.754,-0.755,-0.756,-0.756,-0.757,-0.758,-0.758,-0.759, - &-0.760,-0.760,-0.761,-0.762,-0.769,-0.776,-0.783,-0.790,-0.796, - &-0.803,-0.809,-0.816,-0.822,-0.828,-0.835,-0.841,-0.847,-0.853, - &-0.859,-0.865,-0.871,-0.877,-0.883,-0.888,-0.894,-0.900,-0.905, - &-0.911,-0.917,-0.922,-0.928,-0.933,-0.939,-0.944,-0.949,-0.955, - &-0.960,-0.965,-0.971,-0.976,-0.981,-0.986,-0.991,-0.997,-1.002, - &-1.007,-1.012,-1.017,-1.022,-1.027,-1.032,-1.037,-1.042,-1.046, - &-1.051,-1.056,-1.061,-1.066,-1.071,-1.075,-1.080,-1.085,-1.089, - &-1.094,-1.099,-1.104,-1.108,-1.113,-1.117,-1.122,-1.127,-1.131, - &-1.136,-1.140,-1.145,-1.149,-1.154,-1.158,-1.163,-1.167,-1.172, - &-1.176,-1.180,-1.185,-1.189,-1.194,-1.198,-1.202,-1.207,-1.211, - &-1.215,-1.220,-1.224,-1.228,-1.232,-1.237,-1.241,-1.245,-1.249, - &-1.254,-1.258,-1.262,-1.266,-1.270,-1.275,-1.279,-1.283,-1.287, - &-1.291,-1.295,-1.299,-1.304,-1.308,-1.312,-1.316,-1.320,-1.324, - &-1.328,-1.332,-1.336,-1.340,-1.344,-1.348,-1.352,-1.356,-1.360, - &-1.364,-1.368,-1.372,-1.376,-1.380,-1.384,-1.388,-1.392,-1.396, - &-1.400,-1.404,-1.408,-1.412,-1.415,-1.419,-1.423,-1.427,-1.431, - &-1.435,-1.439,-1.443,-1.446,-1.450,-1.454,-1.458,-1.462,-1.466, - &-1.469,-1.473,-1.477,-1.481,-1.485,-1.488,-1.492,-1.496,-1.500, - &-1.504,-1.507,-1.511 - & /) -! -! *** (NH4)2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC04M_248 = (/ - &-0.098,-0.214,-0.273,-0.315,-0.347,-0.375,-0.399,-0.419,-0.438, - &-0.455,-0.470,-0.485,-0.498,-0.511,-0.522,-0.533,-0.544,-0.554, - &-0.563,-0.572,-0.581,-0.590,-0.598,-0.605,-0.613,-0.620,-0.627, - &-0.634,-0.641,-0.647,-0.653,-0.660,-0.666,-0.671,-0.677,-0.683, - &-0.688,-0.693,-0.698,-0.703,-0.708,-0.713,-0.718,-0.723,-0.727, - &-0.732,-0.736,-0.741,-0.745,-0.749,-0.753,-0.757,-0.762,-0.765, - &-0.769,-0.773,-0.777,-0.781,-0.784,-0.788,-0.792,-0.795,-0.799, - &-0.802,-0.806,-0.809,-0.812,-0.816,-0.819,-0.822,-0.825,-0.829, - &-0.832,-0.835,-0.838,-0.841,-0.844,-0.847,-0.850,-0.853,-0.856, - &-0.859,-0.862,-0.865,-0.867,-0.870,-0.873,-0.876,-0.879,-0.881, - &-0.884,-0.887,-0.890,-0.892,-0.895,-0.898,-0.900,-0.903,-0.905, - &-0.908,-0.911,-0.913,-0.916,-0.918,-0.921,-0.923,-0.926,-0.928, - &-0.931,-0.933,-0.936,-0.938,-0.940,-0.943,-0.945,-0.948,-0.950, - &-0.952,-0.955,-0.957,-0.959,-0.962,-0.964,-0.966,-0.969,-0.971, - &-0.973,-0.975,-0.978,-0.980,-0.982,-0.984,-0.986,-0.989,-0.991, - &-0.993,-0.995,-0.997,-0.999,-1.002,-1.004,-1.006,-1.008,-1.010, - &-1.012,-1.014,-1.016,-1.018,-1.020,-1.022,-1.024,-1.026,-1.028, - &-1.030,-1.032,-1.034,-1.036,-1.038,-1.040,-1.042,-1.044,-1.046, - &-1.048,-1.050,-1.052,-1.054,-1.056,-1.058,-1.060,-1.062,-1.064, - &-1.066,-1.067,-1.069,-1.071,-1.073,-1.075,-1.077,-1.079,-1.080, - &-1.082,-1.084,-1.086,-1.088,-1.090,-1.091,-1.093,-1.095,-1.097, - &-1.099,-1.100,-1.102,-1.104,-1.106,-1.107,-1.109,-1.111,-1.113, - &-1.114,-1.116,-1.118,-1.120,-1.121,-1.123,-1.125,-1.127,-1.128, - &-1.130,-1.132,-1.133,-1.135,-1.137,-1.138,-1.140,-1.142,-1.143, - &-1.145,-1.147,-1.148,-1.150,-1.152,-1.153,-1.155,-1.157,-1.158, - &-1.160,-1.162,-1.163,-1.165,-1.166,-1.168,-1.170,-1.171,-1.173, - &-1.174,-1.176,-1.178,-1.179,-1.181,-1.182,-1.184,-1.185,-1.187, - &-1.189,-1.190,-1.192,-1.193,-1.195,-1.196,-1.198,-1.199,-1.201, - &-1.203,-1.204,-1.206,-1.207,-1.209,-1.210,-1.212,-1.213,-1.215, - &-1.216,-1.218,-1.219,-1.221,-1.222,-1.224,-1.225,-1.227,-1.228, - &-1.230,-1.231,-1.233,-1.234,-1.236,-1.237,-1.238,-1.240,-1.241, - &-1.243,-1.244,-1.246,-1.247,-1.249,-1.250,-1.252,-1.253,-1.254, - &-1.256,-1.257,-1.259,-1.260,-1.262,-1.263,-1.264,-1.266,-1.267, - &-1.269,-1.270,-1.271,-1.273,-1.274,-1.276,-1.277,-1.278,-1.280, - &-1.281,-1.283,-1.284,-1.285,-1.287,-1.288,-1.290,-1.291,-1.292, - &-1.294,-1.295,-1.296,-1.298,-1.299,-1.301,-1.302,-1.303,-1.305, - &-1.306,-1.307,-1.309,-1.310,-1.311,-1.313,-1.314,-1.315,-1.317, - &-1.318,-1.319,-1.321,-1.322,-1.323,-1.325,-1.326,-1.327,-1.329, - &-1.330,-1.331,-1.333,-1.334,-1.335,-1.337,-1.338,-1.339,-1.341, - &-1.342,-1.343,-1.344,-1.346,-1.347,-1.348,-1.350,-1.351,-1.352, - &-1.354,-1.355,-1.356,-1.357,-1.359,-1.360,-1.361,-1.363,-1.364, - &-1.365,-1.366,-1.368,-1.369,-1.370,-1.371,-1.373,-1.374,-1.375, - &-1.376,-1.378,-1.379,-1.380,-1.381,-1.383,-1.384,-1.385,-1.387, - &-1.388,-1.389,-1.390,-1.391,-1.393,-1.394,-1.395,-1.396,-1.398, - &-1.399,-1.400,-1.401,-1.403,-1.416,-1.428,-1.440,-1.452,-1.463, - &-1.475,-1.487,-1.498,-1.509,-1.520,-1.532,-1.543,-1.554,-1.564, - &-1.575,-1.586,-1.596,-1.607,-1.617,-1.628,-1.638,-1.648,-1.659, - &-1.669,-1.679,-1.689,-1.699,-1.709,-1.719,-1.729,-1.738,-1.748, - &-1.758,-1.767,-1.777,-1.786,-1.796,-1.805,-1.815,-1.824,-1.833, - &-1.843,-1.852,-1.861,-1.870,-1.879,-1.888,-1.897,-1.906,-1.915, - &-1.924,-1.933,-1.942,-1.951,-1.960,-1.969,-1.977,-1.986,-1.995, - &-2.004,-2.012,-2.021,-2.029,-2.038,-2.047,-2.055,-2.064,-2.072, - &-2.081,-2.089,-2.097,-2.106,-2.114,-2.123,-2.131,-2.139,-2.147, - &-2.156,-2.164,-2.172,-2.180,-2.189,-2.197,-2.205,-2.213,-2.221, - &-2.229,-2.237,-2.245,-2.253,-2.261,-2.269,-2.277,-2.285,-2.293, - &-2.301,-2.309,-2.317,-2.325,-2.333,-2.341,-2.349,-2.356,-2.364, - &-2.372,-2.380,-2.388,-2.395,-2.403,-2.411,-2.419,-2.426,-2.434, - &-2.442,-2.449,-2.457,-2.465,-2.472,-2.480,-2.488,-2.495,-2.503, - &-2.510,-2.518,-2.525,-2.533,-2.541,-2.548,-2.556,-2.563,-2.571, - &-2.578,-2.586,-2.593,-2.600,-2.608,-2.615,-2.623,-2.630,-2.638, - &-2.645,-2.652,-2.660,-2.667,-2.674,-2.682,-2.689,-2.696,-2.704, - &-2.711,-2.718,-2.726,-2.733,-2.740,-2.747,-2.755,-2.762,-2.769, - &-2.776,-2.784,-2.791 - & /) -! -! *** NH4NO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC05M_248 = (/ - &-0.050,-0.111,-0.143,-0.166,-0.185,-0.202,-0.216,-0.229,-0.240, - &-0.251,-0.261,-0.271,-0.279,-0.288,-0.296,-0.304,-0.311,-0.318, - &-0.325,-0.331,-0.338,-0.344,-0.350,-0.356,-0.361,-0.367,-0.372, - &-0.378,-0.383,-0.388,-0.393,-0.398,-0.402,-0.407,-0.412,-0.416, - &-0.420,-0.425,-0.429,-0.433,-0.437,-0.441,-0.445,-0.449,-0.453, - &-0.457,-0.460,-0.464,-0.468,-0.471,-0.475,-0.478,-0.482,-0.485, - &-0.488,-0.491,-0.495,-0.498,-0.501,-0.504,-0.507,-0.510,-0.513, - &-0.516,-0.519,-0.522,-0.525,-0.528,-0.531,-0.534,-0.537,-0.539, - &-0.542,-0.545,-0.548,-0.550,-0.553,-0.556,-0.558,-0.561,-0.564, - &-0.566,-0.569,-0.572,-0.574,-0.577,-0.579,-0.582,-0.584,-0.587, - &-0.589,-0.592,-0.594,-0.597,-0.599,-0.602,-0.604,-0.607,-0.609, - &-0.612,-0.614,-0.617,-0.619,-0.621,-0.624,-0.626,-0.629,-0.631, - &-0.633,-0.636,-0.638,-0.640,-0.643,-0.645,-0.647,-0.650,-0.652, - &-0.654,-0.656,-0.659,-0.661,-0.663,-0.665,-0.668,-0.670,-0.672, - &-0.674,-0.677,-0.679,-0.681,-0.683,-0.685,-0.687,-0.690,-0.692, - &-0.694,-0.696,-0.698,-0.700,-0.702,-0.704,-0.706,-0.709,-0.711, - &-0.713,-0.715,-0.717,-0.719,-0.721,-0.723,-0.725,-0.727,-0.729, - &-0.731,-0.733,-0.735,-0.737,-0.739,-0.741,-0.742,-0.744,-0.746, - &-0.748,-0.750,-0.752,-0.754,-0.756,-0.758,-0.760,-0.761,-0.763, - &-0.765,-0.767,-0.769,-0.771,-0.772,-0.774,-0.776,-0.778,-0.780, - &-0.782,-0.783,-0.785,-0.787,-0.789,-0.790,-0.792,-0.794,-0.796, - &-0.797,-0.799,-0.801,-0.803,-0.804,-0.806,-0.808,-0.809,-0.811, - &-0.813,-0.814,-0.816,-0.818,-0.820,-0.821,-0.823,-0.824,-0.826, - &-0.828,-0.829,-0.831,-0.833,-0.834,-0.836,-0.838,-0.839,-0.841, - &-0.842,-0.844,-0.846,-0.847,-0.849,-0.850,-0.852,-0.853,-0.855, - &-0.857,-0.858,-0.860,-0.861,-0.863,-0.864,-0.866,-0.867,-0.869, - &-0.870,-0.872,-0.873,-0.875,-0.876,-0.878,-0.879,-0.881,-0.882, - &-0.884,-0.885,-0.887,-0.888,-0.890,-0.891,-0.893,-0.894,-0.896, - &-0.897,-0.898,-0.900,-0.901,-0.903,-0.904,-0.906,-0.907,-0.908, - &-0.910,-0.911,-0.913,-0.914,-0.915,-0.917,-0.918,-0.920,-0.921, - &-0.922,-0.924,-0.925,-0.926,-0.928,-0.929,-0.931,-0.932,-0.933, - &-0.935,-0.936,-0.937,-0.939,-0.940,-0.941,-0.943,-0.944,-0.945, - &-0.947,-0.948,-0.949,-0.951,-0.952,-0.953,-0.954,-0.956,-0.957, - &-0.958,-0.960,-0.961,-0.962,-0.963,-0.965,-0.966,-0.967,-0.969, - &-0.970,-0.971,-0.972,-0.974,-0.975,-0.976,-0.977,-0.979,-0.980, - &-0.981,-0.982,-0.984,-0.985,-0.986,-0.987,-0.988,-0.990,-0.991, - &-0.992,-0.993,-0.995,-0.996,-0.997,-0.998,-0.999,-1.001,-1.002, - &-1.003,-1.004,-1.005,-1.007,-1.008,-1.009,-1.010,-1.011,-1.012, - &-1.014,-1.015,-1.016,-1.017,-1.018,-1.019,-1.021,-1.022,-1.023, - &-1.024,-1.025,-1.026,-1.027,-1.029,-1.030,-1.031,-1.032,-1.033, - &-1.034,-1.035,-1.037,-1.038,-1.039,-1.040,-1.041,-1.042,-1.043, - &-1.044,-1.045,-1.047,-1.048,-1.049,-1.050,-1.051,-1.052,-1.053, - &-1.054,-1.055,-1.056,-1.058,-1.059,-1.060,-1.061,-1.062,-1.063, - &-1.064,-1.065,-1.066,-1.067,-1.068,-1.069,-1.070,-1.071,-1.072, - &-1.074,-1.075,-1.076,-1.077,-1.088,-1.098,-1.108,-1.118,-1.128, - &-1.137,-1.147,-1.156,-1.165,-1.174,-1.183,-1.192,-1.200,-1.209, - &-1.217,-1.225,-1.233,-1.241,-1.249,-1.257,-1.265,-1.273,-1.280, - &-1.288,-1.295,-1.303,-1.310,-1.317,-1.324,-1.331,-1.338,-1.345, - &-1.352,-1.359,-1.365,-1.372,-1.379,-1.385,-1.392,-1.398,-1.404, - &-1.411,-1.417,-1.423,-1.429,-1.435,-1.441,-1.447,-1.453,-1.459, - &-1.465,-1.471,-1.477,-1.483,-1.488,-1.494,-1.500,-1.505,-1.511, - &-1.516,-1.522,-1.527,-1.533,-1.538,-1.544,-1.549,-1.554,-1.560, - &-1.565,-1.570,-1.575,-1.580,-1.586,-1.591,-1.596,-1.601,-1.606, - &-1.611,-1.616,-1.621,-1.626,-1.631,-1.635,-1.640,-1.645,-1.650, - &-1.655,-1.660,-1.664,-1.669,-1.674,-1.679,-1.683,-1.688,-1.693, - &-1.697,-1.702,-1.706,-1.711,-1.716,-1.720,-1.725,-1.729,-1.734, - &-1.738,-1.743,-1.747,-1.751,-1.756,-1.760,-1.765,-1.769,-1.773, - &-1.778,-1.782,-1.786,-1.791,-1.795,-1.799,-1.803,-1.808,-1.812, - &-1.816,-1.820,-1.825,-1.829,-1.833,-1.837,-1.841,-1.845,-1.850, - &-1.854,-1.858,-1.862,-1.866,-1.870,-1.874,-1.878,-1.882,-1.886, - &-1.890,-1.894,-1.898,-1.902,-1.906,-1.910,-1.914,-1.918,-1.922, - &-1.926,-1.930,-1.934,-1.938,-1.942,-1.946,-1.950,-1.954,-1.958, - &-1.961,-1.965,-1.969 - & /) -! -! *** NH4Cl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC06M_248 = (/ - &-0.048,-0.103,-0.130,-0.148,-0.161,-0.173,-0.182,-0.190,-0.197, - &-0.203,-0.208,-0.213,-0.217,-0.221,-0.225,-0.228,-0.231,-0.234, - &-0.237,-0.239,-0.241,-0.243,-0.245,-0.247,-0.249,-0.251,-0.252, - &-0.254,-0.255,-0.256,-0.257,-0.259,-0.260,-0.261,-0.262,-0.263, - &-0.263,-0.264,-0.265,-0.266,-0.267,-0.267,-0.268,-0.269,-0.269, - &-0.270,-0.270,-0.271,-0.272,-0.272,-0.273,-0.273,-0.273,-0.274, - &-0.274,-0.275,-0.275,-0.275,-0.276,-0.276,-0.277,-0.277,-0.277, - &-0.277,-0.278,-0.278,-0.278,-0.279,-0.279,-0.279,-0.279,-0.279, - &-0.280,-0.280,-0.280,-0.280,-0.280,-0.280,-0.280,-0.281,-0.281, - &-0.281,-0.281,-0.281,-0.281,-0.281,-0.281,-0.281,-0.281,-0.281, - &-0.281,-0.281,-0.281,-0.281,-0.281,-0.281,-0.281,-0.281,-0.281, - &-0.281,-0.281,-0.280,-0.280,-0.280,-0.280,-0.280,-0.280,-0.280, - &-0.279,-0.279,-0.279,-0.279,-0.279,-0.279,-0.278,-0.278,-0.278, - &-0.278,-0.278,-0.277,-0.277,-0.277,-0.277,-0.277,-0.276,-0.276, - &-0.276,-0.276,-0.275,-0.275,-0.275,-0.275,-0.274,-0.274,-0.274, - &-0.274,-0.273,-0.273,-0.273,-0.273,-0.272,-0.272,-0.272,-0.272, - &-0.271,-0.271,-0.271,-0.271,-0.270,-0.270,-0.270,-0.270,-0.269, - &-0.269,-0.269,-0.269,-0.268,-0.268,-0.268,-0.267,-0.267,-0.267, - &-0.267,-0.266,-0.266,-0.266,-0.266,-0.265,-0.265,-0.265,-0.264, - &-0.264,-0.264,-0.264,-0.263,-0.263,-0.263,-0.263,-0.262,-0.262, - &-0.262,-0.261,-0.261,-0.261,-0.261,-0.260,-0.260,-0.260,-0.259, - &-0.259,-0.259,-0.259,-0.258,-0.258,-0.258,-0.258,-0.257,-0.257, - &-0.257,-0.256,-0.256,-0.256,-0.256,-0.255,-0.255,-0.255,-0.255, - &-0.254,-0.254,-0.254,-0.253,-0.253,-0.253,-0.253,-0.252,-0.252, - &-0.252,-0.252,-0.251,-0.251,-0.251,-0.250,-0.250,-0.250,-0.250, - &-0.249,-0.249,-0.249,-0.249,-0.248,-0.248,-0.248,-0.247,-0.247, - &-0.247,-0.247,-0.246,-0.246,-0.246,-0.246,-0.245,-0.245,-0.245, - &-0.245,-0.244,-0.244,-0.244,-0.244,-0.243,-0.243,-0.243,-0.243, - &-0.242,-0.242,-0.242,-0.241,-0.241,-0.241,-0.241,-0.240,-0.240, - &-0.240,-0.240,-0.239,-0.239,-0.239,-0.239,-0.238,-0.238,-0.238, - &-0.238,-0.237,-0.237,-0.237,-0.237,-0.236,-0.236,-0.236,-0.236, - &-0.236,-0.235,-0.235,-0.235,-0.235,-0.234,-0.234,-0.234,-0.234, - &-0.233,-0.233,-0.233,-0.233,-0.232,-0.232,-0.232,-0.232,-0.231, - &-0.231,-0.231,-0.231,-0.231,-0.230,-0.230,-0.230,-0.230,-0.229, - &-0.229,-0.229,-0.229,-0.228,-0.228,-0.228,-0.228,-0.228,-0.227, - &-0.227,-0.227,-0.227,-0.226,-0.226,-0.226,-0.226,-0.226,-0.225, - &-0.225,-0.225,-0.225,-0.224,-0.224,-0.224,-0.224,-0.224,-0.223, - &-0.223,-0.223,-0.223,-0.223,-0.222,-0.222,-0.222,-0.222,-0.221, - &-0.221,-0.221,-0.221,-0.221,-0.220,-0.220,-0.220,-0.220,-0.220, - &-0.219,-0.219,-0.219,-0.219,-0.219,-0.218,-0.218,-0.218,-0.218, - &-0.218,-0.217,-0.217,-0.217,-0.217,-0.217,-0.216,-0.216,-0.216, - &-0.216,-0.216,-0.215,-0.215,-0.215,-0.215,-0.215,-0.215,-0.214, - &-0.214,-0.214,-0.214,-0.214,-0.213,-0.213,-0.213,-0.213,-0.213, - &-0.212,-0.212,-0.212,-0.212,-0.212,-0.212,-0.211,-0.211,-0.211, - &-0.211,-0.211,-0.210,-0.210,-0.208,-0.207,-0.205,-0.203,-0.202, - &-0.200,-0.199,-0.198,-0.196,-0.195,-0.194,-0.192,-0.191,-0.190, - &-0.189,-0.188,-0.187,-0.186,-0.185,-0.184,-0.183,-0.182,-0.182, - &-0.181,-0.180,-0.179,-0.179,-0.178,-0.178,-0.177,-0.176,-0.176, - &-0.176,-0.175,-0.175,-0.174,-0.174,-0.174,-0.173,-0.173,-0.173, - &-0.173,-0.172,-0.172,-0.172,-0.172,-0.172,-0.172,-0.172,-0.172, - &-0.172,-0.172,-0.172,-0.172,-0.172,-0.172,-0.172,-0.172,-0.173, - &-0.173,-0.173,-0.173,-0.173,-0.174,-0.174,-0.174,-0.175,-0.175, - &-0.175,-0.176,-0.176,-0.176,-0.177,-0.177,-0.178,-0.178,-0.179, - &-0.179,-0.180,-0.180,-0.181,-0.181,-0.182,-0.183,-0.183,-0.184, - &-0.184,-0.185,-0.186,-0.186,-0.187,-0.188,-0.188,-0.189,-0.190, - &-0.191,-0.191,-0.192,-0.193,-0.194,-0.194,-0.195,-0.196,-0.197, - &-0.198,-0.199,-0.200,-0.200,-0.201,-0.202,-0.203,-0.204,-0.205, - &-0.206,-0.207,-0.208,-0.209,-0.210,-0.211,-0.212,-0.213,-0.214, - &-0.215,-0.216,-0.217,-0.218,-0.219,-0.220,-0.221,-0.222,-0.223, - &-0.224,-0.226,-0.227,-0.228,-0.229,-0.230,-0.231,-0.232,-0.234, - &-0.235,-0.236,-0.237,-0.238,-0.239,-0.241,-0.242,-0.243,-0.244, - &-0.246,-0.247,-0.248,-0.249,-0.251,-0.252,-0.253,-0.254,-0.256, - &-0.257,-0.258,-0.260 - & /) -! -! *** (2H,SO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC07M_248 = (/ - &-0.098,-0.213,-0.271,-0.312,-0.344,-0.370,-0.393,-0.413,-0.431, - &-0.448,-0.462,-0.476,-0.489,-0.500,-0.511,-0.522,-0.532,-0.541, - &-0.550,-0.558,-0.567,-0.574,-0.582,-0.589,-0.596,-0.603,-0.609, - &-0.615,-0.621,-0.627,-0.633,-0.638,-0.644,-0.649,-0.654,-0.659, - &-0.664,-0.669,-0.674,-0.678,-0.683,-0.687,-0.691,-0.695,-0.700, - &-0.704,-0.708,-0.711,-0.715,-0.719,-0.723,-0.726,-0.730,-0.733, - &-0.737,-0.740,-0.744,-0.747,-0.750,-0.753,-0.757,-0.760,-0.763, - &-0.766,-0.769,-0.772,-0.775,-0.778,-0.781,-0.784,-0.786,-0.789, - &-0.792,-0.795,-0.797,-0.800,-0.803,-0.805,-0.808,-0.811,-0.813, - &-0.816,-0.818,-0.821,-0.823,-0.825,-0.828,-0.830,-0.833,-0.835, - &-0.837,-0.840,-0.842,-0.844,-0.847,-0.849,-0.851,-0.853,-0.856, - &-0.858,-0.860,-0.862,-0.864,-0.867,-0.869,-0.871,-0.873,-0.875, - &-0.877,-0.879,-0.881,-0.883,-0.885,-0.887,-0.889,-0.891,-0.893, - &-0.895,-0.897,-0.899,-0.901,-0.903,-0.905,-0.907,-0.909,-0.911, - &-0.913,-0.915,-0.916,-0.918,-0.920,-0.922,-0.924,-0.926,-0.928, - &-0.929,-0.931,-0.933,-0.935,-0.936,-0.938,-0.940,-0.942,-0.944, - &-0.945,-0.947,-0.949,-0.950,-0.952,-0.954,-0.956,-0.957,-0.959, - &-0.961,-0.962,-0.964,-0.966,-0.967,-0.969,-0.971,-0.972,-0.974, - &-0.975,-0.977,-0.979,-0.980,-0.982,-0.983,-0.985,-0.987,-0.988, - &-0.990,-0.991,-0.993,-0.994,-0.996,-0.998,-0.999,-1.001,-1.002, - &-1.004,-1.005,-1.007,-1.008,-1.010,-1.011,-1.013,-1.014,-1.016, - &-1.017,-1.019,-1.020,-1.022,-1.023,-1.024,-1.026,-1.027,-1.029, - &-1.030,-1.032,-1.033,-1.035,-1.036,-1.037,-1.039,-1.040,-1.042, - &-1.043,-1.045,-1.046,-1.047,-1.049,-1.050,-1.052,-1.053,-1.054, - &-1.056,-1.057,-1.058,-1.060,-1.061,-1.063,-1.064,-1.065,-1.067, - &-1.068,-1.069,-1.071,-1.072,-1.073,-1.075,-1.076,-1.077,-1.079, - &-1.080,-1.081,-1.083,-1.084,-1.085,-1.087,-1.088,-1.089,-1.090, - &-1.092,-1.093,-1.094,-1.096,-1.097,-1.098,-1.100,-1.101,-1.102, - &-1.103,-1.105,-1.106,-1.107,-1.108,-1.110,-1.111,-1.112,-1.113, - &-1.115,-1.116,-1.117,-1.118,-1.120,-1.121,-1.122,-1.123,-1.125, - &-1.126,-1.127,-1.128,-1.130,-1.131,-1.132,-1.133,-1.134,-1.136, - &-1.137,-1.138,-1.139,-1.141,-1.142,-1.143,-1.144,-1.145,-1.147, - &-1.148,-1.149,-1.150,-1.151,-1.153,-1.154,-1.155,-1.156,-1.157, - &-1.158,-1.160,-1.161,-1.162,-1.163,-1.164,-1.165,-1.167,-1.168, - &-1.169,-1.170,-1.171,-1.172,-1.174,-1.175,-1.176,-1.177,-1.178, - &-1.179,-1.181,-1.182,-1.183,-1.184,-1.185,-1.186,-1.187,-1.189, - &-1.190,-1.191,-1.192,-1.193,-1.194,-1.195,-1.196,-1.198,-1.199, - &-1.200,-1.201,-1.202,-1.203,-1.204,-1.205,-1.207,-1.208,-1.209, - &-1.210,-1.211,-1.212,-1.213,-1.214,-1.215,-1.216,-1.218,-1.219, - &-1.220,-1.221,-1.222,-1.223,-1.224,-1.225,-1.226,-1.227,-1.228, - &-1.230,-1.231,-1.232,-1.233,-1.234,-1.235,-1.236,-1.237,-1.238, - &-1.239,-1.240,-1.241,-1.242,-1.244,-1.245,-1.246,-1.247,-1.248, - &-1.249,-1.250,-1.251,-1.252,-1.253,-1.254,-1.255,-1.256,-1.257, - &-1.258,-1.259,-1.261,-1.262,-1.263,-1.264,-1.265,-1.266,-1.267, - &-1.268,-1.269,-1.270,-1.271,-1.282,-1.292,-1.303,-1.313,-1.323, - &-1.332,-1.342,-1.352,-1.362,-1.371,-1.381,-1.390,-1.400,-1.409, - &-1.418,-1.427,-1.437,-1.446,-1.455,-1.464,-1.473,-1.482,-1.491, - &-1.499,-1.508,-1.517,-1.526,-1.534,-1.543,-1.552,-1.560,-1.569, - &-1.577,-1.586,-1.594,-1.602,-1.611,-1.619,-1.627,-1.636,-1.644, - &-1.652,-1.660,-1.668,-1.677,-1.685,-1.693,-1.701,-1.709,-1.717, - &-1.725,-1.733,-1.741,-1.749,-1.757,-1.764,-1.772,-1.780,-1.788, - &-1.796,-1.804,-1.811,-1.819,-1.827,-1.835,-1.842,-1.850,-1.858, - &-1.865,-1.873,-1.880,-1.888,-1.896,-1.903,-1.911,-1.918,-1.926, - &-1.933,-1.941,-1.948,-1.956,-1.963,-1.971,-1.978,-1.986,-1.993, - &-2.000,-2.008,-2.015,-2.022,-2.030,-2.037,-2.044,-2.052,-2.059, - &-2.066,-2.074,-2.081,-2.088,-2.095,-2.103,-2.110,-2.117,-2.124, - &-2.131,-2.139,-2.146,-2.153,-2.160,-2.167,-2.174,-2.181,-2.189, - &-2.196,-2.203,-2.210,-2.217,-2.224,-2.231,-2.238,-2.245,-2.252, - &-2.259,-2.266,-2.273,-2.280,-2.287,-2.294,-2.301,-2.308,-2.315, - &-2.322,-2.329,-2.336,-2.343,-2.350,-2.357,-2.364,-2.371,-2.378, - &-2.385,-2.391,-2.398,-2.405,-2.412,-2.419,-2.426,-2.433,-2.439, - &-2.446,-2.453,-2.460,-2.467,-2.474,-2.480,-2.487,-2.494,-2.501, - &-2.508,-2.514,-2.521 - & /) -! -! *** (H,HSO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC08M_248 = (/ - &-0.046,-0.090,-0.108,-0.118,-0.124,-0.128,-0.130,-0.132,-0.132, - &-0.131,-0.130,-0.128,-0.125,-0.122,-0.119,-0.116,-0.112,-0.108, - &-0.103,-0.098,-0.093,-0.088,-0.083,-0.077,-0.071,-0.065,-0.059, - &-0.053,-0.046,-0.040,-0.033,-0.026,-0.019,-0.012,-0.004, 0.003, - & 0.011, 0.018, 0.026, 0.034, 0.042, 0.050, 0.058, 0.066, 0.075, - & 0.083, 0.091, 0.100, 0.109, 0.117, 0.126, 0.135, 0.144, 0.153, - & 0.162, 0.171, 0.180, 0.189, 0.198, 0.207, 0.216, 0.226, 0.235, - & 0.244, 0.254, 0.263, 0.273, 0.282, 0.292, 0.302, 0.311, 0.321, - & 0.331, 0.341, 0.351, 0.361, 0.371, 0.381, 0.391, 0.401, 0.411, - & 0.421, 0.432, 0.442, 0.452, 0.463, 0.473, 0.484, 0.495, 0.505, - & 0.516, 0.527, 0.538, 0.549, 0.560, 0.571, 0.582, 0.593, 0.604, - & 0.615, 0.626, 0.638, 0.649, 0.660, 0.672, 0.683, 0.694, 0.706, - & 0.717, 0.729, 0.740, 0.752, 0.763, 0.775, 0.787, 0.798, 0.810, - & 0.821, 0.833, 0.845, 0.856, 0.868, 0.879, 0.891, 0.903, 0.914, - & 0.926, 0.937, 0.949, 0.961, 0.972, 0.984, 0.995, 1.007, 1.018, - & 1.030, 1.041, 1.053, 1.064, 1.076, 1.087, 1.099, 1.110, 1.121, - & 1.133, 1.144, 1.155, 1.167, 1.178, 1.189, 1.200, 1.212, 1.223, - & 1.234, 1.245, 1.256, 1.267, 1.278, 1.289, 1.300, 1.311, 1.322, - & 1.333, 1.344, 1.355, 1.366, 1.377, 1.388, 1.399, 1.409, 1.420, - & 1.431, 1.442, 1.452, 1.463, 1.474, 1.485, 1.495, 1.506, 1.516, - & 1.527, 1.537, 1.548, 1.558, 1.569, 1.579, 1.590, 1.600, 1.611, - & 1.621, 1.631, 1.642, 1.652, 1.662, 1.672, 1.683, 1.693, 1.703, - & 1.713, 1.723, 1.733, 1.743, 1.753, 1.763, 1.774, 1.784, 1.793, - & 1.803, 1.813, 1.823, 1.833, 1.843, 1.853, 1.863, 1.872, 1.882, - & 1.892, 1.902, 1.911, 1.921, 1.931, 1.940, 1.950, 1.960, 1.969, - & 1.979, 1.988, 1.998, 2.007, 2.017, 2.026, 2.036, 2.045, 2.055, - & 2.064, 2.073, 2.083, 2.092, 2.101, 2.111, 2.120, 2.129, 2.138, - & 2.147, 2.157, 2.166, 2.175, 2.184, 2.193, 2.202, 2.211, 2.220, - & 2.229, 2.238, 2.247, 2.256, 2.265, 2.274, 2.283, 2.292, 2.301, - & 2.310, 2.318, 2.327, 2.336, 2.345, 2.354, 2.362, 2.371, 2.380, - & 2.388, 2.397, 2.406, 2.414, 2.423, 2.432, 2.440, 2.449, 2.457, - & 2.466, 2.474, 2.483, 2.491, 2.500, 2.508, 2.517, 2.525, 2.533, - & 2.542, 2.550, 2.558, 2.567, 2.575, 2.583, 2.591, 2.600, 2.608, - & 2.616, 2.624, 2.633, 2.641, 2.649, 2.657, 2.665, 2.673, 2.681, - & 2.689, 2.697, 2.705, 2.713, 2.721, 2.729, 2.737, 2.745, 2.753, - & 2.761, 2.769, 2.777, 2.785, 2.793, 2.801, 2.809, 2.816, 2.824, - & 2.832, 2.840, 2.847, 2.855, 2.863, 2.871, 2.878, 2.886, 2.894, - & 2.901, 2.909, 2.917, 2.924, 2.932, 2.939, 2.947, 2.955, 2.962, - & 2.970, 2.977, 2.985, 2.992, 3.000, 3.007, 3.014, 3.022, 3.029, - & 3.037, 3.044, 3.051, 3.059, 3.066, 3.074, 3.081, 3.088, 3.095, - & 3.103, 3.110, 3.117, 3.125, 3.132, 3.139, 3.146, 3.153, 3.161, - & 3.168, 3.175, 3.182, 3.189, 3.196, 3.203, 3.210, 3.217, 3.225, - & 3.232, 3.239, 3.246, 3.253, 3.260, 3.267, 3.274, 3.281, 3.288, - & 3.294, 3.301, 3.308, 3.315, 3.322, 3.329, 3.336, 3.343, 3.350, - & 3.356, 3.363, 3.370, 3.377, 3.450, 3.516, 3.581, 3.645, 3.708, - & 3.770, 3.831, 3.891, 3.950, 4.008, 4.065, 4.122, 4.178, 4.233, - & 4.287, 4.340, 4.393, 4.445, 4.496, 4.547, 4.597, 4.646, 4.695, - & 4.743, 4.790, 4.837, 4.884, 4.929, 4.974, 5.019, 5.063, 5.107, - & 5.150, 5.193, 5.235, 5.277, 5.318, 5.359, 5.399, 5.439, 5.478, - & 5.517, 5.556, 5.594, 5.632, 5.670, 5.707, 5.743, 5.780, 5.816, - & 5.852, 5.887, 5.922, 5.956, 5.991, 6.025, 6.058, 6.092, 6.125, - & 6.158, 6.190, 6.222, 6.254, 6.286, 6.317, 6.348, 6.379, 6.410, - & 6.440, 6.470, 6.500, 6.529, 6.559, 6.588, 6.616, 6.645, 6.673, - & 6.701, 6.729, 6.757, 6.784, 6.812, 6.839, 6.865, 6.892, 6.919, - & 6.945, 6.971, 6.997, 7.022, 7.048, 7.073, 7.098, 7.123, 7.148, - & 7.172, 7.196, 7.221, 7.245, 7.269, 7.292, 7.316, 7.339, 7.362, - & 7.385, 7.408, 7.431, 7.454, 7.476, 7.498, 7.520, 7.542, 7.564, - & 7.586, 7.607, 7.629, 7.650, 7.671, 7.692, 7.713, 7.734, 7.755, - & 7.775, 7.795, 7.816, 7.836, 7.856, 7.876, 7.895, 7.915, 7.935, - & 7.954, 7.973, 7.992, 8.012, 8.030, 8.049, 8.068, 8.087, 8.105, - & 8.124, 8.142, 8.160, 8.178, 8.196, 8.214, 8.232, 8.250, 8.267, - & 8.285, 8.302, 8.319, 8.337, 8.354, 8.371, 8.388, 8.404, 8.421, - & 8.438, 8.454, 8.471 - & /) -! -! *** NH4HSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC09M_248 = (/ - &-0.048,-0.102,-0.128,-0.146,-0.159,-0.170,-0.179,-0.187,-0.194, - &-0.200,-0.205,-0.210,-0.214,-0.218,-0.221,-0.224,-0.227,-0.230, - &-0.232,-0.234,-0.235,-0.237,-0.238,-0.239,-0.240,-0.241,-0.242, - &-0.242,-0.243,-0.243,-0.243,-0.243,-0.243,-0.243,-0.242,-0.242, - &-0.241,-0.241,-0.240,-0.239,-0.238,-0.237,-0.236,-0.235,-0.234, - &-0.233,-0.231,-0.230,-0.228,-0.227,-0.225,-0.224,-0.222,-0.220, - &-0.218,-0.216,-0.214,-0.212,-0.210,-0.208,-0.206,-0.204,-0.202, - &-0.199,-0.197,-0.195,-0.192,-0.190,-0.188,-0.185,-0.183,-0.180, - &-0.178,-0.175,-0.172,-0.170,-0.167,-0.164,-0.161,-0.159,-0.156, - &-0.153,-0.150,-0.147,-0.144,-0.141,-0.138,-0.135,-0.132,-0.129, - &-0.126,-0.123,-0.119,-0.116,-0.113,-0.110,-0.106,-0.103,-0.100, - &-0.096,-0.093,-0.090,-0.086,-0.083,-0.080,-0.076,-0.073,-0.069, - &-0.066,-0.062,-0.059,-0.055,-0.052,-0.048,-0.045,-0.041,-0.037, - &-0.034,-0.030,-0.027,-0.023,-0.020,-0.016,-0.012,-0.009,-0.005, - &-0.002, 0.002, 0.005, 0.009, 0.013, 0.016, 0.020, 0.023, 0.027, - & 0.030, 0.034, 0.037, 0.041, 0.044, 0.048, 0.051, 0.055, 0.058, - & 0.062, 0.065, 0.069, 0.072, 0.076, 0.079, 0.083, 0.086, 0.090, - & 0.093, 0.097, 0.100, 0.103, 0.107, 0.110, 0.114, 0.117, 0.120, - & 0.124, 0.127, 0.130, 0.134, 0.137, 0.140, 0.144, 0.147, 0.150, - & 0.154, 0.157, 0.160, 0.164, 0.167, 0.170, 0.173, 0.177, 0.180, - & 0.183, 0.186, 0.189, 0.193, 0.196, 0.199, 0.202, 0.205, 0.209, - & 0.212, 0.215, 0.218, 0.221, 0.224, 0.227, 0.231, 0.234, 0.237, - & 0.240, 0.243, 0.246, 0.249, 0.252, 0.255, 0.258, 0.261, 0.264, - & 0.267, 0.270, 0.273, 0.276, 0.279, 0.282, 0.285, 0.288, 0.291, - & 0.294, 0.297, 0.300, 0.303, 0.306, 0.309, 0.312, 0.315, 0.317, - & 0.320, 0.323, 0.326, 0.329, 0.332, 0.335, 0.338, 0.340, 0.343, - & 0.346, 0.349, 0.352, 0.354, 0.357, 0.360, 0.363, 0.366, 0.368, - & 0.371, 0.374, 0.377, 0.379, 0.382, 0.385, 0.388, 0.390, 0.393, - & 0.396, 0.398, 0.401, 0.404, 0.407, 0.409, 0.412, 0.415, 0.417, - & 0.420, 0.422, 0.425, 0.428, 0.430, 0.433, 0.436, 0.438, 0.441, - & 0.443, 0.446, 0.449, 0.451, 0.454, 0.456, 0.459, 0.461, 0.464, - & 0.467, 0.469, 0.472, 0.474, 0.477, 0.479, 0.482, 0.484, 0.487, - & 0.489, 0.492, 0.494, 0.497, 0.499, 0.502, 0.504, 0.507, 0.509, - & 0.511, 0.514, 0.516, 0.519, 0.521, 0.524, 0.526, 0.528, 0.531, - & 0.533, 0.536, 0.538, 0.540, 0.543, 0.545, 0.548, 0.550, 0.552, - & 0.555, 0.557, 0.559, 0.562, 0.564, 0.566, 0.569, 0.571, 0.573, - & 0.576, 0.578, 0.580, 0.583, 0.585, 0.587, 0.589, 0.592, 0.594, - & 0.596, 0.599, 0.601, 0.603, 0.605, 0.608, 0.610, 0.612, 0.614, - & 0.617, 0.619, 0.621, 0.623, 0.625, 0.628, 0.630, 0.632, 0.634, - & 0.636, 0.639, 0.641, 0.643, 0.645, 0.647, 0.649, 0.652, 0.654, - & 0.656, 0.658, 0.660, 0.662, 0.665, 0.667, 0.669, 0.671, 0.673, - & 0.675, 0.677, 0.679, 0.681, 0.684, 0.686, 0.688, 0.690, 0.692, - & 0.694, 0.696, 0.698, 0.700, 0.702, 0.704, 0.706, 0.708, 0.710, - & 0.713, 0.715, 0.717, 0.719, 0.721, 0.723, 0.725, 0.727, 0.729, - & 0.731, 0.733, 0.735, 0.737, 0.758, 0.778, 0.797, 0.815, 0.834, - & 0.852, 0.870, 0.887, 0.905, 0.922, 0.938, 0.955, 0.971, 0.987, - & 1.003, 1.018, 1.033, 1.048, 1.063, 1.078, 1.092, 1.106, 1.120, - & 1.134, 1.148, 1.161, 1.174, 1.187, 1.200, 1.213, 1.225, 1.238, - & 1.250, 1.262, 1.274, 1.286, 1.297, 1.309, 1.320, 1.331, 1.342, - & 1.353, 1.364, 1.374, 1.385, 1.395, 1.406, 1.416, 1.426, 1.436, - & 1.446, 1.455, 1.465, 1.475, 1.484, 1.493, 1.502, 1.512, 1.521, - & 1.529, 1.538, 1.547, 1.556, 1.564, 1.572, 1.581, 1.589, 1.597, - & 1.605, 1.613, 1.621, 1.629, 1.637, 1.645, 1.652, 1.660, 1.667, - & 1.675, 1.682, 1.689, 1.696, 1.704, 1.711, 1.718, 1.725, 1.731, - & 1.738, 1.745, 1.752, 1.758, 1.765, 1.771, 1.778, 1.784, 1.790, - & 1.796, 1.803, 1.809, 1.815, 1.821, 1.827, 1.833, 1.839, 1.844, - & 1.850, 1.856, 1.861, 1.867, 1.873, 1.878, 1.884, 1.889, 1.894, - & 1.900, 1.905, 1.910, 1.915, 1.920, 1.926, 1.931, 1.936, 1.941, - & 1.946, 1.950, 1.955, 1.960, 1.965, 1.970, 1.974, 1.979, 1.983, - & 1.988, 1.993, 1.997, 2.001, 2.006, 2.010, 2.015, 2.019, 2.023, - & 2.027, 2.032, 2.036, 2.040, 2.044, 2.048, 2.052, 2.056, 2.060, - & 2.064, 2.068, 2.072, 2.076, 2.080, 2.083, 2.087, 2.091, 2.095, - & 2.098, 2.102, 2.106 - & /) -! -! *** (H,NO3) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC10M_248 = (/ - &-0.047,-0.098,-0.120,-0.135,-0.145,-0.153,-0.158,-0.163,-0.167, - &-0.169,-0.172,-0.173,-0.175,-0.176,-0.176,-0.176,-0.176,-0.176, - &-0.176,-0.175,-0.175,-0.174,-0.173,-0.172,-0.170,-0.169,-0.168, - &-0.166,-0.165,-0.163,-0.162,-0.160,-0.159,-0.157,-0.155,-0.153, - &-0.151,-0.149,-0.148,-0.146,-0.144,-0.142,-0.140,-0.138,-0.136, - &-0.134,-0.132,-0.130,-0.128,-0.126,-0.124,-0.122,-0.120,-0.118, - &-0.115,-0.113,-0.111,-0.109,-0.107,-0.105,-0.103,-0.101,-0.099, - &-0.097,-0.095,-0.093,-0.090,-0.088,-0.086,-0.084,-0.082,-0.080, - &-0.078,-0.075,-0.073,-0.071,-0.069,-0.067,-0.064,-0.062,-0.060, - &-0.057,-0.055,-0.053,-0.051,-0.048,-0.046,-0.043,-0.041,-0.039, - &-0.036,-0.034,-0.031,-0.029,-0.026,-0.024,-0.021,-0.019,-0.016, - &-0.014,-0.011,-0.008,-0.006,-0.003, 0.000, 0.002, 0.005, 0.007, - & 0.010, 0.013, 0.016, 0.018, 0.021, 0.024, 0.026, 0.029, 0.032, - & 0.035, 0.037, 0.040, 0.043, 0.046, 0.048, 0.051, 0.054, 0.057, - & 0.059, 0.062, 0.065, 0.068, 0.070, 0.073, 0.076, 0.079, 0.081, - & 0.084, 0.087, 0.090, 0.092, 0.095, 0.098, 0.101, 0.103, 0.106, - & 0.109, 0.112, 0.114, 0.117, 0.120, 0.123, 0.125, 0.128, 0.131, - & 0.133, 0.136, 0.139, 0.142, 0.144, 0.147, 0.150, 0.152, 0.155, - & 0.158, 0.160, 0.163, 0.166, 0.168, 0.171, 0.174, 0.176, 0.179, - & 0.182, 0.184, 0.187, 0.190, 0.192, 0.195, 0.198, 0.200, 0.203, - & 0.205, 0.208, 0.211, 0.213, 0.216, 0.218, 0.221, 0.224, 0.226, - & 0.229, 0.231, 0.234, 0.236, 0.239, 0.242, 0.244, 0.247, 0.249, - & 0.252, 0.254, 0.257, 0.259, 0.262, 0.264, 0.267, 0.269, 0.272, - & 0.275, 0.277, 0.280, 0.282, 0.285, 0.287, 0.289, 0.292, 0.294, - & 0.297, 0.299, 0.302, 0.304, 0.307, 0.309, 0.312, 0.314, 0.317, - & 0.319, 0.321, 0.324, 0.326, 0.329, 0.331, 0.334, 0.336, 0.338, - & 0.341, 0.343, 0.346, 0.348, 0.350, 0.353, 0.355, 0.357, 0.360, - & 0.362, 0.364, 0.367, 0.369, 0.372, 0.374, 0.376, 0.379, 0.381, - & 0.383, 0.386, 0.388, 0.390, 0.392, 0.395, 0.397, 0.399, 0.402, - & 0.404, 0.406, 0.409, 0.411, 0.413, 0.415, 0.418, 0.420, 0.422, - & 0.424, 0.427, 0.429, 0.431, 0.433, 0.436, 0.438, 0.440, 0.442, - & 0.445, 0.447, 0.449, 0.451, 0.453, 0.456, 0.458, 0.460, 0.462, - & 0.464, 0.467, 0.469, 0.471, 0.473, 0.475, 0.477, 0.480, 0.482, - & 0.484, 0.486, 0.488, 0.490, 0.492, 0.495, 0.497, 0.499, 0.501, - & 0.503, 0.505, 0.507, 0.509, 0.511, 0.514, 0.516, 0.518, 0.520, - & 0.522, 0.524, 0.526, 0.528, 0.530, 0.532, 0.534, 0.536, 0.539, - & 0.541, 0.543, 0.545, 0.547, 0.549, 0.551, 0.553, 0.555, 0.557, - & 0.559, 0.561, 0.563, 0.565, 0.567, 0.569, 0.571, 0.573, 0.575, - & 0.577, 0.579, 0.581, 0.583, 0.585, 0.587, 0.589, 0.591, 0.593, - & 0.595, 0.597, 0.599, 0.601, 0.603, 0.604, 0.606, 0.608, 0.610, - & 0.612, 0.614, 0.616, 0.618, 0.620, 0.622, 0.624, 0.626, 0.628, - & 0.629, 0.631, 0.633, 0.635, 0.637, 0.639, 0.641, 0.643, 0.645, - & 0.646, 0.648, 0.650, 0.652, 0.654, 0.656, 0.658, 0.659, 0.661, - & 0.663, 0.665, 0.667, 0.669, 0.671, 0.672, 0.674, 0.676, 0.678, - & 0.680, 0.681, 0.683, 0.685, 0.704, 0.722, 0.739, 0.756, 0.773, - & 0.790, 0.806, 0.822, 0.838, 0.853, 0.869, 0.884, 0.899, 0.913, - & 0.928, 0.942, 0.956, 0.970, 0.983, 0.996, 1.010, 1.023, 1.036, - & 1.048, 1.061, 1.073, 1.085, 1.097, 1.109, 1.121, 1.132, 1.144, - & 1.155, 1.166, 1.177, 1.188, 1.198, 1.209, 1.219, 1.230, 1.240, - & 1.250, 1.260, 1.270, 1.279, 1.289, 1.298, 1.308, 1.317, 1.326, - & 1.335, 1.344, 1.353, 1.362, 1.370, 1.379, 1.387, 1.396, 1.404, - & 1.412, 1.420, 1.428, 1.436, 1.444, 1.451, 1.459, 1.467, 1.474, - & 1.481, 1.489, 1.496, 1.503, 1.510, 1.517, 1.524, 1.531, 1.538, - & 1.545, 1.551, 1.558, 1.565, 1.571, 1.578, 1.584, 1.590, 1.596, - & 1.603, 1.609, 1.615, 1.621, 1.627, 1.632, 1.638, 1.644, 1.650, - & 1.655, 1.661, 1.667, 1.672, 1.678, 1.683, 1.688, 1.694, 1.699, - & 1.704, 1.709, 1.714, 1.719, 1.724, 1.729, 1.734, 1.739, 1.744, - & 1.749, 1.753, 1.758, 1.763, 1.767, 1.772, 1.776, 1.781, 1.785, - & 1.790, 1.794, 1.799, 1.803, 1.807, 1.811, 1.815, 1.820, 1.824, - & 1.828, 1.832, 1.836, 1.840, 1.844, 1.848, 1.852, 1.855, 1.859, - & 1.863, 1.867, 1.870, 1.874, 1.878, 1.881, 1.885, 1.888, 1.892, - & 1.895, 1.899, 1.902, 1.906, 1.909, 1.913, 1.916, 1.919, 1.922, - & 1.926, 1.929, 1.932 - & /) -! -! *** (H,Cl) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC11M_248 = (/ - &-0.046,-0.091,-0.110,-0.120,-0.127,-0.131,-0.133,-0.134,-0.134, - &-0.134,-0.132,-0.131,-0.128,-0.126,-0.123,-0.120,-0.116,-0.112, - &-0.108,-0.104,-0.099,-0.095,-0.090,-0.085,-0.080,-0.075,-0.070, - &-0.064,-0.059,-0.053,-0.047,-0.042,-0.036,-0.030,-0.024,-0.018, - &-0.011,-0.005, 0.001, 0.007, 0.014, 0.020, 0.026, 0.033, 0.039, - & 0.046, 0.052, 0.059, 0.065, 0.072, 0.079, 0.085, 0.092, 0.099, - & 0.105, 0.112, 0.119, 0.126, 0.132, 0.139, 0.146, 0.153, 0.160, - & 0.166, 0.173, 0.180, 0.187, 0.194, 0.201, 0.208, 0.215, 0.222, - & 0.229, 0.236, 0.243, 0.250, 0.257, 0.264, 0.272, 0.279, 0.286, - & 0.293, 0.301, 0.308, 0.316, 0.323, 0.330, 0.338, 0.346, 0.353, - & 0.361, 0.368, 0.376, 0.384, 0.392, 0.399, 0.407, 0.415, 0.423, - & 0.431, 0.439, 0.447, 0.455, 0.463, 0.471, 0.479, 0.487, 0.495, - & 0.503, 0.512, 0.520, 0.528, 0.536, 0.544, 0.553, 0.561, 0.569, - & 0.577, 0.586, 0.594, 0.602, 0.610, 0.619, 0.627, 0.635, 0.643, - & 0.652, 0.660, 0.668, 0.676, 0.685, 0.693, 0.701, 0.709, 0.718, - & 0.726, 0.734, 0.742, 0.750, 0.759, 0.767, 0.775, 0.783, 0.791, - & 0.799, 0.807, 0.815, 0.823, 0.832, 0.840, 0.848, 0.856, 0.864, - & 0.872, 0.880, 0.888, 0.896, 0.903, 0.911, 0.919, 0.927, 0.935, - & 0.943, 0.951, 0.959, 0.966, 0.974, 0.982, 0.990, 0.998, 1.005, - & 1.013, 1.021, 1.029, 1.036, 1.044, 1.052, 1.059, 1.067, 1.075, - & 1.082, 1.090, 1.097, 1.105, 1.112, 1.120, 1.128, 1.135, 1.143, - & 1.150, 1.157, 1.165, 1.172, 1.180, 1.187, 1.195, 1.202, 1.209, - & 1.217, 1.224, 1.231, 1.239, 1.246, 1.253, 1.260, 1.268, 1.275, - & 1.282, 1.289, 1.296, 1.303, 1.311, 1.318, 1.325, 1.332, 1.339, - & 1.346, 1.353, 1.360, 1.367, 1.374, 1.381, 1.388, 1.395, 1.402, - & 1.409, 1.416, 1.423, 1.430, 1.437, 1.444, 1.451, 1.457, 1.464, - & 1.471, 1.478, 1.485, 1.491, 1.498, 1.505, 1.512, 1.518, 1.525, - & 1.532, 1.538, 1.545, 1.552, 1.558, 1.565, 1.572, 1.578, 1.585, - & 1.591, 1.598, 1.604, 1.611, 1.617, 1.624, 1.630, 1.637, 1.643, - & 1.650, 1.656, 1.663, 1.669, 1.675, 1.682, 1.688, 1.695, 1.701, - & 1.707, 1.714, 1.720, 1.726, 1.732, 1.739, 1.745, 1.751, 1.757, - & 1.764, 1.770, 1.776, 1.782, 1.788, 1.795, 1.801, 1.807, 1.813, - & 1.819, 1.825, 1.831, 1.837, 1.843, 1.849, 1.855, 1.861, 1.867, - & 1.873, 1.879, 1.885, 1.891, 1.897, 1.903, 1.909, 1.915, 1.921, - & 1.927, 1.933, 1.939, 1.945, 1.950, 1.956, 1.962, 1.968, 1.974, - & 1.979, 1.985, 1.991, 1.997, 2.003, 2.008, 2.014, 2.020, 2.025, - & 2.031, 2.037, 2.042, 2.048, 2.054, 2.059, 2.065, 2.071, 2.076, - & 2.082, 2.087, 2.093, 2.099, 2.104, 2.110, 2.115, 2.121, 2.126, - & 2.132, 2.137, 2.143, 2.148, 2.154, 2.159, 2.165, 2.170, 2.175, - & 2.181, 2.186, 2.192, 2.197, 2.202, 2.208, 2.213, 2.219, 2.224, - & 2.229, 2.235, 2.240, 2.245, 2.250, 2.256, 2.261, 2.266, 2.271, - & 2.277, 2.282, 2.287, 2.292, 2.298, 2.303, 2.308, 2.313, 2.318, - & 2.323, 2.329, 2.334, 2.339, 2.344, 2.349, 2.354, 2.359, 2.364, - & 2.369, 2.375, 2.380, 2.385, 2.390, 2.395, 2.400, 2.405, 2.410, - & 2.415, 2.420, 2.425, 2.430, 2.483, 2.531, 2.579, 2.626, 2.672, - & 2.717, 2.762, 2.806, 2.849, 2.891, 2.933, 2.975, 3.015, 3.056, - & 3.095, 3.134, 3.173, 3.211, 3.248, 3.285, 3.322, 3.358, 3.393, - & 3.428, 3.463, 3.497, 3.531, 3.564, 3.597, 3.629, 3.662, 3.693, - & 3.725, 3.756, 3.786, 3.817, 3.847, 3.876, 3.906, 3.935, 3.963, - & 3.992, 4.020, 4.048, 4.075, 4.102, 4.129, 4.156, 4.182, 4.208, - & 4.234, 4.260, 4.285, 4.310, 4.335, 4.359, 4.384, 4.408, 4.432, - & 4.456, 4.479, 4.502, 4.525, 4.548, 4.571, 4.593, 4.615, 4.637, - & 4.659, 4.681, 4.702, 4.724, 4.745, 4.766, 4.786, 4.807, 4.827, - & 4.847, 4.868, 4.887, 4.907, 4.927, 4.946, 4.965, 4.984, 5.003, - & 5.022, 5.041, 5.059, 5.078, 5.096, 5.114, 5.132, 5.150, 5.168, - & 5.185, 5.203, 5.220, 5.237, 5.254, 5.271, 5.288, 5.304, 5.321, - & 5.337, 5.354, 5.370, 5.386, 5.402, 5.418, 5.434, 5.449, 5.465, - & 5.480, 5.496, 5.511, 5.526, 5.541, 5.556, 5.571, 5.586, 5.600, - & 5.615, 5.629, 5.644, 5.658, 5.672, 5.686, 5.700, 5.714, 5.728, - & 5.742, 5.755, 5.769, 5.782, 5.796, 5.809, 5.822, 5.835, 5.848, - & 5.861, 5.874, 5.887, 5.900, 5.913, 5.925, 5.938, 5.950, 5.963, - & 5.975, 5.987, 5.999, 6.011, 6.023, 6.035, 6.047, 6.059, 6.071, - & 6.083, 6.094, 6.106 - & /) -! -! *** NaHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC12M_248 = (/ - &-0.047,-0.097,-0.120,-0.135,-0.146,-0.154,-0.160,-0.165,-0.170, - &-0.173,-0.176,-0.178,-0.179,-0.181,-0.181,-0.182,-0.182,-0.182, - &-0.182,-0.182,-0.181,-0.180,-0.179,-0.178,-0.176,-0.175,-0.173, - &-0.172,-0.170,-0.168,-0.165,-0.163,-0.161,-0.158,-0.156,-0.153, - &-0.150,-0.148,-0.145,-0.142,-0.139,-0.136,-0.132,-0.129,-0.126, - &-0.123,-0.119,-0.116,-0.112,-0.109,-0.105,-0.101,-0.098,-0.094, - &-0.090,-0.086,-0.082,-0.078,-0.074,-0.070,-0.066,-0.062,-0.058, - &-0.054,-0.050,-0.046,-0.041,-0.037,-0.033,-0.028,-0.024,-0.020, - &-0.015,-0.011,-0.006,-0.002, 0.003, 0.007, 0.012, 0.017, 0.021, - & 0.026, 0.031, 0.036, 0.041, 0.045, 0.050, 0.055, 0.060, 0.065, - & 0.070, 0.075, 0.080, 0.086, 0.091, 0.096, 0.101, 0.106, 0.112, - & 0.117, 0.122, 0.128, 0.133, 0.138, 0.144, 0.149, 0.154, 0.160, - & 0.165, 0.171, 0.176, 0.182, 0.187, 0.193, 0.198, 0.204, 0.209, - & 0.215, 0.221, 0.226, 0.232, 0.237, 0.243, 0.248, 0.254, 0.259, - & 0.265, 0.271, 0.276, 0.282, 0.287, 0.293, 0.298, 0.304, 0.309, - & 0.315, 0.320, 0.326, 0.331, 0.337, 0.342, 0.348, 0.353, 0.358, - & 0.364, 0.369, 0.375, 0.380, 0.386, 0.391, 0.396, 0.402, 0.407, - & 0.412, 0.418, 0.423, 0.428, 0.434, 0.439, 0.444, 0.449, 0.455, - & 0.460, 0.465, 0.470, 0.476, 0.481, 0.486, 0.491, 0.496, 0.502, - & 0.507, 0.512, 0.517, 0.522, 0.527, 0.532, 0.537, 0.542, 0.548, - & 0.553, 0.558, 0.563, 0.568, 0.573, 0.578, 0.583, 0.588, 0.593, - & 0.598, 0.603, 0.607, 0.612, 0.617, 0.622, 0.627, 0.632, 0.637, - & 0.642, 0.647, 0.651, 0.656, 0.661, 0.666, 0.671, 0.675, 0.680, - & 0.685, 0.690, 0.694, 0.699, 0.704, 0.709, 0.713, 0.718, 0.723, - & 0.727, 0.732, 0.737, 0.741, 0.746, 0.751, 0.755, 0.760, 0.764, - & 0.769, 0.773, 0.778, 0.783, 0.787, 0.792, 0.796, 0.801, 0.805, - & 0.810, 0.814, 0.819, 0.823, 0.828, 0.832, 0.836, 0.841, 0.845, - & 0.850, 0.854, 0.858, 0.863, 0.867, 0.872, 0.876, 0.880, 0.885, - & 0.889, 0.893, 0.898, 0.902, 0.906, 0.910, 0.915, 0.919, 0.923, - & 0.928, 0.932, 0.936, 0.940, 0.944, 0.949, 0.953, 0.957, 0.961, - & 0.965, 0.969, 0.974, 0.978, 0.982, 0.986, 0.990, 0.994, 0.998, - & 1.002, 1.007, 1.011, 1.015, 1.019, 1.023, 1.027, 1.031, 1.035, - & 1.039, 1.043, 1.047, 1.051, 1.055, 1.059, 1.063, 1.067, 1.071, - & 1.075, 1.079, 1.083, 1.087, 1.091, 1.094, 1.098, 1.102, 1.106, - & 1.110, 1.114, 1.118, 1.122, 1.125, 1.129, 1.133, 1.137, 1.141, - & 1.145, 1.148, 1.152, 1.156, 1.160, 1.164, 1.167, 1.171, 1.175, - & 1.179, 1.182, 1.186, 1.190, 1.194, 1.197, 1.201, 1.205, 1.208, - & 1.212, 1.216, 1.219, 1.223, 1.227, 1.230, 1.234, 1.238, 1.241, - & 1.245, 1.249, 1.252, 1.256, 1.259, 1.263, 1.267, 1.270, 1.274, - & 1.277, 1.281, 1.284, 1.288, 1.292, 1.295, 1.299, 1.302, 1.306, - & 1.309, 1.313, 1.316, 1.320, 1.323, 1.327, 1.330, 1.334, 1.337, - & 1.341, 1.344, 1.347, 1.351, 1.354, 1.358, 1.361, 1.365, 1.368, - & 1.371, 1.375, 1.378, 1.382, 1.385, 1.388, 1.392, 1.395, 1.398, - & 1.402, 1.405, 1.408, 1.412, 1.415, 1.418, 1.422, 1.425, 1.428, - & 1.432, 1.435, 1.438, 1.441, 1.477, 1.509, 1.540, 1.571, 1.601, - & 1.631, 1.661, 1.690, 1.718, 1.747, 1.774, 1.802, 1.829, 1.855, - & 1.881, 1.907, 1.933, 1.958, 1.983, 2.007, 2.031, 2.055, 2.079, - & 2.102, 2.125, 2.147, 2.170, 2.192, 2.213, 2.235, 2.256, 2.277, - & 2.298, 2.318, 2.339, 2.359, 2.378, 2.398, 2.417, 2.436, 2.455, - & 2.474, 2.493, 2.511, 2.529, 2.547, 2.565, 2.582, 2.599, 2.617, - & 2.634, 2.650, 2.667, 2.684, 2.700, 2.716, 2.732, 2.748, 2.763, - & 2.779, 2.794, 2.810, 2.825, 2.840, 2.854, 2.869, 2.884, 2.898, - & 2.912, 2.926, 2.940, 2.954, 2.968, 2.982, 2.995, 3.008, 3.022, - & 3.035, 3.048, 3.061, 3.074, 3.086, 3.099, 3.111, 3.124, 3.136, - & 3.148, 3.160, 3.172, 3.184, 3.196, 3.208, 3.219, 3.231, 3.242, - & 3.254, 3.265, 3.276, 3.287, 3.298, 3.309, 3.320, 3.330, 3.341, - & 3.352, 3.362, 3.373, 3.383, 3.393, 3.403, 3.413, 3.423, 3.433, - & 3.443, 3.453, 3.463, 3.472, 3.482, 3.491, 3.501, 3.510, 3.520, - & 3.529, 3.538, 3.547, 3.556, 3.565, 3.574, 3.583, 3.592, 3.601, - & 3.609, 3.618, 3.626, 3.635, 3.643, 3.652, 3.660, 3.668, 3.677, - & 3.685, 3.693, 3.701, 3.709, 3.717, 3.725, 3.733, 3.741, 3.748, - & 3.756, 3.764, 3.771, 3.779, 3.786, 3.794, 3.801, 3.809, 3.816, - & 3.823, 3.830, 3.838 - & /) -! -! *** (NH4)3H(SO4)2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC13M_248 = (/ - &-0.078,-0.169,-0.215,-0.247,-0.272,-0.293,-0.311,-0.326,-0.340, - &-0.353,-0.364,-0.375,-0.384,-0.393,-0.402,-0.410,-0.417,-0.424, - &-0.431,-0.437,-0.443,-0.448,-0.454,-0.459,-0.464,-0.469,-0.473, - &-0.477,-0.482,-0.486,-0.489,-0.493,-0.497,-0.500,-0.503,-0.506, - &-0.509,-0.512,-0.515,-0.518,-0.520,-0.523,-0.525,-0.528,-0.530, - &-0.532,-0.534,-0.536,-0.538,-0.540,-0.542,-0.544,-0.546,-0.547, - &-0.549,-0.550,-0.552,-0.553,-0.555,-0.556,-0.557,-0.559,-0.560, - &-0.561,-0.562,-0.563,-0.564,-0.565,-0.566,-0.567,-0.568,-0.569, - &-0.570,-0.571,-0.572,-0.572,-0.573,-0.574,-0.575,-0.575,-0.576, - &-0.576,-0.577,-0.578,-0.578,-0.579,-0.579,-0.580,-0.580,-0.580, - &-0.581,-0.581,-0.582,-0.582,-0.582,-0.582,-0.583,-0.583,-0.583, - &-0.583,-0.584,-0.584,-0.584,-0.584,-0.584,-0.584,-0.584,-0.585, - &-0.585,-0.585,-0.585,-0.585,-0.585,-0.585,-0.585,-0.585,-0.585, - &-0.585,-0.585,-0.585,-0.585,-0.585,-0.585,-0.585,-0.585,-0.585, - &-0.585,-0.584,-0.584,-0.584,-0.584,-0.584,-0.584,-0.584,-0.584, - &-0.584,-0.584,-0.583,-0.583,-0.583,-0.583,-0.583,-0.583,-0.583, - &-0.582,-0.582,-0.582,-0.582,-0.582,-0.582,-0.582,-0.581,-0.581, - &-0.581,-0.581,-0.581,-0.581,-0.580,-0.580,-0.580,-0.580,-0.580, - &-0.579,-0.579,-0.579,-0.579,-0.579,-0.579,-0.578,-0.578,-0.578, - &-0.578,-0.578,-0.577,-0.577,-0.577,-0.577,-0.577,-0.577,-0.576, - &-0.576,-0.576,-0.576,-0.576,-0.575,-0.575,-0.575,-0.575,-0.575, - &-0.574,-0.574,-0.574,-0.574,-0.574,-0.574,-0.573,-0.573,-0.573, - &-0.573,-0.573,-0.572,-0.572,-0.572,-0.572,-0.572,-0.571,-0.571, - &-0.571,-0.571,-0.571,-0.571,-0.570,-0.570,-0.570,-0.570,-0.570, - &-0.569,-0.569,-0.569,-0.569,-0.569,-0.569,-0.568,-0.568,-0.568, - &-0.568,-0.568,-0.567,-0.567,-0.567,-0.567,-0.567,-0.567,-0.566, - &-0.566,-0.566,-0.566,-0.566,-0.566,-0.565,-0.565,-0.565,-0.565, - &-0.565,-0.565,-0.564,-0.564,-0.564,-0.564,-0.564,-0.564,-0.563, - &-0.563,-0.563,-0.563,-0.563,-0.563,-0.562,-0.562,-0.562,-0.562, - &-0.562,-0.562,-0.561,-0.561,-0.561,-0.561,-0.561,-0.561,-0.561, - &-0.560,-0.560,-0.560,-0.560,-0.560,-0.560,-0.560,-0.559,-0.559, - &-0.559,-0.559,-0.559,-0.559,-0.559,-0.558,-0.558,-0.558,-0.558, - &-0.558,-0.558,-0.558,-0.557,-0.557,-0.557,-0.557,-0.557,-0.557, - &-0.557,-0.556,-0.556,-0.556,-0.556,-0.556,-0.556,-0.556,-0.556, - &-0.555,-0.555,-0.555,-0.555,-0.555,-0.555,-0.555,-0.555,-0.554, - &-0.554,-0.554,-0.554,-0.554,-0.554,-0.554,-0.554,-0.554,-0.553, - &-0.553,-0.553,-0.553,-0.553,-0.553,-0.553,-0.553,-0.553,-0.552, - &-0.552,-0.552,-0.552,-0.552,-0.552,-0.552,-0.552,-0.552,-0.552, - &-0.551,-0.551,-0.551,-0.551,-0.551,-0.551,-0.551,-0.551,-0.551, - &-0.551,-0.550,-0.550,-0.550,-0.550,-0.550,-0.550,-0.550,-0.550, - &-0.550,-0.550,-0.550,-0.549,-0.549,-0.549,-0.549,-0.549,-0.549, - &-0.549,-0.549,-0.549,-0.549,-0.549,-0.549,-0.549,-0.548,-0.548, - &-0.548,-0.548,-0.548,-0.548,-0.548,-0.548,-0.548,-0.548,-0.548, - &-0.548,-0.548,-0.547,-0.547,-0.547,-0.547,-0.547,-0.547,-0.547, - &-0.547,-0.547,-0.547,-0.547,-0.546,-0.546,-0.545,-0.545,-0.544, - &-0.544,-0.544,-0.544,-0.544,-0.544,-0.544,-0.544,-0.544,-0.544, - &-0.544,-0.544,-0.545,-0.545,-0.545,-0.546,-0.546,-0.547,-0.547, - &-0.548,-0.548,-0.549,-0.550,-0.550,-0.551,-0.552,-0.553,-0.554, - &-0.555,-0.556,-0.557,-0.558,-0.559,-0.560,-0.561,-0.562,-0.563, - &-0.564,-0.566,-0.567,-0.568,-0.569,-0.571,-0.572,-0.573,-0.575, - &-0.576,-0.578,-0.579,-0.581,-0.582,-0.584,-0.586,-0.587,-0.589, - &-0.590,-0.592,-0.594,-0.595,-0.597,-0.599,-0.601,-0.603,-0.604, - &-0.606,-0.608,-0.610,-0.612,-0.614,-0.616,-0.618,-0.620,-0.622, - &-0.624,-0.626,-0.628,-0.630,-0.632,-0.634,-0.636,-0.638,-0.640, - &-0.642,-0.644,-0.647,-0.649,-0.651,-0.653,-0.655,-0.658,-0.660, - &-0.662,-0.664,-0.667,-0.669,-0.671,-0.674,-0.676,-0.678,-0.681, - &-0.683,-0.686,-0.688,-0.690,-0.693,-0.695,-0.698,-0.700,-0.703, - &-0.705,-0.708,-0.710,-0.713,-0.715,-0.718,-0.720,-0.723,-0.725, - &-0.728,-0.731,-0.733,-0.736,-0.738,-0.741,-0.744,-0.746,-0.749, - &-0.752,-0.754,-0.757,-0.760,-0.762,-0.765,-0.768,-0.770,-0.773, - &-0.776,-0.779,-0.781,-0.784,-0.787,-0.790,-0.793,-0.795,-0.798, - &-0.801,-0.804,-0.807,-0.809,-0.812,-0.815,-0.818,-0.821,-0.824, - &-0.827,-0.829,-0.832 - & /) -! -! *** CASO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC14M_248 = (/ - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000 - & /) -! -! *** CANO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC15M_248 = (/ - &-0.096,-0.206,-0.258,-0.293,-0.321,-0.342,-0.360,-0.376,-0.389, - &-0.401,-0.411,-0.420,-0.429,-0.436,-0.443,-0.449,-0.455,-0.460, - &-0.465,-0.469,-0.473,-0.477,-0.481,-0.484,-0.487,-0.490,-0.493, - &-0.495,-0.497,-0.500,-0.502,-0.504,-0.505,-0.507,-0.509,-0.510, - &-0.512,-0.513,-0.514,-0.515,-0.517,-0.518,-0.519,-0.520,-0.520, - &-0.521,-0.522,-0.523,-0.524,-0.524,-0.525,-0.526,-0.526,-0.527, - &-0.527,-0.528,-0.528,-0.529,-0.529,-0.530,-0.530,-0.530,-0.531, - &-0.531,-0.531,-0.531,-0.532,-0.532,-0.532,-0.532,-0.532,-0.532, - &-0.533,-0.533,-0.533,-0.533,-0.533,-0.533,-0.533,-0.533,-0.533, - &-0.532,-0.532,-0.532,-0.532,-0.532,-0.532,-0.531,-0.531,-0.531, - &-0.530,-0.530,-0.530,-0.529,-0.529,-0.529,-0.528,-0.528,-0.527, - &-0.527,-0.526,-0.526,-0.525,-0.525,-0.524,-0.524,-0.523,-0.523, - &-0.522,-0.521,-0.521,-0.520,-0.519,-0.519,-0.518,-0.517,-0.517, - &-0.516,-0.515,-0.515,-0.514,-0.513,-0.512,-0.512,-0.511,-0.510, - &-0.509,-0.509,-0.508,-0.507,-0.506,-0.506,-0.505,-0.504,-0.503, - &-0.503,-0.502,-0.501,-0.500,-0.499,-0.499,-0.498,-0.497,-0.496, - &-0.495,-0.495,-0.494,-0.493,-0.492,-0.491,-0.491,-0.490,-0.489, - &-0.488,-0.487,-0.486,-0.486,-0.485,-0.484,-0.483,-0.482,-0.482, - &-0.481,-0.480,-0.479,-0.478,-0.477,-0.477,-0.476,-0.475,-0.474, - &-0.473,-0.472,-0.472,-0.471,-0.470,-0.469,-0.468,-0.468,-0.467, - &-0.466,-0.465,-0.464,-0.463,-0.463,-0.462,-0.461,-0.460,-0.459, - &-0.459,-0.458,-0.457,-0.456,-0.455,-0.455,-0.454,-0.453,-0.452, - &-0.451,-0.450,-0.450,-0.449,-0.448,-0.447,-0.446,-0.446,-0.445, - &-0.444,-0.443,-0.442,-0.442,-0.441,-0.440,-0.439,-0.438,-0.438, - &-0.437,-0.436,-0.435,-0.435,-0.434,-0.433,-0.432,-0.431,-0.431, - &-0.430,-0.429,-0.428,-0.427,-0.427,-0.426,-0.425,-0.424,-0.424, - &-0.423,-0.422,-0.421,-0.421,-0.420,-0.419,-0.418,-0.417,-0.417, - &-0.416,-0.415,-0.414,-0.414,-0.413,-0.412,-0.411,-0.411,-0.410, - &-0.409,-0.408,-0.408,-0.407,-0.406,-0.405,-0.405,-0.404,-0.403, - &-0.402,-0.402,-0.401,-0.400,-0.400,-0.399,-0.398,-0.397,-0.397, - &-0.396,-0.395,-0.394,-0.394,-0.393,-0.392,-0.392,-0.391,-0.390, - &-0.389,-0.389,-0.388,-0.387,-0.387,-0.386,-0.385,-0.385,-0.384, - &-0.383,-0.382,-0.382,-0.381,-0.380,-0.380,-0.379,-0.378,-0.378, - &-0.377,-0.376,-0.376,-0.375,-0.374,-0.374,-0.373,-0.372,-0.371, - &-0.371,-0.370,-0.369,-0.369,-0.368,-0.367,-0.367,-0.366,-0.365, - &-0.365,-0.364,-0.364,-0.363,-0.362,-0.362,-0.361,-0.360,-0.360, - &-0.359,-0.358,-0.358,-0.357,-0.356,-0.356,-0.355,-0.354,-0.354, - &-0.353,-0.353,-0.352,-0.351,-0.351,-0.350,-0.349,-0.349,-0.348, - &-0.348,-0.347,-0.346,-0.346,-0.345,-0.344,-0.344,-0.343,-0.343, - &-0.342,-0.341,-0.341,-0.340,-0.340,-0.339,-0.338,-0.338,-0.337, - &-0.337,-0.336,-0.335,-0.335,-0.334,-0.334,-0.333,-0.332,-0.332, - &-0.331,-0.331,-0.330,-0.330,-0.329,-0.328,-0.328,-0.327,-0.327, - &-0.326,-0.326,-0.325,-0.324,-0.324,-0.323,-0.323,-0.322,-0.322, - &-0.321,-0.320,-0.320,-0.319,-0.319,-0.318,-0.318,-0.317,-0.317, - &-0.316,-0.316,-0.315,-0.314,-0.309,-0.303,-0.298,-0.293,-0.288, - &-0.284,-0.279,-0.275,-0.270,-0.266,-0.262,-0.258,-0.254,-0.250, - &-0.246,-0.242,-0.239,-0.235,-0.232,-0.229,-0.226,-0.223,-0.219, - &-0.217,-0.214,-0.211,-0.208,-0.206,-0.203,-0.201,-0.198,-0.196, - &-0.194,-0.192,-0.190,-0.188,-0.186,-0.184,-0.182,-0.180,-0.179, - &-0.177,-0.175,-0.174,-0.173,-0.171,-0.170,-0.169,-0.167,-0.166, - &-0.165,-0.164,-0.163,-0.162,-0.161,-0.161,-0.160,-0.159,-0.158, - &-0.158,-0.157,-0.157,-0.156,-0.156,-0.155,-0.155,-0.155,-0.154, - &-0.154,-0.154,-0.154,-0.154,-0.153,-0.153,-0.153,-0.153,-0.153, - &-0.154,-0.154,-0.154,-0.154,-0.154,-0.155,-0.155,-0.155,-0.156, - &-0.156,-0.157,-0.157,-0.158,-0.158,-0.159,-0.159,-0.160,-0.161, - &-0.161,-0.162,-0.163,-0.164,-0.164,-0.165,-0.166,-0.167,-0.168, - &-0.169,-0.170,-0.171,-0.172,-0.173,-0.174,-0.175,-0.176,-0.177, - &-0.179,-0.180,-0.181,-0.182,-0.183,-0.185,-0.186,-0.187,-0.189, - &-0.190,-0.192,-0.193,-0.194,-0.196,-0.197,-0.199,-0.200,-0.202, - &-0.203,-0.205,-0.207,-0.208,-0.210,-0.212,-0.213,-0.215,-0.217, - &-0.218,-0.220,-0.222,-0.224,-0.225,-0.227,-0.229,-0.231,-0.233, - &-0.235,-0.237,-0.239,-0.240,-0.242,-0.244,-0.246,-0.248,-0.250, - &-0.252,-0.254,-0.256 - & /) -! -! *** CACL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC16M_248 = (/ - &-0.095,-0.197,-0.242,-0.272,-0.293,-0.309,-0.321,-0.331,-0.339, - &-0.345,-0.351,-0.355,-0.358,-0.360,-0.362,-0.363,-0.363,-0.364, - &-0.364,-0.363,-0.362,-0.361,-0.360,-0.358,-0.357,-0.355,-0.353, - &-0.350,-0.348,-0.345,-0.343,-0.340,-0.337,-0.334,-0.331,-0.328, - &-0.325,-0.322,-0.319,-0.316,-0.312,-0.309,-0.306,-0.302,-0.299, - &-0.295,-0.292,-0.289,-0.285,-0.282,-0.278,-0.274,-0.271,-0.267, - &-0.264,-0.260,-0.257,-0.253,-0.249,-0.246,-0.242,-0.239,-0.235, - &-0.231,-0.228,-0.224,-0.220,-0.217,-0.213,-0.209,-0.205,-0.202, - &-0.198,-0.194,-0.190,-0.186,-0.182,-0.178,-0.175,-0.171,-0.167, - &-0.163,-0.158,-0.154,-0.150,-0.146,-0.142,-0.138,-0.134,-0.129, - &-0.125,-0.121,-0.116,-0.112,-0.107,-0.103,-0.099,-0.094,-0.090, - &-0.085,-0.080,-0.076,-0.071,-0.066,-0.062,-0.057,-0.052,-0.048, - &-0.043,-0.038,-0.033,-0.028,-0.024,-0.019,-0.014,-0.009,-0.004, - & 0.001, 0.006, 0.010, 0.015, 0.020, 0.025, 0.030, 0.035, 0.040, - & 0.045, 0.050, 0.055, 0.060, 0.064, 0.069, 0.074, 0.079, 0.084, - & 0.089, 0.094, 0.099, 0.104, 0.109, 0.114, 0.119, 0.123, 0.128, - & 0.133, 0.138, 0.143, 0.148, 0.153, 0.158, 0.162, 0.167, 0.172, - & 0.177, 0.182, 0.187, 0.191, 0.196, 0.201, 0.206, 0.211, 0.215, - & 0.220, 0.225, 0.230, 0.235, 0.239, 0.244, 0.249, 0.254, 0.258, - & 0.263, 0.268, 0.272, 0.277, 0.282, 0.287, 0.291, 0.296, 0.301, - & 0.305, 0.310, 0.315, 0.319, 0.324, 0.329, 0.333, 0.338, 0.342, - & 0.347, 0.352, 0.356, 0.361, 0.365, 0.370, 0.375, 0.379, 0.384, - & 0.388, 0.393, 0.397, 0.402, 0.406, 0.411, 0.415, 0.420, 0.424, - & 0.429, 0.433, 0.438, 0.442, 0.447, 0.451, 0.456, 0.460, 0.464, - & 0.469, 0.473, 0.478, 0.482, 0.487, 0.491, 0.495, 0.500, 0.504, - & 0.508, 0.513, 0.517, 0.521, 0.526, 0.530, 0.534, 0.539, 0.543, - & 0.547, 0.552, 0.556, 0.560, 0.564, 0.569, 0.573, 0.577, 0.581, - & 0.586, 0.590, 0.594, 0.598, 0.602, 0.607, 0.611, 0.615, 0.619, - & 0.623, 0.627, 0.632, 0.636, 0.640, 0.644, 0.648, 0.652, 0.656, - & 0.660, 0.664, 0.669, 0.673, 0.677, 0.681, 0.685, 0.689, 0.693, - & 0.697, 0.701, 0.705, 0.709, 0.713, 0.717, 0.721, 0.725, 0.729, - & 0.733, 0.737, 0.741, 0.745, 0.749, 0.753, 0.757, 0.761, 0.765, - & 0.768, 0.772, 0.776, 0.780, 0.784, 0.788, 0.792, 0.796, 0.799, - & 0.803, 0.807, 0.811, 0.815, 0.819, 0.823, 0.826, 0.830, 0.834, - & 0.838, 0.842, 0.845, 0.849, 0.853, 0.857, 0.860, 0.864, 0.868, - & 0.872, 0.875, 0.879, 0.883, 0.886, 0.890, 0.894, 0.898, 0.901, - & 0.905, 0.909, 0.912, 0.916, 0.920, 0.923, 0.927, 0.930, 0.934, - & 0.938, 0.941, 0.945, 0.949, 0.952, 0.956, 0.959, 0.963, 0.966, - & 0.970, 0.974, 0.977, 0.981, 0.984, 0.988, 0.991, 0.995, 0.998, - & 1.002, 1.005, 1.009, 1.012, 1.016, 1.019, 1.023, 1.026, 1.030, - & 1.033, 1.037, 1.040, 1.044, 1.047, 1.050, 1.054, 1.057, 1.061, - & 1.064, 1.067, 1.071, 1.074, 1.078, 1.081, 1.084, 1.088, 1.091, - & 1.094, 1.098, 1.101, 1.105, 1.108, 1.111, 1.115, 1.118, 1.121, - & 1.124, 1.128, 1.131, 1.134, 1.138, 1.141, 1.144, 1.147, 1.151, - & 1.154, 1.157, 1.160, 1.164, 1.198, 1.230, 1.261, 1.292, 1.322, - & 1.351, 1.380, 1.409, 1.437, 1.465, 1.492, 1.519, 1.546, 1.572, - & 1.598, 1.623, 1.648, 1.673, 1.697, 1.721, 1.745, 1.768, 1.791, - & 1.814, 1.836, 1.858, 1.880, 1.901, 1.922, 1.943, 1.964, 1.984, - & 2.004, 2.024, 2.044, 2.063, 2.082, 2.101, 2.119, 2.138, 2.156, - & 2.174, 2.191, 2.209, 2.226, 2.243, 2.260, 2.276, 2.293, 2.309, - & 2.325, 2.341, 2.357, 2.372, 2.387, 2.403, 2.418, 2.432, 2.447, - & 2.461, 2.476, 2.490, 2.504, 2.518, 2.531, 2.545, 2.558, 2.571, - & 2.585, 2.597, 2.610, 2.623, 2.635, 2.648, 2.660, 2.672, 2.684, - & 2.696, 2.708, 2.720, 2.731, 2.742, 2.754, 2.765, 2.776, 2.787, - & 2.798, 2.808, 2.819, 2.830, 2.840, 2.850, 2.860, 2.871, 2.881, - & 2.890, 2.900, 2.910, 2.920, 2.929, 2.938, 2.948, 2.957, 2.966, - & 2.975, 2.984, 2.993, 3.002, 3.011, 3.019, 3.028, 3.036, 3.045, - & 3.053, 3.061, 3.069, 3.077, 3.085, 3.093, 3.101, 3.109, 3.117, - & 3.124, 3.132, 3.139, 3.147, 3.154, 3.161, 3.168, 3.176, 3.183, - & 3.190, 3.197, 3.203, 3.210, 3.217, 3.224, 3.230, 3.237, 3.243, - & 3.250, 3.256, 3.263, 3.269, 3.275, 3.281, 3.287, 3.293, 3.299, - & 3.305, 3.311, 3.317, 3.323, 3.329, 3.334, 3.340, 3.345, 3.351, - & 3.356, 3.362, 3.367 - & /) -! -! *** K2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC17M_248 = (/ - &-0.098,-0.214,-0.273,-0.315,-0.347,-0.375,-0.399,-0.419,-0.438, - &-0.455,-0.470,-0.485,-0.498,-0.511,-0.522,-0.533,-0.544,-0.554, - &-0.563,-0.572,-0.581,-0.590,-0.598,-0.605,-0.613,-0.620,-0.627, - &-0.634,-0.641,-0.647,-0.653,-0.660,-0.666,-0.671,-0.677,-0.683, - &-0.688,-0.693,-0.698,-0.703,-0.708,-0.713,-0.718,-0.723,-0.727, - &-0.732,-0.736,-0.741,-0.745,-0.749,-0.753,-0.757,-0.762,-0.765, - &-0.769,-0.773,-0.777,-0.781,-0.784,-0.788,-0.792,-0.795,-0.799, - &-0.802,-0.806,-0.809,-0.812,-0.816,-0.819,-0.822,-0.825,-0.829, - &-0.832,-0.835,-0.838,-0.841,-0.844,-0.847,-0.850,-0.853,-0.856, - &-0.859,-0.862,-0.865,-0.867,-0.870,-0.873,-0.876,-0.879,-0.881, - &-0.884,-0.887,-0.890,-0.892,-0.895,-0.898,-0.900,-0.903,-0.905, - &-0.908,-0.911,-0.913,-0.916,-0.918,-0.921,-0.923,-0.926,-0.928, - &-0.931,-0.933,-0.936,-0.938,-0.940,-0.943,-0.945,-0.948,-0.950, - &-0.952,-0.955,-0.957,-0.959,-0.962,-0.964,-0.966,-0.969,-0.971, - &-0.973,-0.975,-0.978,-0.980,-0.982,-0.984,-0.986,-0.989,-0.991, - &-0.993,-0.995,-0.997,-0.999,-1.002,-1.004,-1.006,-1.008,-1.010, - &-1.012,-1.014,-1.016,-1.018,-1.020,-1.022,-1.024,-1.026,-1.028, - &-1.030,-1.032,-1.034,-1.036,-1.038,-1.040,-1.042,-1.044,-1.046, - &-1.048,-1.050,-1.052,-1.054,-1.056,-1.058,-1.060,-1.062,-1.064, - &-1.066,-1.067,-1.069,-1.071,-1.073,-1.075,-1.077,-1.079,-1.080, - &-1.082,-1.084,-1.086,-1.088,-1.090,-1.091,-1.093,-1.095,-1.097, - &-1.099,-1.100,-1.102,-1.104,-1.106,-1.107,-1.109,-1.111,-1.113, - &-1.114,-1.116,-1.118,-1.120,-1.121,-1.123,-1.125,-1.127,-1.128, - &-1.130,-1.132,-1.133,-1.135,-1.137,-1.138,-1.140,-1.142,-1.143, - &-1.145,-1.147,-1.148,-1.150,-1.152,-1.153,-1.155,-1.157,-1.158, - &-1.160,-1.162,-1.163,-1.165,-1.166,-1.168,-1.170,-1.171,-1.173, - &-1.174,-1.176,-1.178,-1.179,-1.181,-1.182,-1.184,-1.185,-1.187, - &-1.189,-1.190,-1.192,-1.193,-1.195,-1.196,-1.198,-1.199,-1.201, - &-1.203,-1.204,-1.206,-1.207,-1.209,-1.210,-1.212,-1.213,-1.215, - &-1.216,-1.218,-1.219,-1.221,-1.222,-1.224,-1.225,-1.227,-1.228, - &-1.230,-1.231,-1.233,-1.234,-1.236,-1.237,-1.238,-1.240,-1.241, - &-1.243,-1.244,-1.246,-1.247,-1.249,-1.250,-1.252,-1.253,-1.254, - &-1.256,-1.257,-1.259,-1.260,-1.262,-1.263,-1.264,-1.266,-1.267, - &-1.269,-1.270,-1.271,-1.273,-1.274,-1.276,-1.277,-1.278,-1.280, - &-1.281,-1.283,-1.284,-1.285,-1.287,-1.288,-1.290,-1.291,-1.292, - &-1.294,-1.295,-1.296,-1.298,-1.299,-1.301,-1.302,-1.303,-1.305, - &-1.306,-1.307,-1.309,-1.310,-1.311,-1.313,-1.314,-1.315,-1.317, - &-1.318,-1.319,-1.321,-1.322,-1.323,-1.325,-1.326,-1.327,-1.329, - &-1.330,-1.331,-1.333,-1.334,-1.335,-1.337,-1.338,-1.339,-1.341, - &-1.342,-1.343,-1.344,-1.346,-1.347,-1.348,-1.350,-1.351,-1.352, - &-1.354,-1.355,-1.356,-1.357,-1.359,-1.360,-1.361,-1.363,-1.364, - &-1.365,-1.366,-1.368,-1.369,-1.370,-1.371,-1.373,-1.374,-1.375, - &-1.376,-1.378,-1.379,-1.380,-1.381,-1.383,-1.384,-1.385,-1.387, - &-1.388,-1.389,-1.390,-1.391,-1.393,-1.394,-1.395,-1.396,-1.398, - &-1.399,-1.400,-1.401,-1.403,-1.416,-1.428,-1.440,-1.452,-1.463, - &-1.475,-1.487,-1.498,-1.509,-1.520,-1.532,-1.543,-1.554,-1.564, - &-1.575,-1.586,-1.596,-1.607,-1.617,-1.628,-1.638,-1.648,-1.659, - &-1.669,-1.679,-1.689,-1.699,-1.709,-1.719,-1.729,-1.738,-1.748, - &-1.758,-1.767,-1.777,-1.786,-1.796,-1.805,-1.815,-1.824,-1.833, - &-1.843,-1.852,-1.861,-1.870,-1.879,-1.888,-1.897,-1.906,-1.915, - &-1.924,-1.933,-1.942,-1.951,-1.960,-1.969,-1.977,-1.986,-1.995, - &-2.004,-2.012,-2.021,-2.029,-2.038,-2.047,-2.055,-2.064,-2.072, - &-2.081,-2.089,-2.097,-2.106,-2.114,-2.123,-2.131,-2.139,-2.147, - &-2.156,-2.164,-2.172,-2.180,-2.189,-2.197,-2.205,-2.213,-2.221, - &-2.229,-2.237,-2.245,-2.253,-2.261,-2.269,-2.277,-2.285,-2.293, - &-2.301,-2.309,-2.317,-2.325,-2.333,-2.341,-2.349,-2.356,-2.364, - &-2.372,-2.380,-2.388,-2.395,-2.403,-2.411,-2.419,-2.426,-2.434, - &-2.442,-2.449,-2.457,-2.465,-2.472,-2.480,-2.488,-2.495,-2.503, - &-2.510,-2.518,-2.525,-2.533,-2.541,-2.548,-2.556,-2.563,-2.571, - &-2.578,-2.586,-2.593,-2.600,-2.608,-2.615,-2.623,-2.630,-2.638, - &-2.645,-2.652,-2.660,-2.667,-2.674,-2.682,-2.689,-2.696,-2.704, - &-2.711,-2.718,-2.726,-2.733,-2.740,-2.747,-2.755,-2.762,-2.769, - &-2.776,-2.784,-2.791 - & /) -! -! *** KHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC18M_248 = (/ - &-0.048,-0.102,-0.127,-0.145,-0.158,-0.169,-0.178,-0.185,-0.192, - &-0.198,-0.203,-0.207,-0.211,-0.215,-0.218,-0.221,-0.224,-0.226, - &-0.228,-0.230,-0.231,-0.232,-0.234,-0.235,-0.235,-0.236,-0.237, - &-0.237,-0.237,-0.237,-0.237,-0.237,-0.237,-0.236,-0.236,-0.235, - &-0.234,-0.234,-0.233,-0.232,-0.231,-0.230,-0.228,-0.227,-0.226, - &-0.224,-0.223,-0.221,-0.220,-0.218,-0.216,-0.214,-0.212,-0.210, - &-0.208,-0.206,-0.204,-0.202,-0.200,-0.198,-0.196,-0.193,-0.191, - &-0.189,-0.186,-0.184,-0.181,-0.179,-0.176,-0.173,-0.171,-0.168, - &-0.165,-0.163,-0.160,-0.157,-0.154,-0.151,-0.148,-0.146,-0.143, - &-0.140,-0.137,-0.133,-0.130,-0.127,-0.124,-0.121,-0.118,-0.115, - &-0.111,-0.108,-0.105,-0.101,-0.098,-0.095,-0.091,-0.088,-0.084, - &-0.081,-0.077,-0.074,-0.070,-0.067,-0.063,-0.060,-0.056,-0.052, - &-0.049,-0.045,-0.042,-0.038,-0.034,-0.031,-0.027,-0.023,-0.020, - &-0.016,-0.012,-0.008,-0.005,-0.001, 0.003, 0.006, 0.010, 0.014, - & 0.018, 0.021, 0.025, 0.029, 0.032, 0.036, 0.040, 0.043, 0.047, - & 0.051, 0.054, 0.058, 0.062, 0.065, 0.069, 0.073, 0.076, 0.080, - & 0.084, 0.087, 0.091, 0.094, 0.098, 0.102, 0.105, 0.109, 0.112, - & 0.116, 0.119, 0.123, 0.127, 0.130, 0.134, 0.137, 0.141, 0.144, - & 0.148, 0.151, 0.155, 0.158, 0.162, 0.165, 0.168, 0.172, 0.175, - & 0.179, 0.182, 0.186, 0.189, 0.192, 0.196, 0.199, 0.202, 0.206, - & 0.209, 0.212, 0.216, 0.219, 0.222, 0.226, 0.229, 0.232, 0.236, - & 0.239, 0.242, 0.245, 0.249, 0.252, 0.255, 0.258, 0.262, 0.265, - & 0.268, 0.271, 0.274, 0.278, 0.281, 0.284, 0.287, 0.290, 0.293, - & 0.297, 0.300, 0.303, 0.306, 0.309, 0.312, 0.315, 0.318, 0.321, - & 0.324, 0.327, 0.330, 0.334, 0.337, 0.340, 0.343, 0.346, 0.349, - & 0.352, 0.355, 0.358, 0.361, 0.364, 0.367, 0.369, 0.372, 0.375, - & 0.378, 0.381, 0.384, 0.387, 0.390, 0.393, 0.396, 0.399, 0.402, - & 0.404, 0.407, 0.410, 0.413, 0.416, 0.419, 0.422, 0.424, 0.427, - & 0.430, 0.433, 0.436, 0.438, 0.441, 0.444, 0.447, 0.450, 0.452, - & 0.455, 0.458, 0.461, 0.463, 0.466, 0.469, 0.471, 0.474, 0.477, - & 0.480, 0.482, 0.485, 0.488, 0.490, 0.493, 0.496, 0.498, 0.501, - & 0.504, 0.506, 0.509, 0.512, 0.514, 0.517, 0.519, 0.522, 0.525, - & 0.527, 0.530, 0.532, 0.535, 0.538, 0.540, 0.543, 0.545, 0.548, - & 0.550, 0.553, 0.555, 0.558, 0.560, 0.563, 0.566, 0.568, 0.571, - & 0.573, 0.576, 0.578, 0.581, 0.583, 0.585, 0.588, 0.590, 0.593, - & 0.595, 0.598, 0.600, 0.603, 0.605, 0.607, 0.610, 0.612, 0.615, - & 0.617, 0.620, 0.622, 0.624, 0.627, 0.629, 0.632, 0.634, 0.636, - & 0.639, 0.641, 0.643, 0.646, 0.648, 0.650, 0.653, 0.655, 0.657, - & 0.660, 0.662, 0.664, 0.667, 0.669, 0.671, 0.674, 0.676, 0.678, - & 0.680, 0.683, 0.685, 0.687, 0.689, 0.692, 0.694, 0.696, 0.699, - & 0.701, 0.703, 0.705, 0.707, 0.710, 0.712, 0.714, 0.716, 0.719, - & 0.721, 0.723, 0.725, 0.727, 0.730, 0.732, 0.734, 0.736, 0.738, - & 0.740, 0.743, 0.745, 0.747, 0.749, 0.751, 0.753, 0.755, 0.758, - & 0.760, 0.762, 0.764, 0.766, 0.768, 0.770, 0.772, 0.775, 0.777, - & 0.779, 0.781, 0.783, 0.785, 0.807, 0.828, 0.848, 0.867, 0.886, - & 0.905, 0.924, 0.942, 0.960, 0.978, 0.995, 1.013, 1.029, 1.046, - & 1.062, 1.079, 1.095, 1.110, 1.126, 1.141, 1.156, 1.171, 1.185, - & 1.200, 1.214, 1.228, 1.242, 1.256, 1.269, 1.282, 1.295, 1.308, - & 1.321, 1.334, 1.346, 1.359, 1.371, 1.383, 1.395, 1.406, 1.418, - & 1.429, 1.441, 1.452, 1.463, 1.474, 1.485, 1.495, 1.506, 1.516, - & 1.527, 1.537, 1.547, 1.557, 1.567, 1.577, 1.586, 1.596, 1.605, - & 1.615, 1.624, 1.633, 1.642, 1.651, 1.660, 1.669, 1.678, 1.686, - & 1.695, 1.703, 1.711, 1.720, 1.728, 1.736, 1.744, 1.752, 1.760, - & 1.768, 1.775, 1.783, 1.791, 1.798, 1.806, 1.813, 1.820, 1.828, - & 1.835, 1.842, 1.849, 1.856, 1.863, 1.870, 1.876, 1.883, 1.890, - & 1.896, 1.903, 1.909, 1.916, 1.922, 1.928, 1.935, 1.941, 1.947, - & 1.953, 1.959, 1.965, 1.971, 1.977, 1.983, 1.989, 1.994, 2.000, - & 2.006, 2.011, 2.017, 2.022, 2.028, 2.033, 2.039, 2.044, 2.049, - & 2.054, 2.060, 2.065, 2.070, 2.075, 2.080, 2.085, 2.090, 2.095, - & 2.100, 2.104, 2.109, 2.114, 2.119, 2.123, 2.128, 2.132, 2.137, - & 2.142, 2.146, 2.150, 2.155, 2.159, 2.164, 2.168, 2.172, 2.176, - & 2.181, 2.185, 2.189, 2.193, 2.197, 2.201, 2.205, 2.209, 2.213, - & 2.217, 2.221, 2.225 - & /) -! -! *** KNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC19M_248 = (/ - &-0.051,-0.116,-0.152,-0.180,-0.203,-0.223,-0.241,-0.257,-0.272, - &-0.286,-0.300,-0.313,-0.325,-0.336,-0.348,-0.359,-0.369,-0.379, - &-0.389,-0.399,-0.408,-0.417,-0.426,-0.435,-0.444,-0.452,-0.460, - &-0.468,-0.476,-0.484,-0.492,-0.499,-0.507,-0.514,-0.521,-0.528, - &-0.535,-0.542,-0.548,-0.555,-0.562,-0.568,-0.574,-0.580,-0.587, - &-0.593,-0.599,-0.604,-0.610,-0.616,-0.622,-0.627,-0.633,-0.638, - &-0.644,-0.649,-0.654,-0.659,-0.664,-0.670,-0.675,-0.680,-0.684, - &-0.689,-0.694,-0.699,-0.704,-0.708,-0.713,-0.718,-0.722,-0.727, - &-0.731,-0.736,-0.740,-0.745,-0.749,-0.754,-0.758,-0.763,-0.767, - &-0.771,-0.776,-0.780,-0.784,-0.788,-0.793,-0.797,-0.801,-0.805, - &-0.810,-0.814,-0.818,-0.822,-0.826,-0.830,-0.834,-0.839,-0.843, - &-0.847,-0.851,-0.855,-0.859,-0.863,-0.867,-0.871,-0.875,-0.879, - &-0.883,-0.887,-0.891,-0.895,-0.899,-0.903,-0.907,-0.910,-0.914, - &-0.918,-0.922,-0.926,-0.930,-0.933,-0.937,-0.941,-0.945,-0.948, - &-0.952,-0.956,-0.959,-0.963,-0.967,-0.970,-0.974,-0.977,-0.981, - &-0.985,-0.988,-0.992,-0.995,-0.999,-1.002,-1.006,-1.009,-1.012, - &-1.016,-1.019,-1.023,-1.026,-1.029,-1.033,-1.036,-1.039,-1.042, - &-1.046,-1.049,-1.052,-1.055,-1.059,-1.062,-1.065,-1.068,-1.071, - &-1.074,-1.078,-1.081,-1.084,-1.087,-1.090,-1.093,-1.096,-1.099, - &-1.102,-1.105,-1.108,-1.111,-1.114,-1.117,-1.120,-1.123,-1.126, - &-1.129,-1.131,-1.134,-1.137,-1.140,-1.143,-1.146,-1.149,-1.151, - &-1.154,-1.157,-1.160,-1.162,-1.165,-1.168,-1.171,-1.173,-1.176, - &-1.179,-1.181,-1.184,-1.187,-1.189,-1.192,-1.195,-1.197,-1.200, - &-1.202,-1.205,-1.207,-1.210,-1.213,-1.215,-1.218,-1.220,-1.223, - &-1.225,-1.228,-1.230,-1.233,-1.235,-1.237,-1.240,-1.242,-1.245, - &-1.247,-1.250,-1.252,-1.254,-1.257,-1.259,-1.261,-1.264,-1.266, - &-1.268,-1.271,-1.273,-1.275,-1.278,-1.280,-1.282,-1.284,-1.287, - &-1.289,-1.291,-1.293,-1.296,-1.298,-1.300,-1.302,-1.304,-1.307, - &-1.309,-1.311,-1.313,-1.315,-1.317,-1.319,-1.322,-1.324,-1.326, - &-1.328,-1.330,-1.332,-1.334,-1.336,-1.338,-1.340,-1.342,-1.344, - &-1.346,-1.348,-1.350,-1.352,-1.354,-1.356,-1.358,-1.360,-1.362, - &-1.364,-1.366,-1.368,-1.370,-1.372,-1.374,-1.376,-1.378,-1.380, - &-1.382,-1.384,-1.385,-1.387,-1.389,-1.391,-1.393,-1.395,-1.397, - &-1.398,-1.400,-1.402,-1.404,-1.406,-1.408,-1.409,-1.411,-1.413, - &-1.415,-1.417,-1.418,-1.420,-1.422,-1.424,-1.425,-1.427,-1.429, - &-1.431,-1.432,-1.434,-1.436,-1.437,-1.439,-1.441,-1.443,-1.444, - &-1.446,-1.448,-1.449,-1.451,-1.453,-1.454,-1.456,-1.458,-1.459, - &-1.461,-1.462,-1.464,-1.466,-1.467,-1.469,-1.470,-1.472,-1.474, - &-1.475,-1.477,-1.478,-1.480,-1.482,-1.483,-1.485,-1.486,-1.488, - &-1.489,-1.491,-1.492,-1.494,-1.495,-1.497,-1.498,-1.500,-1.501, - &-1.503,-1.504,-1.506,-1.507,-1.509,-1.510,-1.512,-1.513,-1.515, - &-1.516,-1.518,-1.519,-1.521,-1.522,-1.523,-1.525,-1.526,-1.528, - &-1.529,-1.530,-1.532,-1.533,-1.535,-1.536,-1.537,-1.539,-1.540, - &-1.542,-1.543,-1.544,-1.546,-1.547,-1.548,-1.550,-1.551,-1.553, - &-1.554,-1.555,-1.557,-1.558,-1.572,-1.585,-1.597,-1.609,-1.621, - &-1.632,-1.643,-1.654,-1.665,-1.675,-1.685,-1.695,-1.705,-1.714, - &-1.723,-1.732,-1.741,-1.750,-1.758,-1.766,-1.774,-1.782,-1.790, - &-1.798,-1.805,-1.813,-1.820,-1.827,-1.834,-1.841,-1.848,-1.855, - &-1.861,-1.868,-1.874,-1.881,-1.887,-1.893,-1.899,-1.905,-1.911, - &-1.917,-1.923,-1.929,-1.934,-1.940,-1.945,-1.951,-1.956,-1.962, - &-1.967,-1.972,-1.977,-1.982,-1.988,-1.993,-1.998,-2.003,-2.008, - &-2.012,-2.017,-2.022,-2.027,-2.032,-2.036,-2.041,-2.046,-2.050, - &-2.055,-2.059,-2.064,-2.068,-2.073,-2.077,-2.082,-2.086,-2.090, - &-2.095,-2.099,-2.103,-2.108,-2.112,-2.116,-2.120,-2.124,-2.128, - &-2.133,-2.137,-2.141,-2.145,-2.149,-2.153,-2.157,-2.161,-2.165, - &-2.169,-2.173,-2.177,-2.181,-2.185,-2.189,-2.192,-2.196,-2.200, - &-2.204,-2.208,-2.212,-2.216,-2.219,-2.223,-2.227,-2.231,-2.234, - &-2.238,-2.242,-2.246,-2.249,-2.253,-2.257,-2.260,-2.264,-2.268, - &-2.271,-2.275,-2.279,-2.282,-2.286,-2.289,-2.293,-2.297,-2.300, - &-2.304,-2.307,-2.311,-2.315,-2.318,-2.322,-2.325,-2.329,-2.332, - &-2.336,-2.339,-2.343,-2.346,-2.350,-2.353,-2.357,-2.360,-2.364, - &-2.367,-2.370,-2.374,-2.377,-2.381,-2.384,-2.388,-2.391,-2.395, - &-2.398,-2.401,-2.405 - & /) -! -! *** KCL -! - Real(kind=fp), Parameter, Dimension(561) :: BNC20M_248 = (/ - &-0.048,-0.103,-0.129,-0.147,-0.160,-0.171,-0.180,-0.188,-0.195, - &-0.201,-0.206,-0.210,-0.215,-0.218,-0.222,-0.225,-0.228,-0.230, - &-0.233,-0.235,-0.237,-0.239,-0.241,-0.242,-0.244,-0.245,-0.247, - &-0.248,-0.249,-0.250,-0.251,-0.252,-0.253,-0.254,-0.255,-0.256, - &-0.256,-0.257,-0.258,-0.258,-0.259,-0.260,-0.260,-0.261,-0.261, - &-0.261,-0.262,-0.262,-0.263,-0.263,-0.263,-0.264,-0.264,-0.264, - &-0.265,-0.265,-0.265,-0.265,-0.266,-0.266,-0.266,-0.266,-0.266, - &-0.267,-0.267,-0.267,-0.267,-0.267,-0.267,-0.267,-0.267,-0.267, - &-0.267,-0.268,-0.268,-0.268,-0.268,-0.268,-0.268,-0.268,-0.268, - &-0.268,-0.267,-0.267,-0.267,-0.267,-0.267,-0.267,-0.267,-0.267, - &-0.267,-0.267,-0.266,-0.266,-0.266,-0.266,-0.266,-0.265,-0.265, - &-0.265,-0.265,-0.265,-0.264,-0.264,-0.264,-0.264,-0.263,-0.263, - &-0.263,-0.262,-0.262,-0.262,-0.261,-0.261,-0.261,-0.260,-0.260, - &-0.260,-0.259,-0.259,-0.259,-0.258,-0.258,-0.258,-0.257,-0.257, - &-0.257,-0.256,-0.256,-0.256,-0.255,-0.255,-0.254,-0.254,-0.254, - &-0.253,-0.253,-0.253,-0.252,-0.252,-0.251,-0.251,-0.251,-0.250, - &-0.250,-0.249,-0.249,-0.249,-0.248,-0.248,-0.247,-0.247,-0.247, - &-0.246,-0.246,-0.246,-0.245,-0.245,-0.244,-0.244,-0.244,-0.243, - &-0.243,-0.242,-0.242,-0.242,-0.241,-0.241,-0.240,-0.240,-0.240, - &-0.239,-0.239,-0.238,-0.238,-0.238,-0.237,-0.237,-0.236,-0.236, - &-0.236,-0.235,-0.235,-0.234,-0.234,-0.234,-0.233,-0.233,-0.232, - &-0.232,-0.232,-0.231,-0.231,-0.230,-0.230,-0.230,-0.229,-0.229, - &-0.228,-0.228,-0.228,-0.227,-0.227,-0.227,-0.226,-0.226,-0.225, - &-0.225,-0.225,-0.224,-0.224,-0.223,-0.223,-0.223,-0.222,-0.222, - &-0.221,-0.221,-0.221,-0.220,-0.220,-0.220,-0.219,-0.219,-0.218, - &-0.218,-0.218,-0.217,-0.217,-0.217,-0.216,-0.216,-0.215,-0.215, - &-0.215,-0.214,-0.214,-0.214,-0.213,-0.213,-0.212,-0.212,-0.212, - &-0.211,-0.211,-0.211,-0.210,-0.210,-0.209,-0.209,-0.209,-0.208, - &-0.208,-0.208,-0.207,-0.207,-0.207,-0.206,-0.206,-0.205,-0.205, - &-0.205,-0.204,-0.204,-0.204,-0.203,-0.203,-0.203,-0.202,-0.202, - &-0.202,-0.201,-0.201,-0.201,-0.200,-0.200,-0.199,-0.199,-0.199, - &-0.198,-0.198,-0.198,-0.197,-0.197,-0.197,-0.196,-0.196,-0.196, - &-0.195,-0.195,-0.195,-0.194,-0.194,-0.194,-0.193,-0.193,-0.193, - &-0.192,-0.192,-0.192,-0.191,-0.191,-0.191,-0.190,-0.190,-0.190, - &-0.189,-0.189,-0.189,-0.188,-0.188,-0.188,-0.187,-0.187,-0.187, - &-0.186,-0.186,-0.186,-0.186,-0.185,-0.185,-0.185,-0.184,-0.184, - &-0.184,-0.183,-0.183,-0.183,-0.182,-0.182,-0.182,-0.181,-0.181, - &-0.181,-0.181,-0.180,-0.180,-0.180,-0.179,-0.179,-0.179,-0.178, - &-0.178,-0.178,-0.178,-0.177,-0.177,-0.177,-0.176,-0.176,-0.176, - &-0.175,-0.175,-0.175,-0.175,-0.174,-0.174,-0.174,-0.173,-0.173, - &-0.173,-0.173,-0.172,-0.172,-0.172,-0.171,-0.171,-0.171,-0.171, - &-0.170,-0.170,-0.170,-0.169,-0.169,-0.169,-0.169,-0.168,-0.168, - &-0.168,-0.167,-0.167,-0.167,-0.167,-0.166,-0.166,-0.166,-0.166, - &-0.165,-0.165,-0.165,-0.164,-0.164,-0.164,-0.164,-0.163,-0.163, - &-0.163,-0.163,-0.162,-0.162,-0.159,-0.157,-0.154,-0.152,-0.149, - &-0.147,-0.145,-0.143,-0.141,-0.139,-0.137,-0.135,-0.133,-0.131, - &-0.129,-0.127,-0.126,-0.124,-0.122,-0.121,-0.119,-0.118,-0.116, - &-0.115,-0.114,-0.112,-0.111,-0.110,-0.109,-0.107,-0.106,-0.105, - &-0.104,-0.103,-0.102,-0.101,-0.100,-0.099,-0.099,-0.098,-0.097, - &-0.096,-0.095,-0.095,-0.094,-0.093,-0.093,-0.092,-0.092,-0.091, - &-0.091,-0.090,-0.090,-0.089,-0.089,-0.089,-0.088,-0.088,-0.088, - &-0.087,-0.087,-0.087,-0.087,-0.087,-0.086,-0.086,-0.086,-0.086, - &-0.086,-0.086,-0.086,-0.086,-0.086,-0.086,-0.086,-0.086,-0.086, - &-0.086,-0.086,-0.086,-0.087,-0.087,-0.087,-0.087,-0.087,-0.088, - &-0.088,-0.088,-0.088,-0.089,-0.089,-0.089,-0.090,-0.090,-0.090, - &-0.091,-0.091,-0.092,-0.092,-0.092,-0.093,-0.093,-0.094,-0.094, - &-0.095,-0.095,-0.096,-0.096,-0.097,-0.098,-0.098,-0.099,-0.099, - &-0.100,-0.101,-0.101,-0.102,-0.103,-0.103,-0.104,-0.105,-0.105, - &-0.106,-0.107,-0.107,-0.108,-0.109,-0.110,-0.111,-0.111,-0.112, - &-0.113,-0.114,-0.115,-0.115,-0.116,-0.117,-0.118,-0.119,-0.120, - &-0.121,-0.122,-0.122,-0.123,-0.124,-0.125,-0.126,-0.127,-0.128, - &-0.129,-0.130,-0.131,-0.132,-0.133,-0.134,-0.135,-0.136,-0.137, - &-0.138,-0.139,-0.140 - & /) -! -! *** MGSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC21M_248 = (/ - &-0.195,-0.422,-0.535,-0.614,-0.676,-0.727,-0.770,-0.808,-0.841, - &-0.871,-0.898,-0.923,-0.946,-0.968,-0.988,-1.006,-1.024,-1.041, - &-1.056,-1.071,-1.085,-1.099,-1.112,-1.124,-1.136,-1.148,-1.159, - &-1.169,-1.179,-1.189,-1.199,-1.208,-1.217,-1.226,-1.234,-1.243, - &-1.251,-1.258,-1.266,-1.273,-1.281,-1.288,-1.295,-1.302,-1.308, - &-1.315,-1.321,-1.327,-1.333,-1.339,-1.345,-1.351,-1.357,-1.362, - &-1.368,-1.373,-1.379,-1.384,-1.389,-1.394,-1.399,-1.404,-1.409, - &-1.413,-1.418,-1.423,-1.427,-1.432,-1.436,-1.441,-1.445,-1.449, - &-1.454,-1.458,-1.462,-1.466,-1.470,-1.474,-1.478,-1.482,-1.486, - &-1.489,-1.493,-1.497,-1.500,-1.504,-1.508,-1.511,-1.515,-1.518, - &-1.522,-1.525,-1.528,-1.532,-1.535,-1.538,-1.541,-1.545,-1.548, - &-1.551,-1.554,-1.557,-1.560,-1.563,-1.566,-1.569,-1.572,-1.575, - &-1.578,-1.581,-1.584,-1.586,-1.589,-1.592,-1.595,-1.598,-1.600, - &-1.603,-1.606,-1.608,-1.611,-1.614,-1.616,-1.619,-1.621,-1.624, - &-1.626,-1.629,-1.631,-1.634,-1.636,-1.639,-1.641,-1.644,-1.646, - &-1.649,-1.651,-1.653,-1.656,-1.658,-1.660,-1.663,-1.665,-1.667, - &-1.670,-1.672,-1.674,-1.676,-1.679,-1.681,-1.683,-1.685,-1.688, - &-1.690,-1.692,-1.694,-1.696,-1.698,-1.701,-1.703,-1.705,-1.707, - &-1.709,-1.711,-1.713,-1.715,-1.717,-1.720,-1.722,-1.724,-1.726, - &-1.728,-1.730,-1.732,-1.734,-1.736,-1.738,-1.740,-1.742,-1.744, - &-1.746,-1.748,-1.750,-1.752,-1.754,-1.756,-1.757,-1.759,-1.761, - &-1.763,-1.765,-1.767,-1.769,-1.771,-1.773,-1.775,-1.776,-1.778, - &-1.780,-1.782,-1.784,-1.786,-1.788,-1.789,-1.791,-1.793,-1.795, - &-1.797,-1.799,-1.800,-1.802,-1.804,-1.806,-1.808,-1.809,-1.811, - &-1.813,-1.815,-1.816,-1.818,-1.820,-1.822,-1.823,-1.825,-1.827, - &-1.829,-1.830,-1.832,-1.834,-1.836,-1.837,-1.839,-1.841,-1.842, - &-1.844,-1.846,-1.848,-1.849,-1.851,-1.853,-1.854,-1.856,-1.858, - &-1.859,-1.861,-1.863,-1.864,-1.866,-1.868,-1.869,-1.871,-1.873, - &-1.874,-1.876,-1.878,-1.879,-1.881,-1.882,-1.884,-1.886,-1.887, - &-1.889,-1.891,-1.892,-1.894,-1.895,-1.897,-1.899,-1.900,-1.902, - &-1.903,-1.905,-1.907,-1.908,-1.910,-1.911,-1.913,-1.915,-1.916, - &-1.918,-1.919,-1.921,-1.922,-1.924,-1.925,-1.927,-1.929,-1.930, - &-1.932,-1.933,-1.935,-1.936,-1.938,-1.939,-1.941,-1.943,-1.944, - &-1.946,-1.947,-1.949,-1.950,-1.952,-1.953,-1.955,-1.956,-1.958, - &-1.959,-1.961,-1.962,-1.964,-1.965,-1.967,-1.968,-1.970,-1.971, - &-1.973,-1.974,-1.976,-1.977,-1.979,-1.980,-1.982,-1.983,-1.985, - &-1.986,-1.988,-1.989,-1.991,-1.992,-1.994,-1.995,-1.997,-1.998, - &-2.000,-2.001,-2.003,-2.004,-2.006,-2.007,-2.008,-2.010,-2.011, - &-2.013,-2.014,-2.016,-2.017,-2.019,-2.020,-2.022,-2.023,-2.024, - &-2.026,-2.027,-2.029,-2.030,-2.032,-2.033,-2.035,-2.036,-2.037, - &-2.039,-2.040,-2.042,-2.043,-2.045,-2.046,-2.047,-2.049,-2.050, - &-2.052,-2.053,-2.055,-2.056,-2.057,-2.059,-2.060,-2.062,-2.063, - &-2.065,-2.066,-2.067,-2.069,-2.070,-2.072,-2.073,-2.074,-2.076, - &-2.077,-2.079,-2.080,-2.081,-2.083,-2.084,-2.086,-2.087,-2.088, - &-2.090,-2.091,-2.093,-2.094,-2.109,-2.123,-2.137,-2.150,-2.164, - &-2.177,-2.191,-2.204,-2.217,-2.231,-2.244,-2.257,-2.270,-2.283, - &-2.296,-2.309,-2.322,-2.335,-2.348,-2.361,-2.374,-2.386,-2.399, - &-2.412,-2.425,-2.437,-2.450,-2.463,-2.475,-2.488,-2.500,-2.513, - &-2.525,-2.538,-2.550,-2.563,-2.575,-2.588,-2.600,-2.612,-2.625, - &-2.637,-2.650,-2.662,-2.674,-2.686,-2.699,-2.711,-2.723,-2.736, - &-2.748,-2.760,-2.772,-2.784,-2.797,-2.809,-2.821,-2.833,-2.845, - &-2.857,-2.870,-2.882,-2.894,-2.906,-2.918,-2.930,-2.942,-2.954, - &-2.966,-2.978,-2.991,-3.003,-3.015,-3.027,-3.039,-3.051,-3.063, - &-3.075,-3.087,-3.099,-3.111,-3.123,-3.135,-3.147,-3.159,-3.171, - &-3.182,-3.194,-3.206,-3.218,-3.230,-3.242,-3.254,-3.266,-3.278, - &-3.290,-3.302,-3.314,-3.325,-3.337,-3.349,-3.361,-3.373,-3.385, - &-3.397,-3.409,-3.420,-3.432,-3.444,-3.456,-3.468,-3.480,-3.491, - &-3.503,-3.515,-3.527,-3.539,-3.551,-3.562,-3.574,-3.586,-3.598, - &-3.609,-3.621,-3.633,-3.645,-3.657,-3.668,-3.680,-3.692,-3.704, - &-3.715,-3.727,-3.739,-3.751,-3.762,-3.774,-3.786,-3.798,-3.809, - &-3.821,-3.833,-3.844,-3.856,-3.868,-3.880,-3.891,-3.903,-3.915, - &-3.926,-3.938,-3.950,-3.961,-3.973,-3.985,-3.997,-4.008,-4.020, - &-4.032,-4.043,-4.055 - & /) -! -! *** MGNO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC22M_248 = (/ - &-0.095,-0.197,-0.243,-0.273,-0.294,-0.311,-0.323,-0.333,-0.342, - &-0.348,-0.353,-0.358,-0.361,-0.364,-0.366,-0.367,-0.368,-0.368, - &-0.368,-0.368,-0.368,-0.367,-0.366,-0.364,-0.363,-0.361,-0.359, - &-0.357,-0.355,-0.353,-0.351,-0.348,-0.346,-0.343,-0.340,-0.337, - &-0.335,-0.332,-0.329,-0.326,-0.323,-0.320,-0.316,-0.313,-0.310, - &-0.307,-0.304,-0.300,-0.297,-0.294,-0.290,-0.287,-0.284,-0.280, - &-0.277,-0.274,-0.270,-0.267,-0.264,-0.260,-0.257,-0.253,-0.250, - &-0.247,-0.243,-0.240,-0.236,-0.233,-0.229,-0.226,-0.222,-0.219, - &-0.215,-0.211,-0.208,-0.204,-0.200,-0.197,-0.193,-0.189,-0.186, - &-0.182,-0.178,-0.174,-0.170,-0.166,-0.162,-0.158,-0.154,-0.150, - &-0.146,-0.142,-0.138,-0.134,-0.130,-0.125,-0.121,-0.117,-0.113, - &-0.108,-0.104,-0.100,-0.095,-0.091,-0.086,-0.082,-0.077,-0.073, - &-0.068,-0.064,-0.059,-0.055,-0.050,-0.045,-0.041,-0.036,-0.032, - &-0.027,-0.022,-0.018,-0.013,-0.008,-0.004, 0.001, 0.006, 0.010, - & 0.015, 0.020, 0.024, 0.029, 0.034, 0.039, 0.043, 0.048, 0.053, - & 0.057, 0.062, 0.067, 0.071, 0.076, 0.081, 0.085, 0.090, 0.095, - & 0.099, 0.104, 0.109, 0.113, 0.118, 0.122, 0.127, 0.132, 0.136, - & 0.141, 0.145, 0.150, 0.155, 0.159, 0.164, 0.168, 0.173, 0.178, - & 0.182, 0.187, 0.191, 0.196, 0.200, 0.205, 0.209, 0.214, 0.218, - & 0.223, 0.227, 0.232, 0.236, 0.241, 0.245, 0.250, 0.254, 0.259, - & 0.263, 0.268, 0.272, 0.276, 0.281, 0.285, 0.290, 0.294, 0.299, - & 0.303, 0.307, 0.312, 0.316, 0.320, 0.325, 0.329, 0.333, 0.338, - & 0.342, 0.346, 0.351, 0.355, 0.359, 0.364, 0.368, 0.372, 0.377, - & 0.381, 0.385, 0.389, 0.394, 0.398, 0.402, 0.406, 0.411, 0.415, - & 0.419, 0.423, 0.427, 0.432, 0.436, 0.440, 0.444, 0.448, 0.452, - & 0.457, 0.461, 0.465, 0.469, 0.473, 0.477, 0.481, 0.485, 0.490, - & 0.494, 0.498, 0.502, 0.506, 0.510, 0.514, 0.518, 0.522, 0.526, - & 0.530, 0.534, 0.538, 0.542, 0.546, 0.550, 0.554, 0.558, 0.562, - & 0.566, 0.570, 0.574, 0.578, 0.582, 0.586, 0.590, 0.594, 0.598, - & 0.602, 0.605, 0.609, 0.613, 0.617, 0.621, 0.625, 0.629, 0.633, - & 0.636, 0.640, 0.644, 0.648, 0.652, 0.656, 0.659, 0.663, 0.667, - & 0.671, 0.674, 0.678, 0.682, 0.686, 0.690, 0.693, 0.697, 0.701, - & 0.704, 0.708, 0.712, 0.716, 0.719, 0.723, 0.727, 0.730, 0.734, - & 0.738, 0.741, 0.745, 0.749, 0.752, 0.756, 0.760, 0.763, 0.767, - & 0.771, 0.774, 0.778, 0.781, 0.785, 0.789, 0.792, 0.796, 0.799, - & 0.803, 0.806, 0.810, 0.813, 0.817, 0.821, 0.824, 0.828, 0.831, - & 0.835, 0.838, 0.842, 0.845, 0.849, 0.852, 0.856, 0.859, 0.862, - & 0.866, 0.869, 0.873, 0.876, 0.880, 0.883, 0.886, 0.890, 0.893, - & 0.897, 0.900, 0.903, 0.907, 0.910, 0.914, 0.917, 0.920, 0.924, - & 0.927, 0.930, 0.934, 0.937, 0.940, 0.944, 0.947, 0.950, 0.954, - & 0.957, 0.960, 0.963, 0.967, 0.970, 0.973, 0.977, 0.980, 0.983, - & 0.986, 0.990, 0.993, 0.996, 0.999, 1.003, 1.006, 1.009, 1.012, - & 1.015, 1.019, 1.022, 1.025, 1.028, 1.031, 1.034, 1.038, 1.041, - & 1.044, 1.047, 1.050, 1.053, 1.056, 1.060, 1.063, 1.066, 1.069, - & 1.072, 1.075, 1.078, 1.081, 1.114, 1.144, 1.174, 1.203, 1.232, - & 1.260, 1.288, 1.315, 1.342, 1.369, 1.395, 1.420, 1.446, 1.471, - & 1.495, 1.519, 1.543, 1.567, 1.590, 1.613, 1.635, 1.657, 1.679, - & 1.701, 1.722, 1.743, 1.764, 1.784, 1.804, 1.824, 1.844, 1.863, - & 1.882, 1.901, 1.920, 1.938, 1.956, 1.974, 1.992, 2.009, 2.026, - & 2.043, 2.060, 2.077, 2.093, 2.109, 2.125, 2.141, 2.157, 2.172, - & 2.187, 2.202, 2.217, 2.232, 2.246, 2.261, 2.275, 2.289, 2.303, - & 2.317, 2.330, 2.344, 2.357, 2.370, 2.383, 2.396, 2.408, 2.421, - & 2.433, 2.445, 2.458, 2.470, 2.481, 2.493, 2.505, 2.516, 2.528, - & 2.539, 2.550, 2.561, 2.572, 2.583, 2.593, 2.604, 2.614, 2.625, - & 2.635, 2.645, 2.655, 2.665, 2.675, 2.684, 2.694, 2.704, 2.713, - & 2.722, 2.732, 2.741, 2.750, 2.759, 2.768, 2.776, 2.785, 2.794, - & 2.802, 2.811, 2.819, 2.827, 2.835, 2.843, 2.851, 2.859, 2.867, - & 2.875, 2.883, 2.890, 2.898, 2.906, 2.913, 2.920, 2.928, 2.935, - & 2.942, 2.949, 2.956, 2.963, 2.970, 2.977, 2.983, 2.990, 2.997, - & 3.003, 3.010, 3.016, 3.022, 3.029, 3.035, 3.041, 3.047, 3.053, - & 3.059, 3.065, 3.071, 3.077, 3.083, 3.089, 3.094, 3.100, 3.105, - & 3.111, 3.116, 3.122, 3.127, 3.133, 3.138, 3.143, 3.148, 3.153, - & 3.158, 3.163, 3.168 - & /) -! -! *** MGCL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC23M_248 = (/ - &-0.094,-0.194,-0.238,-0.266,-0.285,-0.299,-0.310,-0.319,-0.325, - &-0.330,-0.333,-0.336,-0.337,-0.338,-0.338,-0.338,-0.337,-0.336, - &-0.334,-0.332,-0.330,-0.328,-0.325,-0.322,-0.319,-0.315,-0.312, - &-0.308,-0.304,-0.300,-0.296,-0.292,-0.288,-0.283,-0.279,-0.274, - &-0.270,-0.265,-0.261,-0.256,-0.251,-0.247,-0.242,-0.237,-0.232, - &-0.227,-0.222,-0.218,-0.213,-0.208,-0.203,-0.198,-0.193,-0.188, - &-0.183,-0.178,-0.173,-0.168,-0.163,-0.158,-0.153,-0.148,-0.143, - &-0.138,-0.133,-0.128,-0.123,-0.118,-0.113,-0.108,-0.103,-0.097, - &-0.092,-0.087,-0.082,-0.077,-0.071,-0.066,-0.061,-0.055,-0.050, - &-0.045,-0.039,-0.034,-0.028,-0.023,-0.017,-0.011,-0.006, 0.000, - & 0.006, 0.011, 0.017, 0.023, 0.029, 0.035, 0.041, 0.047, 0.053, - & 0.059, 0.065, 0.071, 0.077, 0.083, 0.089, 0.096, 0.102, 0.108, - & 0.114, 0.121, 0.127, 0.133, 0.140, 0.146, 0.152, 0.159, 0.165, - & 0.171, 0.178, 0.184, 0.191, 0.197, 0.203, 0.210, 0.216, 0.223, - & 0.229, 0.236, 0.242, 0.249, 0.255, 0.261, 0.268, 0.274, 0.281, - & 0.287, 0.293, 0.300, 0.306, 0.313, 0.319, 0.325, 0.332, 0.338, - & 0.345, 0.351, 0.357, 0.364, 0.370, 0.376, 0.383, 0.389, 0.395, - & 0.402, 0.408, 0.414, 0.421, 0.427, 0.433, 0.439, 0.446, 0.452, - & 0.458, 0.464, 0.471, 0.477, 0.483, 0.489, 0.495, 0.502, 0.508, - & 0.514, 0.520, 0.526, 0.532, 0.538, 0.545, 0.551, 0.557, 0.563, - & 0.569, 0.575, 0.581, 0.587, 0.593, 0.599, 0.605, 0.611, 0.617, - & 0.623, 0.629, 0.635, 0.641, 0.647, 0.653, 0.659, 0.665, 0.671, - & 0.677, 0.683, 0.689, 0.694, 0.700, 0.706, 0.712, 0.718, 0.724, - & 0.730, 0.735, 0.741, 0.747, 0.753, 0.759, 0.764, 0.770, 0.776, - & 0.782, 0.787, 0.793, 0.799, 0.804, 0.810, 0.816, 0.822, 0.827, - & 0.833, 0.838, 0.844, 0.850, 0.855, 0.861, 0.867, 0.872, 0.878, - & 0.883, 0.889, 0.894, 0.900, 0.905, 0.911, 0.916, 0.922, 0.927, - & 0.933, 0.938, 0.944, 0.949, 0.955, 0.960, 0.966, 0.971, 0.976, - & 0.982, 0.987, 0.993, 0.998, 1.003, 1.009, 1.014, 1.019, 1.025, - & 1.030, 1.035, 1.041, 1.046, 1.051, 1.056, 1.062, 1.067, 1.072, - & 1.077, 1.083, 1.088, 1.093, 1.098, 1.103, 1.109, 1.114, 1.119, - & 1.124, 1.129, 1.134, 1.139, 1.144, 1.150, 1.155, 1.160, 1.165, - & 1.170, 1.175, 1.180, 1.185, 1.190, 1.195, 1.200, 1.205, 1.210, - & 1.215, 1.220, 1.225, 1.230, 1.235, 1.240, 1.245, 1.250, 1.255, - & 1.260, 1.264, 1.269, 1.274, 1.279, 1.284, 1.289, 1.294, 1.299, - & 1.303, 1.308, 1.313, 1.318, 1.323, 1.327, 1.332, 1.337, 1.342, - & 1.346, 1.351, 1.356, 1.361, 1.365, 1.370, 1.375, 1.380, 1.384, - & 1.389, 1.394, 1.398, 1.403, 1.408, 1.412, 1.417, 1.421, 1.426, - & 1.431, 1.435, 1.440, 1.444, 1.449, 1.454, 1.458, 1.463, 1.467, - & 1.472, 1.476, 1.481, 1.485, 1.490, 1.494, 1.499, 1.503, 1.508, - & 1.512, 1.517, 1.521, 1.526, 1.530, 1.535, 1.539, 1.543, 1.548, - & 1.552, 1.557, 1.561, 1.565, 1.570, 1.574, 1.578, 1.583, 1.587, - & 1.591, 1.596, 1.600, 1.604, 1.609, 1.613, 1.617, 1.622, 1.626, - & 1.630, 1.634, 1.639, 1.643, 1.647, 1.651, 1.656, 1.660, 1.664, - & 1.668, 1.672, 1.677, 1.681, 1.726, 1.766, 1.807, 1.846, 1.885, - & 1.923, 1.961, 1.998, 2.034, 2.070, 2.105, 2.140, 2.175, 2.208, - & 2.242, 2.275, 2.307, 2.339, 2.370, 2.401, 2.432, 2.462, 2.492, - & 2.521, 2.550, 2.579, 2.607, 2.635, 2.662, 2.690, 2.716, 2.743, - & 2.769, 2.795, 2.820, 2.845, 2.870, 2.895, 2.919, 2.943, 2.966, - & 2.990, 3.013, 3.036, 3.058, 3.081, 3.103, 3.124, 3.146, 3.167, - & 3.188, 3.209, 3.230, 3.250, 3.270, 3.290, 3.310, 3.329, 3.349, - & 3.368, 3.387, 3.405, 3.424, 3.442, 3.460, 3.478, 3.496, 3.513, - & 3.531, 3.548, 3.565, 3.582, 3.599, 3.615, 3.631, 3.648, 3.664, - & 3.680, 3.695, 3.711, 3.726, 3.742, 3.757, 3.772, 3.787, 3.801, - & 3.816, 3.830, 3.845, 3.859, 3.873, 3.887, 3.901, 3.914, 3.928, - & 3.941, 3.955, 3.968, 3.981, 3.994, 4.007, 4.019, 4.032, 4.044, - & 4.057, 4.069, 4.081, 4.093, 4.105, 4.117, 4.129, 4.141, 4.152, - & 4.164, 4.175, 4.186, 4.197, 4.209, 4.220, 4.230, 4.241, 4.252, - & 4.263, 4.273, 4.284, 4.294, 4.304, 4.314, 4.324, 4.335, 4.344, - & 4.354, 4.364, 4.374, 4.383, 4.393, 4.402, 4.412, 4.421, 4.430, - & 4.440, 4.449, 4.458, 4.467, 4.476, 4.484, 4.493, 4.502, 4.510, - & 4.519, 4.527, 4.536, 4.544, 4.553, 4.561, 4.569, 4.577, 4.585, - & 4.593, 4.601, 4.609 - & /) - - ! Formerly BLOCK DATA KMCF273 -! -! *** NaCl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC01M_273 = (/ - &-0.046,-0.097,-0.119,-0.134,-0.145,-0.153,-0.160,-0.165,-0.169, - &-0.173,-0.176,-0.178,-0.180,-0.181,-0.182,-0.183,-0.184,-0.184, - &-0.185,-0.185,-0.185,-0.185,-0.184,-0.184,-0.183,-0.183,-0.182, - &-0.181,-0.181,-0.180,-0.179,-0.178,-0.177,-0.176,-0.174,-0.173, - &-0.172,-0.171,-0.170,-0.168,-0.167,-0.166,-0.164,-0.163,-0.162, - &-0.160,-0.159,-0.157,-0.156,-0.155,-0.153,-0.152,-0.150,-0.149, - &-0.147,-0.146,-0.144,-0.143,-0.141,-0.140,-0.138,-0.137,-0.135, - &-0.134,-0.132,-0.131,-0.129,-0.128,-0.126,-0.124,-0.123,-0.121, - &-0.120,-0.118,-0.116,-0.115,-0.113,-0.112,-0.110,-0.108,-0.107, - &-0.105,-0.103,-0.101,-0.100,-0.098,-0.096,-0.094,-0.093,-0.091, - &-0.089,-0.087,-0.085,-0.083,-0.081,-0.080,-0.078,-0.076,-0.074, - &-0.072,-0.070,-0.068,-0.066,-0.064,-0.062,-0.060,-0.058,-0.056, - &-0.054,-0.052,-0.050,-0.048,-0.046,-0.044,-0.042,-0.039,-0.037, - &-0.035,-0.033,-0.031,-0.029,-0.027,-0.025,-0.023,-0.021,-0.018, - &-0.016,-0.014,-0.012,-0.010,-0.008,-0.006,-0.004,-0.002, 0.001, - & 0.003, 0.005, 0.007, 0.009, 0.011, 0.013, 0.015, 0.017, 0.019, - & 0.022, 0.024, 0.026, 0.028, 0.030, 0.032, 0.034, 0.036, 0.038, - & 0.040, 0.042, 0.045, 0.047, 0.049, 0.051, 0.053, 0.055, 0.057, - & 0.059, 0.061, 0.063, 0.065, 0.067, 0.069, 0.071, 0.073, 0.075, - & 0.078, 0.080, 0.082, 0.084, 0.086, 0.088, 0.090, 0.092, 0.094, - & 0.096, 0.098, 0.100, 0.102, 0.104, 0.106, 0.108, 0.110, 0.112, - & 0.114, 0.116, 0.118, 0.120, 0.122, 0.124, 0.126, 0.128, 0.130, - & 0.132, 0.134, 0.136, 0.138, 0.140, 0.142, 0.143, 0.145, 0.147, - & 0.149, 0.151, 0.153, 0.155, 0.157, 0.159, 0.161, 0.163, 0.165, - & 0.167, 0.169, 0.171, 0.172, 0.174, 0.176, 0.178, 0.180, 0.182, - & 0.184, 0.186, 0.188, 0.190, 0.191, 0.193, 0.195, 0.197, 0.199, - & 0.201, 0.203, 0.205, 0.206, 0.208, 0.210, 0.212, 0.214, 0.216, - & 0.218, 0.219, 0.221, 0.223, 0.225, 0.227, 0.229, 0.230, 0.232, - & 0.234, 0.236, 0.238, 0.239, 0.241, 0.243, 0.245, 0.247, 0.248, - & 0.250, 0.252, 0.254, 0.256, 0.257, 0.259, 0.261, 0.263, 0.265, - & 0.266, 0.268, 0.270, 0.272, 0.273, 0.275, 0.277, 0.279, 0.280, - & 0.282, 0.284, 0.286, 0.287, 0.289, 0.291, 0.292, 0.294, 0.296, - & 0.298, 0.299, 0.301, 0.303, 0.305, 0.306, 0.308, 0.310, 0.311, - & 0.313, 0.315, 0.316, 0.318, 0.320, 0.321, 0.323, 0.325, 0.326, - & 0.328, 0.330, 0.331, 0.333, 0.335, 0.336, 0.338, 0.340, 0.341, - & 0.343, 0.345, 0.346, 0.348, 0.350, 0.351, 0.353, 0.355, 0.356, - & 0.358, 0.359, 0.361, 0.363, 0.364, 0.366, 0.367, 0.369, 0.371, - & 0.372, 0.374, 0.375, 0.377, 0.379, 0.380, 0.382, 0.383, 0.385, - & 0.387, 0.388, 0.390, 0.391, 0.393, 0.394, 0.396, 0.398, 0.399, - & 0.401, 0.402, 0.404, 0.405, 0.407, 0.408, 0.410, 0.412, 0.413, - & 0.415, 0.416, 0.418, 0.419, 0.421, 0.422, 0.424, 0.425, 0.427, - & 0.428, 0.430, 0.431, 0.433, 0.434, 0.436, 0.437, 0.439, 0.440, - & 0.442, 0.443, 0.445, 0.446, 0.448, 0.449, 0.451, 0.452, 0.454, - & 0.455, 0.457, 0.458, 0.460, 0.461, 0.463, 0.464, 0.465, 0.467, - & 0.468, 0.470, 0.471, 0.473, 0.488, 0.502, 0.516, 0.530, 0.544, - & 0.557, 0.570, 0.583, 0.596, 0.608, 0.621, 0.633, 0.645, 0.657, - & 0.669, 0.680, 0.692, 0.703, 0.714, 0.725, 0.736, 0.747, 0.758, - & 0.768, 0.778, 0.789, 0.799, 0.809, 0.819, 0.828, 0.838, 0.847, - & 0.857, 0.866, 0.875, 0.884, 0.893, 0.902, 0.911, 0.920, 0.928, - & 0.937, 0.945, 0.954, 0.962, 0.970, 0.978, 0.986, 0.994, 1.002, - & 1.010, 1.017, 1.025, 1.032, 1.040, 1.047, 1.054, 1.062, 1.069, - & 1.076, 1.083, 1.090, 1.097, 1.103, 1.110, 1.117, 1.124, 1.130, - & 1.137, 1.143, 1.149, 1.156, 1.162, 1.168, 1.174, 1.181, 1.187, - & 1.193, 1.199, 1.205, 1.210, 1.216, 1.222, 1.228, 1.233, 1.239, - & 1.245, 1.250, 1.255, 1.261, 1.266, 1.272, 1.277, 1.282, 1.287, - & 1.293, 1.298, 1.303, 1.308, 1.313, 1.318, 1.323, 1.328, 1.333, - & 1.337, 1.342, 1.347, 1.352, 1.356, 1.361, 1.366, 1.370, 1.375, - & 1.379, 1.384, 1.388, 1.392, 1.397, 1.401, 1.406, 1.410, 1.414, - & 1.418, 1.422, 1.427, 1.431, 1.435, 1.439, 1.443, 1.447, 1.451, - & 1.455, 1.459, 1.463, 1.467, 1.470, 1.474, 1.478, 1.482, 1.486, - & 1.489, 1.493, 1.497, 1.500, 1.504, 1.508, 1.511, 1.515, 1.518, - & 1.522, 1.525, 1.529, 1.532, 1.536, 1.539, 1.542, 1.546, 1.549, - & 1.552, 1.556, 1.559 - & /) -! -! *** Na2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC02M_273 = (/ - &-0.096,-0.208,-0.264,-0.304,-0.335,-0.361,-0.383,-0.403,-0.420, - &-0.436,-0.450,-0.464,-0.476,-0.487,-0.498,-0.508,-0.517,-0.526, - &-0.535,-0.543,-0.551,-0.558,-0.566,-0.572,-0.579,-0.586,-0.592, - &-0.598,-0.603,-0.609,-0.614,-0.620,-0.625,-0.630,-0.635,-0.639, - &-0.644,-0.649,-0.653,-0.657,-0.661,-0.666,-0.670,-0.674,-0.677, - &-0.681,-0.685,-0.689,-0.692,-0.696,-0.699,-0.702,-0.706,-0.709, - &-0.712,-0.715,-0.718,-0.721,-0.725,-0.727,-0.730,-0.733,-0.736, - &-0.739,-0.742,-0.744,-0.747,-0.750,-0.752,-0.755,-0.757,-0.760, - &-0.763,-0.765,-0.767,-0.770,-0.772,-0.775,-0.777,-0.779,-0.782, - &-0.784,-0.786,-0.788,-0.791,-0.793,-0.795,-0.797,-0.799,-0.801, - &-0.803,-0.806,-0.808,-0.810,-0.812,-0.814,-0.816,-0.818,-0.820, - &-0.822,-0.824,-0.826,-0.827,-0.829,-0.831,-0.833,-0.835,-0.837, - &-0.839,-0.841,-0.842,-0.844,-0.846,-0.848,-0.850,-0.851,-0.853, - &-0.855,-0.857,-0.858,-0.860,-0.862,-0.863,-0.865,-0.867,-0.868, - &-0.870,-0.872,-0.873,-0.875,-0.877,-0.878,-0.880,-0.881,-0.883, - &-0.885,-0.886,-0.888,-0.889,-0.891,-0.892,-0.894,-0.895,-0.897, - &-0.898,-0.900,-0.901,-0.903,-0.904,-0.906,-0.907,-0.909,-0.910, - &-0.912,-0.913,-0.915,-0.916,-0.917,-0.919,-0.920,-0.922,-0.923, - &-0.924,-0.926,-0.927,-0.928,-0.930,-0.931,-0.933,-0.934,-0.935, - &-0.937,-0.938,-0.939,-0.941,-0.942,-0.943,-0.944,-0.946,-0.947, - &-0.948,-0.950,-0.951,-0.952,-0.953,-0.955,-0.956,-0.957,-0.958, - &-0.960,-0.961,-0.962,-0.963,-0.965,-0.966,-0.967,-0.968,-0.969, - &-0.971,-0.972,-0.973,-0.974,-0.975,-0.977,-0.978,-0.979,-0.980, - &-0.981,-0.982,-0.984,-0.985,-0.986,-0.987,-0.988,-0.989,-0.990, - &-0.992,-0.993,-0.994,-0.995,-0.996,-0.997,-0.998,-0.999,-1.001, - &-1.002,-1.003,-1.004,-1.005,-1.006,-1.007,-1.008,-1.009,-1.010, - &-1.011,-1.012,-1.014,-1.015,-1.016,-1.017,-1.018,-1.019,-1.020, - &-1.021,-1.022,-1.023,-1.024,-1.025,-1.026,-1.027,-1.028,-1.029, - &-1.030,-1.031,-1.032,-1.033,-1.034,-1.035,-1.036,-1.037,-1.038, - &-1.039,-1.040,-1.041,-1.042,-1.043,-1.044,-1.045,-1.046,-1.047, - &-1.048,-1.049,-1.050,-1.051,-1.052,-1.053,-1.054,-1.055,-1.056, - &-1.057,-1.058,-1.059,-1.060,-1.061,-1.062,-1.063,-1.064,-1.065, - &-1.066,-1.066,-1.067,-1.068,-1.069,-1.070,-1.071,-1.072,-1.073, - &-1.074,-1.075,-1.076,-1.077,-1.078,-1.079,-1.079,-1.080,-1.081, - &-1.082,-1.083,-1.084,-1.085,-1.086,-1.087,-1.088,-1.088,-1.089, - &-1.090,-1.091,-1.092,-1.093,-1.094,-1.095,-1.096,-1.096,-1.097, - &-1.098,-1.099,-1.100,-1.101,-1.102,-1.102,-1.103,-1.104,-1.105, - &-1.106,-1.107,-1.108,-1.109,-1.109,-1.110,-1.111,-1.112,-1.113, - &-1.114,-1.114,-1.115,-1.116,-1.117,-1.118,-1.119,-1.120,-1.120, - &-1.121,-1.122,-1.123,-1.124,-1.124,-1.125,-1.126,-1.127,-1.128, - &-1.129,-1.129,-1.130,-1.131,-1.132,-1.133,-1.134,-1.134,-1.135, - &-1.136,-1.137,-1.138,-1.138,-1.139,-1.140,-1.141,-1.142,-1.142, - &-1.143,-1.144,-1.145,-1.146,-1.146,-1.147,-1.148,-1.149,-1.150, - &-1.150,-1.151,-1.152,-1.153,-1.153,-1.154,-1.155,-1.156,-1.157, - &-1.157,-1.158,-1.159,-1.160,-1.168,-1.175,-1.183,-1.190,-1.198, - &-1.205,-1.212,-1.219,-1.226,-1.233,-1.239,-1.246,-1.253,-1.259, - &-1.266,-1.272,-1.279,-1.285,-1.291,-1.298,-1.304,-1.310,-1.316, - &-1.322,-1.328,-1.334,-1.340,-1.346,-1.352,-1.357,-1.363,-1.369, - &-1.374,-1.380,-1.386,-1.391,-1.397,-1.402,-1.408,-1.413,-1.419, - &-1.424,-1.429,-1.435,-1.440,-1.445,-1.450,-1.456,-1.461,-1.466, - &-1.471,-1.476,-1.481,-1.486,-1.491,-1.496,-1.501,-1.506,-1.511, - &-1.516,-1.521,-1.526,-1.531,-1.536,-1.541,-1.545,-1.550,-1.555, - &-1.560,-1.564,-1.569,-1.574,-1.579,-1.583,-1.588,-1.593,-1.597, - &-1.602,-1.606,-1.611,-1.616,-1.620,-1.625,-1.629,-1.634,-1.638, - &-1.643,-1.647,-1.652,-1.656,-1.661,-1.665,-1.670,-1.674,-1.678, - &-1.683,-1.687,-1.692,-1.696,-1.700,-1.705,-1.709,-1.713,-1.718, - &-1.722,-1.726,-1.730,-1.735,-1.739,-1.743,-1.747,-1.752,-1.756, - &-1.760,-1.764,-1.768,-1.773,-1.777,-1.781,-1.785,-1.789,-1.793, - &-1.798,-1.802,-1.806,-1.810,-1.814,-1.818,-1.822,-1.826,-1.830, - &-1.834,-1.838,-1.843,-1.847,-1.851,-1.855,-1.859,-1.863,-1.867, - &-1.871,-1.875,-1.879,-1.883,-1.887,-1.891,-1.895,-1.899,-1.902, - &-1.906,-1.910,-1.914,-1.918,-1.922,-1.926,-1.930,-1.934,-1.938, - &-1.942,-1.946,-1.949 - & /) -! -! *** NaNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC03M_273 = (/ - &-0.048,-0.105,-0.133,-0.154,-0.170,-0.183,-0.195,-0.205,-0.214, - &-0.223,-0.230,-0.237,-0.244,-0.250,-0.256,-0.261,-0.266,-0.271, - &-0.276,-0.280,-0.284,-0.289,-0.292,-0.296,-0.300,-0.304,-0.307, - &-0.310,-0.314,-0.317,-0.320,-0.323,-0.326,-0.328,-0.331,-0.334, - &-0.337,-0.339,-0.342,-0.344,-0.347,-0.349,-0.351,-0.353,-0.356, - &-0.358,-0.360,-0.362,-0.364,-0.366,-0.368,-0.370,-0.372,-0.374, - &-0.376,-0.378,-0.379,-0.381,-0.383,-0.385,-0.386,-0.388,-0.390, - &-0.391,-0.393,-0.395,-0.396,-0.398,-0.399,-0.401,-0.402,-0.404, - &-0.405,-0.407,-0.408,-0.410,-0.411,-0.413,-0.414,-0.415,-0.417, - &-0.418,-0.420,-0.421,-0.422,-0.424,-0.425,-0.426,-0.427,-0.429, - &-0.430,-0.431,-0.433,-0.434,-0.435,-0.436,-0.438,-0.439,-0.440, - &-0.441,-0.442,-0.444,-0.445,-0.446,-0.447,-0.448,-0.449,-0.451, - &-0.452,-0.453,-0.454,-0.455,-0.456,-0.457,-0.459,-0.460,-0.461, - &-0.462,-0.463,-0.464,-0.465,-0.466,-0.467,-0.468,-0.469,-0.470, - &-0.472,-0.473,-0.474,-0.475,-0.476,-0.477,-0.478,-0.479,-0.480, - &-0.481,-0.482,-0.483,-0.484,-0.485,-0.486,-0.487,-0.488,-0.489, - &-0.490,-0.490,-0.491,-0.492,-0.493,-0.494,-0.495,-0.496,-0.497, - &-0.498,-0.499,-0.500,-0.501,-0.502,-0.503,-0.503,-0.504,-0.505, - &-0.506,-0.507,-0.508,-0.509,-0.510,-0.510,-0.511,-0.512,-0.513, - &-0.514,-0.515,-0.516,-0.516,-0.517,-0.518,-0.519,-0.520,-0.521, - &-0.521,-0.522,-0.523,-0.524,-0.525,-0.526,-0.526,-0.527,-0.528, - &-0.529,-0.530,-0.530,-0.531,-0.532,-0.533,-0.534,-0.534,-0.535, - &-0.536,-0.537,-0.537,-0.538,-0.539,-0.540,-0.540,-0.541,-0.542, - &-0.543,-0.543,-0.544,-0.545,-0.546,-0.546,-0.547,-0.548,-0.549, - &-0.549,-0.550,-0.551,-0.552,-0.552,-0.553,-0.554,-0.554,-0.555, - &-0.556,-0.557,-0.557,-0.558,-0.559,-0.559,-0.560,-0.561,-0.562, - &-0.562,-0.563,-0.564,-0.564,-0.565,-0.566,-0.566,-0.567,-0.568, - &-0.568,-0.569,-0.570,-0.570,-0.571,-0.572,-0.572,-0.573,-0.574, - &-0.574,-0.575,-0.576,-0.576,-0.577,-0.578,-0.578,-0.579,-0.580, - &-0.580,-0.581,-0.582,-0.582,-0.583,-0.584,-0.584,-0.585,-0.585, - &-0.586,-0.587,-0.587,-0.588,-0.589,-0.589,-0.590,-0.591,-0.591, - &-0.592,-0.592,-0.593,-0.594,-0.594,-0.595,-0.595,-0.596,-0.597, - &-0.597,-0.598,-0.599,-0.599,-0.600,-0.600,-0.601,-0.602,-0.602, - &-0.603,-0.603,-0.604,-0.604,-0.605,-0.606,-0.606,-0.607,-0.607, - &-0.608,-0.609,-0.609,-0.610,-0.610,-0.611,-0.612,-0.612,-0.613, - &-0.613,-0.614,-0.614,-0.615,-0.616,-0.616,-0.617,-0.617,-0.618, - &-0.618,-0.619,-0.619,-0.620,-0.621,-0.621,-0.622,-0.622,-0.623, - &-0.623,-0.624,-0.624,-0.625,-0.626,-0.626,-0.627,-0.627,-0.628, - &-0.628,-0.629,-0.629,-0.630,-0.630,-0.631,-0.632,-0.632,-0.633, - &-0.633,-0.634,-0.634,-0.635,-0.635,-0.636,-0.636,-0.637,-0.637, - &-0.638,-0.638,-0.639,-0.640,-0.640,-0.641,-0.641,-0.642,-0.642, - &-0.643,-0.643,-0.644,-0.644,-0.645,-0.645,-0.646,-0.646,-0.647, - &-0.647,-0.648,-0.648,-0.649,-0.649,-0.650,-0.650,-0.651,-0.651, - &-0.652,-0.652,-0.653,-0.653,-0.654,-0.654,-0.655,-0.655,-0.656, - &-0.656,-0.657,-0.657,-0.658,-0.663,-0.668,-0.673,-0.677,-0.682, - &-0.687,-0.691,-0.696,-0.700,-0.704,-0.709,-0.713,-0.717,-0.721, - &-0.725,-0.729,-0.733,-0.737,-0.741,-0.745,-0.749,-0.753,-0.757, - &-0.760,-0.764,-0.768,-0.771,-0.775,-0.779,-0.782,-0.786,-0.789, - &-0.793,-0.796,-0.799,-0.803,-0.806,-0.810,-0.813,-0.816,-0.819, - &-0.823,-0.826,-0.829,-0.832,-0.836,-0.839,-0.842,-0.845,-0.848, - &-0.851,-0.854,-0.857,-0.860,-0.863,-0.866,-0.869,-0.872,-0.875, - &-0.878,-0.881,-0.884,-0.887,-0.890,-0.893,-0.895,-0.898,-0.901, - &-0.904,-0.907,-0.909,-0.912,-0.915,-0.918,-0.920,-0.923,-0.926, - &-0.929,-0.931,-0.934,-0.937,-0.939,-0.942,-0.945,-0.947,-0.950, - &-0.952,-0.955,-0.958,-0.960,-0.963,-0.965,-0.968,-0.971,-0.973, - &-0.976,-0.978,-0.981,-0.983,-0.986,-0.988,-0.991,-0.993,-0.996, - &-0.998,-1.000,-1.003,-1.005,-1.008,-1.010,-1.013,-1.015,-1.017, - &-1.020,-1.022,-1.025,-1.027,-1.029,-1.032,-1.034,-1.036,-1.039, - &-1.041,-1.043,-1.046,-1.048,-1.050,-1.053,-1.055,-1.057,-1.060, - &-1.062,-1.064,-1.067,-1.069,-1.071,-1.073,-1.076,-1.078,-1.080, - &-1.082,-1.085,-1.087,-1.089,-1.091,-1.093,-1.096,-1.098,-1.100, - &-1.102,-1.105,-1.107,-1.109,-1.111,-1.113,-1.115,-1.118,-1.120, - &-1.122,-1.124,-1.126 - & /) -! -! *** (NH4)2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC04M_273 = (/ - &-0.096,-0.208,-0.265,-0.305,-0.337,-0.363,-0.385,-0.405,-0.423, - &-0.439,-0.453,-0.467,-0.479,-0.491,-0.502,-0.512,-0.522,-0.531, - &-0.540,-0.548,-0.556,-0.564,-0.571,-0.578,-0.585,-0.592,-0.598, - &-0.605,-0.610,-0.616,-0.622,-0.627,-0.633,-0.638,-0.643,-0.648, - &-0.653,-0.657,-0.662,-0.666,-0.671,-0.675,-0.679,-0.683,-0.688, - &-0.691,-0.695,-0.699,-0.703,-0.707,-0.710,-0.714,-0.717,-0.721, - &-0.724,-0.727,-0.731,-0.734,-0.737,-0.740,-0.743,-0.746,-0.749, - &-0.752,-0.755,-0.758,-0.761,-0.763,-0.766,-0.769,-0.772,-0.774, - &-0.777,-0.780,-0.782,-0.785,-0.787,-0.790,-0.792,-0.795,-0.797, - &-0.799,-0.802,-0.804,-0.807,-0.809,-0.811,-0.814,-0.816,-0.818, - &-0.820,-0.823,-0.825,-0.827,-0.829,-0.831,-0.833,-0.836,-0.838, - &-0.840,-0.842,-0.844,-0.846,-0.848,-0.850,-0.852,-0.854,-0.856, - &-0.858,-0.860,-0.862,-0.864,-0.866,-0.868,-0.870,-0.872,-0.874, - &-0.875,-0.877,-0.879,-0.881,-0.883,-0.885,-0.887,-0.888,-0.890, - &-0.892,-0.894,-0.895,-0.897,-0.899,-0.901,-0.902,-0.904,-0.906, - &-0.908,-0.909,-0.911,-0.913,-0.914,-0.916,-0.918,-0.919,-0.921, - &-0.923,-0.924,-0.926,-0.927,-0.929,-0.931,-0.932,-0.934,-0.935, - &-0.937,-0.938,-0.940,-0.942,-0.943,-0.945,-0.946,-0.948,-0.949, - &-0.951,-0.952,-0.954,-0.955,-0.957,-0.958,-0.960,-0.961,-0.962, - &-0.964,-0.965,-0.967,-0.968,-0.970,-0.971,-0.972,-0.974,-0.975, - &-0.977,-0.978,-0.979,-0.981,-0.982,-0.984,-0.985,-0.986,-0.988, - &-0.989,-0.990,-0.992,-0.993,-0.994,-0.996,-0.997,-0.998,-1.000, - &-1.001,-1.002,-1.004,-1.005,-1.006,-1.007,-1.009,-1.010,-1.011, - &-1.013,-1.014,-1.015,-1.016,-1.018,-1.019,-1.020,-1.021,-1.023, - &-1.024,-1.025,-1.026,-1.027,-1.029,-1.030,-1.031,-1.032,-1.034, - &-1.035,-1.036,-1.037,-1.038,-1.039,-1.041,-1.042,-1.043,-1.044, - &-1.045,-1.047,-1.048,-1.049,-1.050,-1.051,-1.052,-1.053,-1.055, - &-1.056,-1.057,-1.058,-1.059,-1.060,-1.061,-1.063,-1.064,-1.065, - &-1.066,-1.067,-1.068,-1.069,-1.070,-1.071,-1.073,-1.074,-1.075, - &-1.076,-1.077,-1.078,-1.079,-1.080,-1.081,-1.082,-1.083,-1.084, - &-1.086,-1.087,-1.088,-1.089,-1.090,-1.091,-1.092,-1.093,-1.094, - &-1.095,-1.096,-1.097,-1.098,-1.099,-1.100,-1.101,-1.102,-1.103, - &-1.104,-1.105,-1.106,-1.107,-1.108,-1.109,-1.110,-1.111,-1.112, - &-1.114,-1.115,-1.116,-1.117,-1.118,-1.119,-1.119,-1.120,-1.121, - &-1.122,-1.123,-1.124,-1.125,-1.126,-1.127,-1.128,-1.129,-1.130, - &-1.131,-1.132,-1.133,-1.134,-1.135,-1.136,-1.137,-1.138,-1.139, - &-1.140,-1.141,-1.142,-1.143,-1.144,-1.145,-1.146,-1.147,-1.147, - &-1.148,-1.149,-1.150,-1.151,-1.152,-1.153,-1.154,-1.155,-1.156, - &-1.157,-1.158,-1.159,-1.160,-1.160,-1.161,-1.162,-1.163,-1.164, - &-1.165,-1.166,-1.167,-1.168,-1.169,-1.169,-1.170,-1.171,-1.172, - &-1.173,-1.174,-1.175,-1.176,-1.177,-1.178,-1.178,-1.179,-1.180, - &-1.181,-1.182,-1.183,-1.184,-1.185,-1.185,-1.186,-1.187,-1.188, - &-1.189,-1.190,-1.191,-1.191,-1.192,-1.193,-1.194,-1.195,-1.196, - &-1.197,-1.198,-1.198,-1.199,-1.200,-1.201,-1.202,-1.203,-1.203, - &-1.204,-1.205,-1.206,-1.207,-1.216,-1.224,-1.232,-1.240,-1.248, - &-1.256,-1.263,-1.271,-1.279,-1.286,-1.293,-1.301,-1.308,-1.315, - &-1.322,-1.329,-1.336,-1.343,-1.349,-1.356,-1.363,-1.369,-1.376, - &-1.382,-1.389,-1.395,-1.402,-1.408,-1.414,-1.420,-1.427,-1.433, - &-1.439,-1.445,-1.451,-1.457,-1.463,-1.468,-1.474,-1.480,-1.486, - &-1.492,-1.497,-1.503,-1.509,-1.514,-1.520,-1.525,-1.531,-1.536, - &-1.542,-1.547,-1.553,-1.558,-1.563,-1.569,-1.574,-1.579,-1.585, - &-1.590,-1.595,-1.600,-1.605,-1.611,-1.616,-1.621,-1.626,-1.631, - &-1.636,-1.641,-1.646,-1.651,-1.656,-1.661,-1.666,-1.671,-1.676, - &-1.681,-1.685,-1.690,-1.695,-1.700,-1.705,-1.710,-1.714,-1.719, - &-1.724,-1.729,-1.733,-1.738,-1.743,-1.747,-1.752,-1.757,-1.761, - &-1.766,-1.770,-1.775,-1.780,-1.784,-1.789,-1.793,-1.798,-1.802, - &-1.807,-1.811,-1.816,-1.820,-1.825,-1.829,-1.834,-1.838,-1.842, - &-1.847,-1.851,-1.856,-1.860,-1.864,-1.869,-1.873,-1.877,-1.882, - &-1.886,-1.890,-1.895,-1.899,-1.903,-1.908,-1.912,-1.916,-1.920, - &-1.925,-1.929,-1.933,-1.937,-1.941,-1.946,-1.950,-1.954,-1.958, - &-1.962,-1.966,-1.971,-1.975,-1.979,-1.983,-1.987,-1.991,-1.995, - &-2.000,-2.004,-2.008,-2.012,-2.016,-2.020,-2.024,-2.028,-2.032, - &-2.036,-2.040,-2.044 - & /) -! -! *** NH4NO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC05M_273 = (/ - &-0.048,-0.108,-0.138,-0.161,-0.179,-0.194,-0.208,-0.220,-0.231, - &-0.241,-0.250,-0.259,-0.267,-0.275,-0.282,-0.289,-0.296,-0.302, - &-0.309,-0.315,-0.321,-0.326,-0.332,-0.337,-0.342,-0.347,-0.352, - &-0.357,-0.361,-0.366,-0.370,-0.375,-0.379,-0.383,-0.387,-0.391, - &-0.395,-0.399,-0.403,-0.406,-0.410,-0.414,-0.417,-0.421,-0.424, - &-0.427,-0.431,-0.434,-0.437,-0.440,-0.443,-0.446,-0.449,-0.452, - &-0.455,-0.458,-0.461,-0.464,-0.466,-0.469,-0.472,-0.475,-0.477, - &-0.480,-0.482,-0.485,-0.487,-0.490,-0.492,-0.495,-0.497,-0.500, - &-0.502,-0.505,-0.507,-0.509,-0.512,-0.514,-0.516,-0.518,-0.521, - &-0.523,-0.525,-0.527,-0.530,-0.532,-0.534,-0.536,-0.538,-0.541, - &-0.543,-0.545,-0.547,-0.549,-0.551,-0.553,-0.555,-0.558,-0.560, - &-0.562,-0.564,-0.566,-0.568,-0.570,-0.572,-0.574,-0.576,-0.578, - &-0.580,-0.582,-0.584,-0.586,-0.588,-0.590,-0.592,-0.594,-0.596, - &-0.598,-0.600,-0.602,-0.604,-0.606,-0.608,-0.609,-0.611,-0.613, - &-0.615,-0.617,-0.619,-0.621,-0.622,-0.624,-0.626,-0.628,-0.630, - &-0.631,-0.633,-0.635,-0.637,-0.639,-0.640,-0.642,-0.644,-0.646, - &-0.647,-0.649,-0.651,-0.652,-0.654,-0.656,-0.657,-0.659,-0.661, - &-0.662,-0.664,-0.666,-0.667,-0.669,-0.671,-0.672,-0.674,-0.675, - &-0.677,-0.679,-0.680,-0.682,-0.683,-0.685,-0.686,-0.688,-0.690, - &-0.691,-0.693,-0.694,-0.696,-0.697,-0.699,-0.700,-0.702,-0.703, - &-0.705,-0.706,-0.708,-0.709,-0.711,-0.712,-0.713,-0.715,-0.716, - &-0.718,-0.719,-0.721,-0.722,-0.723,-0.725,-0.726,-0.728,-0.729, - &-0.730,-0.732,-0.733,-0.735,-0.736,-0.737,-0.739,-0.740,-0.741, - &-0.743,-0.744,-0.745,-0.747,-0.748,-0.749,-0.751,-0.752,-0.753, - &-0.755,-0.756,-0.757,-0.759,-0.760,-0.761,-0.762,-0.764,-0.765, - &-0.766,-0.768,-0.769,-0.770,-0.771,-0.773,-0.774,-0.775,-0.776, - &-0.778,-0.779,-0.780,-0.781,-0.782,-0.784,-0.785,-0.786,-0.787, - &-0.788,-0.790,-0.791,-0.792,-0.793,-0.794,-0.796,-0.797,-0.798, - &-0.799,-0.800,-0.801,-0.803,-0.804,-0.805,-0.806,-0.807,-0.808, - &-0.809,-0.811,-0.812,-0.813,-0.814,-0.815,-0.816,-0.817,-0.818, - &-0.820,-0.821,-0.822,-0.823,-0.824,-0.825,-0.826,-0.827,-0.828, - &-0.829,-0.830,-0.832,-0.833,-0.834,-0.835,-0.836,-0.837,-0.838, - &-0.839,-0.840,-0.841,-0.842,-0.843,-0.844,-0.845,-0.846,-0.847, - &-0.848,-0.849,-0.850,-0.851,-0.852,-0.853,-0.854,-0.855,-0.857, - &-0.858,-0.859,-0.860,-0.861,-0.862,-0.863,-0.863,-0.864,-0.865, - &-0.866,-0.867,-0.868,-0.869,-0.870,-0.871,-0.872,-0.873,-0.874, - &-0.875,-0.876,-0.877,-0.878,-0.879,-0.880,-0.881,-0.882,-0.883, - &-0.884,-0.885,-0.886,-0.887,-0.887,-0.888,-0.889,-0.890,-0.891, - &-0.892,-0.893,-0.894,-0.895,-0.896,-0.897,-0.898,-0.898,-0.899, - &-0.900,-0.901,-0.902,-0.903,-0.904,-0.905,-0.906,-0.907,-0.907, - &-0.908,-0.909,-0.910,-0.911,-0.912,-0.913,-0.914,-0.914,-0.915, - &-0.916,-0.917,-0.918,-0.919,-0.920,-0.920,-0.921,-0.922,-0.923, - &-0.924,-0.925,-0.926,-0.926,-0.927,-0.928,-0.929,-0.930,-0.931, - &-0.931,-0.932,-0.933,-0.934,-0.935,-0.936,-0.936,-0.937,-0.938, - &-0.939,-0.940,-0.940,-0.941,-0.950,-0.958,-0.965,-0.973,-0.980, - &-0.988,-0.995,-1.002,-1.009,-1.015,-1.022,-1.029,-1.035,-1.041, - &-1.047,-1.054,-1.060,-1.066,-1.071,-1.077,-1.083,-1.088,-1.094, - &-1.099,-1.105,-1.110,-1.115,-1.120,-1.125,-1.130,-1.135,-1.140, - &-1.145,-1.150,-1.155,-1.159,-1.164,-1.168,-1.173,-1.177,-1.182, - &-1.186,-1.191,-1.195,-1.199,-1.203,-1.207,-1.212,-1.216,-1.220, - &-1.224,-1.228,-1.232,-1.235,-1.239,-1.243,-1.247,-1.251,-1.254, - &-1.258,-1.262,-1.265,-1.269,-1.273,-1.276,-1.280,-1.283,-1.287, - &-1.290,-1.293,-1.297,-1.300,-1.304,-1.307,-1.310,-1.313,-1.317, - &-1.320,-1.323,-1.326,-1.330,-1.333,-1.336,-1.339,-1.342,-1.345, - &-1.348,-1.351,-1.354,-1.357,-1.360,-1.363,-1.366,-1.369,-1.372, - &-1.375,-1.378,-1.381,-1.383,-1.386,-1.389,-1.392,-1.395,-1.397, - &-1.400,-1.403,-1.406,-1.408,-1.411,-1.414,-1.417,-1.419,-1.422, - &-1.425,-1.427,-1.430,-1.432,-1.435,-1.438,-1.440,-1.443,-1.445, - &-1.448,-1.450,-1.453,-1.456,-1.458,-1.461,-1.463,-1.466,-1.468, - &-1.470,-1.473,-1.475,-1.478,-1.480,-1.483,-1.485,-1.487,-1.490, - &-1.492,-1.495,-1.497,-1.499,-1.502,-1.504,-1.506,-1.509,-1.511, - &-1.513,-1.516,-1.518,-1.520,-1.523,-1.525,-1.527,-1.529,-1.532, - &-1.534,-1.536,-1.538 - & /) -! -! *** NH4Cl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC06M_273 = (/ - &-0.047,-0.101,-0.126,-0.144,-0.157,-0.168,-0.177,-0.185,-0.191, - &-0.197,-0.202,-0.207,-0.211,-0.215,-0.218,-0.221,-0.224,-0.227, - &-0.229,-0.232,-0.234,-0.236,-0.238,-0.239,-0.241,-0.242,-0.244, - &-0.245,-0.246,-0.247,-0.249,-0.250,-0.251,-0.251,-0.252,-0.253, - &-0.254,-0.255,-0.255,-0.256,-0.257,-0.257,-0.258,-0.258,-0.259, - &-0.259,-0.260,-0.260,-0.261,-0.261,-0.261,-0.262,-0.262,-0.262, - &-0.263,-0.263,-0.263,-0.263,-0.264,-0.264,-0.264,-0.264,-0.265, - &-0.265,-0.265,-0.265,-0.265,-0.265,-0.265,-0.266,-0.266,-0.266, - &-0.266,-0.266,-0.266,-0.266,-0.266,-0.266,-0.266,-0.266,-0.266, - &-0.266,-0.266,-0.266,-0.266,-0.266,-0.266,-0.266,-0.266,-0.265, - &-0.265,-0.265,-0.265,-0.265,-0.265,-0.265,-0.264,-0.264,-0.264, - &-0.264,-0.264,-0.263,-0.263,-0.263,-0.263,-0.263,-0.262,-0.262, - &-0.262,-0.262,-0.261,-0.261,-0.261,-0.260,-0.260,-0.260,-0.260, - &-0.259,-0.259,-0.259,-0.258,-0.258,-0.258,-0.257,-0.257,-0.257, - &-0.256,-0.256,-0.256,-0.255,-0.255,-0.255,-0.254,-0.254,-0.254, - &-0.253,-0.253,-0.253,-0.252,-0.252,-0.252,-0.251,-0.251,-0.251, - &-0.250,-0.250,-0.249,-0.249,-0.249,-0.248,-0.248,-0.248,-0.247, - &-0.247,-0.247,-0.246,-0.246,-0.245,-0.245,-0.245,-0.244,-0.244, - &-0.244,-0.243,-0.243,-0.242,-0.242,-0.242,-0.241,-0.241,-0.241, - &-0.240,-0.240,-0.239,-0.239,-0.239,-0.238,-0.238,-0.238,-0.237, - &-0.237,-0.236,-0.236,-0.236,-0.235,-0.235,-0.235,-0.234,-0.234, - &-0.233,-0.233,-0.233,-0.232,-0.232,-0.231,-0.231,-0.231,-0.230, - &-0.230,-0.230,-0.229,-0.229,-0.228,-0.228,-0.228,-0.227,-0.227, - &-0.227,-0.226,-0.226,-0.225,-0.225,-0.225,-0.224,-0.224,-0.224, - &-0.223,-0.223,-0.222,-0.222,-0.222,-0.221,-0.221,-0.221,-0.220, - &-0.220,-0.219,-0.219,-0.219,-0.218,-0.218,-0.218,-0.217,-0.217, - &-0.216,-0.216,-0.216,-0.215,-0.215,-0.215,-0.214,-0.214,-0.214, - &-0.213,-0.213,-0.212,-0.212,-0.212,-0.211,-0.211,-0.211,-0.210, - &-0.210,-0.210,-0.209,-0.209,-0.208,-0.208,-0.208,-0.207,-0.207, - &-0.207,-0.206,-0.206,-0.206,-0.205,-0.205,-0.204,-0.204,-0.204, - &-0.203,-0.203,-0.203,-0.202,-0.202,-0.202,-0.201,-0.201,-0.201, - &-0.200,-0.200,-0.200,-0.199,-0.199,-0.198,-0.198,-0.198,-0.197, - &-0.197,-0.197,-0.196,-0.196,-0.196,-0.195,-0.195,-0.195,-0.194, - &-0.194,-0.194,-0.193,-0.193,-0.193,-0.192,-0.192,-0.192,-0.191, - &-0.191,-0.191,-0.190,-0.190,-0.190,-0.189,-0.189,-0.189,-0.188, - &-0.188,-0.188,-0.187,-0.187,-0.187,-0.186,-0.186,-0.186,-0.185, - &-0.185,-0.185,-0.184,-0.184,-0.184,-0.183,-0.183,-0.183,-0.182, - &-0.182,-0.182,-0.181,-0.181,-0.181,-0.180,-0.180,-0.180,-0.179, - &-0.179,-0.179,-0.178,-0.178,-0.178,-0.177,-0.177,-0.177,-0.176, - &-0.176,-0.176,-0.176,-0.175,-0.175,-0.175,-0.174,-0.174,-0.174, - &-0.173,-0.173,-0.173,-0.172,-0.172,-0.172,-0.171,-0.171,-0.171, - &-0.171,-0.170,-0.170,-0.170,-0.169,-0.169,-0.169,-0.168,-0.168, - &-0.168,-0.167,-0.167,-0.167,-0.167,-0.166,-0.166,-0.166,-0.165, - &-0.165,-0.165,-0.164,-0.164,-0.164,-0.164,-0.163,-0.163,-0.163, - &-0.162,-0.162,-0.162,-0.161,-0.158,-0.155,-0.153,-0.150,-0.147, - &-0.144,-0.142,-0.139,-0.137,-0.134,-0.132,-0.129,-0.127,-0.125, - &-0.122,-0.120,-0.118,-0.116,-0.113,-0.111,-0.109,-0.107,-0.105, - &-0.103,-0.101,-0.099,-0.097,-0.095,-0.093,-0.092,-0.090,-0.088, - &-0.086,-0.085,-0.083,-0.081,-0.080,-0.078,-0.077,-0.075,-0.073, - &-0.072,-0.071,-0.069,-0.068,-0.066,-0.065,-0.064,-0.062,-0.061, - &-0.060,-0.058,-0.057,-0.056,-0.055,-0.053,-0.052,-0.051,-0.050, - &-0.049,-0.048,-0.047,-0.046,-0.044,-0.043,-0.042,-0.041,-0.040, - &-0.039,-0.039,-0.038,-0.037,-0.036,-0.035,-0.034,-0.033,-0.032, - &-0.032,-0.031,-0.030,-0.029,-0.028,-0.028,-0.027,-0.026,-0.025, - &-0.025,-0.024,-0.023,-0.023,-0.022,-0.021,-0.021,-0.020,-0.019, - &-0.019,-0.018,-0.018,-0.017,-0.017,-0.016,-0.016,-0.015,-0.015, - &-0.014,-0.014,-0.013,-0.013,-0.012,-0.012,-0.011,-0.011,-0.010, - &-0.010,-0.010,-0.009,-0.009,-0.008,-0.008,-0.008,-0.007,-0.007, - &-0.007,-0.006,-0.006,-0.006,-0.005,-0.005,-0.005,-0.005,-0.004, - &-0.004,-0.004,-0.004,-0.003,-0.003,-0.003,-0.003,-0.003,-0.002, - &-0.002,-0.002,-0.002,-0.002,-0.002,-0.001,-0.001,-0.001,-0.001, - &-0.001,-0.001,-0.001,-0.001, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000 - & /) -! -! *** (2H,SO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC07M_273 = (/ - &-0.095,-0.207,-0.263,-0.303,-0.333,-0.359,-0.381,-0.400,-0.417, - &-0.432,-0.446,-0.459,-0.471,-0.482,-0.492,-0.502,-0.511,-0.520, - &-0.528,-0.536,-0.543,-0.550,-0.557,-0.564,-0.570,-0.576,-0.582, - &-0.588,-0.593,-0.598,-0.603,-0.608,-0.613,-0.618,-0.622,-0.627, - &-0.631,-0.635,-0.640,-0.644,-0.648,-0.651,-0.655,-0.659,-0.662, - &-0.666,-0.669,-0.673,-0.676,-0.679,-0.682,-0.686,-0.689,-0.692, - &-0.695,-0.698,-0.700,-0.703,-0.706,-0.709,-0.712,-0.714,-0.717, - &-0.719,-0.722,-0.724,-0.727,-0.729,-0.732,-0.734,-0.736,-0.739, - &-0.741,-0.743,-0.746,-0.748,-0.750,-0.752,-0.754,-0.756,-0.758, - &-0.761,-0.763,-0.765,-0.767,-0.769,-0.771,-0.773,-0.774,-0.776, - &-0.778,-0.780,-0.782,-0.784,-0.786,-0.787,-0.789,-0.791,-0.793, - &-0.795,-0.796,-0.798,-0.800,-0.802,-0.803,-0.805,-0.807,-0.808, - &-0.810,-0.811,-0.813,-0.815,-0.816,-0.818,-0.819,-0.821,-0.823, - &-0.824,-0.826,-0.827,-0.829,-0.830,-0.832,-0.833,-0.835,-0.836, - &-0.838,-0.839,-0.841,-0.842,-0.843,-0.845,-0.846,-0.848,-0.849, - &-0.850,-0.852,-0.853,-0.854,-0.856,-0.857,-0.858,-0.860,-0.861, - &-0.862,-0.864,-0.865,-0.866,-0.868,-0.869,-0.870,-0.871,-0.873, - &-0.874,-0.875,-0.876,-0.878,-0.879,-0.880,-0.881,-0.883,-0.884, - &-0.885,-0.886,-0.887,-0.889,-0.890,-0.891,-0.892,-0.893,-0.894, - &-0.896,-0.897,-0.898,-0.899,-0.900,-0.901,-0.902,-0.904,-0.905, - &-0.906,-0.907,-0.908,-0.909,-0.910,-0.911,-0.912,-0.914,-0.915, - &-0.916,-0.917,-0.918,-0.919,-0.920,-0.921,-0.922,-0.923,-0.924, - &-0.925,-0.926,-0.927,-0.928,-0.929,-0.930,-0.931,-0.932,-0.933, - &-0.934,-0.935,-0.936,-0.937,-0.938,-0.939,-0.940,-0.941,-0.942, - &-0.943,-0.944,-0.945,-0.946,-0.947,-0.948,-0.949,-0.950,-0.951, - &-0.952,-0.953,-0.954,-0.955,-0.956,-0.957,-0.958,-0.959,-0.960, - &-0.960,-0.961,-0.962,-0.963,-0.964,-0.965,-0.966,-0.967,-0.968, - &-0.969,-0.970,-0.970,-0.971,-0.972,-0.973,-0.974,-0.975,-0.976, - &-0.977,-0.978,-0.978,-0.979,-0.980,-0.981,-0.982,-0.983,-0.984, - &-0.985,-0.985,-0.986,-0.987,-0.988,-0.989,-0.990,-0.991,-0.991, - &-0.992,-0.993,-0.994,-0.995,-0.996,-0.996,-0.997,-0.998,-0.999, - &-1.000,-1.001,-1.001,-1.002,-1.003,-1.004,-1.005,-1.005,-1.006, - &-1.007,-1.008,-1.009,-1.010,-1.010,-1.011,-1.012,-1.013,-1.014, - &-1.014,-1.015,-1.016,-1.017,-1.017,-1.018,-1.019,-1.020,-1.021, - &-1.021,-1.022,-1.023,-1.024,-1.025,-1.025,-1.026,-1.027,-1.028, - &-1.028,-1.029,-1.030,-1.031,-1.031,-1.032,-1.033,-1.034,-1.034, - &-1.035,-1.036,-1.037,-1.037,-1.038,-1.039,-1.040,-1.040,-1.041, - &-1.042,-1.043,-1.043,-1.044,-1.045,-1.046,-1.046,-1.047,-1.048, - &-1.049,-1.049,-1.050,-1.051,-1.051,-1.052,-1.053,-1.054,-1.054, - &-1.055,-1.056,-1.057,-1.057,-1.058,-1.059,-1.059,-1.060,-1.061, - &-1.061,-1.062,-1.063,-1.064,-1.064,-1.065,-1.066,-1.066,-1.067, - &-1.068,-1.069,-1.069,-1.070,-1.071,-1.071,-1.072,-1.073,-1.073, - &-1.074,-1.075,-1.075,-1.076,-1.077,-1.078,-1.078,-1.079,-1.080, - &-1.080,-1.081,-1.082,-1.082,-1.083,-1.084,-1.084,-1.085,-1.086, - &-1.086,-1.087,-1.088,-1.088,-1.096,-1.102,-1.109,-1.115,-1.121, - &-1.127,-1.134,-1.140,-1.146,-1.152,-1.158,-1.163,-1.169,-1.175, - &-1.181,-1.186,-1.192,-1.198,-1.203,-1.209,-1.214,-1.219,-1.225, - &-1.230,-1.235,-1.241,-1.246,-1.251,-1.256,-1.261,-1.266,-1.271, - &-1.276,-1.281,-1.286,-1.291,-1.296,-1.301,-1.306,-1.311,-1.315, - &-1.320,-1.325,-1.330,-1.334,-1.339,-1.344,-1.348,-1.353,-1.358, - &-1.362,-1.367,-1.371,-1.376,-1.380,-1.385,-1.389,-1.394,-1.398, - &-1.403,-1.407,-1.412,-1.416,-1.420,-1.425,-1.429,-1.434,-1.438, - &-1.442,-1.447,-1.451,-1.455,-1.459,-1.464,-1.468,-1.472,-1.476, - &-1.480,-1.485,-1.489,-1.493,-1.497,-1.501,-1.505,-1.510,-1.514, - &-1.518,-1.522,-1.526,-1.530,-1.534,-1.538,-1.542,-1.546,-1.550, - &-1.554,-1.558,-1.562,-1.566,-1.570,-1.574,-1.578,-1.582,-1.586, - &-1.590,-1.594,-1.598,-1.602,-1.606,-1.610,-1.614,-1.618,-1.622, - &-1.625,-1.629,-1.633,-1.637,-1.641,-1.645,-1.649,-1.652,-1.656, - &-1.660,-1.664,-1.668,-1.672,-1.675,-1.679,-1.683,-1.687,-1.690, - &-1.694,-1.698,-1.702,-1.706,-1.709,-1.713,-1.717,-1.721,-1.724, - &-1.728,-1.732,-1.735,-1.739,-1.743,-1.747,-1.750,-1.754,-1.758, - &-1.761,-1.765,-1.769,-1.772,-1.776,-1.780,-1.783,-1.787,-1.791, - &-1.794,-1.798,-1.801 - & /) -! -! *** (H,HSO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC08M_273 = (/ - &-0.045,-0.089,-0.107,-0.117,-0.124,-0.128,-0.131,-0.132,-0.133, - &-0.132,-0.132,-0.130,-0.128,-0.126,-0.123,-0.120,-0.117,-0.113, - &-0.109,-0.105,-0.101,-0.096,-0.091,-0.086,-0.081,-0.076,-0.070, - &-0.065,-0.059,-0.053,-0.047,-0.040,-0.034,-0.027,-0.021,-0.014, - &-0.007, 0.000, 0.007, 0.014, 0.021, 0.028, 0.036, 0.043, 0.051, - & 0.058, 0.066, 0.074, 0.082, 0.089, 0.097, 0.105, 0.113, 0.121, - & 0.130, 0.138, 0.146, 0.154, 0.163, 0.171, 0.179, 0.188, 0.196, - & 0.205, 0.214, 0.222, 0.231, 0.240, 0.248, 0.257, 0.266, 0.275, - & 0.284, 0.293, 0.302, 0.311, 0.320, 0.329, 0.338, 0.347, 0.357, - & 0.366, 0.375, 0.385, 0.394, 0.404, 0.413, 0.423, 0.433, 0.442, - & 0.452, 0.462, 0.472, 0.482, 0.492, 0.502, 0.512, 0.522, 0.532, - & 0.542, 0.552, 0.563, 0.573, 0.583, 0.594, 0.604, 0.614, 0.625, - & 0.635, 0.646, 0.656, 0.667, 0.677, 0.688, 0.698, 0.709, 0.719, - & 0.730, 0.741, 0.751, 0.762, 0.772, 0.783, 0.794, 0.804, 0.815, - & 0.825, 0.836, 0.846, 0.857, 0.867, 0.878, 0.888, 0.899, 0.909, - & 0.920, 0.930, 0.941, 0.951, 0.962, 0.972, 0.982, 0.993, 1.003, - & 1.014, 1.024, 1.034, 1.044, 1.055, 1.065, 1.075, 1.085, 1.096, - & 1.106, 1.116, 1.126, 1.136, 1.146, 1.156, 1.166, 1.176, 1.186, - & 1.196, 1.206, 1.216, 1.226, 1.236, 1.246, 1.256, 1.266, 1.276, - & 1.285, 1.295, 1.305, 1.315, 1.325, 1.334, 1.344, 1.354, 1.363, - & 1.373, 1.383, 1.392, 1.402, 1.411, 1.421, 1.430, 1.440, 1.449, - & 1.459, 1.468, 1.478, 1.487, 1.496, 1.506, 1.515, 1.524, 1.534, - & 1.543, 1.552, 1.561, 1.571, 1.580, 1.589, 1.598, 1.607, 1.616, - & 1.625, 1.634, 1.643, 1.652, 1.661, 1.670, 1.679, 1.688, 1.697, - & 1.706, 1.715, 1.724, 1.733, 1.742, 1.750, 1.759, 1.768, 1.777, - & 1.786, 1.794, 1.803, 1.812, 1.820, 1.829, 1.838, 1.846, 1.855, - & 1.863, 1.872, 1.880, 1.889, 1.897, 1.906, 1.914, 1.923, 1.931, - & 1.940, 1.948, 1.956, 1.965, 1.973, 1.981, 1.990, 1.998, 2.006, - & 2.015, 2.023, 2.031, 2.039, 2.047, 2.056, 2.064, 2.072, 2.080, - & 2.088, 2.096, 2.104, 2.112, 2.120, 2.128, 2.136, 2.144, 2.152, - & 2.160, 2.168, 2.176, 2.184, 2.192, 2.200, 2.207, 2.215, 2.223, - & 2.231, 2.239, 2.246, 2.254, 2.262, 2.270, 2.277, 2.285, 2.293, - & 2.300, 2.308, 2.316, 2.323, 2.331, 2.339, 2.346, 2.354, 2.361, - & 2.369, 2.376, 2.384, 2.391, 2.399, 2.406, 2.414, 2.421, 2.428, - & 2.436, 2.443, 2.451, 2.458, 2.465, 2.473, 2.480, 2.487, 2.494, - & 2.502, 2.509, 2.516, 2.523, 2.531, 2.538, 2.545, 2.552, 2.559, - & 2.566, 2.574, 2.581, 2.588, 2.595, 2.602, 2.609, 2.616, 2.623, - & 2.630, 2.637, 2.644, 2.651, 2.658, 2.665, 2.672, 2.679, 2.686, - & 2.693, 2.700, 2.707, 2.713, 2.720, 2.727, 2.734, 2.741, 2.748, - & 2.754, 2.761, 2.768, 2.775, 2.781, 2.788, 2.795, 2.802, 2.808, - & 2.815, 2.822, 2.828, 2.835, 2.842, 2.848, 2.855, 2.862, 2.868, - & 2.875, 2.881, 2.888, 2.894, 2.901, 2.907, 2.914, 2.920, 2.927, - & 2.933, 2.940, 2.946, 2.953, 2.959, 2.966, 2.972, 2.978, 2.985, - & 2.991, 2.998, 3.004, 3.010, 3.017, 3.023, 3.029, 3.036, 3.042, - & 3.048, 3.054, 3.061, 3.067, 3.134, 3.195, 3.254, 3.313, 3.371, - & 3.428, 3.485, 3.540, 3.595, 3.648, 3.701, 3.754, 3.805, 3.856, - & 3.906, 3.955, 4.004, 4.052, 4.100, 4.147, 4.193, 4.239, 4.284, - & 4.328, 4.372, 4.416, 4.459, 4.501, 4.543, 4.585, 4.626, 4.666, - & 4.707, 4.746, 4.786, 4.824, 4.863, 4.901, 4.938, 4.976, 5.013, - & 5.049, 5.085, 5.121, 5.156, 5.191, 5.226, 5.260, 5.294, 5.328, - & 5.361, 5.395, 5.427, 5.460, 5.492, 5.524, 5.555, 5.587, 5.618, - & 5.649, 5.679, 5.709, 5.739, 5.769, 5.799, 5.828, 5.857, 5.886, - & 5.914, 5.942, 5.971, 5.998, 6.026, 6.053, 6.081, 6.108, 6.134, - & 6.161, 6.187, 6.214, 6.240, 6.265, 6.291, 6.316, 6.342, 6.367, - & 6.392, 6.416, 6.441, 6.465, 6.489, 6.513, 6.537, 6.561, 6.584, - & 6.608, 6.631, 6.654, 6.677, 6.699, 6.722, 6.744, 6.767, 6.789, - & 6.811, 6.833, 6.854, 6.876, 6.897, 6.919, 6.940, 6.961, 6.982, - & 7.003, 7.023, 7.044, 7.064, 7.085, 7.105, 7.125, 7.145, 7.165, - & 7.184, 7.204, 7.223, 7.243, 7.262, 7.281, 7.300, 7.319, 7.338, - & 7.356, 7.375, 7.394, 7.412, 7.430, 7.448, 7.467, 7.485, 7.502, - & 7.520, 7.538, 7.556, 7.573, 7.591, 7.608, 7.625, 7.642, 7.659, - & 7.676, 7.693, 7.710, 7.727, 7.743, 7.760, 7.776, 7.793, 7.809, - & 7.825, 7.841, 7.858 - & /) -! -! *** NH4HSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC09M_273 = (/ - &-0.047,-0.099,-0.125,-0.142,-0.155,-0.166,-0.175,-0.182,-0.189, - &-0.195,-0.200,-0.204,-0.208,-0.212,-0.215,-0.218,-0.221,-0.223, - &-0.225,-0.227,-0.228,-0.230,-0.231,-0.232,-0.233,-0.234,-0.235, - &-0.235,-0.235,-0.236,-0.236,-0.236,-0.236,-0.235,-0.235,-0.235, - &-0.234,-0.233,-0.233,-0.232,-0.231,-0.230,-0.229,-0.228,-0.227, - &-0.226,-0.224,-0.223,-0.222,-0.220,-0.219,-0.217,-0.215,-0.214, - &-0.212,-0.210,-0.208,-0.207,-0.205,-0.203,-0.201,-0.199,-0.197, - &-0.195,-0.192,-0.190,-0.188,-0.186,-0.183,-0.181,-0.179,-0.176, - &-0.174,-0.171,-0.169,-0.166,-0.164,-0.161,-0.159,-0.156,-0.153, - &-0.151,-0.148,-0.145,-0.143,-0.140,-0.137,-0.134,-0.131,-0.128, - &-0.125,-0.122,-0.120,-0.117,-0.114,-0.110,-0.107,-0.104,-0.101, - &-0.098,-0.095,-0.092,-0.089,-0.085,-0.082,-0.079,-0.076,-0.073, - &-0.069,-0.066,-0.063,-0.060,-0.056,-0.053,-0.050,-0.046,-0.043, - &-0.040,-0.036,-0.033,-0.030,-0.026,-0.023,-0.020,-0.016,-0.013, - &-0.010,-0.006,-0.003, 0.000, 0.004, 0.007, 0.010, 0.014, 0.017, - & 0.020, 0.024, 0.027, 0.030, 0.034, 0.037, 0.040, 0.043, 0.047, - & 0.050, 0.053, 0.056, 0.060, 0.063, 0.066, 0.069, 0.073, 0.076, - & 0.079, 0.082, 0.086, 0.089, 0.092, 0.095, 0.098, 0.101, 0.105, - & 0.108, 0.111, 0.114, 0.117, 0.120, 0.123, 0.127, 0.130, 0.133, - & 0.136, 0.139, 0.142, 0.145, 0.148, 0.151, 0.154, 0.157, 0.160, - & 0.163, 0.166, 0.170, 0.173, 0.176, 0.179, 0.182, 0.184, 0.187, - & 0.190, 0.193, 0.196, 0.199, 0.202, 0.205, 0.208, 0.211, 0.214, - & 0.217, 0.220, 0.223, 0.226, 0.228, 0.231, 0.234, 0.237, 0.240, - & 0.243, 0.246, 0.248, 0.251, 0.254, 0.257, 0.260, 0.262, 0.265, - & 0.268, 0.271, 0.274, 0.276, 0.279, 0.282, 0.285, 0.287, 0.290, - & 0.293, 0.296, 0.298, 0.301, 0.304, 0.306, 0.309, 0.312, 0.315, - & 0.317, 0.320, 0.323, 0.325, 0.328, 0.330, 0.333, 0.336, 0.338, - & 0.341, 0.344, 0.346, 0.349, 0.351, 0.354, 0.357, 0.359, 0.362, - & 0.364, 0.367, 0.369, 0.372, 0.375, 0.377, 0.380, 0.382, 0.385, - & 0.387, 0.390, 0.392, 0.395, 0.397, 0.400, 0.402, 0.405, 0.407, - & 0.410, 0.412, 0.415, 0.417, 0.419, 0.422, 0.424, 0.427, 0.429, - & 0.432, 0.434, 0.437, 0.439, 0.441, 0.444, 0.446, 0.449, 0.451, - & 0.453, 0.456, 0.458, 0.460, 0.463, 0.465, 0.467, 0.470, 0.472, - & 0.474, 0.477, 0.479, 0.481, 0.484, 0.486, 0.488, 0.491, 0.493, - & 0.495, 0.498, 0.500, 0.502, 0.504, 0.507, 0.509, 0.511, 0.513, - & 0.516, 0.518, 0.520, 0.522, 0.525, 0.527, 0.529, 0.531, 0.534, - & 0.536, 0.538, 0.540, 0.542, 0.545, 0.547, 0.549, 0.551, 0.553, - & 0.556, 0.558, 0.560, 0.562, 0.564, 0.566, 0.569, 0.571, 0.573, - & 0.575, 0.577, 0.579, 0.581, 0.584, 0.586, 0.588, 0.590, 0.592, - & 0.594, 0.596, 0.598, 0.600, 0.602, 0.605, 0.607, 0.609, 0.611, - & 0.613, 0.615, 0.617, 0.619, 0.621, 0.623, 0.625, 0.627, 0.629, - & 0.631, 0.633, 0.635, 0.637, 0.639, 0.642, 0.644, 0.646, 0.648, - & 0.650, 0.652, 0.654, 0.656, 0.658, 0.660, 0.662, 0.663, 0.665, - & 0.667, 0.669, 0.671, 0.673, 0.675, 0.677, 0.679, 0.681, 0.683, - & 0.685, 0.687, 0.689, 0.691, 0.712, 0.730, 0.749, 0.767, 0.785, - & 0.803, 0.820, 0.837, 0.854, 0.871, 0.887, 0.903, 0.919, 0.935, - & 0.950, 0.965, 0.980, 0.995, 1.010, 1.024, 1.039, 1.053, 1.067, - & 1.080, 1.094, 1.107, 1.120, 1.133, 1.146, 1.159, 1.172, 1.184, - & 1.196, 1.209, 1.221, 1.232, 1.244, 1.256, 1.267, 1.279, 1.290, - & 1.301, 1.312, 1.323, 1.334, 1.344, 1.355, 1.365, 1.376, 1.386, - & 1.396, 1.406, 1.416, 1.426, 1.436, 1.445, 1.455, 1.464, 1.474, - & 1.483, 1.492, 1.501, 1.511, 1.519, 1.528, 1.537, 1.546, 1.555, - & 1.563, 1.572, 1.580, 1.588, 1.597, 1.605, 1.613, 1.621, 1.629, - & 1.637, 1.645, 1.653, 1.660, 1.668, 1.676, 1.683, 1.691, 1.698, - & 1.706, 1.713, 1.720, 1.727, 1.734, 1.742, 1.749, 1.756, 1.763, - & 1.769, 1.776, 1.783, 1.790, 1.796, 1.803, 1.810, 1.816, 1.823, - & 1.829, 1.835, 1.842, 1.848, 1.854, 1.861, 1.867, 1.873, 1.879, - & 1.885, 1.891, 1.897, 1.903, 1.909, 1.915, 1.920, 1.926, 1.932, - & 1.938, 1.943, 1.949, 1.954, 1.960, 1.965, 1.971, 1.976, 1.982, - & 1.987, 1.992, 1.998, 2.003, 2.008, 2.013, 2.018, 2.024, 2.029, - & 2.034, 2.039, 2.044, 2.049, 2.054, 2.059, 2.063, 2.068, 2.073, - & 2.078, 2.083, 2.087, 2.092, 2.097, 2.101, 2.106, 2.111, 2.115, - & 2.120, 2.124, 2.129 - & /) -! -! *** (H,NO3) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC10M_273 = (/ - &-0.046,-0.096,-0.118,-0.132,-0.142,-0.150,-0.156,-0.161,-0.164, - &-0.167,-0.170,-0.171,-0.173,-0.174,-0.174,-0.175,-0.175,-0.175, - &-0.175,-0.174,-0.174,-0.173,-0.172,-0.171,-0.170,-0.169,-0.168, - &-0.167,-0.165,-0.164,-0.163,-0.161,-0.160,-0.158,-0.156,-0.155, - &-0.153,-0.151,-0.150,-0.148,-0.146,-0.144,-0.142,-0.141,-0.139, - &-0.137,-0.135,-0.133,-0.131,-0.129,-0.127,-0.125,-0.124,-0.122, - &-0.120,-0.118,-0.116,-0.114,-0.112,-0.110,-0.108,-0.106,-0.104, - &-0.102,-0.100,-0.098,-0.096,-0.094,-0.092,-0.090,-0.088,-0.086, - &-0.084,-0.082,-0.080,-0.078,-0.076,-0.074,-0.071,-0.069,-0.067, - &-0.065,-0.063,-0.061,-0.058,-0.056,-0.054,-0.052,-0.049,-0.047, - &-0.045,-0.043,-0.040,-0.038,-0.035,-0.033,-0.031,-0.028,-0.026, - &-0.023,-0.021,-0.019,-0.016,-0.014,-0.011,-0.009,-0.006,-0.004, - &-0.001, 0.001, 0.004, 0.007, 0.009, 0.012, 0.014, 0.017, 0.019, - & 0.022, 0.025, 0.027, 0.030, 0.032, 0.035, 0.038, 0.040, 0.043, - & 0.045, 0.048, 0.051, 0.053, 0.056, 0.058, 0.061, 0.064, 0.066, - & 0.069, 0.071, 0.074, 0.077, 0.079, 0.082, 0.084, 0.087, 0.090, - & 0.092, 0.095, 0.097, 0.100, 0.103, 0.105, 0.108, 0.110, 0.113, - & 0.115, 0.118, 0.121, 0.123, 0.126, 0.128, 0.131, 0.133, 0.136, - & 0.138, 0.141, 0.143, 0.146, 0.148, 0.151, 0.154, 0.156, 0.159, - & 0.161, 0.164, 0.166, 0.169, 0.171, 0.174, 0.176, 0.179, 0.181, - & 0.184, 0.186, 0.189, 0.191, 0.193, 0.196, 0.198, 0.201, 0.203, - & 0.206, 0.208, 0.211, 0.213, 0.216, 0.218, 0.220, 0.223, 0.225, - & 0.228, 0.230, 0.232, 0.235, 0.237, 0.240, 0.242, 0.245, 0.247, - & 0.249, 0.252, 0.254, 0.256, 0.259, 0.261, 0.264, 0.266, 0.268, - & 0.271, 0.273, 0.275, 0.278, 0.280, 0.282, 0.285, 0.287, 0.289, - & 0.292, 0.294, 0.296, 0.299, 0.301, 0.303, 0.306, 0.308, 0.310, - & 0.312, 0.315, 0.317, 0.319, 0.322, 0.324, 0.326, 0.328, 0.331, - & 0.333, 0.335, 0.337, 0.340, 0.342, 0.344, 0.346, 0.349, 0.351, - & 0.353, 0.355, 0.357, 0.360, 0.362, 0.364, 0.366, 0.369, 0.371, - & 0.373, 0.375, 0.377, 0.379, 0.382, 0.384, 0.386, 0.388, 0.390, - & 0.393, 0.395, 0.397, 0.399, 0.401, 0.403, 0.405, 0.408, 0.410, - & 0.412, 0.414, 0.416, 0.418, 0.420, 0.422, 0.425, 0.427, 0.429, - & 0.431, 0.433, 0.435, 0.437, 0.439, 0.441, 0.443, 0.445, 0.448, - & 0.450, 0.452, 0.454, 0.456, 0.458, 0.460, 0.462, 0.464, 0.466, - & 0.468, 0.470, 0.472, 0.474, 0.476, 0.478, 0.480, 0.482, 0.484, - & 0.486, 0.488, 0.490, 0.492, 0.494, 0.496, 0.498, 0.500, 0.502, - & 0.504, 0.506, 0.508, 0.510, 0.512, 0.514, 0.516, 0.518, 0.520, - & 0.522, 0.524, 0.526, 0.528, 0.530, 0.532, 0.534, 0.536, 0.537, - & 0.539, 0.541, 0.543, 0.545, 0.547, 0.549, 0.551, 0.553, 0.555, - & 0.557, 0.558, 0.560, 0.562, 0.564, 0.566, 0.568, 0.570, 0.572, - & 0.574, 0.575, 0.577, 0.579, 0.581, 0.583, 0.585, 0.587, 0.588, - & 0.590, 0.592, 0.594, 0.596, 0.598, 0.599, 0.601, 0.603, 0.605, - & 0.607, 0.609, 0.610, 0.612, 0.614, 0.616, 0.618, 0.619, 0.621, - & 0.623, 0.625, 0.627, 0.628, 0.630, 0.632, 0.634, 0.635, 0.637, - & 0.639, 0.641, 0.643, 0.644, 0.663, 0.680, 0.697, 0.714, 0.730, - & 0.747, 0.763, 0.778, 0.794, 0.809, 0.824, 0.839, 0.854, 0.868, - & 0.883, 0.897, 0.911, 0.924, 0.938, 0.951, 0.965, 0.978, 0.990, - & 1.003, 1.016, 1.028, 1.040, 1.053, 1.065, 1.076, 1.088, 1.100, - & 1.111, 1.122, 1.133, 1.145, 1.155, 1.166, 1.177, 1.188, 1.198, - & 1.208, 1.219, 1.229, 1.239, 1.249, 1.258, 1.268, 1.278, 1.287, - & 1.297, 1.306, 1.315, 1.324, 1.333, 1.342, 1.351, 1.360, 1.369, - & 1.377, 1.386, 1.394, 1.403, 1.411, 1.419, 1.428, 1.436, 1.444, - & 1.452, 1.459, 1.467, 1.475, 1.483, 1.490, 1.498, 1.505, 1.513, - & 1.520, 1.527, 1.535, 1.542, 1.549, 1.556, 1.563, 1.570, 1.577, - & 1.584, 1.590, 1.597, 1.604, 1.610, 1.617, 1.623, 1.630, 1.636, - & 1.643, 1.649, 1.655, 1.661, 1.667, 1.674, 1.680, 1.686, 1.692, - & 1.698, 1.703, 1.709, 1.715, 1.721, 1.727, 1.732, 1.738, 1.744, - & 1.749, 1.755, 1.760, 1.766, 1.771, 1.776, 1.782, 1.787, 1.792, - & 1.797, 1.803, 1.808, 1.813, 1.818, 1.823, 1.828, 1.833, 1.838, - & 1.843, 1.848, 1.853, 1.857, 1.862, 1.867, 1.872, 1.876, 1.881, - & 1.886, 1.890, 1.895, 1.899, 1.904, 1.908, 1.913, 1.917, 1.922, - & 1.926, 1.930, 1.935, 1.939, 1.943, 1.948, 1.952, 1.956, 1.960, - & 1.964, 1.968, 1.973 - & /) -! -! *** (H,Cl) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC11M_273 = (/ - &-0.045,-0.090,-0.108,-0.119,-0.126,-0.130,-0.133,-0.135,-0.135, - &-0.135,-0.134,-0.133,-0.131,-0.129,-0.126,-0.124,-0.121,-0.117, - &-0.114,-0.110,-0.106,-0.102,-0.098,-0.093,-0.089,-0.084,-0.079, - &-0.075,-0.070,-0.065,-0.059,-0.054,-0.049,-0.044,-0.038,-0.033, - &-0.027,-0.022,-0.016,-0.010,-0.004, 0.001, 0.007, 0.013, 0.019, - & 0.025, 0.031, 0.037, 0.043, 0.049, 0.055, 0.061, 0.067, 0.073, - & 0.079, 0.085, 0.091, 0.098, 0.104, 0.110, 0.116, 0.122, 0.129, - & 0.135, 0.141, 0.147, 0.154, 0.160, 0.166, 0.173, 0.179, 0.185, - & 0.192, 0.198, 0.205, 0.211, 0.218, 0.224, 0.231, 0.238, 0.244, - & 0.251, 0.258, 0.264, 0.271, 0.278, 0.285, 0.292, 0.298, 0.305, - & 0.312, 0.319, 0.326, 0.333, 0.341, 0.348, 0.355, 0.362, 0.369, - & 0.377, 0.384, 0.391, 0.398, 0.406, 0.413, 0.421, 0.428, 0.435, - & 0.443, 0.450, 0.458, 0.465, 0.473, 0.480, 0.488, 0.495, 0.503, - & 0.510, 0.518, 0.526, 0.533, 0.541, 0.548, 0.556, 0.563, 0.571, - & 0.578, 0.586, 0.594, 0.601, 0.609, 0.616, 0.624, 0.631, 0.639, - & 0.646, 0.654, 0.661, 0.669, 0.676, 0.684, 0.691, 0.699, 0.706, - & 0.713, 0.721, 0.728, 0.736, 0.743, 0.750, 0.758, 0.765, 0.772, - & 0.780, 0.787, 0.794, 0.802, 0.809, 0.816, 0.823, 0.831, 0.838, - & 0.845, 0.852, 0.859, 0.867, 0.874, 0.881, 0.888, 0.895, 0.902, - & 0.909, 0.916, 0.924, 0.931, 0.938, 0.945, 0.952, 0.959, 0.966, - & 0.973, 0.980, 0.987, 0.994, 1.000, 1.007, 1.014, 1.021, 1.028, - & 1.035, 1.042, 1.049, 1.055, 1.062, 1.069, 1.076, 1.082, 1.089, - & 1.096, 1.103, 1.109, 1.116, 1.123, 1.129, 1.136, 1.143, 1.149, - & 1.156, 1.163, 1.169, 1.176, 1.182, 1.189, 1.195, 1.202, 1.208, - & 1.215, 1.221, 1.228, 1.234, 1.241, 1.247, 1.254, 1.260, 1.266, - & 1.273, 1.279, 1.286, 1.292, 1.298, 1.305, 1.311, 1.317, 1.323, - & 1.330, 1.336, 1.342, 1.348, 1.355, 1.361, 1.367, 1.373, 1.379, - & 1.386, 1.392, 1.398, 1.404, 1.410, 1.416, 1.422, 1.428, 1.434, - & 1.440, 1.446, 1.452, 1.458, 1.464, 1.470, 1.476, 1.482, 1.488, - & 1.494, 1.500, 1.506, 1.512, 1.518, 1.524, 1.530, 1.535, 1.541, - & 1.547, 1.553, 1.559, 1.564, 1.570, 1.576, 1.582, 1.588, 1.593, - & 1.599, 1.605, 1.610, 1.616, 1.622, 1.628, 1.633, 1.639, 1.644, - & 1.650, 1.656, 1.661, 1.667, 1.672, 1.678, 1.684, 1.689, 1.695, - & 1.700, 1.706, 1.711, 1.717, 1.722, 1.728, 1.733, 1.739, 1.744, - & 1.750, 1.755, 1.760, 1.766, 1.771, 1.777, 1.782, 1.787, 1.793, - & 1.798, 1.803, 1.809, 1.814, 1.819, 1.825, 1.830, 1.835, 1.840, - & 1.846, 1.851, 1.856, 1.861, 1.867, 1.872, 1.877, 1.882, 1.887, - & 1.893, 1.898, 1.903, 1.908, 1.913, 1.918, 1.923, 1.929, 1.934, - & 1.939, 1.944, 1.949, 1.954, 1.959, 1.964, 1.969, 1.974, 1.979, - & 1.984, 1.989, 1.994, 1.999, 2.004, 2.009, 2.014, 2.019, 2.024, - & 2.029, 2.034, 2.039, 2.044, 2.048, 2.053, 2.058, 2.063, 2.068, - & 2.073, 2.078, 2.082, 2.087, 2.092, 2.097, 2.102, 2.107, 2.111, - & 2.116, 2.121, 2.126, 2.130, 2.135, 2.140, 2.145, 2.149, 2.154, - & 2.159, 2.163, 2.168, 2.173, 2.177, 2.182, 2.187, 2.191, 2.196, - & 2.201, 2.205, 2.210, 2.215, 2.264, 2.309, 2.353, 2.396, 2.439, - & 2.481, 2.523, 2.564, 2.604, 2.643, 2.683, 2.721, 2.759, 2.797, - & 2.834, 2.870, 2.906, 2.941, 2.976, 3.011, 3.045, 3.079, 3.112, - & 3.145, 3.177, 3.210, 3.241, 3.273, 3.304, 3.334, 3.364, 3.394, - & 3.424, 3.453, 3.482, 3.511, 3.539, 3.567, 3.595, 3.622, 3.649, - & 3.676, 3.702, 3.729, 3.755, 3.781, 3.806, 3.831, 3.856, 3.881, - & 3.906, 3.930, 3.954, 3.978, 4.002, 4.025, 4.048, 4.071, 4.094, - & 4.117, 4.139, 4.161, 4.183, 4.205, 4.227, 4.248, 4.270, 4.291, - & 4.312, 4.332, 4.353, 4.373, 4.394, 4.414, 4.434, 4.453, 4.473, - & 4.493, 4.512, 4.531, 4.550, 4.569, 4.588, 4.606, 4.625, 4.643, - & 4.661, 4.679, 4.697, 4.715, 4.733, 4.750, 4.768, 4.785, 4.802, - & 4.819, 4.836, 4.853, 4.870, 4.886, 4.903, 4.919, 4.936, 4.952, - & 4.968, 4.984, 5.000, 5.015, 5.031, 5.046, 5.062, 5.077, 5.093, - & 5.108, 5.123, 5.138, 5.153, 5.167, 5.182, 5.197, 5.211, 5.226, - & 5.240, 5.254, 5.268, 5.282, 5.296, 5.310, 5.324, 5.338, 5.352, - & 5.365, 5.379, 5.392, 5.406, 5.419, 5.432, 5.445, 5.458, 5.471, - & 5.484, 5.497, 5.510, 5.523, 5.535, 5.548, 5.560, 5.573, 5.585, - & 5.598, 5.610, 5.622, 5.634, 5.646, 5.658, 5.670, 5.682, 5.694, - & 5.706, 5.717, 5.729 - & /) -! -! *** NaHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC12M_273 = (/ - &-0.046,-0.096,-0.118,-0.132,-0.143,-0.151,-0.158,-0.163,-0.167, - &-0.170,-0.173,-0.175,-0.177,-0.178,-0.179,-0.180,-0.180,-0.180, - &-0.180,-0.180,-0.179,-0.179,-0.178,-0.177,-0.176,-0.174,-0.173, - &-0.171,-0.170,-0.168,-0.166,-0.164,-0.162,-0.159,-0.157,-0.155, - &-0.152,-0.150,-0.147,-0.144,-0.142,-0.139,-0.136,-0.133,-0.130, - &-0.127,-0.124,-0.120,-0.117,-0.114,-0.110,-0.107,-0.104,-0.100, - &-0.097,-0.093,-0.090,-0.086,-0.082,-0.079,-0.075,-0.071,-0.067, - &-0.064,-0.060,-0.056,-0.052,-0.048,-0.044,-0.040,-0.036,-0.032, - &-0.028,-0.024,-0.020,-0.015,-0.011,-0.007,-0.003, 0.002, 0.006, - & 0.010, 0.015, 0.019, 0.024, 0.028, 0.033, 0.037, 0.042, 0.046, - & 0.051, 0.056, 0.060, 0.065, 0.070, 0.075, 0.079, 0.084, 0.089, - & 0.094, 0.099, 0.104, 0.109, 0.114, 0.119, 0.124, 0.129, 0.134, - & 0.139, 0.144, 0.149, 0.154, 0.159, 0.164, 0.169, 0.174, 0.179, - & 0.184, 0.189, 0.195, 0.200, 0.205, 0.210, 0.215, 0.220, 0.225, - & 0.230, 0.236, 0.241, 0.246, 0.251, 0.256, 0.261, 0.266, 0.271, - & 0.276, 0.281, 0.286, 0.291, 0.297, 0.302, 0.307, 0.312, 0.317, - & 0.322, 0.327, 0.332, 0.337, 0.342, 0.347, 0.352, 0.357, 0.361, - & 0.366, 0.371, 0.376, 0.381, 0.386, 0.391, 0.396, 0.401, 0.406, - & 0.410, 0.415, 0.420, 0.425, 0.430, 0.434, 0.439, 0.444, 0.449, - & 0.454, 0.458, 0.463, 0.468, 0.473, 0.477, 0.482, 0.487, 0.491, - & 0.496, 0.501, 0.505, 0.510, 0.515, 0.519, 0.524, 0.529, 0.533, - & 0.538, 0.542, 0.547, 0.551, 0.556, 0.560, 0.565, 0.570, 0.574, - & 0.579, 0.583, 0.588, 0.592, 0.596, 0.601, 0.605, 0.610, 0.614, - & 0.619, 0.623, 0.627, 0.632, 0.636, 0.641, 0.645, 0.649, 0.654, - & 0.658, 0.662, 0.667, 0.671, 0.675, 0.680, 0.684, 0.688, 0.692, - & 0.697, 0.701, 0.705, 0.709, 0.714, 0.718, 0.722, 0.726, 0.730, - & 0.735, 0.739, 0.743, 0.747, 0.751, 0.755, 0.759, 0.764, 0.768, - & 0.772, 0.776, 0.780, 0.784, 0.788, 0.792, 0.796, 0.800, 0.804, - & 0.808, 0.812, 0.816, 0.820, 0.824, 0.828, 0.832, 0.836, 0.840, - & 0.844, 0.848, 0.852, 0.856, 0.860, 0.864, 0.868, 0.872, 0.875, - & 0.879, 0.883, 0.887, 0.891, 0.895, 0.899, 0.902, 0.906, 0.910, - & 0.914, 0.918, 0.922, 0.925, 0.929, 0.933, 0.937, 0.940, 0.944, - & 0.948, 0.952, 0.955, 0.959, 0.963, 0.967, 0.970, 0.974, 0.978, - & 0.981, 0.985, 0.989, 0.992, 0.996, 1.000, 1.003, 1.007, 1.011, - & 1.014, 1.018, 1.022, 1.025, 1.029, 1.032, 1.036, 1.040, 1.043, - & 1.047, 1.050, 1.054, 1.057, 1.061, 1.064, 1.068, 1.071, 1.075, - & 1.079, 1.082, 1.086, 1.089, 1.092, 1.096, 1.099, 1.103, 1.106, - & 1.110, 1.113, 1.117, 1.120, 1.124, 1.127, 1.130, 1.134, 1.137, - & 1.141, 1.144, 1.147, 1.151, 1.154, 1.158, 1.161, 1.164, 1.168, - & 1.171, 1.174, 1.178, 1.181, 1.184, 1.188, 1.191, 1.194, 1.198, - & 1.201, 1.204, 1.207, 1.211, 1.214, 1.217, 1.220, 1.224, 1.227, - & 1.230, 1.233, 1.237, 1.240, 1.243, 1.246, 1.250, 1.253, 1.256, - & 1.259, 1.262, 1.266, 1.269, 1.272, 1.275, 1.278, 1.281, 1.285, - & 1.288, 1.291, 1.294, 1.297, 1.300, 1.303, 1.306, 1.310, 1.313, - & 1.316, 1.319, 1.322, 1.325, 1.358, 1.388, 1.418, 1.447, 1.476, - & 1.504, 1.532, 1.559, 1.586, 1.613, 1.639, 1.665, 1.691, 1.716, - & 1.741, 1.766, 1.790, 1.814, 1.838, 1.861, 1.884, 1.907, 1.929, - & 1.951, 1.973, 1.995, 2.016, 2.037, 2.058, 2.079, 2.099, 2.120, - & 2.140, 2.159, 2.179, 2.198, 2.217, 2.236, 2.255, 2.274, 2.292, - & 2.310, 2.328, 2.346, 2.363, 2.381, 2.398, 2.415, 2.432, 2.449, - & 2.465, 2.482, 2.498, 2.514, 2.530, 2.546, 2.562, 2.577, 2.592, - & 2.608, 2.623, 2.638, 2.653, 2.667, 2.682, 2.697, 2.711, 2.725, - & 2.739, 2.753, 2.767, 2.781, 2.795, 2.808, 2.822, 2.835, 2.848, - & 2.861, 2.874, 2.887, 2.900, 2.913, 2.925, 2.938, 2.950, 2.963, - & 2.975, 2.987, 2.999, 3.011, 3.023, 3.035, 3.046, 3.058, 3.069, - & 3.081, 3.092, 3.104, 3.115, 3.126, 3.137, 3.148, 3.159, 3.170, - & 3.180, 3.191, 3.202, 3.212, 3.223, 3.233, 3.244, 3.254, 3.264, - & 3.274, 3.284, 3.294, 3.304, 3.314, 3.324, 3.334, 3.343, 3.353, - & 3.363, 3.372, 3.382, 3.391, 3.400, 3.410, 3.419, 3.428, 3.437, - & 3.446, 3.455, 3.464, 3.473, 3.482, 3.491, 3.499, 3.508, 3.517, - & 3.525, 3.534, 3.542, 3.551, 3.559, 3.568, 3.576, 3.584, 3.592, - & 3.601, 3.609, 3.617, 3.625, 3.633, 3.641, 3.649, 3.657, 3.664, - & 3.672, 3.680, 3.688 - & /) -! -! *** (NH4)3H(SO4)2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC13M_273 = (/ - &-0.076,-0.165,-0.209,-0.240,-0.264,-0.284,-0.301,-0.316,-0.329, - &-0.341,-0.352,-0.362,-0.371,-0.379,-0.387,-0.394,-0.401,-0.408, - &-0.414,-0.420,-0.425,-0.430,-0.435,-0.440,-0.444,-0.449,-0.453, - &-0.457,-0.460,-0.464,-0.467,-0.471,-0.474,-0.477,-0.480,-0.483, - &-0.485,-0.488,-0.490,-0.493,-0.495,-0.497,-0.499,-0.501,-0.503, - &-0.505,-0.507,-0.509,-0.510,-0.512,-0.514,-0.515,-0.516,-0.518, - &-0.519,-0.520,-0.522,-0.523,-0.524,-0.525,-0.526,-0.527,-0.528, - &-0.529,-0.530,-0.531,-0.532,-0.532,-0.533,-0.534,-0.534,-0.535, - &-0.536,-0.536,-0.537,-0.537,-0.538,-0.538,-0.539,-0.539,-0.540, - &-0.540,-0.540,-0.541,-0.541,-0.541,-0.542,-0.542,-0.542,-0.542, - &-0.542,-0.543,-0.543,-0.543,-0.543,-0.543,-0.543,-0.543,-0.543, - &-0.543,-0.543,-0.543,-0.543,-0.543,-0.543,-0.543,-0.543,-0.543, - &-0.543,-0.542,-0.542,-0.542,-0.542,-0.542,-0.542,-0.542,-0.541, - &-0.541,-0.541,-0.541,-0.540,-0.540,-0.540,-0.540,-0.540,-0.539, - &-0.539,-0.539,-0.538,-0.538,-0.538,-0.538,-0.537,-0.537,-0.537, - &-0.536,-0.536,-0.536,-0.536,-0.535,-0.535,-0.535,-0.534,-0.534, - &-0.534,-0.533,-0.533,-0.533,-0.532,-0.532,-0.532,-0.531,-0.531, - &-0.530,-0.530,-0.530,-0.529,-0.529,-0.529,-0.528,-0.528,-0.528, - &-0.527,-0.527,-0.527,-0.526,-0.526,-0.525,-0.525,-0.525,-0.524, - &-0.524,-0.524,-0.523,-0.523,-0.522,-0.522,-0.522,-0.521,-0.521, - &-0.521,-0.520,-0.520,-0.519,-0.519,-0.519,-0.518,-0.518,-0.518, - &-0.517,-0.517,-0.516,-0.516,-0.516,-0.515,-0.515,-0.515,-0.514, - &-0.514,-0.513,-0.513,-0.513,-0.512,-0.512,-0.512,-0.511,-0.511, - &-0.510,-0.510,-0.510,-0.509,-0.509,-0.509,-0.508,-0.508,-0.507, - &-0.507,-0.507,-0.506,-0.506,-0.506,-0.505,-0.505,-0.504,-0.504, - &-0.504,-0.503,-0.503,-0.503,-0.502,-0.502,-0.501,-0.501,-0.501, - &-0.500,-0.500,-0.500,-0.499,-0.499,-0.499,-0.498,-0.498,-0.497, - &-0.497,-0.497,-0.496,-0.496,-0.496,-0.495,-0.495,-0.495,-0.494, - &-0.494,-0.493,-0.493,-0.493,-0.492,-0.492,-0.492,-0.491,-0.491, - &-0.491,-0.490,-0.490,-0.490,-0.489,-0.489,-0.489,-0.488,-0.488, - &-0.487,-0.487,-0.487,-0.486,-0.486,-0.486,-0.485,-0.485,-0.485, - &-0.484,-0.484,-0.484,-0.483,-0.483,-0.483,-0.482,-0.482,-0.482, - &-0.481,-0.481,-0.481,-0.480,-0.480,-0.480,-0.479,-0.479,-0.479, - &-0.478,-0.478,-0.478,-0.477,-0.477,-0.477,-0.476,-0.476,-0.476, - &-0.475,-0.475,-0.475,-0.474,-0.474,-0.474,-0.473,-0.473,-0.473, - &-0.472,-0.472,-0.472,-0.471,-0.471,-0.471,-0.471,-0.470,-0.470, - &-0.470,-0.469,-0.469,-0.469,-0.468,-0.468,-0.468,-0.467,-0.467, - &-0.467,-0.466,-0.466,-0.466,-0.466,-0.465,-0.465,-0.465,-0.464, - &-0.464,-0.464,-0.463,-0.463,-0.463,-0.463,-0.462,-0.462,-0.462, - &-0.461,-0.461,-0.461,-0.460,-0.460,-0.460,-0.460,-0.459,-0.459, - &-0.459,-0.458,-0.458,-0.458,-0.458,-0.457,-0.457,-0.457,-0.456, - &-0.456,-0.456,-0.456,-0.455,-0.455,-0.455,-0.454,-0.454,-0.454, - &-0.454,-0.453,-0.453,-0.453,-0.452,-0.452,-0.452,-0.452,-0.451, - &-0.451,-0.451,-0.450,-0.450,-0.450,-0.450,-0.449,-0.449,-0.449, - &-0.449,-0.448,-0.448,-0.448,-0.445,-0.442,-0.440,-0.437,-0.435, - &-0.432,-0.430,-0.428,-0.426,-0.423,-0.421,-0.419,-0.417,-0.415, - &-0.413,-0.411,-0.409,-0.407,-0.406,-0.404,-0.402,-0.401,-0.399, - &-0.397,-0.396,-0.394,-0.393,-0.391,-0.390,-0.389,-0.387,-0.386, - &-0.385,-0.383,-0.382,-0.381,-0.380,-0.379,-0.378,-0.377,-0.376, - &-0.375,-0.374,-0.373,-0.372,-0.371,-0.370,-0.369,-0.368,-0.367, - &-0.367,-0.366,-0.365,-0.364,-0.364,-0.363,-0.362,-0.362,-0.361, - &-0.361,-0.360,-0.360,-0.359,-0.359,-0.358,-0.358,-0.357,-0.357, - &-0.356,-0.356,-0.356,-0.355,-0.355,-0.355,-0.354,-0.354,-0.354, - &-0.354,-0.353,-0.353,-0.353,-0.353,-0.353,-0.352,-0.352,-0.352, - &-0.352,-0.352,-0.352,-0.352,-0.352,-0.352,-0.352,-0.352,-0.352, - &-0.352,-0.352,-0.352,-0.352,-0.352,-0.352,-0.352,-0.352,-0.352, - &-0.352,-0.353,-0.353,-0.353,-0.353,-0.353,-0.353,-0.354,-0.354, - &-0.354,-0.354,-0.355,-0.355,-0.355,-0.355,-0.356,-0.356,-0.356, - &-0.357,-0.357,-0.357,-0.358,-0.358,-0.358,-0.359,-0.359,-0.359, - &-0.360,-0.360,-0.361,-0.361,-0.362,-0.362,-0.362,-0.363,-0.363, - &-0.364,-0.364,-0.365,-0.365,-0.366,-0.366,-0.367,-0.367,-0.368, - &-0.369,-0.369,-0.370,-0.370,-0.371,-0.371,-0.372,-0.373,-0.373, - &-0.374,-0.374,-0.375 - & /) -! -! *** CASO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC14M_273 = (/ - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000 - & /) -! -! *** CANO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC15M_273 = (/ - &-0.094,-0.201,-0.251,-0.286,-0.312,-0.334,-0.351,-0.366,-0.379, - &-0.390,-0.400,-0.409,-0.417,-0.424,-0.430,-0.436,-0.442,-0.447, - &-0.451,-0.455,-0.459,-0.463,-0.466,-0.469,-0.472,-0.475,-0.477, - &-0.479,-0.481,-0.483,-0.485,-0.487,-0.489,-0.490,-0.491,-0.493, - &-0.494,-0.495,-0.496,-0.497,-0.498,-0.499,-0.500,-0.501,-0.501, - &-0.502,-0.503,-0.503,-0.504,-0.504,-0.505,-0.505,-0.505,-0.506, - &-0.506,-0.506,-0.507,-0.507,-0.507,-0.507,-0.507,-0.508,-0.508, - &-0.508,-0.508,-0.508,-0.508,-0.508,-0.508,-0.508,-0.508,-0.508, - &-0.508,-0.507,-0.507,-0.507,-0.507,-0.507,-0.506,-0.506,-0.506, - &-0.506,-0.505,-0.505,-0.505,-0.504,-0.504,-0.503,-0.503,-0.502, - &-0.502,-0.501,-0.501,-0.500,-0.500,-0.499,-0.499,-0.498,-0.497, - &-0.497,-0.496,-0.495,-0.495,-0.494,-0.493,-0.493,-0.492,-0.491, - &-0.490,-0.489,-0.489,-0.488,-0.487,-0.486,-0.485,-0.485,-0.484, - &-0.483,-0.482,-0.481,-0.480,-0.479,-0.478,-0.477,-0.477,-0.476, - &-0.475,-0.474,-0.473,-0.472,-0.471,-0.470,-0.469,-0.468,-0.467, - &-0.466,-0.465,-0.464,-0.463,-0.462,-0.461,-0.460,-0.459,-0.459, - &-0.458,-0.457,-0.456,-0.455,-0.454,-0.453,-0.452,-0.451,-0.450, - &-0.449,-0.448,-0.447,-0.446,-0.445,-0.444,-0.443,-0.442,-0.441, - &-0.440,-0.439,-0.438,-0.437,-0.436,-0.435,-0.434,-0.433,-0.432, - &-0.431,-0.430,-0.429,-0.428,-0.427,-0.426,-0.425,-0.424,-0.423, - &-0.422,-0.421,-0.420,-0.419,-0.418,-0.417,-0.416,-0.415,-0.414, - &-0.413,-0.412,-0.411,-0.410,-0.409,-0.408,-0.407,-0.406,-0.405, - &-0.404,-0.403,-0.402,-0.401,-0.400,-0.399,-0.398,-0.397,-0.396, - &-0.395,-0.394,-0.393,-0.392,-0.391,-0.390,-0.389,-0.388,-0.387, - &-0.386,-0.385,-0.384,-0.383,-0.382,-0.382,-0.381,-0.380,-0.379, - &-0.378,-0.377,-0.376,-0.375,-0.374,-0.373,-0.372,-0.371,-0.370, - &-0.369,-0.368,-0.367,-0.366,-0.365,-0.364,-0.363,-0.362,-0.361, - &-0.360,-0.359,-0.359,-0.358,-0.357,-0.356,-0.355,-0.354,-0.353, - &-0.352,-0.351,-0.350,-0.349,-0.348,-0.347,-0.346,-0.345,-0.344, - &-0.344,-0.343,-0.342,-0.341,-0.340,-0.339,-0.338,-0.337,-0.336, - &-0.335,-0.334,-0.333,-0.332,-0.332,-0.331,-0.330,-0.329,-0.328, - &-0.327,-0.326,-0.325,-0.324,-0.323,-0.323,-0.322,-0.321,-0.320, - &-0.319,-0.318,-0.317,-0.316,-0.315,-0.314,-0.314,-0.313,-0.312, - &-0.311,-0.310,-0.309,-0.308,-0.307,-0.307,-0.306,-0.305,-0.304, - &-0.303,-0.302,-0.301,-0.300,-0.300,-0.299,-0.298,-0.297,-0.296, - &-0.295,-0.294,-0.294,-0.293,-0.292,-0.291,-0.290,-0.289,-0.288, - &-0.288,-0.287,-0.286,-0.285,-0.284,-0.283,-0.282,-0.282,-0.281, - &-0.280,-0.279,-0.278,-0.277,-0.277,-0.276,-0.275,-0.274,-0.273, - &-0.273,-0.272,-0.271,-0.270,-0.269,-0.268,-0.268,-0.267,-0.266, - &-0.265,-0.264,-0.263,-0.263,-0.262,-0.261,-0.260,-0.259,-0.259, - &-0.258,-0.257,-0.256,-0.255,-0.255,-0.254,-0.253,-0.252,-0.251, - &-0.251,-0.250,-0.249,-0.248,-0.248,-0.247,-0.246,-0.245,-0.244, - &-0.244,-0.243,-0.242,-0.241,-0.240,-0.240,-0.239,-0.238,-0.237, - &-0.237,-0.236,-0.235,-0.234,-0.234,-0.233,-0.232,-0.231,-0.230, - &-0.230,-0.229,-0.228,-0.227,-0.219,-0.212,-0.205,-0.198,-0.191, - &-0.184,-0.177,-0.170,-0.163,-0.157,-0.151,-0.144,-0.138,-0.132, - &-0.126,-0.120,-0.114,-0.108,-0.103,-0.097,-0.091,-0.086,-0.081, - &-0.075,-0.070,-0.065,-0.060,-0.055,-0.050,-0.045,-0.041,-0.036, - &-0.031,-0.027,-0.022,-0.018,-0.014,-0.009,-0.005,-0.001, 0.003, - & 0.007, 0.011, 0.015, 0.019, 0.023, 0.027, 0.031, 0.034, 0.038, - & 0.041, 0.045, 0.048, 0.052, 0.055, 0.059, 0.062, 0.065, 0.068, - & 0.071, 0.075, 0.078, 0.081, 0.084, 0.087, 0.089, 0.092, 0.095, - & 0.098, 0.101, 0.103, 0.106, 0.109, 0.111, 0.114, 0.116, 0.119, - & 0.121, 0.124, 0.126, 0.128, 0.131, 0.133, 0.135, 0.138, 0.140, - & 0.142, 0.144, 0.146, 0.148, 0.150, 0.152, 0.154, 0.156, 0.158, - & 0.160, 0.162, 0.164, 0.166, 0.167, 0.169, 0.171, 0.173, 0.174, - & 0.176, 0.178, 0.179, 0.181, 0.182, 0.184, 0.186, 0.187, 0.189, - & 0.190, 0.191, 0.193, 0.194, 0.196, 0.197, 0.198, 0.200, 0.201, - & 0.202, 0.203, 0.205, 0.206, 0.207, 0.208, 0.209, 0.210, 0.212, - & 0.213, 0.214, 0.215, 0.216, 0.217, 0.218, 0.219, 0.220, 0.221, - & 0.222, 0.222, 0.223, 0.224, 0.225, 0.226, 0.227, 0.228, 0.228, - & 0.229, 0.230, 0.231, 0.231, 0.232, 0.233, 0.234, 0.234, 0.235, - & 0.235, 0.236, 0.237 - & /) -! -! *** CACL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC16M_273 = (/ - &-0.093,-0.193,-0.238,-0.267,-0.288,-0.304,-0.316,-0.326,-0.334, - &-0.340,-0.345,-0.350,-0.353,-0.355,-0.357,-0.359,-0.360,-0.360, - &-0.360,-0.360,-0.359,-0.358,-0.357,-0.356,-0.355,-0.353,-0.351, - &-0.349,-0.347,-0.345,-0.342,-0.340,-0.337,-0.335,-0.332,-0.329, - &-0.326,-0.323,-0.321,-0.317,-0.314,-0.311,-0.308,-0.305,-0.302, - &-0.299,-0.295,-0.292,-0.289,-0.286,-0.282,-0.279,-0.276,-0.272, - &-0.269,-0.266,-0.262,-0.259,-0.255,-0.252,-0.249,-0.245,-0.242, - &-0.238,-0.235,-0.231,-0.228,-0.224,-0.221,-0.217,-0.213,-0.210, - &-0.206,-0.203,-0.199,-0.195,-0.192,-0.188,-0.184,-0.180,-0.177, - &-0.173,-0.169,-0.165,-0.161,-0.157,-0.153,-0.149,-0.145,-0.141, - &-0.137,-0.133,-0.129,-0.125,-0.120,-0.116,-0.112,-0.108,-0.103, - &-0.099,-0.095,-0.090,-0.086,-0.081,-0.077,-0.073,-0.068,-0.064, - &-0.059,-0.054,-0.050,-0.045,-0.041,-0.036,-0.032,-0.027,-0.022, - &-0.018,-0.013,-0.008,-0.004, 0.001, 0.005, 0.010, 0.015, 0.019, - & 0.024, 0.029, 0.033, 0.038, 0.043, 0.048, 0.052, 0.057, 0.062, - & 0.066, 0.071, 0.076, 0.080, 0.085, 0.090, 0.094, 0.099, 0.103, - & 0.108, 0.113, 0.117, 0.122, 0.127, 0.131, 0.136, 0.141, 0.145, - & 0.150, 0.154, 0.159, 0.164, 0.168, 0.173, 0.177, 0.182, 0.186, - & 0.191, 0.196, 0.200, 0.205, 0.209, 0.214, 0.218, 0.223, 0.227, - & 0.232, 0.236, 0.241, 0.245, 0.250, 0.254, 0.259, 0.263, 0.268, - & 0.272, 0.277, 0.281, 0.286, 0.290, 0.294, 0.299, 0.303, 0.308, - & 0.312, 0.317, 0.321, 0.325, 0.330, 0.334, 0.338, 0.343, 0.347, - & 0.352, 0.356, 0.360, 0.365, 0.369, 0.373, 0.378, 0.382, 0.386, - & 0.390, 0.395, 0.399, 0.403, 0.408, 0.412, 0.416, 0.420, 0.425, - & 0.429, 0.433, 0.437, 0.442, 0.446, 0.450, 0.454, 0.458, 0.463, - & 0.467, 0.471, 0.475, 0.479, 0.483, 0.488, 0.492, 0.496, 0.500, - & 0.504, 0.508, 0.512, 0.516, 0.521, 0.525, 0.529, 0.533, 0.537, - & 0.541, 0.545, 0.549, 0.553, 0.557, 0.561, 0.565, 0.569, 0.573, - & 0.577, 0.581, 0.585, 0.589, 0.593, 0.597, 0.601, 0.605, 0.609, - & 0.613, 0.617, 0.621, 0.625, 0.629, 0.633, 0.637, 0.641, 0.644, - & 0.648, 0.652, 0.656, 0.660, 0.664, 0.668, 0.672, 0.675, 0.679, - & 0.683, 0.687, 0.691, 0.695, 0.698, 0.702, 0.706, 0.710, 0.714, - & 0.717, 0.721, 0.725, 0.729, 0.733, 0.736, 0.740, 0.744, 0.748, - & 0.751, 0.755, 0.759, 0.762, 0.766, 0.770, 0.774, 0.777, 0.781, - & 0.785, 0.788, 0.792, 0.796, 0.799, 0.803, 0.807, 0.810, 0.814, - & 0.818, 0.821, 0.825, 0.828, 0.832, 0.836, 0.839, 0.843, 0.846, - & 0.850, 0.853, 0.857, 0.861, 0.864, 0.868, 0.871, 0.875, 0.878, - & 0.882, 0.885, 0.889, 0.892, 0.896, 0.899, 0.903, 0.906, 0.910, - & 0.913, 0.917, 0.920, 0.924, 0.927, 0.931, 0.934, 0.938, 0.941, - & 0.944, 0.948, 0.951, 0.955, 0.958, 0.961, 0.965, 0.968, 0.972, - & 0.975, 0.978, 0.982, 0.985, 0.988, 0.992, 0.995, 0.999, 1.002, - & 1.005, 1.009, 1.012, 1.015, 1.018, 1.022, 1.025, 1.028, 1.032, - & 1.035, 1.038, 1.042, 1.045, 1.048, 1.051, 1.055, 1.058, 1.061, - & 1.064, 1.068, 1.071, 1.074, 1.077, 1.080, 1.084, 1.087, 1.090, - & 1.093, 1.096, 1.100, 1.103, 1.137, 1.168, 1.199, 1.229, 1.259, - & 1.288, 1.317, 1.345, 1.373, 1.401, 1.428, 1.455, 1.482, 1.508, - & 1.534, 1.559, 1.584, 1.609, 1.634, 1.658, 1.682, 1.706, 1.729, - & 1.752, 1.775, 1.797, 1.819, 1.841, 1.863, 1.884, 1.905, 1.926, - & 1.947, 1.967, 1.988, 2.008, 2.027, 2.047, 2.066, 2.085, 2.104, - & 2.123, 2.141, 2.160, 2.178, 2.196, 2.214, 2.231, 2.249, 2.266, - & 2.283, 2.300, 2.316, 2.333, 2.349, 2.365, 2.381, 2.397, 2.413, - & 2.429, 2.444, 2.459, 2.475, 2.490, 2.504, 2.519, 2.534, 2.548, - & 2.563, 2.577, 2.591, 2.605, 2.619, 2.632, 2.646, 2.659, 2.673, - & 2.686, 2.699, 2.712, 2.725, 2.738, 2.751, 2.763, 2.776, 2.788, - & 2.800, 2.813, 2.825, 2.837, 2.849, 2.860, 2.872, 2.884, 2.895, - & 2.907, 2.918, 2.929, 2.940, 2.952, 2.963, 2.973, 2.984, 2.995, - & 3.006, 3.016, 3.027, 3.037, 3.048, 3.058, 3.068, 3.078, 3.088, - & 3.098, 3.108, 3.118, 3.128, 3.137, 3.147, 3.157, 3.166, 3.176, - & 3.185, 3.194, 3.203, 3.213, 3.222, 3.231, 3.240, 3.249, 3.258, - & 3.266, 3.275, 3.284, 3.292, 3.301, 3.309, 3.318, 3.326, 3.335, - & 3.343, 3.351, 3.359, 3.368, 3.376, 3.384, 3.392, 3.399, 3.407, - & 3.415, 3.423, 3.431, 3.438, 3.446, 3.454, 3.461, 3.469, 3.476, - & 3.483, 3.491, 3.498 - & /) -! -! *** K2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC17M_273 = (/ - &-0.096,-0.208,-0.265,-0.305,-0.337,-0.363,-0.385,-0.405,-0.423, - &-0.439,-0.453,-0.467,-0.479,-0.491,-0.502,-0.512,-0.522,-0.531, - &-0.540,-0.548,-0.556,-0.564,-0.571,-0.578,-0.585,-0.592,-0.598, - &-0.605,-0.610,-0.616,-0.622,-0.627,-0.633,-0.638,-0.643,-0.648, - &-0.653,-0.657,-0.662,-0.666,-0.671,-0.675,-0.679,-0.683,-0.688, - &-0.691,-0.695,-0.699,-0.703,-0.707,-0.710,-0.714,-0.717,-0.721, - &-0.724,-0.727,-0.731,-0.734,-0.737,-0.740,-0.743,-0.746,-0.749, - &-0.752,-0.755,-0.758,-0.761,-0.763,-0.766,-0.769,-0.772,-0.774, - &-0.777,-0.780,-0.782,-0.785,-0.787,-0.790,-0.792,-0.795,-0.797, - &-0.799,-0.802,-0.804,-0.807,-0.809,-0.811,-0.814,-0.816,-0.818, - &-0.820,-0.823,-0.825,-0.827,-0.829,-0.831,-0.833,-0.836,-0.838, - &-0.840,-0.842,-0.844,-0.846,-0.848,-0.850,-0.852,-0.854,-0.856, - &-0.858,-0.860,-0.862,-0.864,-0.866,-0.868,-0.870,-0.872,-0.874, - &-0.875,-0.877,-0.879,-0.881,-0.883,-0.885,-0.887,-0.888,-0.890, - &-0.892,-0.894,-0.895,-0.897,-0.899,-0.901,-0.902,-0.904,-0.906, - &-0.908,-0.909,-0.911,-0.913,-0.914,-0.916,-0.918,-0.919,-0.921, - &-0.923,-0.924,-0.926,-0.927,-0.929,-0.931,-0.932,-0.934,-0.935, - &-0.937,-0.938,-0.940,-0.942,-0.943,-0.945,-0.946,-0.948,-0.949, - &-0.951,-0.952,-0.954,-0.955,-0.957,-0.958,-0.960,-0.961,-0.962, - &-0.964,-0.965,-0.967,-0.968,-0.970,-0.971,-0.972,-0.974,-0.975, - &-0.977,-0.978,-0.979,-0.981,-0.982,-0.984,-0.985,-0.986,-0.988, - &-0.989,-0.990,-0.992,-0.993,-0.994,-0.996,-0.997,-0.998,-1.000, - &-1.001,-1.002,-1.004,-1.005,-1.006,-1.007,-1.009,-1.010,-1.011, - &-1.013,-1.014,-1.015,-1.016,-1.018,-1.019,-1.020,-1.021,-1.023, - &-1.024,-1.025,-1.026,-1.027,-1.029,-1.030,-1.031,-1.032,-1.034, - &-1.035,-1.036,-1.037,-1.038,-1.039,-1.041,-1.042,-1.043,-1.044, - &-1.045,-1.047,-1.048,-1.049,-1.050,-1.051,-1.052,-1.053,-1.055, - &-1.056,-1.057,-1.058,-1.059,-1.060,-1.061,-1.063,-1.064,-1.065, - &-1.066,-1.067,-1.068,-1.069,-1.070,-1.071,-1.073,-1.074,-1.075, - &-1.076,-1.077,-1.078,-1.079,-1.080,-1.081,-1.082,-1.083,-1.084, - &-1.086,-1.087,-1.088,-1.089,-1.090,-1.091,-1.092,-1.093,-1.094, - &-1.095,-1.096,-1.097,-1.098,-1.099,-1.100,-1.101,-1.102,-1.103, - &-1.104,-1.105,-1.106,-1.107,-1.108,-1.109,-1.110,-1.111,-1.112, - &-1.114,-1.115,-1.116,-1.117,-1.118,-1.119,-1.119,-1.120,-1.121, - &-1.122,-1.123,-1.124,-1.125,-1.126,-1.127,-1.128,-1.129,-1.130, - &-1.131,-1.132,-1.133,-1.134,-1.135,-1.136,-1.137,-1.138,-1.139, - &-1.140,-1.141,-1.142,-1.143,-1.144,-1.145,-1.146,-1.147,-1.147, - &-1.148,-1.149,-1.150,-1.151,-1.152,-1.153,-1.154,-1.155,-1.156, - &-1.157,-1.158,-1.159,-1.160,-1.160,-1.161,-1.162,-1.163,-1.164, - &-1.165,-1.166,-1.167,-1.168,-1.169,-1.169,-1.170,-1.171,-1.172, - &-1.173,-1.174,-1.175,-1.176,-1.177,-1.178,-1.178,-1.179,-1.180, - &-1.181,-1.182,-1.183,-1.184,-1.185,-1.185,-1.186,-1.187,-1.188, - &-1.189,-1.190,-1.191,-1.191,-1.192,-1.193,-1.194,-1.195,-1.196, - &-1.197,-1.198,-1.198,-1.199,-1.200,-1.201,-1.202,-1.203,-1.203, - &-1.204,-1.205,-1.206,-1.207,-1.216,-1.224,-1.232,-1.240,-1.248, - &-1.256,-1.263,-1.271,-1.279,-1.286,-1.293,-1.301,-1.308,-1.315, - &-1.322,-1.329,-1.336,-1.343,-1.349,-1.356,-1.363,-1.369,-1.376, - &-1.382,-1.389,-1.395,-1.402,-1.408,-1.414,-1.420,-1.427,-1.433, - &-1.439,-1.445,-1.451,-1.457,-1.463,-1.468,-1.474,-1.480,-1.486, - &-1.492,-1.497,-1.503,-1.509,-1.514,-1.520,-1.525,-1.531,-1.536, - &-1.542,-1.547,-1.553,-1.558,-1.563,-1.569,-1.574,-1.579,-1.585, - &-1.590,-1.595,-1.600,-1.605,-1.611,-1.616,-1.621,-1.626,-1.631, - &-1.636,-1.641,-1.646,-1.651,-1.656,-1.661,-1.666,-1.671,-1.676, - &-1.681,-1.685,-1.690,-1.695,-1.700,-1.705,-1.710,-1.714,-1.719, - &-1.724,-1.729,-1.733,-1.738,-1.743,-1.747,-1.752,-1.757,-1.761, - &-1.766,-1.770,-1.775,-1.780,-1.784,-1.789,-1.793,-1.798,-1.802, - &-1.807,-1.811,-1.816,-1.820,-1.825,-1.829,-1.834,-1.838,-1.842, - &-1.847,-1.851,-1.856,-1.860,-1.864,-1.869,-1.873,-1.877,-1.882, - &-1.886,-1.890,-1.895,-1.899,-1.903,-1.908,-1.912,-1.916,-1.920, - &-1.925,-1.929,-1.933,-1.937,-1.941,-1.946,-1.950,-1.954,-1.958, - &-1.962,-1.966,-1.971,-1.975,-1.979,-1.983,-1.987,-1.991,-1.995, - &-2.000,-2.004,-2.008,-2.012,-2.016,-2.020,-2.024,-2.028,-2.032, - &-2.036,-2.040,-2.044 - & /) -! -! *** KHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC18M_273 = (/ - &-0.047,-0.099,-0.124,-0.141,-0.154,-0.165,-0.173,-0.181,-0.187, - &-0.193,-0.198,-0.202,-0.206,-0.209,-0.212,-0.215,-0.217,-0.220, - &-0.221,-0.223,-0.225,-0.226,-0.227,-0.228,-0.229,-0.229,-0.230, - &-0.230,-0.230,-0.230,-0.230,-0.230,-0.230,-0.229,-0.229,-0.228, - &-0.228,-0.227,-0.226,-0.225,-0.224,-0.223,-0.222,-0.221,-0.220, - &-0.218,-0.217,-0.215,-0.214,-0.212,-0.210,-0.209,-0.207,-0.205, - &-0.203,-0.201,-0.199,-0.197,-0.195,-0.193,-0.191,-0.189,-0.187, - &-0.185,-0.182,-0.180,-0.178,-0.175,-0.173,-0.171,-0.168,-0.166, - &-0.163,-0.160,-0.158,-0.155,-0.153,-0.150,-0.147,-0.144,-0.142, - &-0.139,-0.136,-0.133,-0.130,-0.127,-0.124,-0.121,-0.118,-0.115, - &-0.112,-0.109,-0.106,-0.103,-0.100,-0.097,-0.094,-0.091,-0.087, - &-0.084,-0.081,-0.078,-0.074,-0.071,-0.068,-0.064,-0.061,-0.058, - &-0.054,-0.051,-0.047,-0.044,-0.041,-0.037,-0.034,-0.030,-0.027, - &-0.023,-0.020,-0.017,-0.013,-0.010,-0.006,-0.003, 0.001, 0.004, - & 0.008, 0.011, 0.015, 0.018, 0.021, 0.025, 0.028, 0.032, 0.035, - & 0.039, 0.042, 0.046, 0.049, 0.052, 0.056, 0.059, 0.063, 0.066, - & 0.069, 0.073, 0.076, 0.079, 0.083, 0.086, 0.090, 0.093, 0.096, - & 0.100, 0.103, 0.106, 0.110, 0.113, 0.116, 0.119, 0.123, 0.126, - & 0.129, 0.133, 0.136, 0.139, 0.142, 0.146, 0.149, 0.152, 0.155, - & 0.158, 0.162, 0.165, 0.168, 0.171, 0.174, 0.177, 0.181, 0.184, - & 0.187, 0.190, 0.193, 0.196, 0.199, 0.203, 0.206, 0.209, 0.212, - & 0.215, 0.218, 0.221, 0.224, 0.227, 0.230, 0.233, 0.236, 0.239, - & 0.242, 0.245, 0.248, 0.251, 0.254, 0.257, 0.260, 0.263, 0.266, - & 0.269, 0.272, 0.275, 0.278, 0.281, 0.284, 0.287, 0.290, 0.292, - & 0.295, 0.298, 0.301, 0.304, 0.307, 0.310, 0.313, 0.315, 0.318, - & 0.321, 0.324, 0.327, 0.330, 0.332, 0.335, 0.338, 0.341, 0.343, - & 0.346, 0.349, 0.352, 0.355, 0.357, 0.360, 0.363, 0.366, 0.368, - & 0.371, 0.374, 0.376, 0.379, 0.382, 0.384, 0.387, 0.390, 0.393, - & 0.395, 0.398, 0.400, 0.403, 0.406, 0.408, 0.411, 0.414, 0.416, - & 0.419, 0.422, 0.424, 0.427, 0.429, 0.432, 0.434, 0.437, 0.440, - & 0.442, 0.445, 0.447, 0.450, 0.452, 0.455, 0.457, 0.460, 0.463, - & 0.465, 0.468, 0.470, 0.473, 0.475, 0.478, 0.480, 0.483, 0.485, - & 0.487, 0.490, 0.492, 0.495, 0.497, 0.500, 0.502, 0.505, 0.507, - & 0.509, 0.512, 0.514, 0.517, 0.519, 0.522, 0.524, 0.526, 0.529, - & 0.531, 0.533, 0.536, 0.538, 0.541, 0.543, 0.545, 0.548, 0.550, - & 0.552, 0.555, 0.557, 0.559, 0.562, 0.564, 0.566, 0.569, 0.571, - & 0.573, 0.575, 0.578, 0.580, 0.582, 0.585, 0.587, 0.589, 0.591, - & 0.594, 0.596, 0.598, 0.600, 0.603, 0.605, 0.607, 0.609, 0.612, - & 0.614, 0.616, 0.618, 0.621, 0.623, 0.625, 0.627, 0.629, 0.632, - & 0.634, 0.636, 0.638, 0.640, 0.642, 0.645, 0.647, 0.649, 0.651, - & 0.653, 0.655, 0.658, 0.660, 0.662, 0.664, 0.666, 0.668, 0.670, - & 0.672, 0.675, 0.677, 0.679, 0.681, 0.683, 0.685, 0.687, 0.689, - & 0.691, 0.693, 0.695, 0.698, 0.700, 0.702, 0.704, 0.706, 0.708, - & 0.710, 0.712, 0.714, 0.716, 0.718, 0.720, 0.722, 0.724, 0.726, - & 0.728, 0.730, 0.732, 0.734, 0.756, 0.775, 0.795, 0.814, 0.832, - & 0.851, 0.869, 0.886, 0.904, 0.921, 0.938, 0.955, 0.972, 0.988, - & 1.004, 1.020, 1.036, 1.051, 1.066, 1.081, 1.096, 1.111, 1.125, - & 1.140, 1.154, 1.168, 1.181, 1.195, 1.208, 1.222, 1.235, 1.248, - & 1.261, 1.273, 1.286, 1.298, 1.311, 1.323, 1.335, 1.347, 1.358, - & 1.370, 1.381, 1.393, 1.404, 1.415, 1.426, 1.437, 1.448, 1.459, - & 1.469, 1.480, 1.490, 1.500, 1.510, 1.521, 1.531, 1.540, 1.550, - & 1.560, 1.570, 1.579, 1.589, 1.598, 1.607, 1.616, 1.625, 1.635, - & 1.643, 1.652, 1.661, 1.670, 1.679, 1.687, 1.696, 1.704, 1.712, - & 1.721, 1.729, 1.737, 1.745, 1.753, 1.761, 1.769, 1.777, 1.785, - & 1.792, 1.800, 1.808, 1.815, 1.823, 1.830, 1.838, 1.845, 1.852, - & 1.859, 1.866, 1.874, 1.881, 1.888, 1.895, 1.901, 1.908, 1.915, - & 1.922, 1.929, 1.935, 1.942, 1.948, 1.955, 1.961, 1.968, 1.974, - & 1.980, 1.987, 1.993, 1.999, 2.005, 2.011, 2.018, 2.024, 2.030, - & 2.036, 2.041, 2.047, 2.053, 2.059, 2.065, 2.070, 2.076, 2.082, - & 2.087, 2.093, 2.099, 2.104, 2.110, 2.115, 2.120, 2.126, 2.131, - & 2.136, 2.142, 2.147, 2.152, 2.157, 2.163, 2.168, 2.173, 2.178, - & 2.183, 2.188, 2.193, 2.198, 2.203, 2.208, 2.212, 2.217, 2.222, - & 2.227, 2.232, 2.236 - & /) -! -! *** KNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC19M_273 = (/ - &-0.049,-0.112,-0.147,-0.173,-0.194,-0.213,-0.230,-0.245,-0.259, - &-0.272,-0.285,-0.297,-0.308,-0.319,-0.329,-0.339,-0.348,-0.358, - &-0.367,-0.376,-0.384,-0.392,-0.401,-0.408,-0.416,-0.424,-0.431, - &-0.439,-0.446,-0.453,-0.460,-0.466,-0.473,-0.479,-0.486,-0.492, - &-0.498,-0.504,-0.510,-0.516,-0.522,-0.528,-0.533,-0.539,-0.544, - &-0.550,-0.555,-0.560,-0.565,-0.571,-0.576,-0.580,-0.585,-0.590, - &-0.595,-0.600,-0.604,-0.609,-0.613,-0.618,-0.622,-0.627,-0.631, - &-0.635,-0.640,-0.644,-0.648,-0.652,-0.656,-0.660,-0.664,-0.668, - &-0.672,-0.676,-0.680,-0.684,-0.688,-0.692,-0.696,-0.700,-0.704, - &-0.707,-0.711,-0.715,-0.719,-0.722,-0.726,-0.730,-0.734,-0.737, - &-0.741,-0.745,-0.748,-0.752,-0.755,-0.759,-0.763,-0.766,-0.770, - &-0.773,-0.777,-0.780,-0.784,-0.788,-0.791,-0.795,-0.798,-0.801, - &-0.805,-0.808,-0.812,-0.815,-0.819,-0.822,-0.825,-0.829,-0.832, - &-0.835,-0.839,-0.842,-0.845,-0.849,-0.852,-0.855,-0.858,-0.862, - &-0.865,-0.868,-0.871,-0.874,-0.878,-0.881,-0.884,-0.887,-0.890, - &-0.893,-0.896,-0.899,-0.902,-0.905,-0.908,-0.911,-0.914,-0.917, - &-0.920,-0.923,-0.926,-0.929,-0.932,-0.935,-0.937,-0.940,-0.943, - &-0.946,-0.949,-0.951,-0.954,-0.957,-0.960,-0.963,-0.965,-0.968, - &-0.971,-0.973,-0.976,-0.979,-0.981,-0.984,-0.987,-0.989,-0.992, - &-0.994,-0.997,-0.999,-1.002,-1.005,-1.007,-1.010,-1.012,-1.015, - &-1.017,-1.020,-1.022,-1.024,-1.027,-1.029,-1.032,-1.034,-1.036, - &-1.039,-1.041,-1.044,-1.046,-1.048,-1.051,-1.053,-1.055,-1.057, - &-1.060,-1.062,-1.064,-1.067,-1.069,-1.071,-1.073,-1.075,-1.078, - &-1.080,-1.082,-1.084,-1.086,-1.089,-1.091,-1.093,-1.095,-1.097, - &-1.099,-1.101,-1.103,-1.106,-1.108,-1.110,-1.112,-1.114,-1.116, - &-1.118,-1.120,-1.122,-1.124,-1.126,-1.128,-1.130,-1.132,-1.134, - &-1.136,-1.138,-1.140,-1.142,-1.144,-1.145,-1.147,-1.149,-1.151, - &-1.153,-1.155,-1.157,-1.159,-1.160,-1.162,-1.164,-1.166,-1.168, - &-1.170,-1.171,-1.173,-1.175,-1.177,-1.179,-1.180,-1.182,-1.184, - &-1.186,-1.187,-1.189,-1.191,-1.193,-1.194,-1.196,-1.198,-1.199, - &-1.201,-1.203,-1.205,-1.206,-1.208,-1.210,-1.211,-1.213,-1.214, - &-1.216,-1.218,-1.219,-1.221,-1.223,-1.224,-1.226,-1.227,-1.229, - &-1.231,-1.232,-1.234,-1.235,-1.237,-1.238,-1.240,-1.241,-1.243, - &-1.244,-1.246,-1.248,-1.249,-1.251,-1.252,-1.254,-1.255,-1.256, - &-1.258,-1.259,-1.261,-1.262,-1.264,-1.265,-1.267,-1.268,-1.270, - &-1.271,-1.272,-1.274,-1.275,-1.277,-1.278,-1.279,-1.281,-1.282, - &-1.284,-1.285,-1.286,-1.288,-1.289,-1.290,-1.292,-1.293,-1.294, - &-1.296,-1.297,-1.298,-1.300,-1.301,-1.302,-1.304,-1.305,-1.306, - &-1.308,-1.309,-1.310,-1.311,-1.313,-1.314,-1.315,-1.316,-1.318, - &-1.319,-1.320,-1.321,-1.323,-1.324,-1.325,-1.326,-1.328,-1.329, - &-1.330,-1.331,-1.332,-1.334,-1.335,-1.336,-1.337,-1.338,-1.340, - &-1.341,-1.342,-1.343,-1.344,-1.345,-1.347,-1.348,-1.349,-1.350, - &-1.351,-1.352,-1.353,-1.355,-1.356,-1.357,-1.358,-1.359,-1.360, - &-1.361,-1.362,-1.364,-1.365,-1.366,-1.367,-1.368,-1.369,-1.370, - &-1.371,-1.372,-1.373,-1.374,-1.386,-1.396,-1.405,-1.415,-1.424, - &-1.433,-1.442,-1.450,-1.458,-1.466,-1.474,-1.482,-1.489,-1.496, - &-1.503,-1.510,-1.516,-1.523,-1.529,-1.535,-1.541,-1.547,-1.553, - &-1.558,-1.564,-1.569,-1.574,-1.580,-1.585,-1.589,-1.594,-1.599, - &-1.604,-1.608,-1.613,-1.617,-1.621,-1.626,-1.630,-1.634,-1.638, - &-1.642,-1.646,-1.650,-1.654,-1.657,-1.661,-1.665,-1.668,-1.672, - &-1.675,-1.679,-1.682,-1.685,-1.689,-1.692,-1.695,-1.698,-1.701, - &-1.705,-1.708,-1.711,-1.714,-1.717,-1.720,-1.723,-1.725,-1.728, - &-1.731,-1.734,-1.737,-1.739,-1.742,-1.745,-1.748,-1.750,-1.753, - &-1.755,-1.758,-1.761,-1.763,-1.766,-1.768,-1.771,-1.773,-1.776, - &-1.778,-1.781,-1.783,-1.785,-1.788,-1.790,-1.792,-1.795,-1.797, - &-1.799,-1.802,-1.804,-1.806,-1.809,-1.811,-1.813,-1.815,-1.817, - &-1.820,-1.822,-1.824,-1.826,-1.828,-1.830,-1.833,-1.835,-1.837, - &-1.839,-1.841,-1.843,-1.845,-1.847,-1.849,-1.851,-1.854,-1.856, - &-1.858,-1.860,-1.862,-1.864,-1.866,-1.868,-1.870,-1.872,-1.874, - &-1.876,-1.878,-1.880,-1.881,-1.883,-1.885,-1.887,-1.889,-1.891, - &-1.893,-1.895,-1.897,-1.899,-1.901,-1.903,-1.905,-1.906,-1.908, - &-1.910,-1.912,-1.914,-1.916,-1.918,-1.919,-1.921,-1.923,-1.925, - &-1.927,-1.929,-1.930 - & /) -! -! *** KCL -! - Real(kind=fp), Parameter, Dimension(561) :: BNC20M_273 = (/ - &-0.047,-0.100,-0.126,-0.143,-0.156,-0.167,-0.176,-0.183,-0.190, - &-0.195,-0.200,-0.205,-0.209,-0.212,-0.215,-0.218,-0.221,-0.224, - &-0.226,-0.228,-0.230,-0.232,-0.233,-0.235,-0.236,-0.238,-0.239, - &-0.240,-0.241,-0.242,-0.243,-0.244,-0.245,-0.246,-0.246,-0.247, - &-0.248,-0.248,-0.249,-0.249,-0.250,-0.250,-0.251,-0.251,-0.251, - &-0.252,-0.252,-0.252,-0.253,-0.253,-0.253,-0.253,-0.254,-0.254, - &-0.254,-0.254,-0.254,-0.254,-0.254,-0.255,-0.255,-0.255,-0.255, - &-0.255,-0.255,-0.255,-0.255,-0.255,-0.255,-0.255,-0.255,-0.255, - &-0.255,-0.255,-0.255,-0.255,-0.255,-0.255,-0.254,-0.254,-0.254, - &-0.254,-0.254,-0.254,-0.254,-0.253,-0.253,-0.253,-0.253,-0.253, - &-0.252,-0.252,-0.252,-0.252,-0.251,-0.251,-0.251,-0.250,-0.250, - &-0.250,-0.249,-0.249,-0.249,-0.248,-0.248,-0.248,-0.247,-0.247, - &-0.247,-0.246,-0.246,-0.245,-0.245,-0.245,-0.244,-0.244,-0.243, - &-0.243,-0.243,-0.242,-0.242,-0.241,-0.241,-0.240,-0.240,-0.240, - &-0.239,-0.239,-0.238,-0.238,-0.237,-0.237,-0.236,-0.236,-0.235, - &-0.235,-0.234,-0.234,-0.234,-0.233,-0.233,-0.232,-0.232,-0.231, - &-0.231,-0.230,-0.230,-0.229,-0.229,-0.228,-0.228,-0.227,-0.227, - &-0.226,-0.226,-0.225,-0.225,-0.224,-0.224,-0.224,-0.223,-0.223, - &-0.222,-0.222,-0.221,-0.221,-0.220,-0.220,-0.219,-0.219,-0.218, - &-0.218,-0.217,-0.217,-0.216,-0.216,-0.215,-0.215,-0.214,-0.214, - &-0.213,-0.213,-0.212,-0.212,-0.211,-0.211,-0.210,-0.210,-0.209, - &-0.209,-0.208,-0.208,-0.207,-0.207,-0.207,-0.206,-0.206,-0.205, - &-0.205,-0.204,-0.204,-0.203,-0.203,-0.202,-0.202,-0.201,-0.201, - &-0.200,-0.200,-0.199,-0.199,-0.198,-0.198,-0.197,-0.197,-0.196, - &-0.196,-0.195,-0.195,-0.194,-0.194,-0.194,-0.193,-0.193,-0.192, - &-0.192,-0.191,-0.191,-0.190,-0.190,-0.189,-0.189,-0.188,-0.188, - &-0.187,-0.187,-0.186,-0.186,-0.186,-0.185,-0.185,-0.184,-0.184, - &-0.183,-0.183,-0.182,-0.182,-0.181,-0.181,-0.180,-0.180,-0.180, - &-0.179,-0.179,-0.178,-0.178,-0.177,-0.177,-0.176,-0.176,-0.175, - &-0.175,-0.174,-0.174,-0.174,-0.173,-0.173,-0.172,-0.172,-0.171, - &-0.171,-0.170,-0.170,-0.170,-0.169,-0.169,-0.168,-0.168,-0.167, - &-0.167,-0.166,-0.166,-0.166,-0.165,-0.165,-0.164,-0.164,-0.163, - &-0.163,-0.162,-0.162,-0.162,-0.161,-0.161,-0.160,-0.160,-0.159, - &-0.159,-0.159,-0.158,-0.158,-0.157,-0.157,-0.156,-0.156,-0.156, - &-0.155,-0.155,-0.154,-0.154,-0.153,-0.153,-0.153,-0.152,-0.152, - &-0.151,-0.151,-0.150,-0.150,-0.150,-0.149,-0.149,-0.148,-0.148, - &-0.148,-0.147,-0.147,-0.146,-0.146,-0.145,-0.145,-0.145,-0.144, - &-0.144,-0.143,-0.143,-0.143,-0.142,-0.142,-0.141,-0.141,-0.141, - &-0.140,-0.140,-0.139,-0.139,-0.139,-0.138,-0.138,-0.137,-0.137, - &-0.137,-0.136,-0.136,-0.135,-0.135,-0.135,-0.134,-0.134,-0.133, - &-0.133,-0.133,-0.132,-0.132,-0.131,-0.131,-0.131,-0.130,-0.130, - &-0.129,-0.129,-0.129,-0.128,-0.128,-0.128,-0.127,-0.127,-0.126, - &-0.126,-0.126,-0.125,-0.125,-0.124,-0.124,-0.124,-0.123,-0.123, - &-0.123,-0.122,-0.122,-0.121,-0.121,-0.121,-0.120,-0.120,-0.120, - &-0.119,-0.119,-0.118,-0.118,-0.114,-0.111,-0.107,-0.103,-0.100, - &-0.097,-0.093,-0.090,-0.087,-0.084,-0.080,-0.077,-0.074,-0.071, - &-0.068,-0.065,-0.063,-0.060,-0.057,-0.054,-0.052,-0.049,-0.046, - &-0.044,-0.041,-0.039,-0.036,-0.034,-0.031,-0.029,-0.027,-0.024, - &-0.022,-0.020,-0.018,-0.016,-0.013,-0.011,-0.009,-0.007,-0.005, - &-0.003,-0.001, 0.001, 0.003, 0.004, 0.006, 0.008, 0.010, 0.012, - & 0.013, 0.015, 0.017, 0.018, 0.020, 0.022, 0.023, 0.025, 0.026, - & 0.028, 0.030, 0.031, 0.032, 0.034, 0.035, 0.037, 0.038, 0.040, - & 0.041, 0.042, 0.044, 0.045, 0.046, 0.047, 0.049, 0.050, 0.051, - & 0.052, 0.053, 0.055, 0.056, 0.057, 0.058, 0.059, 0.060, 0.061, - & 0.062, 0.063, 0.064, 0.065, 0.066, 0.067, 0.068, 0.069, 0.070, - & 0.071, 0.072, 0.073, 0.074, 0.075, 0.075, 0.076, 0.077, 0.078, - & 0.079, 0.079, 0.080, 0.081, 0.082, 0.083, 0.083, 0.084, 0.085, - & 0.085, 0.086, 0.087, 0.087, 0.088, 0.089, 0.089, 0.090, 0.091, - & 0.091, 0.092, 0.092, 0.093, 0.094, 0.094, 0.095, 0.095, 0.096, - & 0.096, 0.097, 0.097, 0.098, 0.098, 0.099, 0.099, 0.100, 0.100, - & 0.100, 0.101, 0.101, 0.102, 0.102, 0.103, 0.103, 0.103, 0.104, - & 0.104, 0.104, 0.105, 0.105, 0.105, 0.106, 0.106, 0.106, 0.107, - & 0.107, 0.107, 0.108 - & /) -! -! *** MGSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC21M_273 = (/ - &-0.190,-0.411,-0.520,-0.597,-0.656,-0.705,-0.746,-0.782,-0.814, - &-0.843,-0.868,-0.892,-0.914,-0.934,-0.953,-0.970,-0.986,-1.002, - &-1.016,-1.030,-1.043,-1.056,-1.068,-1.079,-1.090,-1.100,-1.110, - &-1.120,-1.129,-1.138,-1.147,-1.155,-1.163,-1.171,-1.178,-1.186, - &-1.193,-1.200,-1.206,-1.213,-1.219,-1.225,-1.231,-1.237,-1.243, - &-1.249,-1.254,-1.260,-1.265,-1.270,-1.275,-1.280,-1.285,-1.289, - &-1.294,-1.299,-1.303,-1.307,-1.312,-1.316,-1.320,-1.324,-1.328, - &-1.332,-1.336,-1.340,-1.344,-1.347,-1.351,-1.354,-1.358,-1.361, - &-1.365,-1.368,-1.372,-1.375,-1.378,-1.381,-1.384,-1.387,-1.390, - &-1.393,-1.396,-1.399,-1.402,-1.405,-1.408,-1.411,-1.413,-1.416, - &-1.419,-1.421,-1.424,-1.426,-1.429,-1.431,-1.434,-1.436,-1.439, - &-1.441,-1.443,-1.446,-1.448,-1.450,-1.452,-1.455,-1.457,-1.459, - &-1.461,-1.463,-1.465,-1.467,-1.469,-1.471,-1.473,-1.475,-1.477, - &-1.479,-1.481,-1.483,-1.485,-1.487,-1.489,-1.491,-1.493,-1.494, - &-1.496,-1.498,-1.500,-1.501,-1.503,-1.505,-1.507,-1.508,-1.510, - &-1.512,-1.513,-1.515,-1.517,-1.518,-1.520,-1.521,-1.523,-1.525, - &-1.526,-1.528,-1.529,-1.531,-1.532,-1.534,-1.535,-1.537,-1.538, - &-1.540,-1.541,-1.543,-1.544,-1.546,-1.547,-1.548,-1.550,-1.551, - &-1.553,-1.554,-1.555,-1.557,-1.558,-1.559,-1.561,-1.562,-1.563, - &-1.565,-1.566,-1.567,-1.569,-1.570,-1.571,-1.573,-1.574,-1.575, - &-1.576,-1.578,-1.579,-1.580,-1.581,-1.583,-1.584,-1.585,-1.586, - &-1.587,-1.589,-1.590,-1.591,-1.592,-1.593,-1.594,-1.596,-1.597, - &-1.598,-1.599,-1.600,-1.601,-1.603,-1.604,-1.605,-1.606,-1.607, - &-1.608,-1.609,-1.610,-1.611,-1.613,-1.614,-1.615,-1.616,-1.617, - &-1.618,-1.619,-1.620,-1.621,-1.622,-1.623,-1.624,-1.625,-1.626, - &-1.627,-1.628,-1.630,-1.631,-1.632,-1.633,-1.634,-1.635,-1.636, - &-1.637,-1.638,-1.639,-1.640,-1.641,-1.642,-1.643,-1.644,-1.645, - &-1.646,-1.647,-1.647,-1.648,-1.649,-1.650,-1.651,-1.652,-1.653, - &-1.654,-1.655,-1.656,-1.657,-1.658,-1.659,-1.660,-1.661,-1.662, - &-1.663,-1.664,-1.664,-1.665,-1.666,-1.667,-1.668,-1.669,-1.670, - &-1.671,-1.672,-1.673,-1.674,-1.674,-1.675,-1.676,-1.677,-1.678, - &-1.679,-1.680,-1.681,-1.682,-1.682,-1.683,-1.684,-1.685,-1.686, - &-1.687,-1.688,-1.688,-1.689,-1.690,-1.691,-1.692,-1.693,-1.694, - &-1.694,-1.695,-1.696,-1.697,-1.698,-1.699,-1.700,-1.700,-1.701, - &-1.702,-1.703,-1.704,-1.705,-1.705,-1.706,-1.707,-1.708,-1.709, - &-1.709,-1.710,-1.711,-1.712,-1.713,-1.713,-1.714,-1.715,-1.716, - &-1.717,-1.718,-1.718,-1.719,-1.720,-1.721,-1.722,-1.722,-1.723, - &-1.724,-1.725,-1.725,-1.726,-1.727,-1.728,-1.729,-1.729,-1.730, - &-1.731,-1.732,-1.733,-1.733,-1.734,-1.735,-1.736,-1.736,-1.737, - &-1.738,-1.739,-1.739,-1.740,-1.741,-1.742,-1.743,-1.743,-1.744, - &-1.745,-1.746,-1.746,-1.747,-1.748,-1.749,-1.749,-1.750,-1.751, - &-1.752,-1.752,-1.753,-1.754,-1.755,-1.755,-1.756,-1.757,-1.758, - &-1.758,-1.759,-1.760,-1.760,-1.761,-1.762,-1.763,-1.763,-1.764, - &-1.765,-1.766,-1.766,-1.767,-1.768,-1.769,-1.769,-1.770,-1.771, - &-1.771,-1.772,-1.773,-1.774,-1.781,-1.788,-1.795,-1.802,-1.809, - &-1.816,-1.823,-1.830,-1.836,-1.843,-1.849,-1.856,-1.862,-1.869, - &-1.875,-1.882,-1.888,-1.894,-1.901,-1.907,-1.913,-1.919,-1.926, - &-1.932,-1.938,-1.944,-1.950,-1.956,-1.962,-1.968,-1.974,-1.981, - &-1.987,-1.993,-1.999,-2.004,-2.010,-2.016,-2.022,-2.028,-2.034, - &-2.040,-2.046,-2.052,-2.058,-2.064,-2.069,-2.075,-2.081,-2.087, - &-2.093,-2.099,-2.104,-2.110,-2.116,-2.122,-2.128,-2.133,-2.139, - &-2.145,-2.151,-2.157,-2.162,-2.168,-2.174,-2.180,-2.185,-2.191, - &-2.197,-2.202,-2.208,-2.214,-2.220,-2.225,-2.231,-2.237,-2.242, - &-2.248,-2.254,-2.260,-2.265,-2.271,-2.277,-2.282,-2.288,-2.294, - &-2.299,-2.305,-2.311,-2.316,-2.322,-2.328,-2.333,-2.339,-2.345, - &-2.350,-2.356,-2.361,-2.367,-2.373,-2.378,-2.384,-2.390,-2.395, - &-2.401,-2.407,-2.412,-2.418,-2.423,-2.429,-2.435,-2.440,-2.446, - &-2.452,-2.457,-2.463,-2.468,-2.474,-2.480,-2.485,-2.491,-2.496, - &-2.502,-2.508,-2.513,-2.519,-2.524,-2.530,-2.536,-2.541,-2.547, - &-2.552,-2.558,-2.564,-2.569,-2.575,-2.580,-2.586,-2.592,-2.597, - &-2.603,-2.608,-2.614,-2.620,-2.625,-2.631,-2.636,-2.642,-2.647, - &-2.653,-2.659,-2.664,-2.670,-2.675,-2.681,-2.686,-2.692,-2.698, - &-2.703,-2.709,-2.714 - & /) -! -! *** MGNO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC22M_273 = (/ - &-0.093,-0.193,-0.238,-0.268,-0.289,-0.305,-0.318,-0.328,-0.336, - &-0.343,-0.348,-0.352,-0.356,-0.359,-0.361,-0.362,-0.364,-0.364, - &-0.364,-0.364,-0.364,-0.364,-0.363,-0.362,-0.360,-0.359,-0.357, - &-0.355,-0.354,-0.352,-0.349,-0.347,-0.345,-0.342,-0.340,-0.337, - &-0.335,-0.332,-0.329,-0.326,-0.324,-0.321,-0.318,-0.315,-0.312, - &-0.309,-0.306,-0.303,-0.300,-0.297,-0.294,-0.290,-0.287,-0.284, - &-0.281,-0.278,-0.275,-0.271,-0.268,-0.265,-0.262,-0.258,-0.255, - &-0.252,-0.249,-0.245,-0.242,-0.239,-0.235,-0.232,-0.229,-0.225, - &-0.222,-0.218,-0.215,-0.211,-0.208,-0.204,-0.201,-0.197,-0.194, - &-0.190,-0.186,-0.183,-0.179,-0.175,-0.172,-0.168,-0.164,-0.160, - &-0.156,-0.152,-0.148,-0.144,-0.140,-0.136,-0.132,-0.128,-0.124, - &-0.120,-0.116,-0.112,-0.107,-0.103,-0.099,-0.095,-0.090,-0.086, - &-0.082,-0.078,-0.073,-0.069,-0.065,-0.060,-0.056,-0.051,-0.047, - &-0.043,-0.038,-0.034,-0.029,-0.025,-0.020,-0.016,-0.011,-0.007, - &-0.003, 0.002, 0.006, 0.011, 0.015, 0.020, 0.024, 0.029, 0.033, - & 0.038, 0.042, 0.046, 0.051, 0.055, 0.060, 0.064, 0.069, 0.073, - & 0.078, 0.082, 0.086, 0.091, 0.095, 0.100, 0.104, 0.109, 0.113, - & 0.117, 0.122, 0.126, 0.130, 0.135, 0.139, 0.144, 0.148, 0.152, - & 0.157, 0.161, 0.165, 0.170, 0.174, 0.178, 0.183, 0.187, 0.191, - & 0.196, 0.200, 0.204, 0.209, 0.213, 0.217, 0.221, 0.226, 0.230, - & 0.234, 0.239, 0.243, 0.247, 0.251, 0.256, 0.260, 0.264, 0.268, - & 0.272, 0.277, 0.281, 0.285, 0.289, 0.293, 0.298, 0.302, 0.306, - & 0.310, 0.314, 0.318, 0.323, 0.327, 0.331, 0.335, 0.339, 0.343, - & 0.347, 0.351, 0.355, 0.360, 0.364, 0.368, 0.372, 0.376, 0.380, - & 0.384, 0.388, 0.392, 0.396, 0.400, 0.404, 0.408, 0.412, 0.416, - & 0.420, 0.424, 0.428, 0.432, 0.436, 0.440, 0.444, 0.448, 0.452, - & 0.456, 0.460, 0.464, 0.468, 0.472, 0.475, 0.479, 0.483, 0.487, - & 0.491, 0.495, 0.499, 0.503, 0.507, 0.510, 0.514, 0.518, 0.522, - & 0.526, 0.530, 0.533, 0.537, 0.541, 0.545, 0.549, 0.552, 0.556, - & 0.560, 0.564, 0.568, 0.571, 0.575, 0.579, 0.583, 0.586, 0.590, - & 0.594, 0.598, 0.601, 0.605, 0.609, 0.612, 0.616, 0.620, 0.623, - & 0.627, 0.631, 0.634, 0.638, 0.642, 0.645, 0.649, 0.653, 0.656, - & 0.660, 0.664, 0.667, 0.671, 0.674, 0.678, 0.682, 0.685, 0.689, - & 0.692, 0.696, 0.699, 0.703, 0.707, 0.710, 0.714, 0.717, 0.721, - & 0.724, 0.728, 0.731, 0.735, 0.738, 0.742, 0.745, 0.749, 0.752, - & 0.756, 0.759, 0.763, 0.766, 0.769, 0.773, 0.776, 0.780, 0.783, - & 0.787, 0.790, 0.793, 0.797, 0.800, 0.804, 0.807, 0.810, 0.814, - & 0.817, 0.821, 0.824, 0.827, 0.831, 0.834, 0.837, 0.841, 0.844, - & 0.847, 0.851, 0.854, 0.857, 0.861, 0.864, 0.867, 0.870, 0.874, - & 0.877, 0.880, 0.884, 0.887, 0.890, 0.893, 0.897, 0.900, 0.903, - & 0.906, 0.910, 0.913, 0.916, 0.919, 0.922, 0.926, 0.929, 0.932, - & 0.935, 0.938, 0.942, 0.945, 0.948, 0.951, 0.954, 0.957, 0.961, - & 0.964, 0.967, 0.970, 0.973, 0.976, 0.979, 0.983, 0.986, 0.989, - & 0.992, 0.995, 0.998, 1.001, 1.004, 1.007, 1.010, 1.013, 1.016, - & 1.020, 1.023, 1.026, 1.029, 1.061, 1.091, 1.120, 1.149, 1.178, - & 1.206, 1.233, 1.261, 1.288, 1.314, 1.340, 1.366, 1.391, 1.417, - & 1.441, 1.466, 1.490, 1.514, 1.537, 1.560, 1.583, 1.606, 1.628, - & 1.650, 1.672, 1.694, 1.715, 1.736, 1.757, 1.777, 1.797, 1.817, - & 1.837, 1.857, 1.876, 1.895, 1.914, 1.933, 1.951, 1.970, 1.988, - & 2.006, 2.023, 2.041, 2.058, 2.075, 2.092, 2.109, 2.126, 2.142, - & 2.159, 2.175, 2.191, 2.207, 2.222, 2.238, 2.253, 2.268, 2.283, - & 2.298, 2.313, 2.328, 2.342, 2.357, 2.371, 2.385, 2.399, 2.413, - & 2.426, 2.440, 2.453, 2.467, 2.480, 2.493, 2.506, 2.519, 2.532, - & 2.545, 2.557, 2.570, 2.582, 2.594, 2.606, 2.618, 2.630, 2.642, - & 2.654, 2.666, 2.677, 2.689, 2.700, 2.711, 2.722, 2.733, 2.744, - & 2.755, 2.766, 2.777, 2.788, 2.798, 2.809, 2.819, 2.829, 2.840, - & 2.850, 2.860, 2.870, 2.880, 2.890, 2.900, 2.909, 2.919, 2.929, - & 2.938, 2.948, 2.957, 2.966, 2.976, 2.985, 2.994, 3.003, 3.012, - & 3.021, 3.030, 3.039, 3.047, 3.056, 3.065, 3.073, 3.082, 3.090, - & 3.099, 3.107, 3.115, 3.123, 3.132, 3.140, 3.148, 3.156, 3.164, - & 3.172, 3.179, 3.187, 3.195, 3.203, 3.210, 3.218, 3.225, 3.233, - & 3.240, 3.248, 3.255, 3.262, 3.270, 3.277, 3.284, 3.291, 3.298, - & 3.305, 3.312, 3.319 - & /) -! -! *** MGCL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC23M_273 = (/ - &-0.092,-0.190,-0.233,-0.261,-0.280,-0.295,-0.306,-0.314,-0.321, - &-0.326,-0.330,-0.333,-0.335,-0.336,-0.336,-0.336,-0.336,-0.335, - &-0.334,-0.332,-0.330,-0.328,-0.326,-0.323,-0.320,-0.317,-0.314, - &-0.311,-0.308,-0.304,-0.300,-0.297,-0.293,-0.289,-0.285,-0.281, - &-0.277,-0.272,-0.268,-0.264,-0.259,-0.255,-0.251,-0.246,-0.242, - &-0.237,-0.233,-0.228,-0.224,-0.219,-0.215,-0.210,-0.205,-0.201, - &-0.196,-0.192,-0.187,-0.182,-0.178,-0.173,-0.168,-0.164,-0.159, - &-0.154,-0.150,-0.145,-0.140,-0.135,-0.131,-0.126,-0.121,-0.116, - &-0.111,-0.106,-0.102,-0.097,-0.092,-0.087,-0.082,-0.077,-0.072, - &-0.067,-0.062,-0.056,-0.051,-0.046,-0.041,-0.036,-0.030,-0.025, - &-0.019,-0.014,-0.009,-0.003, 0.002, 0.008, 0.013, 0.019, 0.025, - & 0.030, 0.036, 0.042, 0.047, 0.053, 0.059, 0.065, 0.071, 0.077, - & 0.082, 0.088, 0.094, 0.100, 0.106, 0.112, 0.118, 0.124, 0.130, - & 0.136, 0.142, 0.148, 0.154, 0.160, 0.166, 0.172, 0.178, 0.184, - & 0.190, 0.196, 0.202, 0.208, 0.214, 0.220, 0.226, 0.232, 0.238, - & 0.244, 0.250, 0.256, 0.262, 0.268, 0.274, 0.280, 0.286, 0.292, - & 0.298, 0.304, 0.310, 0.316, 0.322, 0.328, 0.334, 0.340, 0.346, - & 0.352, 0.358, 0.364, 0.370, 0.376, 0.382, 0.387, 0.393, 0.399, - & 0.405, 0.411, 0.417, 0.423, 0.429, 0.434, 0.440, 0.446, 0.452, - & 0.458, 0.463, 0.469, 0.475, 0.481, 0.487, 0.492, 0.498, 0.504, - & 0.509, 0.515, 0.521, 0.527, 0.532, 0.538, 0.544, 0.549, 0.555, - & 0.561, 0.566, 0.572, 0.578, 0.583, 0.589, 0.594, 0.600, 0.606, - & 0.611, 0.617, 0.622, 0.628, 0.633, 0.639, 0.645, 0.650, 0.656, - & 0.661, 0.667, 0.672, 0.678, 0.683, 0.688, 0.694, 0.699, 0.705, - & 0.710, 0.716, 0.721, 0.726, 0.732, 0.737, 0.743, 0.748, 0.753, - & 0.759, 0.764, 0.769, 0.775, 0.780, 0.785, 0.791, 0.796, 0.801, - & 0.807, 0.812, 0.817, 0.822, 0.828, 0.833, 0.838, 0.843, 0.848, - & 0.854, 0.859, 0.864, 0.869, 0.874, 0.879, 0.885, 0.890, 0.895, - & 0.900, 0.905, 0.910, 0.915, 0.920, 0.925, 0.931, 0.936, 0.941, - & 0.946, 0.951, 0.956, 0.961, 0.966, 0.971, 0.976, 0.981, 0.986, - & 0.991, 0.996, 1.001, 1.006, 1.011, 1.015, 1.020, 1.025, 1.030, - & 1.035, 1.040, 1.045, 1.050, 1.055, 1.059, 1.064, 1.069, 1.074, - & 1.079, 1.084, 1.088, 1.093, 1.098, 1.103, 1.108, 1.112, 1.117, - & 1.122, 1.127, 1.131, 1.136, 1.141, 1.146, 1.150, 1.155, 1.160, - & 1.164, 1.169, 1.174, 1.178, 1.183, 1.188, 1.192, 1.197, 1.201, - & 1.206, 1.211, 1.215, 1.220, 1.224, 1.229, 1.234, 1.238, 1.243, - & 1.247, 1.252, 1.256, 1.261, 1.265, 1.270, 1.274, 1.279, 1.283, - & 1.288, 1.292, 1.297, 1.301, 1.306, 1.310, 1.315, 1.319, 1.323, - & 1.328, 1.332, 1.337, 1.341, 1.345, 1.350, 1.354, 1.359, 1.363, - & 1.367, 1.372, 1.376, 1.380, 1.385, 1.389, 1.393, 1.398, 1.402, - & 1.406, 1.410, 1.415, 1.419, 1.423, 1.428, 1.432, 1.436, 1.440, - & 1.444, 1.449, 1.453, 1.457, 1.461, 1.466, 1.470, 1.474, 1.478, - & 1.482, 1.486, 1.491, 1.495, 1.499, 1.503, 1.507, 1.511, 1.515, - & 1.519, 1.524, 1.528, 1.532, 1.536, 1.540, 1.544, 1.548, 1.552, - & 1.556, 1.560, 1.564, 1.568, 1.611, 1.651, 1.690, 1.728, 1.765, - & 1.802, 1.839, 1.875, 1.911, 1.945, 1.980, 2.014, 2.048, 2.081, - & 2.113, 2.146, 2.177, 2.209, 2.240, 2.270, 2.300, 2.330, 2.360, - & 2.389, 2.417, 2.446, 2.474, 2.502, 2.529, 2.556, 2.583, 2.609, - & 2.635, 2.661, 2.686, 2.712, 2.737, 2.761, 2.786, 2.810, 2.834, - & 2.857, 2.881, 2.904, 2.927, 2.950, 2.972, 2.994, 3.016, 3.038, - & 3.060, 3.081, 3.102, 3.123, 3.144, 3.164, 3.184, 3.205, 3.225, - & 3.244, 3.264, 3.283, 3.302, 3.322, 3.340, 3.359, 3.378, 3.396, - & 3.414, 3.432, 3.450, 3.468, 3.485, 3.503, 3.520, 3.537, 3.554, - & 3.571, 3.588, 3.604, 3.621, 3.637, 3.653, 3.669, 3.685, 3.701, - & 3.717, 3.732, 3.748, 3.763, 3.778, 3.793, 3.808, 3.823, 3.838, - & 3.852, 3.867, 3.881, 3.896, 3.910, 3.924, 3.938, 3.952, 3.966, - & 3.979, 3.993, 4.006, 4.020, 4.033, 4.046, 4.059, 4.072, 4.085, - & 4.098, 4.111, 4.123, 4.136, 4.148, 4.161, 4.173, 4.185, 4.197, - & 4.210, 4.222, 4.233, 4.245, 4.257, 4.269, 4.280, 4.292, 4.303, - & 4.315, 4.326, 4.337, 4.348, 4.359, 4.370, 4.381, 4.392, 4.403, - & 4.414, 4.424, 4.435, 4.446, 4.456, 4.466, 4.477, 4.487, 4.497, - & 4.507, 4.518, 4.528, 4.538, 4.548, 4.557, 4.567, 4.577, 4.587, - & 4.596, 4.606, 4.615 - & /) - - ! Formerly BLOCK DATA KMCF298 -! -! *** NaCl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC01M_298 = (/ - &-0.045,-0.095,-0.117,-0.132,-0.142,-0.150,-0.157,-0.162,-0.166, - &-0.170,-0.173,-0.175,-0.177,-0.179,-0.180,-0.181,-0.182,-0.182, - &-0.183,-0.183,-0.183,-0.183,-0.182,-0.182,-0.182,-0.181,-0.181, - &-0.180,-0.179,-0.178,-0.178,-0.177,-0.176,-0.175,-0.174,-0.173, - &-0.172,-0.170,-0.169,-0.168,-0.167,-0.166,-0.164,-0.163,-0.162, - &-0.161,-0.159,-0.158,-0.157,-0.155,-0.154,-0.153,-0.151,-0.150, - &-0.148,-0.147,-0.146,-0.144,-0.143,-0.141,-0.140,-0.138,-0.137, - &-0.136,-0.134,-0.133,-0.131,-0.130,-0.128,-0.127,-0.125,-0.124, - &-0.122,-0.121,-0.119,-0.117,-0.116,-0.114,-0.113,-0.111,-0.110, - &-0.108,-0.106,-0.105,-0.103,-0.101,-0.100,-0.098,-0.096,-0.094, - &-0.093,-0.091,-0.089,-0.087,-0.086,-0.084,-0.082,-0.080,-0.078, - &-0.076,-0.075,-0.073,-0.071,-0.069,-0.067,-0.065,-0.063,-0.061, - &-0.059,-0.057,-0.055,-0.053,-0.051,-0.049,-0.047,-0.046,-0.044, - &-0.042,-0.040,-0.038,-0.036,-0.034,-0.032,-0.030,-0.028,-0.026, - &-0.024,-0.022,-0.019,-0.017,-0.015,-0.013,-0.011,-0.009,-0.007, - &-0.005,-0.003,-0.001, 0.001, 0.003, 0.005, 0.007, 0.009, 0.011, - & 0.013, 0.015, 0.017, 0.019, 0.021, 0.023, 0.025, 0.027, 0.029, - & 0.031, 0.033, 0.035, 0.037, 0.039, 0.041, 0.043, 0.045, 0.047, - & 0.049, 0.050, 0.052, 0.054, 0.056, 0.058, 0.060, 0.062, 0.064, - & 0.066, 0.068, 0.070, 0.072, 0.074, 0.076, 0.078, 0.080, 0.082, - & 0.084, 0.086, 0.088, 0.090, 0.091, 0.093, 0.095, 0.097, 0.099, - & 0.101, 0.103, 0.105, 0.107, 0.109, 0.111, 0.113, 0.114, 0.116, - & 0.118, 0.120, 0.122, 0.124, 0.126, 0.128, 0.130, 0.131, 0.133, - & 0.135, 0.137, 0.139, 0.141, 0.143, 0.145, 0.146, 0.148, 0.150, - & 0.152, 0.154, 0.156, 0.158, 0.159, 0.161, 0.163, 0.165, 0.167, - & 0.169, 0.170, 0.172, 0.174, 0.176, 0.178, 0.180, 0.181, 0.183, - & 0.185, 0.187, 0.189, 0.190, 0.192, 0.194, 0.196, 0.198, 0.199, - & 0.201, 0.203, 0.205, 0.206, 0.208, 0.210, 0.212, 0.214, 0.215, - & 0.217, 0.219, 0.221, 0.222, 0.224, 0.226, 0.228, 0.229, 0.231, - & 0.233, 0.235, 0.236, 0.238, 0.240, 0.242, 0.243, 0.245, 0.247, - & 0.248, 0.250, 0.252, 0.254, 0.255, 0.257, 0.259, 0.260, 0.262, - & 0.264, 0.265, 0.267, 0.269, 0.271, 0.272, 0.274, 0.276, 0.277, - & 0.279, 0.281, 0.282, 0.284, 0.286, 0.287, 0.289, 0.291, 0.292, - & 0.294, 0.296, 0.297, 0.299, 0.301, 0.302, 0.304, 0.305, 0.307, - & 0.309, 0.310, 0.312, 0.314, 0.315, 0.317, 0.318, 0.320, 0.322, - & 0.323, 0.325, 0.327, 0.328, 0.330, 0.331, 0.333, 0.335, 0.336, - & 0.338, 0.339, 0.341, 0.343, 0.344, 0.346, 0.347, 0.349, 0.350, - & 0.352, 0.354, 0.355, 0.357, 0.358, 0.360, 0.361, 0.363, 0.364, - & 0.366, 0.368, 0.369, 0.371, 0.372, 0.374, 0.375, 0.377, 0.378, - & 0.380, 0.381, 0.383, 0.384, 0.386, 0.388, 0.389, 0.391, 0.392, - & 0.394, 0.395, 0.397, 0.398, 0.400, 0.401, 0.403, 0.404, 0.406, - & 0.407, 0.409, 0.410, 0.412, 0.413, 0.415, 0.416, 0.418, 0.419, - & 0.421, 0.422, 0.423, 0.425, 0.426, 0.428, 0.429, 0.431, 0.432, - & 0.434, 0.435, 0.437, 0.438, 0.440, 0.441, 0.442, 0.444, 0.445, - & 0.447, 0.448, 0.450, 0.451, 0.466, 0.480, 0.494, 0.508, 0.522, - & 0.535, 0.548, 0.561, 0.574, 0.586, 0.599, 0.611, 0.624, 0.636, - & 0.648, 0.659, 0.671, 0.683, 0.694, 0.705, 0.716, 0.727, 0.738, - & 0.749, 0.760, 0.770, 0.781, 0.791, 0.801, 0.811, 0.821, 0.831, - & 0.841, 0.851, 0.861, 0.870, 0.879, 0.889, 0.898, 0.907, 0.916, - & 0.925, 0.934, 0.943, 0.952, 0.961, 0.969, 0.978, 0.986, 0.995, - & 1.003, 1.011, 1.019, 1.028, 1.036, 1.044, 1.051, 1.059, 1.067, - & 1.075, 1.082, 1.090, 1.098, 1.105, 1.113, 1.120, 1.127, 1.135, - & 1.142, 1.149, 1.156, 1.163, 1.170, 1.177, 1.184, 1.191, 1.198, - & 1.204, 1.211, 1.218, 1.224, 1.231, 1.237, 1.244, 1.250, 1.257, - & 1.263, 1.269, 1.276, 1.282, 1.288, 1.294, 1.300, 1.307, 1.313, - & 1.319, 1.325, 1.330, 1.336, 1.342, 1.348, 1.354, 1.360, 1.365, - & 1.371, 1.377, 1.382, 1.388, 1.393, 1.399, 1.404, 1.410, 1.415, - & 1.421, 1.426, 1.431, 1.437, 1.442, 1.447, 1.453, 1.458, 1.463, - & 1.468, 1.473, 1.478, 1.483, 1.488, 1.493, 1.498, 1.503, 1.508, - & 1.513, 1.518, 1.523, 1.528, 1.532, 1.537, 1.542, 1.547, 1.551, - & 1.556, 1.561, 1.565, 1.570, 1.575, 1.579, 1.584, 1.588, 1.593, - & 1.597, 1.602, 1.606, 1.611, 1.615, 1.620, 1.624, 1.628, 1.633, - & 1.637, 1.641, 1.645 - & /) -! -! *** Na2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC02M_298 = (/ - &-0.093,-0.202,-0.256,-0.295,-0.325,-0.349,-0.371,-0.389,-0.405, - &-0.420,-0.434,-0.446,-0.457,-0.468,-0.478,-0.487,-0.496,-0.504, - &-0.512,-0.520,-0.527,-0.533,-0.540,-0.546,-0.552,-0.558,-0.563, - &-0.569,-0.574,-0.579,-0.584,-0.588,-0.593,-0.597,-0.602,-0.606, - &-0.610,-0.614,-0.618,-0.621,-0.625,-0.628,-0.632,-0.635,-0.639, - &-0.642,-0.645,-0.648,-0.651,-0.654,-0.657,-0.660,-0.663,-0.665, - &-0.668,-0.671,-0.673,-0.676,-0.678,-0.681,-0.683,-0.686,-0.688, - &-0.690,-0.692,-0.695,-0.697,-0.699,-0.701,-0.703,-0.705,-0.707, - &-0.709,-0.711,-0.713,-0.715,-0.717,-0.719,-0.721,-0.723,-0.724, - &-0.726,-0.728,-0.730,-0.731,-0.733,-0.735,-0.737,-0.738,-0.740, - &-0.741,-0.743,-0.745,-0.746,-0.748,-0.749,-0.751,-0.752,-0.754, - &-0.755,-0.757,-0.758,-0.760,-0.761,-0.763,-0.764,-0.766,-0.767, - &-0.768,-0.770,-0.771,-0.772,-0.774,-0.775,-0.776,-0.778,-0.779, - &-0.780,-0.782,-0.783,-0.784,-0.785,-0.787,-0.788,-0.789,-0.790, - &-0.791,-0.793,-0.794,-0.795,-0.796,-0.797,-0.798,-0.800,-0.801, - &-0.802,-0.803,-0.804,-0.805,-0.806,-0.807,-0.808,-0.810,-0.811, - &-0.812,-0.813,-0.814,-0.815,-0.816,-0.817,-0.818,-0.819,-0.820, - &-0.821,-0.822,-0.823,-0.824,-0.825,-0.826,-0.827,-0.828,-0.829, - &-0.830,-0.831,-0.832,-0.832,-0.833,-0.834,-0.835,-0.836,-0.837, - &-0.838,-0.839,-0.840,-0.841,-0.841,-0.842,-0.843,-0.844,-0.845, - &-0.846,-0.847,-0.847,-0.848,-0.849,-0.850,-0.851,-0.852,-0.852, - &-0.853,-0.854,-0.855,-0.856,-0.856,-0.857,-0.858,-0.859,-0.860, - &-0.860,-0.861,-0.862,-0.863,-0.864,-0.864,-0.865,-0.866,-0.867, - &-0.867,-0.868,-0.869,-0.869,-0.870,-0.871,-0.872,-0.872,-0.873, - &-0.874,-0.875,-0.875,-0.876,-0.877,-0.877,-0.878,-0.879,-0.879, - &-0.880,-0.881,-0.882,-0.882,-0.883,-0.884,-0.884,-0.885,-0.886, - &-0.886,-0.887,-0.888,-0.888,-0.889,-0.889,-0.890,-0.891,-0.891, - &-0.892,-0.893,-0.893,-0.894,-0.895,-0.895,-0.896,-0.896,-0.897, - &-0.898,-0.898,-0.899,-0.899,-0.900,-0.901,-0.901,-0.902,-0.903, - &-0.903,-0.904,-0.904,-0.905,-0.905,-0.906,-0.907,-0.907,-0.908, - &-0.908,-0.909,-0.910,-0.910,-0.911,-0.911,-0.912,-0.912,-0.913, - &-0.913,-0.914,-0.915,-0.915,-0.916,-0.916,-0.917,-0.917,-0.918, - &-0.918,-0.919,-0.919,-0.920,-0.921,-0.921,-0.922,-0.922,-0.923, - &-0.923,-0.924,-0.924,-0.925,-0.925,-0.926,-0.926,-0.927,-0.927, - &-0.928,-0.928,-0.929,-0.929,-0.930,-0.930,-0.931,-0.931,-0.932, - &-0.932,-0.933,-0.933,-0.934,-0.934,-0.935,-0.935,-0.936,-0.936, - &-0.937,-0.937,-0.938,-0.938,-0.939,-0.939,-0.940,-0.940,-0.940, - &-0.941,-0.941,-0.942,-0.942,-0.943,-0.943,-0.944,-0.944,-0.945, - &-0.945,-0.946,-0.946,-0.946,-0.947,-0.947,-0.948,-0.948,-0.949, - &-0.949,-0.950,-0.950,-0.950,-0.951,-0.951,-0.952,-0.952,-0.953, - &-0.953,-0.954,-0.954,-0.954,-0.955,-0.955,-0.956,-0.956,-0.957, - &-0.957,-0.957,-0.958,-0.958,-0.959,-0.959,-0.959,-0.960,-0.960, - &-0.961,-0.961,-0.962,-0.962,-0.962,-0.963,-0.963,-0.964,-0.964, - &-0.964,-0.965,-0.965,-0.966,-0.966,-0.966,-0.967,-0.967,-0.968, - &-0.968,-0.968,-0.969,-0.969,-0.973,-0.977,-0.981,-0.984,-0.988, - &-0.991,-0.995,-0.998,-1.001,-1.004,-1.007,-1.010,-1.013,-1.016, - &-1.019,-1.022,-1.024,-1.027,-1.030,-1.032,-1.035,-1.037,-1.040, - &-1.042,-1.045,-1.047,-1.049,-1.052,-1.054,-1.056,-1.058,-1.061, - &-1.063,-1.065,-1.067,-1.069,-1.071,-1.073,-1.075,-1.077,-1.079, - &-1.080,-1.082,-1.084,-1.086,-1.088,-1.089,-1.091,-1.093,-1.095, - &-1.096,-1.098,-1.100,-1.101,-1.103,-1.104,-1.106,-1.108,-1.109, - &-1.111,-1.112,-1.114,-1.115,-1.117,-1.118,-1.119,-1.121,-1.122, - &-1.124,-1.125,-1.126,-1.128,-1.129,-1.130,-1.132,-1.133,-1.134, - &-1.135,-1.137,-1.138,-1.139,-1.140,-1.142,-1.143,-1.144,-1.145, - &-1.146,-1.148,-1.149,-1.150,-1.151,-1.152,-1.153,-1.154,-1.155, - &-1.157,-1.158,-1.159,-1.160,-1.161,-1.162,-1.163,-1.164,-1.165, - &-1.166,-1.167,-1.168,-1.169,-1.170,-1.171,-1.172,-1.173,-1.174, - &-1.175,-1.176,-1.177,-1.178,-1.179,-1.180,-1.180,-1.181,-1.182, - &-1.183,-1.184,-1.185,-1.186,-1.187,-1.188,-1.188,-1.189,-1.190, - &-1.191,-1.192,-1.193,-1.193,-1.194,-1.195,-1.196,-1.197,-1.198, - &-1.198,-1.199,-1.200,-1.201,-1.201,-1.202,-1.203,-1.204,-1.205, - &-1.205,-1.206,-1.207,-1.208,-1.208,-1.209,-1.210,-1.210,-1.211, - &-1.212,-1.213,-1.213 - & /) -! -! *** NaNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC03M_298 = (/ - &-0.047,-0.102,-0.129,-0.149,-0.164,-0.177,-0.188,-0.198,-0.206, - &-0.214,-0.221,-0.228,-0.234,-0.239,-0.245,-0.250,-0.255,-0.259, - &-0.263,-0.267,-0.271,-0.275,-0.279,-0.282,-0.285,-0.289,-0.292, - &-0.295,-0.298,-0.300,-0.303,-0.306,-0.308,-0.311,-0.313,-0.316, - &-0.318,-0.320,-0.322,-0.324,-0.326,-0.329,-0.331,-0.332,-0.334, - &-0.336,-0.338,-0.340,-0.342,-0.343,-0.345,-0.347,-0.348,-0.350, - &-0.352,-0.353,-0.355,-0.356,-0.358,-0.359,-0.360,-0.362,-0.363, - &-0.365,-0.366,-0.367,-0.369,-0.370,-0.371,-0.372,-0.374,-0.375, - &-0.376,-0.377,-0.378,-0.380,-0.381,-0.382,-0.383,-0.384,-0.385, - &-0.386,-0.388,-0.389,-0.390,-0.391,-0.392,-0.393,-0.394,-0.395, - &-0.396,-0.397,-0.398,-0.399,-0.400,-0.401,-0.402,-0.403,-0.404, - &-0.405,-0.406,-0.407,-0.408,-0.408,-0.409,-0.410,-0.411,-0.412, - &-0.413,-0.414,-0.415,-0.416,-0.416,-0.417,-0.418,-0.419,-0.420, - &-0.421,-0.422,-0.422,-0.423,-0.424,-0.425,-0.426,-0.427,-0.427, - &-0.428,-0.429,-0.430,-0.430,-0.431,-0.432,-0.433,-0.434,-0.434, - &-0.435,-0.436,-0.437,-0.437,-0.438,-0.439,-0.439,-0.440,-0.441, - &-0.442,-0.442,-0.443,-0.444,-0.444,-0.445,-0.446,-0.447,-0.447, - &-0.448,-0.449,-0.449,-0.450,-0.451,-0.451,-0.452,-0.453,-0.453, - &-0.454,-0.454,-0.455,-0.456,-0.456,-0.457,-0.458,-0.458,-0.459, - &-0.460,-0.460,-0.461,-0.461,-0.462,-0.463,-0.463,-0.464,-0.464, - &-0.465,-0.466,-0.466,-0.467,-0.467,-0.468,-0.468,-0.469,-0.470, - &-0.470,-0.471,-0.471,-0.472,-0.472,-0.473,-0.474,-0.474,-0.475, - &-0.475,-0.476,-0.476,-0.477,-0.477,-0.478,-0.478,-0.479,-0.479, - &-0.480,-0.480,-0.481,-0.482,-0.482,-0.483,-0.483,-0.484,-0.484, - &-0.485,-0.485,-0.486,-0.486,-0.487,-0.487,-0.488,-0.488,-0.489, - &-0.489,-0.490,-0.490,-0.491,-0.491,-0.491,-0.492,-0.492,-0.493, - &-0.493,-0.494,-0.494,-0.495,-0.495,-0.496,-0.496,-0.497,-0.497, - &-0.498,-0.498,-0.498,-0.499,-0.499,-0.500,-0.500,-0.501,-0.501, - &-0.502,-0.502,-0.502,-0.503,-0.503,-0.504,-0.504,-0.505,-0.505, - &-0.505,-0.506,-0.506,-0.507,-0.507,-0.508,-0.508,-0.508,-0.509, - &-0.509,-0.510,-0.510,-0.511,-0.511,-0.511,-0.512,-0.512,-0.513, - &-0.513,-0.513,-0.514,-0.514,-0.515,-0.515,-0.515,-0.516,-0.516, - &-0.517,-0.517,-0.517,-0.518,-0.518,-0.518,-0.519,-0.519,-0.520, - &-0.520,-0.520,-0.521,-0.521,-0.522,-0.522,-0.522,-0.523,-0.523, - &-0.523,-0.524,-0.524,-0.525,-0.525,-0.525,-0.526,-0.526,-0.526, - &-0.527,-0.527,-0.527,-0.528,-0.528,-0.529,-0.529,-0.529,-0.530, - &-0.530,-0.530,-0.531,-0.531,-0.531,-0.532,-0.532,-0.532,-0.533, - &-0.533,-0.533,-0.534,-0.534,-0.534,-0.535,-0.535,-0.535,-0.536, - &-0.536,-0.536,-0.537,-0.537,-0.537,-0.538,-0.538,-0.538,-0.539, - &-0.539,-0.539,-0.540,-0.540,-0.540,-0.541,-0.541,-0.541,-0.542, - &-0.542,-0.542,-0.543,-0.543,-0.543,-0.544,-0.544,-0.544,-0.545, - &-0.545,-0.545,-0.546,-0.546,-0.546,-0.546,-0.547,-0.547,-0.547, - &-0.548,-0.548,-0.548,-0.549,-0.549,-0.549,-0.549,-0.550,-0.550, - &-0.550,-0.551,-0.551,-0.551,-0.552,-0.552,-0.552,-0.552,-0.553, - &-0.553,-0.553,-0.554,-0.554,-0.557,-0.560,-0.563,-0.565,-0.568, - &-0.570,-0.573,-0.575,-0.578,-0.580,-0.583,-0.585,-0.587,-0.589, - &-0.592,-0.594,-0.596,-0.598,-0.600,-0.602,-0.604,-0.606,-0.608, - &-0.609,-0.611,-0.613,-0.615,-0.617,-0.618,-0.620,-0.622,-0.623, - &-0.625,-0.627,-0.628,-0.630,-0.631,-0.633,-0.634,-0.636,-0.637, - &-0.639,-0.640,-0.642,-0.643,-0.644,-0.646,-0.647,-0.648,-0.650, - &-0.651,-0.652,-0.653,-0.655,-0.656,-0.657,-0.658,-0.660,-0.661, - &-0.662,-0.663,-0.664,-0.665,-0.667,-0.668,-0.669,-0.670,-0.671, - &-0.672,-0.673,-0.674,-0.675,-0.676,-0.677,-0.678,-0.679,-0.680, - &-0.681,-0.682,-0.683,-0.684,-0.685,-0.686,-0.687,-0.688,-0.689, - &-0.690,-0.691,-0.692,-0.692,-0.693,-0.694,-0.695,-0.696,-0.697, - &-0.698,-0.698,-0.699,-0.700,-0.701,-0.702,-0.703,-0.703,-0.704, - &-0.705,-0.706,-0.706,-0.707,-0.708,-0.709,-0.709,-0.710,-0.711, - &-0.712,-0.712,-0.713,-0.714,-0.715,-0.715,-0.716,-0.717,-0.717, - &-0.718,-0.719,-0.719,-0.720,-0.721,-0.721,-0.722,-0.723,-0.723, - &-0.724,-0.725,-0.725,-0.726,-0.727,-0.727,-0.728,-0.729,-0.729, - &-0.730,-0.730,-0.731,-0.732,-0.732,-0.733,-0.733,-0.734,-0.735, - &-0.735,-0.736,-0.736,-0.737,-0.737,-0.738,-0.739,-0.739,-0.740, - &-0.740,-0.741,-0.741 - & /) -! -! *** (NH4)2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC04M_298 = (/ - &-0.093,-0.203,-0.257,-0.296,-0.326,-0.351,-0.372,-0.391,-0.408, - &-0.423,-0.436,-0.449,-0.460,-0.471,-0.481,-0.491,-0.500,-0.508, - &-0.516,-0.524,-0.531,-0.538,-0.545,-0.552,-0.558,-0.564,-0.569, - &-0.575,-0.580,-0.585,-0.590,-0.595,-0.600,-0.605,-0.609,-0.613, - &-0.618,-0.622,-0.626,-0.629,-0.633,-0.637,-0.641,-0.644,-0.648, - &-0.651,-0.654,-0.658,-0.661,-0.664,-0.667,-0.670,-0.673,-0.676, - &-0.678,-0.681,-0.684,-0.687,-0.689,-0.692,-0.694,-0.697,-0.699, - &-0.702,-0.704,-0.707,-0.709,-0.711,-0.713,-0.716,-0.718,-0.720, - &-0.722,-0.724,-0.726,-0.728,-0.730,-0.732,-0.734,-0.736,-0.738, - &-0.740,-0.742,-0.744,-0.746,-0.748,-0.749,-0.751,-0.753,-0.755, - &-0.756,-0.758,-0.760,-0.762,-0.763,-0.765,-0.767,-0.768,-0.770, - &-0.772,-0.773,-0.775,-0.776,-0.778,-0.779,-0.781,-0.782,-0.784, - &-0.786,-0.787,-0.788,-0.790,-0.791,-0.793,-0.794,-0.796,-0.797, - &-0.799,-0.800,-0.801,-0.803,-0.804,-0.805,-0.807,-0.808,-0.809, - &-0.811,-0.812,-0.813,-0.815,-0.816,-0.817,-0.819,-0.820,-0.821, - &-0.822,-0.824,-0.825,-0.826,-0.827,-0.828,-0.830,-0.831,-0.832, - &-0.833,-0.834,-0.835,-0.837,-0.838,-0.839,-0.840,-0.841,-0.842, - &-0.843,-0.844,-0.846,-0.847,-0.848,-0.849,-0.850,-0.851,-0.852, - &-0.853,-0.854,-0.855,-0.856,-0.857,-0.858,-0.859,-0.860,-0.861, - &-0.862,-0.863,-0.864,-0.865,-0.866,-0.867,-0.868,-0.869,-0.870, - &-0.871,-0.872,-0.873,-0.874,-0.875,-0.876,-0.877,-0.878,-0.878, - &-0.879,-0.880,-0.881,-0.882,-0.883,-0.884,-0.885,-0.886,-0.886, - &-0.887,-0.888,-0.889,-0.890,-0.891,-0.892,-0.893,-0.893,-0.894, - &-0.895,-0.896,-0.897,-0.898,-0.898,-0.899,-0.900,-0.901,-0.902, - &-0.902,-0.903,-0.904,-0.905,-0.906,-0.906,-0.907,-0.908,-0.909, - &-0.910,-0.910,-0.911,-0.912,-0.913,-0.913,-0.914,-0.915,-0.916, - &-0.916,-0.917,-0.918,-0.919,-0.919,-0.920,-0.921,-0.922,-0.922, - &-0.923,-0.924,-0.924,-0.925,-0.926,-0.927,-0.927,-0.928,-0.929, - &-0.929,-0.930,-0.931,-0.931,-0.932,-0.933,-0.933,-0.934,-0.935, - &-0.936,-0.936,-0.937,-0.938,-0.938,-0.939,-0.940,-0.940,-0.941, - &-0.941,-0.942,-0.943,-0.943,-0.944,-0.945,-0.945,-0.946,-0.947, - &-0.947,-0.948,-0.949,-0.949,-0.950,-0.950,-0.951,-0.952,-0.952, - &-0.953,-0.954,-0.954,-0.955,-0.955,-0.956,-0.957,-0.957,-0.958, - &-0.958,-0.959,-0.960,-0.960,-0.961,-0.961,-0.962,-0.962,-0.963, - &-0.964,-0.964,-0.965,-0.965,-0.966,-0.967,-0.967,-0.968,-0.968, - &-0.969,-0.969,-0.970,-0.970,-0.971,-0.972,-0.972,-0.973,-0.973, - &-0.974,-0.974,-0.975,-0.975,-0.976,-0.977,-0.977,-0.978,-0.978, - &-0.979,-0.979,-0.980,-0.980,-0.981,-0.981,-0.982,-0.982,-0.983, - &-0.983,-0.984,-0.984,-0.985,-0.986,-0.986,-0.987,-0.987,-0.988, - &-0.988,-0.989,-0.989,-0.990,-0.990,-0.991,-0.991,-0.992,-0.992, - &-0.993,-0.993,-0.994,-0.994,-0.995,-0.995,-0.996,-0.996,-0.997, - &-0.997,-0.998,-0.998,-0.998,-0.999,-0.999,-1.000,-1.000,-1.001, - &-1.001,-1.002,-1.002,-1.003,-1.003,-1.004,-1.004,-1.005,-1.005, - &-1.006,-1.006,-1.006,-1.007,-1.007,-1.008,-1.008,-1.009,-1.009, - &-1.010,-1.010,-1.011,-1.011,-1.016,-1.020,-1.024,-1.029,-1.033, - &-1.037,-1.040,-1.044,-1.048,-1.052,-1.055,-1.059,-1.062,-1.065, - &-1.069,-1.072,-1.075,-1.078,-1.081,-1.084,-1.087,-1.090,-1.093, - &-1.096,-1.099,-1.102,-1.104,-1.107,-1.110,-1.112,-1.115,-1.117, - &-1.120,-1.122,-1.125,-1.127,-1.129,-1.132,-1.134,-1.136,-1.139, - &-1.141,-1.143,-1.145,-1.147,-1.149,-1.151,-1.153,-1.155,-1.157, - &-1.159,-1.161,-1.163,-1.165,-1.167,-1.169,-1.171,-1.173,-1.174, - &-1.176,-1.178,-1.180,-1.181,-1.183,-1.185,-1.187,-1.188,-1.190, - &-1.191,-1.193,-1.195,-1.196,-1.198,-1.199,-1.201,-1.202,-1.204, - &-1.205,-1.207,-1.208,-1.210,-1.211,-1.213,-1.214,-1.216,-1.217, - &-1.218,-1.220,-1.221,-1.223,-1.224,-1.225,-1.226,-1.228,-1.229, - &-1.230,-1.232,-1.233,-1.234,-1.235,-1.237,-1.238,-1.239,-1.240, - &-1.242,-1.243,-1.244,-1.245,-1.246,-1.247,-1.249,-1.250,-1.251, - &-1.252,-1.253,-1.254,-1.255,-1.256,-1.258,-1.259,-1.260,-1.261, - &-1.262,-1.263,-1.264,-1.265,-1.266,-1.267,-1.268,-1.269,-1.270, - &-1.271,-1.272,-1.273,-1.274,-1.275,-1.276,-1.277,-1.278,-1.279, - &-1.280,-1.281,-1.282,-1.283,-1.283,-1.284,-1.285,-1.286,-1.287, - &-1.288,-1.289,-1.290,-1.291,-1.292,-1.292,-1.293,-1.294,-1.295, - &-1.296,-1.297,-1.298 - & /) -! -! *** NH4NO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC05M_298 = (/ - &-0.047,-0.104,-0.134,-0.155,-0.172,-0.187,-0.199,-0.211,-0.221, - &-0.230,-0.239,-0.247,-0.255,-0.262,-0.268,-0.275,-0.281,-0.287, - &-0.293,-0.298,-0.303,-0.308,-0.313,-0.318,-0.323,-0.327,-0.332, - &-0.336,-0.340,-0.344,-0.348,-0.352,-0.356,-0.359,-0.363,-0.366, - &-0.370,-0.373,-0.377,-0.380,-0.383,-0.386,-0.389,-0.392,-0.395, - &-0.398,-0.401,-0.404,-0.406,-0.409,-0.412,-0.414,-0.417,-0.420, - &-0.422,-0.425,-0.427,-0.429,-0.432,-0.434,-0.436,-0.439,-0.441, - &-0.443,-0.445,-0.447,-0.450,-0.452,-0.454,-0.456,-0.458,-0.460, - &-0.462,-0.464,-0.466,-0.468,-0.470,-0.472,-0.474,-0.476,-0.478, - &-0.480,-0.481,-0.483,-0.485,-0.487,-0.489,-0.491,-0.492,-0.494, - &-0.496,-0.498,-0.500,-0.501,-0.503,-0.505,-0.507,-0.508,-0.510, - &-0.512,-0.514,-0.515,-0.517,-0.519,-0.520,-0.522,-0.524,-0.525, - &-0.527,-0.529,-0.530,-0.532,-0.534,-0.535,-0.537,-0.538,-0.540, - &-0.542,-0.543,-0.545,-0.546,-0.548,-0.550,-0.551,-0.553,-0.554, - &-0.556,-0.557,-0.559,-0.560,-0.562,-0.563,-0.565,-0.566,-0.568, - &-0.569,-0.571,-0.572,-0.573,-0.575,-0.576,-0.578,-0.579,-0.580, - &-0.582,-0.583,-0.585,-0.586,-0.587,-0.589,-0.590,-0.591,-0.593, - &-0.594,-0.595,-0.597,-0.598,-0.599,-0.601,-0.602,-0.603,-0.604, - &-0.606,-0.607,-0.608,-0.610,-0.611,-0.612,-0.613,-0.615,-0.616, - &-0.617,-0.618,-0.619,-0.621,-0.622,-0.623,-0.624,-0.625,-0.627, - &-0.628,-0.629,-0.630,-0.631,-0.632,-0.634,-0.635,-0.636,-0.637, - &-0.638,-0.639,-0.640,-0.642,-0.643,-0.644,-0.645,-0.646,-0.647, - &-0.648,-0.649,-0.650,-0.651,-0.652,-0.654,-0.655,-0.656,-0.657, - &-0.658,-0.659,-0.660,-0.661,-0.662,-0.663,-0.664,-0.665,-0.666, - &-0.667,-0.668,-0.669,-0.670,-0.671,-0.672,-0.673,-0.674,-0.675, - &-0.676,-0.677,-0.678,-0.679,-0.680,-0.681,-0.682,-0.683,-0.684, - &-0.685,-0.686,-0.687,-0.688,-0.688,-0.689,-0.690,-0.691,-0.692, - &-0.693,-0.694,-0.695,-0.696,-0.697,-0.698,-0.699,-0.699,-0.700, - &-0.701,-0.702,-0.703,-0.704,-0.705,-0.706,-0.707,-0.707,-0.708, - &-0.709,-0.710,-0.711,-0.712,-0.713,-0.713,-0.714,-0.715,-0.716, - &-0.717,-0.718,-0.718,-0.719,-0.720,-0.721,-0.722,-0.723,-0.723, - &-0.724,-0.725,-0.726,-0.727,-0.727,-0.728,-0.729,-0.730,-0.731, - &-0.731,-0.732,-0.733,-0.734,-0.735,-0.735,-0.736,-0.737,-0.738, - &-0.738,-0.739,-0.740,-0.741,-0.741,-0.742,-0.743,-0.744,-0.744, - &-0.745,-0.746,-0.747,-0.747,-0.748,-0.749,-0.750,-0.750,-0.751, - &-0.752,-0.753,-0.753,-0.754,-0.755,-0.755,-0.756,-0.757,-0.758, - &-0.758,-0.759,-0.760,-0.760,-0.761,-0.762,-0.762,-0.763,-0.764, - &-0.764,-0.765,-0.766,-0.767,-0.767,-0.768,-0.769,-0.769,-0.770, - &-0.771,-0.771,-0.772,-0.773,-0.773,-0.774,-0.775,-0.775,-0.776, - &-0.777,-0.777,-0.778,-0.778,-0.779,-0.780,-0.780,-0.781,-0.782, - &-0.782,-0.783,-0.784,-0.784,-0.785,-0.785,-0.786,-0.787,-0.787, - &-0.788,-0.789,-0.789,-0.790,-0.790,-0.791,-0.792,-0.792,-0.793, - &-0.793,-0.794,-0.795,-0.795,-0.796,-0.796,-0.797,-0.798,-0.798, - &-0.799,-0.799,-0.800,-0.801,-0.801,-0.802,-0.802,-0.803,-0.804, - &-0.804,-0.805,-0.805,-0.806,-0.812,-0.817,-0.823,-0.828,-0.833, - &-0.838,-0.843,-0.848,-0.852,-0.857,-0.861,-0.866,-0.870,-0.874, - &-0.878,-0.882,-0.886,-0.890,-0.893,-0.897,-0.900,-0.904,-0.907, - &-0.911,-0.914,-0.917,-0.920,-0.924,-0.927,-0.930,-0.933,-0.936, - &-0.938,-0.941,-0.944,-0.947,-0.949,-0.952,-0.954,-0.957,-0.959, - &-0.962,-0.964,-0.967,-0.969,-0.971,-0.973,-0.976,-0.978,-0.980, - &-0.982,-0.984,-0.986,-0.988,-0.990,-0.992,-0.994,-0.996,-0.998, - &-1.000,-1.002,-1.003,-1.005,-1.007,-1.009,-1.010,-1.012,-1.014, - &-1.015,-1.017,-1.019,-1.020,-1.022,-1.023,-1.025,-1.026,-1.028, - &-1.029,-1.031,-1.032,-1.033,-1.035,-1.036,-1.037,-1.039,-1.040, - &-1.041,-1.043,-1.044,-1.045,-1.046,-1.048,-1.049,-1.050,-1.051, - &-1.052,-1.054,-1.055,-1.056,-1.057,-1.058,-1.059,-1.060,-1.061, - &-1.062,-1.063,-1.064,-1.066,-1.067,-1.068,-1.069,-1.070,-1.070, - &-1.071,-1.072,-1.073,-1.074,-1.075,-1.076,-1.077,-1.078,-1.079, - &-1.080,-1.081,-1.081,-1.082,-1.083,-1.084,-1.085,-1.086,-1.086, - &-1.087,-1.088,-1.089,-1.090,-1.090,-1.091,-1.092,-1.093,-1.093, - &-1.094,-1.095,-1.096,-1.096,-1.097,-1.098,-1.099,-1.099,-1.100, - &-1.101,-1.101,-1.102,-1.103,-1.103,-1.104,-1.105,-1.105,-1.106, - &-1.107,-1.107,-1.108 - & /) -! -! *** NH4Cl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC06M_298 = (/ - &-0.046,-0.098,-0.123,-0.140,-0.153,-0.163,-0.172,-0.180,-0.186, - &-0.191,-0.196,-0.201,-0.205,-0.208,-0.212,-0.215,-0.217,-0.220, - &-0.222,-0.224,-0.226,-0.228,-0.230,-0.231,-0.233,-0.234,-0.235, - &-0.237,-0.238,-0.239,-0.240,-0.241,-0.241,-0.242,-0.243,-0.244, - &-0.244,-0.245,-0.246,-0.246,-0.247,-0.247,-0.247,-0.248,-0.248, - &-0.249,-0.249,-0.249,-0.250,-0.250,-0.250,-0.250,-0.251,-0.251, - &-0.251,-0.251,-0.251,-0.251,-0.252,-0.252,-0.252,-0.252,-0.252, - &-0.252,-0.252,-0.252,-0.252,-0.252,-0.252,-0.252,-0.252,-0.252, - &-0.252,-0.252,-0.252,-0.252,-0.252,-0.252,-0.252,-0.251,-0.251, - &-0.251,-0.251,-0.251,-0.251,-0.250,-0.250,-0.250,-0.250,-0.250, - &-0.249,-0.249,-0.249,-0.249,-0.248,-0.248,-0.248,-0.248,-0.247, - &-0.247,-0.247,-0.246,-0.246,-0.246,-0.245,-0.245,-0.245,-0.244, - &-0.244,-0.244,-0.243,-0.243,-0.243,-0.242,-0.242,-0.241,-0.241, - &-0.241,-0.240,-0.240,-0.239,-0.239,-0.239,-0.238,-0.238,-0.237, - &-0.237,-0.236,-0.236,-0.236,-0.235,-0.235,-0.234,-0.234,-0.233, - &-0.233,-0.233,-0.232,-0.232,-0.231,-0.231,-0.230,-0.230,-0.229, - &-0.229,-0.228,-0.228,-0.228,-0.227,-0.227,-0.226,-0.226,-0.225, - &-0.225,-0.224,-0.224,-0.223,-0.223,-0.222,-0.222,-0.221,-0.221, - &-0.220,-0.220,-0.220,-0.219,-0.219,-0.218,-0.218,-0.217,-0.217, - &-0.216,-0.216,-0.215,-0.215,-0.214,-0.214,-0.213,-0.213,-0.212, - &-0.212,-0.211,-0.211,-0.210,-0.210,-0.210,-0.209,-0.209,-0.208, - &-0.208,-0.207,-0.207,-0.206,-0.206,-0.205,-0.205,-0.204,-0.204, - &-0.203,-0.203,-0.202,-0.202,-0.201,-0.201,-0.200,-0.200,-0.199, - &-0.199,-0.198,-0.198,-0.197,-0.197,-0.197,-0.196,-0.196,-0.195, - &-0.195,-0.194,-0.194,-0.193,-0.193,-0.192,-0.192,-0.191,-0.191, - &-0.190,-0.190,-0.189,-0.189,-0.188,-0.188,-0.187,-0.187,-0.186, - &-0.186,-0.186,-0.185,-0.185,-0.184,-0.184,-0.183,-0.183,-0.182, - &-0.182,-0.181,-0.181,-0.180,-0.180,-0.179,-0.179,-0.178,-0.178, - &-0.177,-0.177,-0.177,-0.176,-0.176,-0.175,-0.175,-0.174,-0.174, - &-0.173,-0.173,-0.172,-0.172,-0.171,-0.171,-0.170,-0.170,-0.170, - &-0.169,-0.169,-0.168,-0.168,-0.167,-0.167,-0.166,-0.166,-0.165, - &-0.165,-0.164,-0.164,-0.164,-0.163,-0.163,-0.162,-0.162,-0.161, - &-0.161,-0.160,-0.160,-0.159,-0.159,-0.159,-0.158,-0.158,-0.157, - &-0.157,-0.156,-0.156,-0.155,-0.155,-0.154,-0.154,-0.154,-0.153, - &-0.153,-0.152,-0.152,-0.151,-0.151,-0.150,-0.150,-0.149,-0.149, - &-0.149,-0.148,-0.148,-0.147,-0.147,-0.146,-0.146,-0.145,-0.145, - &-0.145,-0.144,-0.144,-0.143,-0.143,-0.142,-0.142,-0.142,-0.141, - &-0.141,-0.140,-0.140,-0.139,-0.139,-0.138,-0.138,-0.138,-0.137, - &-0.137,-0.136,-0.136,-0.135,-0.135,-0.135,-0.134,-0.134,-0.133, - &-0.133,-0.132,-0.132,-0.132,-0.131,-0.131,-0.130,-0.130,-0.129, - &-0.129,-0.129,-0.128,-0.128,-0.127,-0.127,-0.126,-0.126,-0.126, - &-0.125,-0.125,-0.124,-0.124,-0.123,-0.123,-0.123,-0.122,-0.122, - &-0.121,-0.121,-0.121,-0.120,-0.120,-0.119,-0.119,-0.118,-0.118, - &-0.118,-0.117,-0.117,-0.116,-0.116,-0.116,-0.115,-0.115,-0.114, - &-0.114,-0.114,-0.113,-0.113,-0.108,-0.104,-0.100,-0.096,-0.092, - &-0.089,-0.085,-0.081,-0.077,-0.074,-0.070,-0.066,-0.063,-0.059, - &-0.055,-0.052,-0.049,-0.045,-0.042,-0.038,-0.035,-0.032,-0.028, - &-0.025,-0.022,-0.019,-0.016,-0.012,-0.009,-0.006,-0.003, 0.000, - & 0.003, 0.006, 0.009, 0.012, 0.014, 0.017, 0.020, 0.023, 0.026, - & 0.029, 0.031, 0.034, 0.037, 0.040, 0.042, 0.045, 0.047, 0.050, - & 0.053, 0.055, 0.058, 0.060, 0.063, 0.065, 0.068, 0.070, 0.073, - & 0.075, 0.078, 0.080, 0.082, 0.085, 0.087, 0.089, 0.092, 0.094, - & 0.096, 0.099, 0.101, 0.103, 0.105, 0.107, 0.110, 0.112, 0.114, - & 0.116, 0.118, 0.120, 0.123, 0.125, 0.127, 0.129, 0.131, 0.133, - & 0.135, 0.137, 0.139, 0.141, 0.143, 0.145, 0.147, 0.149, 0.151, - & 0.153, 0.155, 0.157, 0.159, 0.160, 0.162, 0.164, 0.166, 0.168, - & 0.170, 0.172, 0.173, 0.175, 0.177, 0.179, 0.181, 0.182, 0.184, - & 0.186, 0.188, 0.189, 0.191, 0.193, 0.195, 0.196, 0.198, 0.200, - & 0.201, 0.203, 0.205, 0.206, 0.208, 0.210, 0.211, 0.213, 0.215, - & 0.216, 0.218, 0.219, 0.221, 0.223, 0.224, 0.226, 0.227, 0.229, - & 0.230, 0.232, 0.233, 0.235, 0.236, 0.238, 0.239, 0.241, 0.242, - & 0.244, 0.245, 0.247, 0.248, 0.250, 0.251, 0.253, 0.254, 0.256, - & 0.257, 0.258, 0.260 - & /) -! -! *** (2H,SO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC07M_298 = (/ - &-0.093,-0.202,-0.255,-0.293,-0.323,-0.347,-0.368,-0.386,-0.402, - &-0.417,-0.430,-0.442,-0.453,-0.463,-0.473,-0.482,-0.490,-0.498, - &-0.506,-0.513,-0.520,-0.526,-0.532,-0.538,-0.544,-0.549,-0.555, - &-0.560,-0.565,-0.569,-0.574,-0.578,-0.583,-0.587,-0.591,-0.595, - &-0.598,-0.602,-0.606,-0.609,-0.613,-0.616,-0.619,-0.622,-0.625, - &-0.628,-0.631,-0.634,-0.637,-0.640,-0.642,-0.645,-0.648,-0.650, - &-0.653,-0.655,-0.657,-0.660,-0.662,-0.664,-0.666,-0.669,-0.671, - &-0.673,-0.675,-0.677,-0.679,-0.681,-0.683,-0.685,-0.687,-0.688, - &-0.690,-0.692,-0.694,-0.695,-0.697,-0.699,-0.701,-0.702,-0.704, - &-0.705,-0.707,-0.709,-0.710,-0.712,-0.713,-0.715,-0.716,-0.718, - &-0.719,-0.721,-0.722,-0.723,-0.725,-0.726,-0.727,-0.729,-0.730, - &-0.731,-0.733,-0.734,-0.735,-0.737,-0.738,-0.739,-0.740,-0.741, - &-0.743,-0.744,-0.745,-0.746,-0.747,-0.748,-0.750,-0.751,-0.752, - &-0.753,-0.754,-0.755,-0.756,-0.757,-0.758,-0.759,-0.760,-0.762, - &-0.763,-0.764,-0.765,-0.766,-0.767,-0.768,-0.769,-0.769,-0.770, - &-0.771,-0.772,-0.773,-0.774,-0.775,-0.776,-0.777,-0.778,-0.779, - &-0.780,-0.781,-0.781,-0.782,-0.783,-0.784,-0.785,-0.786,-0.787, - &-0.787,-0.788,-0.789,-0.790,-0.791,-0.792,-0.792,-0.793,-0.794, - &-0.795,-0.795,-0.796,-0.797,-0.798,-0.799,-0.799,-0.800,-0.801, - &-0.802,-0.802,-0.803,-0.804,-0.804,-0.805,-0.806,-0.807,-0.807, - &-0.808,-0.809,-0.809,-0.810,-0.811,-0.811,-0.812,-0.813,-0.814, - &-0.814,-0.815,-0.816,-0.816,-0.817,-0.817,-0.818,-0.819,-0.819, - &-0.820,-0.821,-0.821,-0.822,-0.823,-0.823,-0.824,-0.824,-0.825, - &-0.826,-0.826,-0.827,-0.827,-0.828,-0.829,-0.829,-0.830,-0.830, - &-0.831,-0.831,-0.832,-0.833,-0.833,-0.834,-0.834,-0.835,-0.835, - &-0.836,-0.837,-0.837,-0.838,-0.838,-0.839,-0.839,-0.840,-0.840, - &-0.841,-0.841,-0.842,-0.842,-0.843,-0.843,-0.844,-0.845,-0.845, - &-0.846,-0.846,-0.847,-0.847,-0.848,-0.848,-0.849,-0.849,-0.850, - &-0.850,-0.851,-0.851,-0.851,-0.852,-0.852,-0.853,-0.853,-0.854, - &-0.854,-0.855,-0.855,-0.856,-0.856,-0.857,-0.857,-0.858,-0.858, - &-0.859,-0.859,-0.859,-0.860,-0.860,-0.861,-0.861,-0.862,-0.862, - &-0.863,-0.863,-0.863,-0.864,-0.864,-0.865,-0.865,-0.866,-0.866, - &-0.866,-0.867,-0.867,-0.868,-0.868,-0.869,-0.869,-0.869,-0.870, - &-0.870,-0.871,-0.871,-0.871,-0.872,-0.872,-0.873,-0.873,-0.873, - &-0.874,-0.874,-0.875,-0.875,-0.875,-0.876,-0.876,-0.877,-0.877, - &-0.877,-0.878,-0.878,-0.878,-0.879,-0.879,-0.880,-0.880,-0.880, - &-0.881,-0.881,-0.881,-0.882,-0.882,-0.883,-0.883,-0.883,-0.884, - &-0.884,-0.884,-0.885,-0.885,-0.885,-0.886,-0.886,-0.887,-0.887, - &-0.887,-0.888,-0.888,-0.888,-0.889,-0.889,-0.889,-0.890,-0.890, - &-0.890,-0.891,-0.891,-0.891,-0.892,-0.892,-0.892,-0.893,-0.893, - &-0.893,-0.894,-0.894,-0.894,-0.895,-0.895,-0.895,-0.896,-0.896, - &-0.896,-0.897,-0.897,-0.897,-0.898,-0.898,-0.898,-0.899,-0.899, - &-0.899,-0.900,-0.900,-0.900,-0.901,-0.901,-0.901,-0.901,-0.902, - &-0.902,-0.902,-0.903,-0.903,-0.903,-0.904,-0.904,-0.904,-0.905, - &-0.905,-0.905,-0.905,-0.906,-0.909,-0.912,-0.915,-0.917,-0.920, - &-0.922,-0.925,-0.927,-0.930,-0.932,-0.935,-0.937,-0.939,-0.941, - &-0.943,-0.945,-0.947,-0.949,-0.951,-0.953,-0.955,-0.957,-0.959, - &-0.961,-0.962,-0.964,-0.966,-0.967,-0.969,-0.971,-0.972,-0.974, - &-0.975,-0.977,-0.978,-0.980,-0.981,-0.983,-0.984,-0.986,-0.987, - &-0.988,-0.990,-0.991,-0.992,-0.994,-0.995,-0.996,-0.997,-0.999, - &-1.000,-1.001,-1.002,-1.003,-1.004,-1.006,-1.007,-1.008,-1.009, - &-1.010,-1.011,-1.012,-1.013,-1.014,-1.015,-1.016,-1.017,-1.018, - &-1.019,-1.020,-1.021,-1.022,-1.023,-1.024,-1.025,-1.026,-1.027, - &-1.028,-1.028,-1.029,-1.030,-1.031,-1.032,-1.033,-1.034,-1.034, - &-1.035,-1.036,-1.037,-1.038,-1.039,-1.039,-1.040,-1.041,-1.042, - &-1.042,-1.043,-1.044,-1.045,-1.045,-1.046,-1.047,-1.048,-1.048, - &-1.049,-1.050,-1.050,-1.051,-1.052,-1.052,-1.053,-1.054,-1.055, - &-1.055,-1.056,-1.056,-1.057,-1.058,-1.058,-1.059,-1.060,-1.060, - &-1.061,-1.062,-1.062,-1.063,-1.063,-1.064,-1.065,-1.065,-1.066, - &-1.066,-1.067,-1.068,-1.068,-1.069,-1.069,-1.070,-1.070,-1.071, - &-1.071,-1.072,-1.073,-1.073,-1.074,-1.074,-1.075,-1.075,-1.076, - &-1.076,-1.077,-1.077,-1.078,-1.078,-1.079,-1.079,-1.080,-1.080, - &-1.081,-1.081,-1.082 - & /) -! -! *** (H,HSO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC08M_298 = (/ - &-0.044,-0.088,-0.106,-0.116,-0.123,-0.128,-0.131,-0.133,-0.134, - &-0.134,-0.134,-0.133,-0.131,-0.129,-0.127,-0.125,-0.122,-0.119, - &-0.115,-0.112,-0.108,-0.104,-0.100,-0.095,-0.091,-0.086,-0.081, - &-0.076,-0.071,-0.066,-0.060,-0.055,-0.049,-0.043,-0.037,-0.031, - &-0.025,-0.019,-0.013,-0.006, 0.000, 0.007, 0.013, 0.020, 0.027, - & 0.034, 0.041, 0.048, 0.055, 0.062, 0.069, 0.076, 0.083, 0.090, - & 0.098, 0.105, 0.113, 0.120, 0.127, 0.135, 0.143, 0.150, 0.158, - & 0.166, 0.173, 0.181, 0.189, 0.197, 0.205, 0.212, 0.220, 0.228, - & 0.236, 0.245, 0.253, 0.261, 0.269, 0.277, 0.286, 0.294, 0.302, - & 0.311, 0.319, 0.328, 0.336, 0.345, 0.353, 0.362, 0.371, 0.380, - & 0.388, 0.397, 0.406, 0.415, 0.424, 0.433, 0.442, 0.451, 0.460, - & 0.469, 0.479, 0.488, 0.497, 0.506, 0.516, 0.525, 0.535, 0.544, - & 0.553, 0.563, 0.572, 0.582, 0.591, 0.601, 0.610, 0.620, 0.629, - & 0.639, 0.648, 0.658, 0.667, 0.677, 0.686, 0.696, 0.705, 0.715, - & 0.725, 0.734, 0.744, 0.753, 0.763, 0.772, 0.782, 0.791, 0.800, - & 0.810, 0.819, 0.829, 0.838, 0.848, 0.857, 0.866, 0.876, 0.885, - & 0.894, 0.904, 0.913, 0.922, 0.932, 0.941, 0.950, 0.959, 0.968, - & 0.978, 0.987, 0.996, 1.005, 1.014, 1.023, 1.032, 1.041, 1.050, - & 1.059, 1.069, 1.077, 1.086, 1.095, 1.104, 1.113, 1.122, 1.131, - & 1.140, 1.149, 1.158, 1.166, 1.175, 1.184, 1.193, 1.202, 1.210, - & 1.219, 1.228, 1.236, 1.245, 1.254, 1.262, 1.271, 1.279, 1.288, - & 1.296, 1.305, 1.314, 1.322, 1.330, 1.339, 1.347, 1.356, 1.364, - & 1.373, 1.381, 1.389, 1.398, 1.406, 1.414, 1.422, 1.431, 1.439, - & 1.447, 1.455, 1.464, 1.472, 1.480, 1.488, 1.496, 1.504, 1.512, - & 1.520, 1.528, 1.537, 1.545, 1.553, 1.561, 1.568, 1.576, 1.584, - & 1.592, 1.600, 1.608, 1.616, 1.624, 1.632, 1.639, 1.647, 1.655, - & 1.663, 1.670, 1.678, 1.686, 1.694, 1.701, 1.709, 1.717, 1.724, - & 1.732, 1.740, 1.747, 1.755, 1.762, 1.770, 1.777, 1.785, 1.792, - & 1.800, 1.807, 1.815, 1.822, 1.830, 1.837, 1.844, 1.852, 1.859, - & 1.866, 1.874, 1.881, 1.888, 1.896, 1.903, 1.910, 1.917, 1.925, - & 1.932, 1.939, 1.946, 1.953, 1.961, 1.968, 1.975, 1.982, 1.989, - & 1.996, 2.003, 2.010, 2.017, 2.024, 2.031, 2.038, 2.045, 2.052, - & 2.059, 2.066, 2.073, 2.080, 2.087, 2.094, 2.101, 2.108, 2.114, - & 2.121, 2.128, 2.135, 2.142, 2.148, 2.155, 2.162, 2.169, 2.175, - & 2.182, 2.189, 2.196, 2.202, 2.209, 2.216, 2.222, 2.229, 2.236, - & 2.242, 2.249, 2.255, 2.262, 2.268, 2.275, 2.281, 2.288, 2.295, - & 2.301, 2.308, 2.314, 2.320, 2.327, 2.333, 2.340, 2.346, 2.353, - & 2.359, 2.365, 2.372, 2.378, 2.384, 2.391, 2.397, 2.403, 2.410, - & 2.416, 2.422, 2.429, 2.435, 2.441, 2.447, 2.453, 2.460, 2.466, - & 2.472, 2.478, 2.484, 2.491, 2.497, 2.503, 2.509, 2.515, 2.521, - & 2.527, 2.533, 2.539, 2.546, 2.552, 2.558, 2.564, 2.570, 2.576, - & 2.582, 2.588, 2.594, 2.600, 2.606, 2.612, 2.617, 2.623, 2.629, - & 2.635, 2.641, 2.647, 2.653, 2.659, 2.665, 2.670, 2.676, 2.682, - & 2.688, 2.694, 2.700, 2.705, 2.711, 2.717, 2.723, 2.728, 2.734, - & 2.740, 2.746, 2.751, 2.757, 2.818, 2.874, 2.928, 2.982, 3.035, - & 3.087, 3.139, 3.190, 3.239, 3.289, 3.337, 3.385, 3.432, 3.479, - & 3.525, 3.571, 3.615, 3.660, 3.703, 3.746, 3.789, 3.831, 3.873, - & 3.914, 3.954, 3.995, 4.034, 4.073, 4.112, 4.151, 4.189, 4.226, - & 4.263, 4.300, 4.336, 4.372, 4.408, 4.443, 4.478, 4.513, 4.547, - & 4.581, 4.614, 4.647, 4.680, 4.713, 4.745, 4.777, 4.809, 4.840, - & 4.871, 4.902, 4.933, 4.963, 4.993, 5.023, 5.052, 5.082, 5.111, - & 5.140, 5.168, 5.196, 5.224, 5.252, 5.280, 5.307, 5.335, 5.362, - & 5.388, 5.415, 5.441, 5.468, 5.494, 5.519, 5.545, 5.570, 5.596, - & 5.621, 5.646, 5.670, 5.695, 5.719, 5.743, 5.767, 5.791, 5.815, - & 5.838, 5.862, 5.885, 5.908, 5.931, 5.954, 5.976, 5.999, 6.021, - & 6.043, 6.065, 6.087, 6.109, 6.130, 6.152, 6.173, 6.194, 6.215, - & 6.236, 6.257, 6.278, 6.298, 6.319, 6.339, 6.359, 6.380, 6.400, - & 6.419, 6.439, 6.459, 6.478, 6.498, 6.517, 6.536, 6.555, 6.574, - & 6.593, 6.612, 6.631, 6.649, 6.668, 6.686, 6.705, 6.723, 6.741, - & 6.759, 6.777, 6.795, 6.812, 6.830, 6.848, 6.865, 6.882, 6.900, - & 6.917, 6.934, 6.951, 6.968, 6.985, 7.002, 7.018, 7.035, 7.052, - & 7.068, 7.084, 7.101, 7.117, 7.133, 7.149, 7.165, 7.181, 7.197, - & 7.213, 7.229, 7.244 - & /) -! -! *** NH4HSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC09M_298 = (/ - &-0.046,-0.097,-0.122,-0.138,-0.151,-0.162,-0.170,-0.177,-0.184, - &-0.189,-0.194,-0.198,-0.202,-0.206,-0.209,-0.212,-0.214,-0.216, - &-0.218,-0.220,-0.222,-0.223,-0.224,-0.225,-0.226,-0.227,-0.227, - &-0.228,-0.228,-0.228,-0.228,-0.228,-0.228,-0.228,-0.228,-0.227, - &-0.227,-0.226,-0.225,-0.225,-0.224,-0.223,-0.222,-0.221,-0.220, - &-0.219,-0.218,-0.216,-0.215,-0.214,-0.212,-0.211,-0.209,-0.208, - &-0.206,-0.204,-0.203,-0.201,-0.199,-0.197,-0.195,-0.193,-0.192, - &-0.190,-0.188,-0.185,-0.183,-0.181,-0.179,-0.177,-0.175,-0.173, - &-0.170,-0.168,-0.166,-0.163,-0.161,-0.159,-0.156,-0.154,-0.151, - &-0.149,-0.146,-0.144,-0.141,-0.139,-0.136,-0.133,-0.131,-0.128, - &-0.125,-0.122,-0.120,-0.117,-0.114,-0.111,-0.108,-0.106,-0.103, - &-0.100,-0.097,-0.094,-0.091,-0.088,-0.085,-0.082,-0.079,-0.076, - &-0.073,-0.070,-0.067,-0.064,-0.061,-0.058,-0.055,-0.052,-0.049, - &-0.045,-0.042,-0.039,-0.036,-0.033,-0.030,-0.027,-0.024,-0.021, - &-0.018,-0.014,-0.011,-0.008,-0.005,-0.002, 0.001, 0.004, 0.007, - & 0.010, 0.013, 0.016, 0.020, 0.023, 0.026, 0.029, 0.032, 0.035, - & 0.038, 0.041, 0.044, 0.047, 0.050, 0.053, 0.056, 0.059, 0.062, - & 0.065, 0.068, 0.071, 0.074, 0.077, 0.080, 0.083, 0.086, 0.089, - & 0.092, 0.095, 0.098, 0.101, 0.104, 0.106, 0.109, 0.112, 0.115, - & 0.118, 0.121, 0.124, 0.127, 0.130, 0.132, 0.135, 0.138, 0.141, - & 0.144, 0.147, 0.150, 0.152, 0.155, 0.158, 0.161, 0.164, 0.166, - & 0.169, 0.172, 0.175, 0.177, 0.180, 0.183, 0.186, 0.188, 0.191, - & 0.194, 0.197, 0.199, 0.202, 0.205, 0.208, 0.210, 0.213, 0.216, - & 0.218, 0.221, 0.224, 0.226, 0.229, 0.232, 0.234, 0.237, 0.239, - & 0.242, 0.245, 0.247, 0.250, 0.253, 0.255, 0.258, 0.260, 0.263, - & 0.265, 0.268, 0.271, 0.273, 0.276, 0.278, 0.281, 0.283, 0.286, - & 0.288, 0.291, 0.293, 0.296, 0.298, 0.301, 0.303, 0.306, 0.308, - & 0.311, 0.313, 0.316, 0.318, 0.321, 0.323, 0.326, 0.328, 0.330, - & 0.333, 0.335, 0.338, 0.340, 0.343, 0.345, 0.347, 0.350, 0.352, - & 0.355, 0.357, 0.359, 0.362, 0.364, 0.366, 0.369, 0.371, 0.374, - & 0.376, 0.378, 0.381, 0.383, 0.385, 0.388, 0.390, 0.392, 0.394, - & 0.397, 0.399, 0.401, 0.404, 0.406, 0.408, 0.410, 0.413, 0.415, - & 0.417, 0.420, 0.422, 0.424, 0.426, 0.429, 0.431, 0.433, 0.435, - & 0.437, 0.440, 0.442, 0.444, 0.446, 0.449, 0.451, 0.453, 0.455, - & 0.457, 0.460, 0.462, 0.464, 0.466, 0.468, 0.470, 0.473, 0.475, - & 0.477, 0.479, 0.481, 0.483, 0.485, 0.488, 0.490, 0.492, 0.494, - & 0.496, 0.498, 0.500, 0.502, 0.504, 0.507, 0.509, 0.511, 0.513, - & 0.515, 0.517, 0.519, 0.521, 0.523, 0.525, 0.527, 0.529, 0.531, - & 0.534, 0.536, 0.538, 0.540, 0.542, 0.544, 0.546, 0.548, 0.550, - & 0.552, 0.554, 0.556, 0.558, 0.560, 0.562, 0.564, 0.566, 0.568, - & 0.570, 0.572, 0.574, 0.576, 0.578, 0.580, 0.582, 0.584, 0.586, - & 0.588, 0.590, 0.592, 0.593, 0.595, 0.597, 0.599, 0.601, 0.603, - & 0.605, 0.607, 0.609, 0.611, 0.613, 0.615, 0.617, 0.619, 0.620, - & 0.622, 0.624, 0.626, 0.628, 0.630, 0.632, 0.634, 0.636, 0.637, - & 0.639, 0.641, 0.643, 0.645, 0.665, 0.683, 0.701, 0.719, 0.736, - & 0.753, 0.770, 0.787, 0.803, 0.820, 0.836, 0.852, 0.867, 0.883, - & 0.898, 0.913, 0.928, 0.942, 0.957, 0.971, 0.985, 0.999, 1.013, - & 1.027, 1.040, 1.053, 1.067, 1.080, 1.093, 1.105, 1.118, 1.131, - & 1.143, 1.155, 1.167, 1.179, 1.191, 1.203, 1.215, 1.226, 1.238, - & 1.249, 1.260, 1.271, 1.283, 1.293, 1.304, 1.315, 1.326, 1.336, - & 1.347, 1.357, 1.367, 1.377, 1.388, 1.398, 1.408, 1.417, 1.427, - & 1.437, 1.446, 1.456, 1.466, 1.475, 1.484, 1.493, 1.503, 1.512, - & 1.521, 1.530, 1.539, 1.548, 1.556, 1.565, 1.574, 1.582, 1.591, - & 1.599, 1.608, 1.616, 1.624, 1.633, 1.641, 1.649, 1.657, 1.665, - & 1.673, 1.681, 1.689, 1.697, 1.704, 1.712, 1.720, 1.727, 1.735, - & 1.742, 1.750, 1.757, 1.765, 1.772, 1.779, 1.787, 1.794, 1.801, - & 1.808, 1.815, 1.822, 1.829, 1.836, 1.843, 1.850, 1.857, 1.864, - & 1.870, 1.877, 1.884, 1.890, 1.897, 1.904, 1.910, 1.917, 1.923, - & 1.930, 1.936, 1.942, 1.949, 1.955, 1.961, 1.968, 1.974, 1.980, - & 1.986, 1.992, 1.998, 2.004, 2.010, 2.016, 2.022, 2.028, 2.034, - & 2.040, 2.046, 2.052, 2.058, 2.063, 2.069, 2.075, 2.080, 2.086, - & 2.092, 2.097, 2.103, 2.108, 2.114, 2.119, 2.125, 2.130, 2.136, - & 2.141, 2.147, 2.152 - & /) -! -! *** (H,NO3) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC10M_298 = (/ - &-0.045,-0.094,-0.116,-0.130,-0.140,-0.147,-0.153,-0.158,-0.162, - &-0.165,-0.167,-0.169,-0.171,-0.172,-0.173,-0.173,-0.174,-0.174, - &-0.174,-0.173,-0.173,-0.172,-0.172,-0.171,-0.170,-0.169,-0.168, - &-0.167,-0.166,-0.165,-0.163,-0.162,-0.161,-0.159,-0.158,-0.156, - &-0.155,-0.153,-0.152,-0.150,-0.148,-0.147,-0.145,-0.143,-0.142, - &-0.140,-0.138,-0.136,-0.135,-0.133,-0.131,-0.129,-0.127,-0.126, - &-0.124,-0.122,-0.120,-0.118,-0.117,-0.115,-0.113,-0.111,-0.109, - &-0.107,-0.106,-0.104,-0.102,-0.100,-0.098,-0.096,-0.094,-0.092, - &-0.090,-0.088,-0.086,-0.084,-0.083,-0.081,-0.079,-0.077,-0.074, - &-0.072,-0.070,-0.068,-0.066,-0.064,-0.062,-0.060,-0.058,-0.056, - &-0.053,-0.051,-0.049,-0.047,-0.045,-0.042,-0.040,-0.038,-0.036, - &-0.033,-0.031,-0.029,-0.026,-0.024,-0.022,-0.019,-0.017,-0.015, - &-0.012,-0.010,-0.008,-0.005,-0.003, 0.000, 0.002, 0.004, 0.007, - & 0.009, 0.012, 0.014, 0.017, 0.019, 0.022, 0.024, 0.026, 0.029, - & 0.031, 0.034, 0.036, 0.039, 0.041, 0.044, 0.046, 0.049, 0.051, - & 0.053, 0.056, 0.058, 0.061, 0.063, 0.066, 0.068, 0.071, 0.073, - & 0.075, 0.078, 0.080, 0.083, 0.085, 0.088, 0.090, 0.092, 0.095, - & 0.097, 0.100, 0.102, 0.105, 0.107, 0.109, 0.112, 0.114, 0.117, - & 0.119, 0.121, 0.124, 0.126, 0.129, 0.131, 0.133, 0.136, 0.138, - & 0.140, 0.143, 0.145, 0.148, 0.150, 0.152, 0.155, 0.157, 0.159, - & 0.162, 0.164, 0.166, 0.169, 0.171, 0.173, 0.176, 0.178, 0.180, - & 0.183, 0.185, 0.187, 0.190, 0.192, 0.194, 0.197, 0.199, 0.201, - & 0.204, 0.206, 0.208, 0.210, 0.213, 0.215, 0.217, 0.220, 0.222, - & 0.224, 0.226, 0.229, 0.231, 0.233, 0.235, 0.238, 0.240, 0.242, - & 0.244, 0.247, 0.249, 0.251, 0.253, 0.256, 0.258, 0.260, 0.262, - & 0.264, 0.267, 0.269, 0.271, 0.273, 0.275, 0.278, 0.280, 0.282, - & 0.284, 0.286, 0.288, 0.291, 0.293, 0.295, 0.297, 0.299, 0.301, - & 0.304, 0.306, 0.308, 0.310, 0.312, 0.314, 0.317, 0.319, 0.321, - & 0.323, 0.325, 0.327, 0.329, 0.331, 0.333, 0.336, 0.338, 0.340, - & 0.342, 0.344, 0.346, 0.348, 0.350, 0.352, 0.354, 0.356, 0.359, - & 0.361, 0.363, 0.365, 0.367, 0.369, 0.371, 0.373, 0.375, 0.377, - & 0.379, 0.381, 0.383, 0.385, 0.387, 0.389, 0.391, 0.393, 0.395, - & 0.397, 0.399, 0.401, 0.403, 0.405, 0.407, 0.409, 0.411, 0.413, - & 0.415, 0.417, 0.419, 0.421, 0.423, 0.425, 0.427, 0.429, 0.431, - & 0.433, 0.435, 0.437, 0.439, 0.441, 0.443, 0.445, 0.447, 0.449, - & 0.451, 0.453, 0.455, 0.456, 0.458, 0.460, 0.462, 0.464, 0.466, - & 0.468, 0.470, 0.472, 0.474, 0.476, 0.477, 0.479, 0.481, 0.483, - & 0.485, 0.487, 0.489, 0.491, 0.493, 0.494, 0.496, 0.498, 0.500, - & 0.502, 0.504, 0.506, 0.507, 0.509, 0.511, 0.513, 0.515, 0.517, - & 0.518, 0.520, 0.522, 0.524, 0.526, 0.528, 0.529, 0.531, 0.533, - & 0.535, 0.537, 0.539, 0.540, 0.542, 0.544, 0.546, 0.547, 0.549, - & 0.551, 0.553, 0.555, 0.556, 0.558, 0.560, 0.562, 0.564, 0.565, - & 0.567, 0.569, 0.571, 0.572, 0.574, 0.576, 0.578, 0.579, 0.581, - & 0.583, 0.585, 0.586, 0.588, 0.590, 0.592, 0.593, 0.595, 0.597, - & 0.598, 0.600, 0.602, 0.604, 0.622, 0.639, 0.655, 0.672, 0.688, - & 0.704, 0.719, 0.735, 0.750, 0.765, 0.780, 0.795, 0.809, 0.824, - & 0.838, 0.852, 0.866, 0.879, 0.893, 0.906, 0.919, 0.932, 0.945, - & 0.958, 0.971, 0.983, 0.996, 1.008, 1.020, 1.032, 1.044, 1.055, - & 1.067, 1.079, 1.090, 1.101, 1.112, 1.123, 1.134, 1.145, 1.156, - & 1.167, 1.177, 1.188, 1.198, 1.208, 1.218, 1.228, 1.238, 1.248, - & 1.258, 1.268, 1.278, 1.287, 1.297, 1.306, 1.315, 1.325, 1.334, - & 1.343, 1.352, 1.361, 1.370, 1.379, 1.387, 1.396, 1.405, 1.413, - & 1.422, 1.430, 1.438, 1.447, 1.455, 1.463, 1.471, 1.479, 1.487, - & 1.495, 1.503, 1.511, 1.519, 1.527, 1.534, 1.542, 1.550, 1.557, - & 1.565, 1.572, 1.579, 1.587, 1.594, 1.601, 1.608, 1.616, 1.623, - & 1.630, 1.637, 1.644, 1.651, 1.657, 1.664, 1.671, 1.678, 1.685, - & 1.691, 1.698, 1.704, 1.711, 1.718, 1.724, 1.730, 1.737, 1.743, - & 1.750, 1.756, 1.762, 1.768, 1.775, 1.781, 1.787, 1.793, 1.799, - & 1.805, 1.811, 1.817, 1.823, 1.829, 1.835, 1.841, 1.846, 1.852, - & 1.858, 1.864, 1.869, 1.875, 1.881, 1.886, 1.892, 1.897, 1.903, - & 1.908, 1.914, 1.919, 1.925, 1.930, 1.936, 1.941, 1.946, 1.952, - & 1.957, 1.962, 1.967, 1.972, 1.978, 1.983, 1.988, 1.993, 1.998, - & 2.003, 2.008, 2.013 - & /) -! -! *** (H,Cl) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC11M_298 = (/ - &-0.044,-0.089,-0.107,-0.118,-0.125,-0.130,-0.133,-0.135,-0.136, - &-0.136,-0.136,-0.135,-0.134,-0.132,-0.130,-0.128,-0.125,-0.122, - &-0.119,-0.116,-0.113,-0.109,-0.105,-0.102,-0.098,-0.094,-0.089, - &-0.085,-0.081,-0.076,-0.072,-0.067,-0.062,-0.057,-0.053,-0.048, - &-0.043,-0.038,-0.033,-0.028,-0.022,-0.017,-0.012,-0.007,-0.001, - & 0.004, 0.009, 0.015, 0.020, 0.025, 0.031, 0.036, 0.042, 0.047, - & 0.053, 0.058, 0.064, 0.069, 0.075, 0.081, 0.086, 0.092, 0.097, - & 0.103, 0.109, 0.114, 0.120, 0.126, 0.132, 0.137, 0.143, 0.149, - & 0.155, 0.161, 0.167, 0.172, 0.178, 0.184, 0.190, 0.196, 0.202, - & 0.208, 0.214, 0.220, 0.227, 0.233, 0.239, 0.245, 0.251, 0.258, - & 0.264, 0.270, 0.277, 0.283, 0.290, 0.296, 0.303, 0.309, 0.316, - & 0.322, 0.329, 0.335, 0.342, 0.349, 0.355, 0.362, 0.369, 0.376, - & 0.382, 0.389, 0.396, 0.403, 0.409, 0.416, 0.423, 0.430, 0.437, - & 0.444, 0.450, 0.457, 0.464, 0.471, 0.478, 0.485, 0.491, 0.498, - & 0.505, 0.512, 0.519, 0.526, 0.533, 0.539, 0.546, 0.553, 0.560, - & 0.567, 0.573, 0.580, 0.587, 0.594, 0.601, 0.607, 0.614, 0.621, - & 0.628, 0.634, 0.641, 0.648, 0.654, 0.661, 0.668, 0.675, 0.681, - & 0.688, 0.694, 0.701, 0.708, 0.714, 0.721, 0.728, 0.734, 0.741, - & 0.747, 0.754, 0.760, 0.767, 0.773, 0.780, 0.786, 0.793, 0.799, - & 0.806, 0.812, 0.819, 0.825, 0.831, 0.838, 0.844, 0.850, 0.857, - & 0.863, 0.870, 0.876, 0.882, 0.888, 0.895, 0.901, 0.907, 0.914, - & 0.920, 0.926, 0.932, 0.938, 0.945, 0.951, 0.957, 0.963, 0.969, - & 0.975, 0.981, 0.988, 0.994, 1.000, 1.006, 1.012, 1.018, 1.024, - & 1.030, 1.036, 1.042, 1.048, 1.054, 1.060, 1.066, 1.072, 1.078, - & 1.084, 1.090, 1.096, 1.101, 1.107, 1.113, 1.119, 1.125, 1.131, - & 1.137, 1.142, 1.148, 1.154, 1.160, 1.165, 1.171, 1.177, 1.183, - & 1.188, 1.194, 1.200, 1.205, 1.211, 1.217, 1.222, 1.228, 1.234, - & 1.239, 1.245, 1.251, 1.256, 1.262, 1.267, 1.273, 1.278, 1.284, - & 1.289, 1.295, 1.300, 1.306, 1.311, 1.317, 1.322, 1.328, 1.333, - & 1.339, 1.344, 1.349, 1.355, 1.360, 1.366, 1.371, 1.376, 1.382, - & 1.387, 1.392, 1.398, 1.403, 1.408, 1.413, 1.419, 1.424, 1.429, - & 1.434, 1.440, 1.445, 1.450, 1.455, 1.460, 1.466, 1.471, 1.476, - & 1.481, 1.486, 1.491, 1.497, 1.502, 1.507, 1.512, 1.517, 1.522, - & 1.527, 1.532, 1.537, 1.542, 1.547, 1.552, 1.557, 1.562, 1.567, - & 1.572, 1.577, 1.582, 1.587, 1.592, 1.597, 1.602, 1.607, 1.612, - & 1.617, 1.622, 1.626, 1.631, 1.636, 1.641, 1.646, 1.651, 1.656, - & 1.660, 1.665, 1.670, 1.675, 1.680, 1.684, 1.689, 1.694, 1.699, - & 1.703, 1.708, 1.713, 1.718, 1.722, 1.727, 1.732, 1.736, 1.741, - & 1.746, 1.750, 1.755, 1.760, 1.764, 1.769, 1.774, 1.778, 1.783, - & 1.787, 1.792, 1.797, 1.801, 1.806, 1.810, 1.815, 1.819, 1.824, - & 1.828, 1.833, 1.838, 1.842, 1.847, 1.851, 1.855, 1.860, 1.864, - & 1.869, 1.873, 1.878, 1.882, 1.887, 1.891, 1.895, 1.900, 1.904, - & 1.909, 1.913, 1.917, 1.922, 1.926, 1.931, 1.935, 1.939, 1.944, - & 1.948, 1.952, 1.957, 1.961, 1.965, 1.969, 1.974, 1.978, 1.982, - & 1.987, 1.991, 1.995, 1.999, 2.045, 2.086, 2.127, 2.167, 2.206, - & 2.245, 2.284, 2.322, 2.359, 2.396, 2.432, 2.468, 2.503, 2.538, - & 2.572, 2.606, 2.639, 2.672, 2.705, 2.737, 2.769, 2.800, 2.831, - & 2.862, 2.892, 2.922, 2.952, 2.981, 3.010, 3.039, 3.067, 3.095, - & 3.123, 3.150, 3.178, 3.204, 3.231, 3.257, 3.283, 3.309, 3.335, - & 3.360, 3.385, 3.410, 3.435, 3.459, 3.483, 3.507, 3.531, 3.554, - & 3.577, 3.600, 3.623, 3.646, 3.668, 3.691, 3.713, 3.735, 3.756, - & 3.778, 3.799, 3.820, 3.841, 3.862, 3.883, 3.903, 3.924, 3.944, - & 3.964, 3.984, 4.003, 4.023, 4.043, 4.062, 4.081, 4.100, 4.119, - & 4.138, 4.156, 4.175, 4.193, 4.211, 4.229, 4.247, 4.265, 4.283, - & 4.300, 4.318, 4.335, 4.352, 4.369, 4.386, 4.403, 4.420, 4.437, - & 4.453, 4.470, 4.486, 4.503, 4.519, 4.535, 4.551, 4.567, 4.582, - & 4.598, 4.614, 4.629, 4.644, 4.660, 4.675, 4.690, 4.705, 4.720, - & 4.735, 4.750, 4.764, 4.779, 4.794, 4.808, 4.822, 4.837, 4.851, - & 4.865, 4.879, 4.893, 4.907, 4.921, 4.935, 4.948, 4.962, 4.975, - & 4.989, 5.002, 5.016, 5.029, 5.042, 5.055, 5.068, 5.081, 5.094, - & 5.107, 5.120, 5.133, 5.145, 5.158, 5.171, 5.183, 5.196, 5.208, - & 5.220, 5.233, 5.245, 5.257, 5.269, 5.281, 5.293, 5.305, 5.317, - & 5.329, 5.340, 5.352 - & /) -! -! *** NaHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC12M_298 = (/ - &-0.045,-0.094,-0.116,-0.130,-0.140,-0.148,-0.155,-0.160,-0.164, - &-0.168,-0.170,-0.173,-0.174,-0.176,-0.177,-0.178,-0.178,-0.179, - &-0.179,-0.178,-0.178,-0.177,-0.177,-0.176,-0.175,-0.174,-0.172, - &-0.171,-0.170,-0.168,-0.166,-0.164,-0.162,-0.160,-0.158,-0.156, - &-0.154,-0.152,-0.149,-0.147,-0.144,-0.142,-0.139,-0.136,-0.134, - &-0.131,-0.128,-0.125,-0.122,-0.119,-0.116,-0.113,-0.110,-0.107, - &-0.103,-0.100,-0.097,-0.094,-0.090,-0.087,-0.084,-0.080,-0.077, - &-0.073,-0.070,-0.066,-0.063,-0.059,-0.055,-0.052,-0.048,-0.044, - &-0.040,-0.037,-0.033,-0.029,-0.025,-0.021,-0.017,-0.013,-0.010, - &-0.006,-0.002, 0.003, 0.007, 0.011, 0.015, 0.019, 0.023, 0.027, - & 0.032, 0.036, 0.040, 0.045, 0.049, 0.053, 0.058, 0.062, 0.066, - & 0.071, 0.075, 0.080, 0.084, 0.089, 0.094, 0.098, 0.103, 0.107, - & 0.112, 0.116, 0.121, 0.126, 0.130, 0.135, 0.140, 0.144, 0.149, - & 0.154, 0.158, 0.163, 0.168, 0.172, 0.177, 0.182, 0.186, 0.191, - & 0.196, 0.200, 0.205, 0.210, 0.215, 0.219, 0.224, 0.229, 0.233, - & 0.238, 0.242, 0.247, 0.252, 0.256, 0.261, 0.266, 0.270, 0.275, - & 0.279, 0.284, 0.289, 0.293, 0.298, 0.302, 0.307, 0.311, 0.316, - & 0.320, 0.325, 0.329, 0.334, 0.338, 0.343, 0.347, 0.352, 0.356, - & 0.361, 0.365, 0.370, 0.374, 0.379, 0.383, 0.387, 0.392, 0.396, - & 0.400, 0.405, 0.409, 0.414, 0.418, 0.422, 0.427, 0.431, 0.435, - & 0.440, 0.444, 0.448, 0.452, 0.457, 0.461, 0.465, 0.469, 0.474, - & 0.478, 0.482, 0.486, 0.490, 0.495, 0.499, 0.503, 0.507, 0.511, - & 0.515, 0.520, 0.524, 0.528, 0.532, 0.536, 0.540, 0.544, 0.548, - & 0.552, 0.556, 0.561, 0.565, 0.569, 0.573, 0.577, 0.581, 0.585, - & 0.589, 0.593, 0.597, 0.601, 0.605, 0.609, 0.613, 0.616, 0.620, - & 0.624, 0.628, 0.632, 0.636, 0.640, 0.644, 0.648, 0.652, 0.655, - & 0.659, 0.663, 0.667, 0.671, 0.675, 0.679, 0.682, 0.686, 0.690, - & 0.694, 0.697, 0.701, 0.705, 0.709, 0.713, 0.716, 0.720, 0.724, - & 0.728, 0.731, 0.735, 0.739, 0.742, 0.746, 0.750, 0.753, 0.757, - & 0.761, 0.764, 0.768, 0.772, 0.775, 0.779, 0.783, 0.786, 0.790, - & 0.793, 0.797, 0.801, 0.804, 0.808, 0.811, 0.815, 0.818, 0.822, - & 0.825, 0.829, 0.833, 0.836, 0.840, 0.843, 0.847, 0.850, 0.854, - & 0.857, 0.861, 0.864, 0.867, 0.871, 0.874, 0.878, 0.881, 0.885, - & 0.888, 0.892, 0.895, 0.898, 0.902, 0.905, 0.909, 0.912, 0.915, - & 0.919, 0.922, 0.925, 0.929, 0.932, 0.935, 0.939, 0.942, 0.945, - & 0.949, 0.952, 0.955, 0.959, 0.962, 0.965, 0.969, 0.972, 0.975, - & 0.978, 0.982, 0.985, 0.988, 0.991, 0.995, 0.998, 1.001, 1.004, - & 1.008, 1.011, 1.014, 1.017, 1.020, 1.024, 1.027, 1.030, 1.033, - & 1.036, 1.039, 1.043, 1.046, 1.049, 1.052, 1.055, 1.058, 1.061, - & 1.065, 1.068, 1.071, 1.074, 1.077, 1.080, 1.083, 1.086, 1.089, - & 1.092, 1.096, 1.099, 1.102, 1.105, 1.108, 1.111, 1.114, 1.117, - & 1.120, 1.123, 1.126, 1.129, 1.132, 1.135, 1.138, 1.141, 1.144, - & 1.147, 1.150, 1.153, 1.156, 1.159, 1.162, 1.165, 1.168, 1.171, - & 1.174, 1.177, 1.180, 1.183, 1.185, 1.188, 1.191, 1.194, 1.197, - & 1.200, 1.203, 1.206, 1.209, 1.240, 1.268, 1.296, 1.323, 1.350, - & 1.377, 1.403, 1.429, 1.454, 1.480, 1.505, 1.529, 1.553, 1.577, - & 1.601, 1.624, 1.647, 1.670, 1.692, 1.715, 1.737, 1.758, 1.780, - & 1.801, 1.822, 1.843, 1.863, 1.883, 1.903, 1.923, 1.943, 1.962, - & 1.981, 2.000, 2.019, 2.038, 2.056, 2.075, 2.093, 2.111, 2.128, - & 2.146, 2.163, 2.181, 2.198, 2.215, 2.231, 2.248, 2.264, 2.281, - & 2.297, 2.313, 2.329, 2.345, 2.360, 2.376, 2.391, 2.406, 2.422, - & 2.437, 2.451, 2.466, 2.481, 2.495, 2.510, 2.524, 2.538, 2.552, - & 2.566, 2.580, 2.594, 2.608, 2.621, 2.635, 2.648, 2.661, 2.674, - & 2.687, 2.700, 2.713, 2.726, 2.739, 2.751, 2.764, 2.776, 2.789, - & 2.801, 2.813, 2.825, 2.838, 2.850, 2.861, 2.873, 2.885, 2.897, - & 2.908, 2.920, 2.931, 2.943, 2.954, 2.965, 2.976, 2.987, 2.998, - & 3.009, 3.020, 3.031, 3.042, 3.053, 3.063, 3.074, 3.084, 3.095, - & 3.105, 3.116, 3.126, 3.136, 3.146, 3.156, 3.166, 3.176, 3.186, - & 3.196, 3.206, 3.216, 3.226, 3.235, 3.245, 3.255, 3.264, 3.274, - & 3.283, 3.292, 3.302, 3.311, 3.320, 3.330, 3.339, 3.348, 3.357, - & 3.366, 3.375, 3.384, 3.393, 3.402, 3.410, 3.419, 3.428, 3.437, - & 3.445, 3.454, 3.462, 3.471, 3.479, 3.488, 3.496, 3.505, 3.513, - & 3.521, 3.529, 3.538 - & /) -! -! *** (NH4)3H(SO4)2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC13M_298 = (/ - &-0.074,-0.160,-0.203,-0.233,-0.256,-0.275,-0.291,-0.306,-0.318, - &-0.329,-0.339,-0.349,-0.357,-0.365,-0.372,-0.379,-0.386,-0.392, - &-0.397,-0.402,-0.407,-0.412,-0.417,-0.421,-0.425,-0.429,-0.433, - &-0.436,-0.439,-0.443,-0.446,-0.448,-0.451,-0.454,-0.456,-0.459, - &-0.461,-0.463,-0.466,-0.468,-0.470,-0.471,-0.473,-0.475,-0.477, - &-0.478,-0.480,-0.481,-0.482,-0.484,-0.485,-0.486,-0.487,-0.488, - &-0.489,-0.490,-0.491,-0.492,-0.493,-0.494,-0.495,-0.496,-0.496, - &-0.497,-0.498,-0.498,-0.499,-0.499,-0.500,-0.500,-0.501,-0.501, - &-0.501,-0.502,-0.502,-0.502,-0.503,-0.503,-0.503,-0.503,-0.503, - &-0.504,-0.504,-0.504,-0.504,-0.504,-0.504,-0.504,-0.504,-0.504, - &-0.504,-0.504,-0.504,-0.504,-0.504,-0.503,-0.503,-0.503,-0.503, - &-0.503,-0.503,-0.502,-0.502,-0.502,-0.502,-0.501,-0.501,-0.501, - &-0.501,-0.500,-0.500,-0.500,-0.499,-0.499,-0.498,-0.498,-0.498, - &-0.497,-0.497,-0.497,-0.496,-0.496,-0.495,-0.495,-0.494,-0.494, - &-0.494,-0.493,-0.493,-0.492,-0.492,-0.491,-0.491,-0.490,-0.490, - &-0.489,-0.489,-0.488,-0.488,-0.487,-0.487,-0.486,-0.486,-0.485, - &-0.485,-0.484,-0.484,-0.483,-0.483,-0.482,-0.482,-0.481,-0.481, - &-0.480,-0.479,-0.479,-0.478,-0.478,-0.477,-0.477,-0.476,-0.476, - &-0.475,-0.475,-0.474,-0.473,-0.473,-0.472,-0.472,-0.471,-0.471, - &-0.470,-0.470,-0.469,-0.468,-0.468,-0.467,-0.467,-0.466,-0.466, - &-0.465,-0.464,-0.464,-0.463,-0.463,-0.462,-0.462,-0.461,-0.461, - &-0.460,-0.459,-0.459,-0.458,-0.458,-0.457,-0.457,-0.456,-0.455, - &-0.455,-0.454,-0.454,-0.453,-0.453,-0.452,-0.451,-0.451,-0.450, - &-0.450,-0.449,-0.449,-0.448,-0.447,-0.447,-0.446,-0.446,-0.445, - &-0.445,-0.444,-0.443,-0.443,-0.442,-0.442,-0.441,-0.441,-0.440, - &-0.440,-0.439,-0.438,-0.438,-0.437,-0.437,-0.436,-0.436,-0.435, - &-0.434,-0.434,-0.433,-0.433,-0.432,-0.432,-0.431,-0.431,-0.430, - &-0.429,-0.429,-0.428,-0.428,-0.427,-0.427,-0.426,-0.426,-0.425, - &-0.424,-0.424,-0.423,-0.423,-0.422,-0.422,-0.421,-0.421,-0.420, - &-0.419,-0.419,-0.418,-0.418,-0.417,-0.417,-0.416,-0.416,-0.415, - &-0.415,-0.414,-0.413,-0.413,-0.412,-0.412,-0.411,-0.411,-0.410, - &-0.410,-0.409,-0.409,-0.408,-0.408,-0.407,-0.406,-0.406,-0.405, - &-0.405,-0.404,-0.404,-0.403,-0.403,-0.402,-0.402,-0.401,-0.401, - &-0.400,-0.399,-0.399,-0.398,-0.398,-0.397,-0.397,-0.396,-0.396, - &-0.395,-0.395,-0.394,-0.394,-0.393,-0.393,-0.392,-0.392,-0.391, - &-0.391,-0.390,-0.390,-0.389,-0.388,-0.388,-0.387,-0.387,-0.386, - &-0.386,-0.385,-0.385,-0.384,-0.384,-0.383,-0.383,-0.382,-0.382, - &-0.381,-0.381,-0.380,-0.380,-0.379,-0.379,-0.378,-0.378,-0.377, - &-0.377,-0.376,-0.376,-0.375,-0.375,-0.374,-0.374,-0.373,-0.373, - &-0.372,-0.372,-0.371,-0.371,-0.370,-0.370,-0.369,-0.369,-0.368, - &-0.368,-0.367,-0.367,-0.366,-0.366,-0.365,-0.365,-0.364,-0.364, - &-0.363,-0.363,-0.362,-0.362,-0.361,-0.361,-0.360,-0.360,-0.359, - &-0.359,-0.358,-0.358,-0.357,-0.357,-0.356,-0.356,-0.355,-0.355, - &-0.354,-0.354,-0.353,-0.353,-0.352,-0.352,-0.352,-0.351,-0.351, - &-0.350,-0.350,-0.349,-0.349,-0.344,-0.339,-0.334,-0.330,-0.325, - &-0.321,-0.316,-0.312,-0.307,-0.303,-0.299,-0.295,-0.290,-0.286, - &-0.282,-0.278,-0.274,-0.270,-0.266,-0.262,-0.258,-0.255,-0.251, - &-0.247,-0.243,-0.240,-0.236,-0.232,-0.229,-0.225,-0.222,-0.218, - &-0.215,-0.211,-0.208,-0.204,-0.201,-0.198,-0.194,-0.191,-0.188, - &-0.185,-0.182,-0.178,-0.175,-0.172,-0.169,-0.166,-0.163,-0.160, - &-0.157,-0.154,-0.151,-0.148,-0.145,-0.142,-0.139,-0.137,-0.134, - &-0.131,-0.128,-0.125,-0.123,-0.120,-0.117,-0.115,-0.112,-0.109, - &-0.107,-0.104,-0.101,-0.099,-0.096,-0.094,-0.091,-0.089,-0.086, - &-0.084,-0.081,-0.079,-0.076,-0.074,-0.071,-0.069,-0.067,-0.064, - &-0.062,-0.060,-0.057,-0.055,-0.053,-0.050,-0.048,-0.046,-0.043, - &-0.041,-0.039,-0.037,-0.035,-0.032,-0.030,-0.028,-0.026,-0.024, - &-0.022,-0.020,-0.017,-0.015,-0.013,-0.011,-0.009,-0.007,-0.005, - &-0.003,-0.001, 0.001, 0.003, 0.005, 0.007, 0.009, 0.011, 0.013, - & 0.015, 0.017, 0.019, 0.021, 0.022, 0.024, 0.026, 0.028, 0.030, - & 0.032, 0.034, 0.036, 0.037, 0.039, 0.041, 0.043, 0.045, 0.046, - & 0.048, 0.050, 0.052, 0.053, 0.055, 0.057, 0.059, 0.060, 0.062, - & 0.064, 0.066, 0.067, 0.069, 0.071, 0.072, 0.074, 0.076, 0.077, - & 0.079, 0.081, 0.082 - & /) -! -! *** CASO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC14M_298 = (/ - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000 - & /) -! -! *** CANO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC15M_298 = (/ - &-0.092,-0.196,-0.245,-0.279,-0.304,-0.325,-0.342,-0.356,-0.368, - &-0.379,-0.389,-0.397,-0.405,-0.412,-0.418,-0.424,-0.429,-0.433, - &-0.438,-0.442,-0.445,-0.448,-0.452,-0.454,-0.457,-0.459,-0.462, - &-0.464,-0.466,-0.467,-0.469,-0.470,-0.472,-0.473,-0.474,-0.475, - &-0.476,-0.477,-0.478,-0.479,-0.480,-0.480,-0.481,-0.482,-0.482, - &-0.483,-0.483,-0.483,-0.484,-0.484,-0.484,-0.484,-0.485,-0.485, - &-0.485,-0.485,-0.485,-0.485,-0.485,-0.485,-0.485,-0.485,-0.485, - &-0.485,-0.485,-0.484,-0.484,-0.484,-0.484,-0.484,-0.483,-0.483, - &-0.483,-0.482,-0.482,-0.482,-0.481,-0.481,-0.480,-0.480,-0.479, - &-0.479,-0.478,-0.478,-0.477,-0.477,-0.476,-0.475,-0.475,-0.474, - &-0.474,-0.473,-0.472,-0.471,-0.471,-0.470,-0.469,-0.468,-0.467, - &-0.467,-0.466,-0.465,-0.464,-0.463,-0.462,-0.461,-0.460,-0.459, - &-0.459,-0.458,-0.457,-0.456,-0.455,-0.454,-0.453,-0.452,-0.451, - &-0.450,-0.448,-0.447,-0.446,-0.445,-0.444,-0.443,-0.442,-0.441, - &-0.440,-0.439,-0.438,-0.437,-0.436,-0.434,-0.433,-0.432,-0.431, - &-0.430,-0.429,-0.428,-0.427,-0.425,-0.424,-0.423,-0.422,-0.421, - &-0.420,-0.419,-0.417,-0.416,-0.415,-0.414,-0.413,-0.412,-0.411, - &-0.409,-0.408,-0.407,-0.406,-0.405,-0.404,-0.402,-0.401,-0.400, - &-0.399,-0.398,-0.397,-0.395,-0.394,-0.393,-0.392,-0.391,-0.390, - &-0.388,-0.387,-0.386,-0.385,-0.384,-0.383,-0.381,-0.380,-0.379, - &-0.378,-0.377,-0.376,-0.374,-0.373,-0.372,-0.371,-0.370,-0.369, - &-0.367,-0.366,-0.365,-0.364,-0.363,-0.361,-0.360,-0.359,-0.358, - &-0.357,-0.356,-0.354,-0.353,-0.352,-0.351,-0.350,-0.349,-0.347, - &-0.346,-0.345,-0.344,-0.343,-0.342,-0.341,-0.339,-0.338,-0.337, - &-0.336,-0.335,-0.334,-0.332,-0.331,-0.330,-0.329,-0.328,-0.327, - &-0.325,-0.324,-0.323,-0.322,-0.321,-0.320,-0.319,-0.317,-0.316, - &-0.315,-0.314,-0.313,-0.312,-0.311,-0.309,-0.308,-0.307,-0.306, - &-0.305,-0.304,-0.303,-0.301,-0.300,-0.299,-0.298,-0.297,-0.296, - &-0.295,-0.294,-0.292,-0.291,-0.290,-0.289,-0.288,-0.287,-0.286, - &-0.285,-0.283,-0.282,-0.281,-0.280,-0.279,-0.278,-0.277,-0.276, - &-0.275,-0.273,-0.272,-0.271,-0.270,-0.269,-0.268,-0.267,-0.266, - &-0.265,-0.263,-0.262,-0.261,-0.260,-0.259,-0.258,-0.257,-0.256, - &-0.255,-0.254,-0.253,-0.251,-0.250,-0.249,-0.248,-0.247,-0.246, - &-0.245,-0.244,-0.243,-0.242,-0.241,-0.240,-0.238,-0.237,-0.236, - &-0.235,-0.234,-0.233,-0.232,-0.231,-0.230,-0.229,-0.228,-0.227, - &-0.226,-0.225,-0.224,-0.222,-0.221,-0.220,-0.219,-0.218,-0.217, - &-0.216,-0.215,-0.214,-0.213,-0.212,-0.211,-0.210,-0.209,-0.208, - &-0.207,-0.206,-0.205,-0.204,-0.203,-0.202,-0.201,-0.200,-0.198, - &-0.197,-0.196,-0.195,-0.194,-0.193,-0.192,-0.191,-0.190,-0.189, - &-0.188,-0.187,-0.186,-0.185,-0.184,-0.183,-0.182,-0.181,-0.180, - &-0.179,-0.178,-0.177,-0.176,-0.175,-0.174,-0.173,-0.172,-0.171, - &-0.170,-0.169,-0.168,-0.167,-0.166,-0.165,-0.164,-0.163,-0.162, - &-0.161,-0.160,-0.159,-0.158,-0.157,-0.156,-0.155,-0.154,-0.153, - &-0.152,-0.151,-0.150,-0.149,-0.148,-0.147,-0.146,-0.145,-0.144, - &-0.143,-0.142,-0.141,-0.140,-0.130,-0.121,-0.111,-0.102,-0.093, - &-0.083,-0.074,-0.066,-0.057,-0.048,-0.039,-0.031,-0.022,-0.014, - &-0.006, 0.003, 0.011, 0.019, 0.027, 0.035, 0.043, 0.050, 0.058, - & 0.066, 0.073, 0.081, 0.088, 0.095, 0.103, 0.110, 0.117, 0.124, - & 0.131, 0.138, 0.145, 0.152, 0.159, 0.165, 0.172, 0.179, 0.185, - & 0.192, 0.198, 0.205, 0.211, 0.217, 0.223, 0.230, 0.236, 0.242, - & 0.248, 0.254, 0.260, 0.266, 0.272, 0.278, 0.283, 0.289, 0.295, - & 0.301, 0.306, 0.312, 0.317, 0.323, 0.328, 0.334, 0.339, 0.345, - & 0.350, 0.355, 0.360, 0.366, 0.371, 0.376, 0.381, 0.386, 0.391, - & 0.396, 0.401, 0.406, 0.411, 0.416, 0.421, 0.426, 0.431, 0.435, - & 0.440, 0.445, 0.449, 0.454, 0.459, 0.463, 0.468, 0.472, 0.477, - & 0.482, 0.486, 0.490, 0.495, 0.499, 0.504, 0.508, 0.512, 0.517, - & 0.521, 0.525, 0.529, 0.534, 0.538, 0.542, 0.546, 0.550, 0.554, - & 0.559, 0.563, 0.567, 0.571, 0.575, 0.579, 0.583, 0.587, 0.590, - & 0.594, 0.598, 0.602, 0.606, 0.610, 0.614, 0.617, 0.621, 0.625, - & 0.629, 0.632, 0.636, 0.640, 0.643, 0.647, 0.651, 0.654, 0.658, - & 0.661, 0.665, 0.669, 0.672, 0.676, 0.679, 0.683, 0.686, 0.690, - & 0.693, 0.696, 0.700, 0.703, 0.707, 0.710, 0.713, 0.717, 0.720, - & 0.723, 0.727, 0.730 - & /) -! -! *** CACL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC16M_298 = (/ - &-0.091,-0.188,-0.233,-0.261,-0.282,-0.298,-0.310,-0.320,-0.328, - &-0.335,-0.340,-0.345,-0.348,-0.351,-0.353,-0.355,-0.356,-0.356, - &-0.357,-0.357,-0.356,-0.356,-0.355,-0.354,-0.353,-0.351,-0.350, - &-0.348,-0.346,-0.344,-0.342,-0.340,-0.337,-0.335,-0.333,-0.330, - &-0.327,-0.325,-0.322,-0.319,-0.316,-0.314,-0.311,-0.308,-0.305, - &-0.302,-0.299,-0.296,-0.293,-0.290,-0.287,-0.283,-0.280,-0.277, - &-0.274,-0.271,-0.268,-0.264,-0.261,-0.258,-0.255,-0.252,-0.248, - &-0.245,-0.242,-0.238,-0.235,-0.232,-0.228,-0.225,-0.222,-0.218, - &-0.215,-0.211,-0.208,-0.204,-0.201,-0.197,-0.194,-0.190,-0.187, - &-0.183,-0.179,-0.176,-0.172,-0.168,-0.164,-0.161,-0.157,-0.153, - &-0.149,-0.145,-0.141,-0.137,-0.133,-0.129,-0.125,-0.121,-0.117, - &-0.113,-0.109,-0.105,-0.101,-0.096,-0.092,-0.088,-0.084,-0.080, - &-0.075,-0.071,-0.067,-0.062,-0.058,-0.054,-0.049,-0.045,-0.041, - &-0.036,-0.032,-0.027,-0.023,-0.019,-0.014,-0.010,-0.005,-0.001, - & 0.003, 0.008, 0.012, 0.017, 0.021, 0.026, 0.030, 0.034, 0.039, - & 0.043, 0.048, 0.052, 0.057, 0.061, 0.065, 0.070, 0.074, 0.079, - & 0.083, 0.087, 0.092, 0.096, 0.101, 0.105, 0.109, 0.114, 0.118, - & 0.123, 0.127, 0.131, 0.136, 0.140, 0.144, 0.149, 0.153, 0.157, - & 0.162, 0.166, 0.170, 0.175, 0.179, 0.183, 0.188, 0.192, 0.196, - & 0.201, 0.205, 0.209, 0.214, 0.218, 0.222, 0.226, 0.231, 0.235, - & 0.239, 0.243, 0.248, 0.252, 0.256, 0.260, 0.265, 0.269, 0.273, - & 0.277, 0.281, 0.286, 0.290, 0.294, 0.298, 0.302, 0.306, 0.311, - & 0.315, 0.319, 0.323, 0.327, 0.331, 0.336, 0.340, 0.344, 0.348, - & 0.352, 0.356, 0.360, 0.364, 0.368, 0.372, 0.377, 0.381, 0.385, - & 0.389, 0.393, 0.397, 0.401, 0.405, 0.409, 0.413, 0.417, 0.421, - & 0.425, 0.429, 0.433, 0.437, 0.441, 0.445, 0.449, 0.453, 0.457, - & 0.461, 0.465, 0.469, 0.473, 0.477, 0.481, 0.485, 0.488, 0.492, - & 0.496, 0.500, 0.504, 0.508, 0.512, 0.516, 0.520, 0.524, 0.527, - & 0.531, 0.535, 0.539, 0.543, 0.547, 0.550, 0.554, 0.558, 0.562, - & 0.566, 0.570, 0.573, 0.577, 0.581, 0.585, 0.588, 0.592, 0.596, - & 0.600, 0.604, 0.607, 0.611, 0.615, 0.618, 0.622, 0.626, 0.630, - & 0.633, 0.637, 0.641, 0.644, 0.648, 0.652, 0.656, 0.659, 0.663, - & 0.667, 0.670, 0.674, 0.677, 0.681, 0.685, 0.688, 0.692, 0.696, - & 0.699, 0.703, 0.706, 0.710, 0.714, 0.717, 0.721, 0.724, 0.728, - & 0.732, 0.735, 0.739, 0.742, 0.746, 0.749, 0.753, 0.756, 0.760, - & 0.763, 0.767, 0.770, 0.774, 0.777, 0.781, 0.784, 0.788, 0.791, - & 0.795, 0.798, 0.802, 0.805, 0.809, 0.812, 0.816, 0.819, 0.823, - & 0.826, 0.829, 0.833, 0.836, 0.840, 0.843, 0.846, 0.850, 0.853, - & 0.857, 0.860, 0.863, 0.867, 0.870, 0.873, 0.877, 0.880, 0.884, - & 0.887, 0.890, 0.894, 0.897, 0.900, 0.904, 0.907, 0.910, 0.913, - & 0.917, 0.920, 0.923, 0.927, 0.930, 0.933, 0.936, 0.940, 0.943, - & 0.946, 0.950, 0.953, 0.956, 0.959, 0.963, 0.966, 0.969, 0.972, - & 0.975, 0.979, 0.982, 0.985, 0.988, 0.991, 0.995, 0.998, 1.001, - & 1.004, 1.007, 1.011, 1.014, 1.017, 1.020, 1.023, 1.026, 1.029, - & 1.033, 1.036, 1.039, 1.042, 1.076, 1.106, 1.136, 1.166, 1.195, - & 1.224, 1.253, 1.281, 1.309, 1.337, 1.364, 1.391, 1.417, 1.444, - & 1.470, 1.495, 1.521, 1.546, 1.570, 1.595, 1.619, 1.643, 1.667, - & 1.690, 1.713, 1.736, 1.759, 1.781, 1.803, 1.825, 1.847, 1.868, - & 1.890, 1.911, 1.932, 1.952, 1.973, 1.993, 2.013, 2.033, 2.053, - & 2.072, 2.092, 2.111, 2.130, 2.149, 2.167, 2.186, 2.204, 2.222, - & 2.240, 2.258, 2.276, 2.293, 2.311, 2.328, 2.345, 2.362, 2.379, - & 2.396, 2.412, 2.429, 2.445, 2.461, 2.478, 2.493, 2.509, 2.525, - & 2.541, 2.556, 2.572, 2.587, 2.602, 2.617, 2.632, 2.647, 2.661, - & 2.676, 2.691, 2.705, 2.719, 2.734, 2.748, 2.762, 2.776, 2.789, - & 2.803, 2.817, 2.830, 2.844, 2.857, 2.871, 2.884, 2.897, 2.910, - & 2.923, 2.936, 2.949, 2.961, 2.974, 2.987, 2.999, 3.012, 3.024, - & 3.036, 3.048, 3.061, 3.073, 3.085, 3.097, 3.108, 3.120, 3.132, - & 3.144, 3.155, 3.167, 3.178, 3.190, 3.201, 3.212, 3.224, 3.235, - & 3.246, 3.257, 3.268, 3.279, 3.290, 3.300, 3.311, 3.322, 3.333, - & 3.343, 3.354, 3.364, 3.375, 3.385, 3.395, 3.406, 3.416, 3.426, - & 3.436, 3.446, 3.456, 3.466, 3.476, 3.486, 3.496, 3.506, 3.515, - & 3.525, 3.535, 3.544, 3.554, 3.563, 3.573, 3.582, 3.592, 3.601, - & 3.610, 3.620, 3.629 - & /) -! -! *** K2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC17M_298 = (/ - &-0.093,-0.203,-0.257,-0.296,-0.326,-0.351,-0.372,-0.391,-0.408, - &-0.423,-0.436,-0.449,-0.460,-0.471,-0.481,-0.491,-0.500,-0.508, - &-0.516,-0.524,-0.531,-0.538,-0.545,-0.552,-0.558,-0.564,-0.569, - &-0.575,-0.580,-0.585,-0.590,-0.595,-0.600,-0.605,-0.609,-0.613, - &-0.618,-0.622,-0.626,-0.629,-0.633,-0.637,-0.641,-0.644,-0.648, - &-0.651,-0.654,-0.658,-0.661,-0.664,-0.667,-0.670,-0.673,-0.676, - &-0.678,-0.681,-0.684,-0.687,-0.689,-0.692,-0.694,-0.697,-0.699, - &-0.702,-0.704,-0.707,-0.709,-0.711,-0.713,-0.716,-0.718,-0.720, - &-0.722,-0.724,-0.726,-0.728,-0.730,-0.732,-0.734,-0.736,-0.738, - &-0.740,-0.742,-0.744,-0.746,-0.748,-0.749,-0.751,-0.753,-0.755, - &-0.756,-0.758,-0.760,-0.762,-0.763,-0.765,-0.767,-0.768,-0.770, - &-0.772,-0.773,-0.775,-0.776,-0.778,-0.779,-0.781,-0.782,-0.784, - &-0.786,-0.787,-0.788,-0.790,-0.791,-0.793,-0.794,-0.796,-0.797, - &-0.799,-0.800,-0.801,-0.803,-0.804,-0.805,-0.807,-0.808,-0.809, - &-0.811,-0.812,-0.813,-0.815,-0.816,-0.817,-0.819,-0.820,-0.821, - &-0.822,-0.824,-0.825,-0.826,-0.827,-0.828,-0.830,-0.831,-0.832, - &-0.833,-0.834,-0.835,-0.837,-0.838,-0.839,-0.840,-0.841,-0.842, - &-0.843,-0.844,-0.846,-0.847,-0.848,-0.849,-0.850,-0.851,-0.852, - &-0.853,-0.854,-0.855,-0.856,-0.857,-0.858,-0.859,-0.860,-0.861, - &-0.862,-0.863,-0.864,-0.865,-0.866,-0.867,-0.868,-0.869,-0.870, - &-0.871,-0.872,-0.873,-0.874,-0.875,-0.876,-0.877,-0.878,-0.878, - &-0.879,-0.880,-0.881,-0.882,-0.883,-0.884,-0.885,-0.886,-0.886, - &-0.887,-0.888,-0.889,-0.890,-0.891,-0.892,-0.893,-0.893,-0.894, - &-0.895,-0.896,-0.897,-0.898,-0.898,-0.899,-0.900,-0.901,-0.902, - &-0.902,-0.903,-0.904,-0.905,-0.906,-0.906,-0.907,-0.908,-0.909, - &-0.910,-0.910,-0.911,-0.912,-0.913,-0.913,-0.914,-0.915,-0.916, - &-0.916,-0.917,-0.918,-0.919,-0.919,-0.920,-0.921,-0.922,-0.922, - &-0.923,-0.924,-0.924,-0.925,-0.926,-0.927,-0.927,-0.928,-0.929, - &-0.929,-0.930,-0.931,-0.931,-0.932,-0.933,-0.933,-0.934,-0.935, - &-0.936,-0.936,-0.937,-0.938,-0.938,-0.939,-0.940,-0.940,-0.941, - &-0.941,-0.942,-0.943,-0.943,-0.944,-0.945,-0.945,-0.946,-0.947, - &-0.947,-0.948,-0.949,-0.949,-0.950,-0.950,-0.951,-0.952,-0.952, - &-0.953,-0.954,-0.954,-0.955,-0.955,-0.956,-0.957,-0.957,-0.958, - &-0.958,-0.959,-0.960,-0.960,-0.961,-0.961,-0.962,-0.962,-0.963, - &-0.964,-0.964,-0.965,-0.965,-0.966,-0.967,-0.967,-0.968,-0.968, - &-0.969,-0.969,-0.970,-0.970,-0.971,-0.972,-0.972,-0.973,-0.973, - &-0.974,-0.974,-0.975,-0.975,-0.976,-0.977,-0.977,-0.978,-0.978, - &-0.979,-0.979,-0.980,-0.980,-0.981,-0.981,-0.982,-0.982,-0.983, - &-0.983,-0.984,-0.984,-0.985,-0.986,-0.986,-0.987,-0.987,-0.988, - &-0.988,-0.989,-0.989,-0.990,-0.990,-0.991,-0.991,-0.992,-0.992, - &-0.993,-0.993,-0.994,-0.994,-0.995,-0.995,-0.996,-0.996,-0.997, - &-0.997,-0.998,-0.998,-0.998,-0.999,-0.999,-1.000,-1.000,-1.001, - &-1.001,-1.002,-1.002,-1.003,-1.003,-1.004,-1.004,-1.005,-1.005, - &-1.006,-1.006,-1.006,-1.007,-1.007,-1.008,-1.008,-1.009,-1.009, - &-1.010,-1.010,-1.011,-1.011,-1.016,-1.020,-1.024,-1.029,-1.033, - &-1.037,-1.040,-1.044,-1.048,-1.052,-1.055,-1.059,-1.062,-1.065, - &-1.069,-1.072,-1.075,-1.078,-1.081,-1.084,-1.087,-1.090,-1.093, - &-1.096,-1.099,-1.102,-1.104,-1.107,-1.110,-1.112,-1.115,-1.117, - &-1.120,-1.122,-1.125,-1.127,-1.129,-1.132,-1.134,-1.136,-1.139, - &-1.141,-1.143,-1.145,-1.147,-1.149,-1.151,-1.153,-1.155,-1.157, - &-1.159,-1.161,-1.163,-1.165,-1.167,-1.169,-1.171,-1.173,-1.174, - &-1.176,-1.178,-1.180,-1.181,-1.183,-1.185,-1.187,-1.188,-1.190, - &-1.191,-1.193,-1.195,-1.196,-1.198,-1.199,-1.201,-1.202,-1.204, - &-1.205,-1.207,-1.208,-1.210,-1.211,-1.213,-1.214,-1.216,-1.217, - &-1.218,-1.220,-1.221,-1.223,-1.224,-1.225,-1.226,-1.228,-1.229, - &-1.230,-1.232,-1.233,-1.234,-1.235,-1.237,-1.238,-1.239,-1.240, - &-1.242,-1.243,-1.244,-1.245,-1.246,-1.247,-1.249,-1.250,-1.251, - &-1.252,-1.253,-1.254,-1.255,-1.256,-1.258,-1.259,-1.260,-1.261, - &-1.262,-1.263,-1.264,-1.265,-1.266,-1.267,-1.268,-1.269,-1.270, - &-1.271,-1.272,-1.273,-1.274,-1.275,-1.276,-1.277,-1.278,-1.279, - &-1.280,-1.281,-1.282,-1.283,-1.283,-1.284,-1.285,-1.286,-1.287, - &-1.288,-1.289,-1.290,-1.291,-1.292,-1.292,-1.293,-1.294,-1.295, - &-1.296,-1.297,-1.298 - & /) -! -! *** KHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC18M_298 = (/ - &-0.046,-0.097,-0.121,-0.138,-0.150,-0.161,-0.169,-0.176,-0.182, - &-0.188,-0.192,-0.196,-0.200,-0.203,-0.206,-0.209,-0.211,-0.213, - &-0.215,-0.217,-0.218,-0.219,-0.220,-0.221,-0.222,-0.223,-0.223, - &-0.223,-0.223,-0.224,-0.223,-0.223,-0.223,-0.223,-0.222,-0.222, - &-0.221,-0.220,-0.220,-0.219,-0.218,-0.217,-0.216,-0.215,-0.213, - &-0.212,-0.211,-0.209,-0.208,-0.206,-0.205,-0.203,-0.202,-0.200, - &-0.198,-0.196,-0.195,-0.193,-0.191,-0.189,-0.187,-0.185,-0.183, - &-0.181,-0.179,-0.177,-0.174,-0.172,-0.170,-0.168,-0.165,-0.163, - &-0.161,-0.158,-0.156,-0.153,-0.151,-0.148,-0.146,-0.143,-0.141, - &-0.138,-0.136,-0.133,-0.130,-0.127,-0.125,-0.122,-0.119,-0.116, - &-0.114,-0.111,-0.108,-0.105,-0.102,-0.099,-0.096,-0.093,-0.090, - &-0.087,-0.084,-0.081,-0.078,-0.075,-0.072,-0.069,-0.066,-0.063, - &-0.060,-0.056,-0.053,-0.050,-0.047,-0.044,-0.041,-0.037,-0.034, - &-0.031,-0.028,-0.025,-0.021,-0.018,-0.015,-0.012,-0.009,-0.005, - &-0.002, 0.001, 0.004, 0.007, 0.011, 0.014, 0.017, 0.020, 0.023, - & 0.027, 0.030, 0.033, 0.036, 0.039, 0.043, 0.046, 0.049, 0.052, - & 0.055, 0.058, 0.061, 0.065, 0.068, 0.071, 0.074, 0.077, 0.080, - & 0.083, 0.086, 0.089, 0.093, 0.096, 0.099, 0.102, 0.105, 0.108, - & 0.111, 0.114, 0.117, 0.120, 0.123, 0.126, 0.129, 0.132, 0.135, - & 0.138, 0.141, 0.144, 0.147, 0.150, 0.153, 0.156, 0.159, 0.162, - & 0.165, 0.168, 0.171, 0.174, 0.176, 0.179, 0.182, 0.185, 0.188, - & 0.191, 0.194, 0.197, 0.199, 0.202, 0.205, 0.208, 0.211, 0.214, - & 0.217, 0.219, 0.222, 0.225, 0.228, 0.231, 0.233, 0.236, 0.239, - & 0.242, 0.244, 0.247, 0.250, 0.253, 0.255, 0.258, 0.261, 0.264, - & 0.266, 0.269, 0.272, 0.274, 0.277, 0.280, 0.282, 0.285, 0.288, - & 0.290, 0.293, 0.296, 0.298, 0.301, 0.304, 0.306, 0.309, 0.312, - & 0.314, 0.317, 0.319, 0.322, 0.325, 0.327, 0.330, 0.332, 0.335, - & 0.337, 0.340, 0.343, 0.345, 0.348, 0.350, 0.353, 0.355, 0.358, - & 0.360, 0.363, 0.365, 0.368, 0.370, 0.373, 0.375, 0.378, 0.380, - & 0.383, 0.385, 0.388, 0.390, 0.393, 0.395, 0.397, 0.400, 0.402, - & 0.405, 0.407, 0.410, 0.412, 0.414, 0.417, 0.419, 0.422, 0.424, - & 0.426, 0.429, 0.431, 0.434, 0.436, 0.438, 0.441, 0.443, 0.445, - & 0.448, 0.450, 0.452, 0.455, 0.457, 0.459, 0.462, 0.464, 0.466, - & 0.469, 0.471, 0.473, 0.475, 0.478, 0.480, 0.482, 0.485, 0.487, - & 0.489, 0.491, 0.494, 0.496, 0.498, 0.500, 0.503, 0.505, 0.507, - & 0.509, 0.512, 0.514, 0.516, 0.518, 0.520, 0.523, 0.525, 0.527, - & 0.529, 0.531, 0.534, 0.536, 0.538, 0.540, 0.542, 0.544, 0.547, - & 0.549, 0.551, 0.553, 0.555, 0.557, 0.560, 0.562, 0.564, 0.566, - & 0.568, 0.570, 0.572, 0.574, 0.577, 0.579, 0.581, 0.583, 0.585, - & 0.587, 0.589, 0.591, 0.593, 0.595, 0.597, 0.600, 0.602, 0.604, - & 0.606, 0.608, 0.610, 0.612, 0.614, 0.616, 0.618, 0.620, 0.622, - & 0.624, 0.626, 0.628, 0.630, 0.632, 0.634, 0.636, 0.638, 0.640, - & 0.642, 0.644, 0.646, 0.648, 0.650, 0.652, 0.654, 0.656, 0.658, - & 0.660, 0.662, 0.664, 0.666, 0.668, 0.670, 0.672, 0.674, 0.676, - & 0.678, 0.680, 0.682, 0.684, 0.704, 0.723, 0.742, 0.760, 0.778, - & 0.796, 0.813, 0.831, 0.848, 0.865, 0.881, 0.898, 0.914, 0.930, - & 0.946, 0.961, 0.977, 0.992, 1.007, 1.022, 1.036, 1.051, 1.065, - & 1.079, 1.093, 1.107, 1.121, 1.134, 1.148, 1.161, 1.174, 1.187, - & 1.200, 1.213, 1.225, 1.238, 1.250, 1.262, 1.275, 1.287, 1.298, - & 1.310, 1.322, 1.333, 1.345, 1.356, 1.367, 1.379, 1.390, 1.401, - & 1.411, 1.422, 1.433, 1.443, 1.454, 1.464, 1.475, 1.485, 1.495, - & 1.505, 1.515, 1.525, 1.535, 1.545, 1.554, 1.564, 1.573, 1.583, - & 1.592, 1.602, 1.611, 1.620, 1.629, 1.638, 1.647, 1.656, 1.665, - & 1.674, 1.682, 1.691, 1.700, 1.708, 1.717, 1.725, 1.734, 1.742, - & 1.750, 1.758, 1.767, 1.775, 1.783, 1.791, 1.799, 1.807, 1.815, - & 1.822, 1.830, 1.838, 1.845, 1.853, 1.861, 1.868, 1.876, 1.883, - & 1.891, 1.898, 1.905, 1.912, 1.920, 1.927, 1.934, 1.941, 1.948, - & 1.955, 1.962, 1.969, 1.976, 1.983, 1.990, 1.997, 2.003, 2.010, - & 2.017, 2.023, 2.030, 2.037, 2.043, 2.050, 2.056, 2.063, 2.069, - & 2.075, 2.082, 2.088, 2.094, 2.101, 2.107, 2.113, 2.119, 2.125, - & 2.131, 2.137, 2.143, 2.149, 2.155, 2.161, 2.167, 2.173, 2.179, - & 2.185, 2.191, 2.197, 2.202, 2.208, 2.214, 2.219, 2.225, 2.231, - & 2.236, 2.242, 2.248 - & /) -! -! *** KNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC19M_298 = (/ - &-0.048,-0.109,-0.141,-0.166,-0.186,-0.204,-0.219,-0.233,-0.246, - &-0.258,-0.270,-0.281,-0.291,-0.301,-0.310,-0.319,-0.328,-0.336, - &-0.344,-0.352,-0.360,-0.367,-0.375,-0.382,-0.389,-0.395,-0.402, - &-0.409,-0.415,-0.421,-0.427,-0.433,-0.439,-0.445,-0.451,-0.456, - &-0.462,-0.467,-0.472,-0.477,-0.483,-0.488,-0.492,-0.497,-0.502, - &-0.507,-0.511,-0.516,-0.521,-0.525,-0.529,-0.534,-0.538,-0.542, - &-0.546,-0.550,-0.554,-0.558,-0.562,-0.566,-0.570,-0.574,-0.578, - &-0.581,-0.585,-0.589,-0.592,-0.596,-0.600,-0.603,-0.607,-0.610, - &-0.613,-0.617,-0.620,-0.624,-0.627,-0.630,-0.634,-0.637,-0.640, - &-0.643,-0.647,-0.650,-0.653,-0.656,-0.660,-0.663,-0.666,-0.669, - &-0.672,-0.675,-0.678,-0.682,-0.685,-0.688,-0.691,-0.694,-0.697, - &-0.700,-0.703,-0.706,-0.709,-0.712,-0.715,-0.718,-0.721,-0.724, - &-0.727,-0.730,-0.733,-0.736,-0.739,-0.741,-0.744,-0.747,-0.750, - &-0.753,-0.756,-0.758,-0.761,-0.764,-0.767,-0.770,-0.772,-0.775, - &-0.778,-0.780,-0.783,-0.786,-0.789,-0.791,-0.794,-0.796,-0.799, - &-0.802,-0.804,-0.807,-0.809,-0.812,-0.814,-0.817,-0.819,-0.822, - &-0.824,-0.827,-0.829,-0.832,-0.834,-0.837,-0.839,-0.841,-0.844, - &-0.846,-0.848,-0.851,-0.853,-0.855,-0.858,-0.860,-0.862,-0.865, - &-0.867,-0.869,-0.871,-0.873,-0.876,-0.878,-0.880,-0.882,-0.884, - &-0.887,-0.889,-0.891,-0.893,-0.895,-0.897,-0.899,-0.901,-0.903, - &-0.905,-0.908,-0.910,-0.912,-0.914,-0.916,-0.918,-0.920,-0.922, - &-0.924,-0.925,-0.927,-0.929,-0.931,-0.933,-0.935,-0.937,-0.939, - &-0.941,-0.943,-0.945,-0.946,-0.948,-0.950,-0.952,-0.954,-0.956, - &-0.957,-0.959,-0.961,-0.963,-0.965,-0.966,-0.968,-0.970,-0.972, - &-0.973,-0.975,-0.977,-0.978,-0.980,-0.982,-0.984,-0.985,-0.987, - &-0.989,-0.990,-0.992,-0.993,-0.995,-0.997,-0.998,-1.000,-1.002, - &-1.003,-1.005,-1.006,-1.008,-1.009,-1.011,-1.013,-1.014,-1.016, - &-1.017,-1.019,-1.020,-1.022,-1.023,-1.025,-1.026,-1.028,-1.029, - &-1.031,-1.032,-1.034,-1.035,-1.036,-1.038,-1.039,-1.041,-1.042, - &-1.044,-1.045,-1.046,-1.048,-1.049,-1.051,-1.052,-1.053,-1.055, - &-1.056,-1.057,-1.059,-1.060,-1.061,-1.063,-1.064,-1.065,-1.067, - &-1.068,-1.069,-1.071,-1.072,-1.073,-1.074,-1.076,-1.077,-1.078, - &-1.079,-1.081,-1.082,-1.083,-1.084,-1.086,-1.087,-1.088,-1.089, - &-1.090,-1.092,-1.093,-1.094,-1.095,-1.096,-1.098,-1.099,-1.100, - &-1.101,-1.102,-1.103,-1.105,-1.106,-1.107,-1.108,-1.109,-1.110, - &-1.111,-1.112,-1.114,-1.115,-1.116,-1.117,-1.118,-1.119,-1.120, - &-1.121,-1.122,-1.123,-1.124,-1.125,-1.127,-1.128,-1.129,-1.130, - &-1.131,-1.132,-1.133,-1.134,-1.135,-1.136,-1.137,-1.138,-1.139, - &-1.140,-1.141,-1.142,-1.143,-1.144,-1.145,-1.146,-1.147,-1.148, - &-1.149,-1.150,-1.151,-1.152,-1.153,-1.153,-1.154,-1.155,-1.156, - &-1.157,-1.158,-1.159,-1.160,-1.161,-1.162,-1.163,-1.164,-1.165, - &-1.165,-1.166,-1.167,-1.168,-1.169,-1.170,-1.171,-1.172,-1.172, - &-1.173,-1.174,-1.175,-1.176,-1.177,-1.178,-1.178,-1.179,-1.180, - &-1.181,-1.182,-1.183,-1.183,-1.184,-1.185,-1.186,-1.187,-1.188, - &-1.188,-1.189,-1.190,-1.191,-1.199,-1.207,-1.214,-1.221,-1.228, - &-1.234,-1.240,-1.246,-1.252,-1.258,-1.263,-1.268,-1.273,-1.278, - &-1.283,-1.287,-1.292,-1.296,-1.300,-1.304,-1.308,-1.312,-1.315, - &-1.319,-1.322,-1.325,-1.329,-1.332,-1.335,-1.338,-1.341,-1.343, - &-1.346,-1.349,-1.351,-1.354,-1.356,-1.358,-1.361,-1.363,-1.365, - &-1.367,-1.369,-1.371,-1.373,-1.375,-1.377,-1.378,-1.380,-1.382, - &-1.383,-1.385,-1.387,-1.388,-1.390,-1.391,-1.393,-1.394,-1.395, - &-1.397,-1.398,-1.399,-1.400,-1.402,-1.403,-1.404,-1.405,-1.406, - &-1.407,-1.408,-1.409,-1.410,-1.411,-1.412,-1.413,-1.414,-1.415, - &-1.416,-1.417,-1.418,-1.419,-1.420,-1.420,-1.421,-1.422,-1.423, - &-1.424,-1.424,-1.425,-1.426,-1.427,-1.427,-1.428,-1.429,-1.429, - &-1.430,-1.430,-1.431,-1.432,-1.432,-1.433,-1.434,-1.434,-1.435, - &-1.435,-1.436,-1.436,-1.437,-1.437,-1.438,-1.438,-1.439,-1.439, - &-1.440,-1.440,-1.441,-1.441,-1.442,-1.442,-1.443,-1.443,-1.443, - &-1.444,-1.444,-1.445,-1.445,-1.445,-1.446,-1.446,-1.447,-1.447, - &-1.447,-1.448,-1.448,-1.448,-1.449,-1.449,-1.449,-1.450,-1.450, - &-1.450,-1.451,-1.451,-1.451,-1.452,-1.452,-1.452,-1.453,-1.453, - &-1.453,-1.454,-1.454,-1.454,-1.454,-1.455,-1.455,-1.455,-1.455, - &-1.456,-1.456,-1.456 - & /) -! -! *** KCL -! - Real(kind=fp), Parameter, Dimension(561) :: BNC20M_298 = (/ - &-0.046,-0.098,-0.123,-0.139,-0.152,-0.162,-0.171,-0.178,-0.184, - &-0.190,-0.195,-0.199,-0.203,-0.206,-0.209,-0.212,-0.215,-0.217, - &-0.219,-0.221,-0.223,-0.225,-0.226,-0.228,-0.229,-0.230,-0.231, - &-0.232,-0.233,-0.234,-0.235,-0.236,-0.236,-0.237,-0.238,-0.238, - &-0.239,-0.239,-0.240,-0.240,-0.240,-0.241,-0.241,-0.241,-0.242, - &-0.242,-0.242,-0.242,-0.243,-0.243,-0.243,-0.243,-0.243,-0.243, - &-0.243,-0.243,-0.243,-0.243,-0.243,-0.243,-0.243,-0.243,-0.243, - &-0.243,-0.243,-0.243,-0.243,-0.243,-0.243,-0.243,-0.243,-0.242, - &-0.242,-0.242,-0.242,-0.242,-0.242,-0.241,-0.241,-0.241,-0.241, - &-0.241,-0.240,-0.240,-0.240,-0.239,-0.239,-0.239,-0.239,-0.238, - &-0.238,-0.238,-0.237,-0.237,-0.237,-0.236,-0.236,-0.235,-0.235, - &-0.235,-0.234,-0.234,-0.233,-0.233,-0.232,-0.232,-0.232,-0.231, - &-0.231,-0.230,-0.230,-0.229,-0.229,-0.228,-0.228,-0.227,-0.227, - &-0.226,-0.226,-0.225,-0.225,-0.224,-0.224,-0.223,-0.223,-0.222, - &-0.222,-0.221,-0.220,-0.220,-0.219,-0.219,-0.218,-0.218,-0.217, - &-0.217,-0.216,-0.216,-0.215,-0.214,-0.214,-0.213,-0.213,-0.212, - &-0.212,-0.211,-0.210,-0.210,-0.209,-0.209,-0.208,-0.208,-0.207, - &-0.207,-0.206,-0.205,-0.205,-0.204,-0.204,-0.203,-0.203,-0.202, - &-0.201,-0.201,-0.200,-0.200,-0.199,-0.199,-0.198,-0.197,-0.197, - &-0.196,-0.196,-0.195,-0.194,-0.194,-0.193,-0.193,-0.192,-0.192, - &-0.191,-0.190,-0.190,-0.189,-0.189,-0.188,-0.188,-0.187,-0.186, - &-0.186,-0.185,-0.185,-0.184,-0.184,-0.183,-0.182,-0.182,-0.181, - &-0.181,-0.180,-0.180,-0.179,-0.178,-0.178,-0.177,-0.177,-0.176, - &-0.176,-0.175,-0.174,-0.174,-0.173,-0.173,-0.172,-0.172,-0.171, - &-0.170,-0.170,-0.169,-0.169,-0.168,-0.168,-0.167,-0.166,-0.166, - &-0.165,-0.165,-0.164,-0.164,-0.163,-0.162,-0.162,-0.161,-0.161, - &-0.160,-0.160,-0.159,-0.158,-0.158,-0.157,-0.157,-0.156,-0.156, - &-0.155,-0.155,-0.154,-0.153,-0.153,-0.152,-0.152,-0.151,-0.151, - &-0.150,-0.150,-0.149,-0.148,-0.148,-0.147,-0.147,-0.146,-0.146, - &-0.145,-0.145,-0.144,-0.143,-0.143,-0.142,-0.142,-0.141,-0.141, - &-0.140,-0.140,-0.139,-0.139,-0.138,-0.137,-0.137,-0.136,-0.136, - &-0.135,-0.135,-0.134,-0.134,-0.133,-0.133,-0.132,-0.131,-0.131, - &-0.130,-0.130,-0.129,-0.129,-0.128,-0.128,-0.127,-0.127,-0.126, - &-0.126,-0.125,-0.125,-0.124,-0.123,-0.123,-0.122,-0.122,-0.121, - &-0.121,-0.120,-0.120,-0.119,-0.119,-0.118,-0.118,-0.117,-0.117, - &-0.116,-0.116,-0.115,-0.115,-0.114,-0.113,-0.113,-0.112,-0.112, - &-0.111,-0.111,-0.110,-0.110,-0.109,-0.109,-0.108,-0.108,-0.107, - &-0.107,-0.106,-0.106,-0.105,-0.105,-0.104,-0.104,-0.103,-0.103, - &-0.102,-0.102,-0.101,-0.101,-0.100,-0.100,-0.099,-0.099,-0.098, - &-0.098,-0.097,-0.097,-0.096,-0.096,-0.095,-0.095,-0.094,-0.094, - &-0.093,-0.093,-0.092,-0.092,-0.091,-0.091,-0.090,-0.090,-0.089, - &-0.089,-0.088,-0.088,-0.087,-0.087,-0.086,-0.086,-0.085,-0.085, - &-0.084,-0.084,-0.083,-0.083,-0.082,-0.082,-0.081,-0.081,-0.080, - &-0.080,-0.079,-0.079,-0.078,-0.078,-0.077,-0.077,-0.077,-0.076, - &-0.076,-0.075,-0.075,-0.074,-0.069,-0.064,-0.060,-0.055,-0.051, - &-0.046,-0.042,-0.037,-0.033,-0.028,-0.024,-0.020,-0.016,-0.012, - &-0.008,-0.004, 0.000, 0.004, 0.008, 0.012, 0.016, 0.020, 0.024, - & 0.028, 0.031, 0.035, 0.039, 0.042, 0.046, 0.049, 0.053, 0.056, - & 0.060, 0.063, 0.067, 0.070, 0.073, 0.077, 0.080, 0.083, 0.087, - & 0.090, 0.093, 0.096, 0.099, 0.102, 0.105, 0.108, 0.111, 0.114, - & 0.117, 0.120, 0.123, 0.126, 0.129, 0.132, 0.135, 0.138, 0.141, - & 0.143, 0.146, 0.149, 0.152, 0.154, 0.157, 0.160, 0.162, 0.165, - & 0.168, 0.170, 0.173, 0.176, 0.178, 0.181, 0.183, 0.186, 0.188, - & 0.191, 0.193, 0.196, 0.198, 0.200, 0.203, 0.205, 0.208, 0.210, - & 0.212, 0.215, 0.217, 0.219, 0.221, 0.224, 0.226, 0.228, 0.231, - & 0.233, 0.235, 0.237, 0.239, 0.242, 0.244, 0.246, 0.248, 0.250, - & 0.252, 0.254, 0.256, 0.258, 0.261, 0.263, 0.265, 0.267, 0.269, - & 0.271, 0.273, 0.275, 0.277, 0.279, 0.281, 0.283, 0.285, 0.286, - & 0.288, 0.290, 0.292, 0.294, 0.296, 0.298, 0.300, 0.302, 0.304, - & 0.305, 0.307, 0.309, 0.311, 0.313, 0.314, 0.316, 0.318, 0.320, - & 0.322, 0.323, 0.325, 0.327, 0.329, 0.330, 0.332, 0.334, 0.335, - & 0.337, 0.339, 0.341, 0.342, 0.344, 0.346, 0.347, 0.349, 0.350, - & 0.352, 0.354, 0.355 - & /) -! -! *** MGSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC21M_298 = (/ - &-0.185,-0.400,-0.506,-0.579,-0.636,-0.683,-0.723,-0.757,-0.787, - &-0.814,-0.839,-0.861,-0.881,-0.900,-0.917,-0.934,-0.949,-0.963, - &-0.977,-0.989,-1.001,-1.013,-1.023,-1.034,-1.044,-1.053,-1.062, - &-1.071,-1.079,-1.087,-1.094,-1.102,-1.109,-1.116,-1.122,-1.129, - &-1.135,-1.141,-1.147,-1.152,-1.158,-1.163,-1.168,-1.173,-1.178, - &-1.183,-1.187,-1.192,-1.196,-1.200,-1.205,-1.209,-1.213,-1.216, - &-1.220,-1.224,-1.228,-1.231,-1.235,-1.238,-1.241,-1.244,-1.248, - &-1.251,-1.254,-1.257,-1.260,-1.263,-1.265,-1.268,-1.271,-1.274, - &-1.276,-1.279,-1.281,-1.284,-1.286,-1.288,-1.291,-1.293,-1.295, - &-1.297,-1.300,-1.302,-1.304,-1.306,-1.308,-1.310,-1.312,-1.314, - &-1.316,-1.317,-1.319,-1.321,-1.323,-1.324,-1.326,-1.328,-1.329, - &-1.331,-1.333,-1.334,-1.336,-1.337,-1.339,-1.340,-1.341,-1.343, - &-1.344,-1.346,-1.347,-1.348,-1.350,-1.351,-1.352,-1.353,-1.355, - &-1.356,-1.357,-1.358,-1.359,-1.360,-1.362,-1.363,-1.364,-1.365, - &-1.366,-1.367,-1.368,-1.369,-1.370,-1.371,-1.372,-1.373,-1.374, - &-1.375,-1.376,-1.377,-1.377,-1.378,-1.379,-1.380,-1.381,-1.382, - &-1.383,-1.383,-1.384,-1.385,-1.386,-1.387,-1.387,-1.388,-1.389, - &-1.390,-1.390,-1.391,-1.392,-1.393,-1.393,-1.394,-1.395,-1.395, - &-1.396,-1.397,-1.397,-1.398,-1.399,-1.399,-1.400,-1.401,-1.401, - &-1.402,-1.402,-1.403,-1.404,-1.404,-1.405,-1.405,-1.406,-1.406, - &-1.407,-1.407,-1.408,-1.408,-1.409,-1.410,-1.410,-1.411,-1.411, - &-1.412,-1.412,-1.412,-1.413,-1.413,-1.414,-1.414,-1.415,-1.415, - &-1.416,-1.416,-1.417,-1.417,-1.417,-1.418,-1.418,-1.419,-1.419, - &-1.420,-1.420,-1.420,-1.421,-1.421,-1.422,-1.422,-1.422,-1.423, - &-1.423,-1.423,-1.424,-1.424,-1.424,-1.425,-1.425,-1.426,-1.426, - &-1.426,-1.427,-1.427,-1.427,-1.428,-1.428,-1.428,-1.428,-1.429, - &-1.429,-1.429,-1.430,-1.430,-1.430,-1.431,-1.431,-1.431,-1.431, - &-1.432,-1.432,-1.432,-1.433,-1.433,-1.433,-1.433,-1.434,-1.434, - &-1.434,-1.434,-1.435,-1.435,-1.435,-1.435,-1.436,-1.436,-1.436, - &-1.436,-1.437,-1.437,-1.437,-1.437,-1.437,-1.438,-1.438,-1.438, - &-1.438,-1.439,-1.439,-1.439,-1.439,-1.439,-1.440,-1.440,-1.440, - &-1.440,-1.440,-1.441,-1.441,-1.441,-1.441,-1.441,-1.441,-1.442, - &-1.442,-1.442,-1.442,-1.442,-1.442,-1.443,-1.443,-1.443,-1.443, - &-1.443,-1.443,-1.444,-1.444,-1.444,-1.444,-1.444,-1.444,-1.445, - &-1.445,-1.445,-1.445,-1.445,-1.445,-1.445,-1.446,-1.446,-1.446, - &-1.446,-1.446,-1.446,-1.446,-1.446,-1.447,-1.447,-1.447,-1.447, - &-1.447,-1.447,-1.447,-1.447,-1.448,-1.448,-1.448,-1.448,-1.448, - &-1.448,-1.448,-1.448,-1.448,-1.449,-1.449,-1.449,-1.449,-1.449, - &-1.449,-1.449,-1.449,-1.449,-1.449,-1.450,-1.450,-1.450,-1.450, - &-1.450,-1.450,-1.450,-1.450,-1.450,-1.450,-1.450,-1.451,-1.451, - &-1.451,-1.451,-1.451,-1.451,-1.451,-1.451,-1.451,-1.451,-1.451, - &-1.451,-1.451,-1.451,-1.452,-1.452,-1.452,-1.452,-1.452,-1.452, - &-1.452,-1.452,-1.452,-1.452,-1.452,-1.452,-1.452,-1.452,-1.452, - &-1.453,-1.453,-1.453,-1.453,-1.453,-1.453,-1.453,-1.453,-1.453, - &-1.453,-1.453,-1.453,-1.453,-1.454,-1.454,-1.454,-1.455,-1.455, - &-1.455,-1.455,-1.455,-1.455,-1.455,-1.455,-1.455,-1.455,-1.455, - &-1.454,-1.454,-1.454,-1.454,-1.453,-1.453,-1.453,-1.452,-1.452, - &-1.452,-1.451,-1.451,-1.450,-1.450,-1.450,-1.449,-1.449,-1.448, - &-1.448,-1.447,-1.447,-1.446,-1.446,-1.445,-1.445,-1.444,-1.444, - &-1.443,-1.442,-1.442,-1.441,-1.441,-1.440,-1.440,-1.439,-1.438, - &-1.438,-1.437,-1.437,-1.436,-1.436,-1.435,-1.434,-1.434,-1.433, - &-1.433,-1.432,-1.431,-1.431,-1.430,-1.430,-1.429,-1.428,-1.428, - &-1.427,-1.426,-1.426,-1.425,-1.425,-1.424,-1.423,-1.423,-1.422, - &-1.422,-1.421,-1.420,-1.420,-1.419,-1.418,-1.418,-1.417,-1.417, - &-1.416,-1.415,-1.415,-1.414,-1.414,-1.413,-1.412,-1.412,-1.411, - &-1.411,-1.410,-1.409,-1.409,-1.408,-1.408,-1.407,-1.406,-1.406, - &-1.405,-1.405,-1.404,-1.403,-1.403,-1.402,-1.402,-1.401,-1.400, - &-1.400,-1.399,-1.399,-1.398,-1.398,-1.397,-1.396,-1.396,-1.395, - &-1.395,-1.394,-1.394,-1.393,-1.392,-1.392,-1.391,-1.391,-1.390, - &-1.390,-1.389,-1.388,-1.388,-1.387,-1.387,-1.386,-1.386,-1.385, - &-1.385,-1.384,-1.383,-1.383,-1.382,-1.382,-1.381,-1.381,-1.380, - &-1.380,-1.379,-1.378,-1.378,-1.377,-1.377,-1.376,-1.376,-1.375, - &-1.375,-1.374,-1.374 - & /) -! -! *** MGNO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC22M_298 = (/ - &-0.091,-0.189,-0.233,-0.262,-0.283,-0.299,-0.312,-0.322,-0.330, - &-0.337,-0.343,-0.347,-0.351,-0.354,-0.356,-0.358,-0.359,-0.360, - &-0.361,-0.361,-0.361,-0.360,-0.360,-0.359,-0.358,-0.356,-0.355, - &-0.354,-0.352,-0.350,-0.348,-0.346,-0.344,-0.342,-0.340,-0.337, - &-0.335,-0.332,-0.330,-0.327,-0.325,-0.322,-0.319,-0.316,-0.314, - &-0.311,-0.308,-0.305,-0.302,-0.299,-0.297,-0.294,-0.291,-0.288, - &-0.285,-0.282,-0.279,-0.276,-0.273,-0.270,-0.267,-0.263,-0.260, - &-0.257,-0.254,-0.251,-0.248,-0.245,-0.242,-0.238,-0.235,-0.232, - &-0.229,-0.225,-0.222,-0.219,-0.215,-0.212,-0.209,-0.205,-0.202, - &-0.198,-0.195,-0.191,-0.188,-0.184,-0.181,-0.177,-0.173,-0.170, - &-0.166,-0.162,-0.159,-0.155,-0.151,-0.147,-0.143,-0.140,-0.136, - &-0.132,-0.128,-0.124,-0.120,-0.116,-0.112,-0.108,-0.104,-0.100, - &-0.096,-0.091,-0.087,-0.083,-0.079,-0.075,-0.071,-0.067,-0.062, - &-0.058,-0.054,-0.050,-0.046,-0.041,-0.037,-0.033,-0.029,-0.024, - &-0.020,-0.016,-0.012,-0.008,-0.003, 0.001, 0.005, 0.009, 0.014, - & 0.018, 0.022, 0.026, 0.031, 0.035, 0.039, 0.043, 0.047, 0.052, - & 0.056, 0.060, 0.064, 0.069, 0.073, 0.077, 0.081, 0.085, 0.090, - & 0.094, 0.098, 0.102, 0.106, 0.110, 0.115, 0.119, 0.123, 0.127, - & 0.131, 0.135, 0.140, 0.144, 0.148, 0.152, 0.156, 0.160, 0.164, - & 0.169, 0.173, 0.177, 0.181, 0.185, 0.189, 0.193, 0.197, 0.201, - & 0.205, 0.209, 0.214, 0.218, 0.222, 0.226, 0.230, 0.234, 0.238, - & 0.242, 0.246, 0.250, 0.254, 0.258, 0.262, 0.266, 0.270, 0.274, - & 0.278, 0.282, 0.286, 0.290, 0.294, 0.298, 0.302, 0.306, 0.310, - & 0.314, 0.318, 0.321, 0.325, 0.329, 0.333, 0.337, 0.341, 0.345, - & 0.349, 0.353, 0.357, 0.361, 0.364, 0.368, 0.372, 0.376, 0.380, - & 0.384, 0.388, 0.391, 0.395, 0.399, 0.403, 0.407, 0.410, 0.414, - & 0.418, 0.422, 0.426, 0.429, 0.433, 0.437, 0.441, 0.445, 0.448, - & 0.452, 0.456, 0.459, 0.463, 0.467, 0.471, 0.474, 0.478, 0.482, - & 0.486, 0.489, 0.493, 0.497, 0.500, 0.504, 0.508, 0.511, 0.515, - & 0.519, 0.522, 0.526, 0.530, 0.533, 0.537, 0.540, 0.544, 0.548, - & 0.551, 0.555, 0.559, 0.562, 0.566, 0.569, 0.573, 0.576, 0.580, - & 0.584, 0.587, 0.591, 0.594, 0.598, 0.601, 0.605, 0.608, 0.612, - & 0.615, 0.619, 0.622, 0.626, 0.629, 0.633, 0.636, 0.640, 0.643, - & 0.647, 0.650, 0.654, 0.657, 0.661, 0.664, 0.668, 0.671, 0.674, - & 0.678, 0.681, 0.685, 0.688, 0.691, 0.695, 0.698, 0.702, 0.705, - & 0.708, 0.712, 0.715, 0.719, 0.722, 0.725, 0.729, 0.732, 0.735, - & 0.739, 0.742, 0.745, 0.749, 0.752, 0.755, 0.759, 0.762, 0.765, - & 0.768, 0.772, 0.775, 0.778, 0.782, 0.785, 0.788, 0.791, 0.795, - & 0.798, 0.801, 0.804, 0.808, 0.811, 0.814, 0.817, 0.821, 0.824, - & 0.827, 0.830, 0.833, 0.837, 0.840, 0.843, 0.846, 0.849, 0.853, - & 0.856, 0.859, 0.862, 0.865, 0.868, 0.872, 0.875, 0.878, 0.881, - & 0.884, 0.887, 0.890, 0.893, 0.897, 0.900, 0.903, 0.906, 0.909, - & 0.912, 0.915, 0.918, 0.921, 0.924, 0.928, 0.931, 0.934, 0.937, - & 0.940, 0.943, 0.946, 0.949, 0.952, 0.955, 0.958, 0.961, 0.964, - & 0.967, 0.970, 0.973, 0.976, 1.008, 1.038, 1.067, 1.095, 1.124, - & 1.152, 1.179, 1.206, 1.233, 1.260, 1.286, 1.312, 1.337, 1.363, - & 1.387, 1.412, 1.437, 1.461, 1.484, 1.508, 1.531, 1.554, 1.577, - & 1.600, 1.622, 1.644, 1.666, 1.687, 1.709, 1.730, 1.751, 1.772, - & 1.792, 1.812, 1.832, 1.852, 1.872, 1.892, 1.911, 1.930, 1.949, - & 1.968, 1.987, 2.005, 2.023, 2.042, 2.060, 2.077, 2.095, 2.113, - & 2.130, 2.147, 2.164, 2.181, 2.198, 2.215, 2.231, 2.248, 2.264, - & 2.280, 2.296, 2.312, 2.328, 2.343, 2.359, 2.374, 2.389, 2.405, - & 2.420, 2.435, 2.449, 2.464, 2.479, 2.493, 2.508, 2.522, 2.536, - & 2.550, 2.564, 2.578, 2.592, 2.606, 2.619, 2.633, 2.646, 2.660, - & 2.673, 2.686, 2.699, 2.712, 2.725, 2.738, 2.751, 2.763, 2.776, - & 2.788, 2.801, 2.813, 2.826, 2.838, 2.850, 2.862, 2.874, 2.886, - & 2.898, 2.910, 2.921, 2.933, 2.945, 2.956, 2.967, 2.979, 2.990, - & 3.001, 3.013, 3.024, 3.035, 3.046, 3.057, 3.068, 3.079, 3.089, - & 3.100, 3.111, 3.121, 3.132, 3.142, 3.153, 3.163, 3.173, 3.184, - & 3.194, 3.204, 3.214, 3.224, 3.234, 3.244, 3.254, 3.264, 3.274, - & 3.284, 3.293, 3.303, 3.313, 3.322, 3.332, 3.341, 3.351, 3.360, - & 3.370, 3.379, 3.388, 3.397, 3.407, 3.416, 3.425, 3.434, 3.443, - & 3.452, 3.461, 3.470 - & /) -! -! *** MGCL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC23M_298 = (/ - &-0.090,-0.186,-0.229,-0.256,-0.276,-0.290,-0.302,-0.310,-0.317, - &-0.322,-0.327,-0.330,-0.332,-0.333,-0.334,-0.335,-0.335,-0.334, - &-0.333,-0.332,-0.331,-0.329,-0.327,-0.325,-0.322,-0.320,-0.317, - &-0.314,-0.311,-0.308,-0.305,-0.301,-0.298,-0.294,-0.291,-0.287, - &-0.283,-0.279,-0.275,-0.272,-0.268,-0.264,-0.260,-0.255,-0.251, - &-0.247,-0.243,-0.239,-0.235,-0.231,-0.226,-0.222,-0.218,-0.214, - &-0.209,-0.205,-0.201,-0.196,-0.192,-0.188,-0.184,-0.179,-0.175, - &-0.170,-0.166,-0.162,-0.157,-0.153,-0.148,-0.144,-0.139,-0.135, - &-0.130,-0.126,-0.121,-0.117,-0.112,-0.107,-0.103,-0.098,-0.093, - &-0.089,-0.084,-0.079,-0.074,-0.069,-0.065,-0.060,-0.055,-0.050, - &-0.045,-0.040,-0.034,-0.029,-0.024,-0.019,-0.014,-0.009,-0.003, - & 0.002, 0.007, 0.013, 0.018, 0.023, 0.029, 0.034, 0.040, 0.045, - & 0.050, 0.056, 0.061, 0.067, 0.073, 0.078, 0.084, 0.089, 0.095, - & 0.100, 0.106, 0.112, 0.117, 0.123, 0.128, 0.134, 0.140, 0.145, - & 0.151, 0.157, 0.162, 0.168, 0.174, 0.179, 0.185, 0.190, 0.196, - & 0.202, 0.207, 0.213, 0.219, 0.224, 0.230, 0.235, 0.241, 0.247, - & 0.252, 0.258, 0.263, 0.269, 0.275, 0.280, 0.286, 0.291, 0.297, - & 0.302, 0.308, 0.313, 0.319, 0.325, 0.330, 0.336, 0.341, 0.347, - & 0.352, 0.358, 0.363, 0.369, 0.374, 0.380, 0.385, 0.390, 0.396, - & 0.401, 0.407, 0.412, 0.418, 0.423, 0.428, 0.434, 0.439, 0.445, - & 0.450, 0.455, 0.461, 0.466, 0.471, 0.477, 0.482, 0.487, 0.493, - & 0.498, 0.503, 0.509, 0.514, 0.519, 0.525, 0.530, 0.535, 0.540, - & 0.546, 0.551, 0.556, 0.561, 0.567, 0.572, 0.577, 0.582, 0.587, - & 0.593, 0.598, 0.603, 0.608, 0.613, 0.618, 0.624, 0.629, 0.634, - & 0.639, 0.644, 0.649, 0.654, 0.659, 0.664, 0.669, 0.675, 0.680, - & 0.685, 0.690, 0.695, 0.700, 0.705, 0.710, 0.715, 0.720, 0.725, - & 0.730, 0.735, 0.740, 0.745, 0.750, 0.755, 0.759, 0.764, 0.769, - & 0.774, 0.779, 0.784, 0.789, 0.794, 0.799, 0.804, 0.808, 0.813, - & 0.818, 0.823, 0.828, 0.833, 0.837, 0.842, 0.847, 0.852, 0.857, - & 0.861, 0.866, 0.871, 0.876, 0.880, 0.885, 0.890, 0.895, 0.899, - & 0.904, 0.909, 0.914, 0.918, 0.923, 0.928, 0.932, 0.937, 0.942, - & 0.946, 0.951, 0.955, 0.960, 0.965, 0.969, 0.974, 0.979, 0.983, - & 0.988, 0.992, 0.997, 1.001, 1.006, 1.011, 1.015, 1.020, 1.024, - & 1.029, 1.033, 1.038, 1.042, 1.047, 1.051, 1.056, 1.060, 1.065, - & 1.069, 1.073, 1.078, 1.082, 1.087, 1.091, 1.096, 1.100, 1.104, - & 1.109, 1.113, 1.118, 1.122, 1.126, 1.131, 1.135, 1.139, 1.144, - & 1.148, 1.152, 1.157, 1.161, 1.165, 1.170, 1.174, 1.178, 1.183, - & 1.187, 1.191, 1.195, 1.200, 1.204, 1.208, 1.212, 1.217, 1.221, - & 1.225, 1.229, 1.234, 1.238, 1.242, 1.246, 1.250, 1.255, 1.259, - & 1.263, 1.267, 1.271, 1.275, 1.279, 1.284, 1.288, 1.292, 1.296, - & 1.300, 1.304, 1.308, 1.312, 1.316, 1.321, 1.325, 1.329, 1.333, - & 1.337, 1.341, 1.345, 1.349, 1.353, 1.357, 1.361, 1.365, 1.369, - & 1.373, 1.377, 1.381, 1.385, 1.389, 1.393, 1.397, 1.401, 1.405, - & 1.409, 1.413, 1.417, 1.421, 1.425, 1.428, 1.432, 1.436, 1.440, - & 1.444, 1.448, 1.452, 1.456, 1.497, 1.535, 1.573, 1.610, 1.646, - & 1.682, 1.717, 1.752, 1.787, 1.821, 1.854, 1.888, 1.920, 1.953, - & 1.985, 2.016, 2.048, 2.078, 2.109, 2.139, 2.169, 2.198, 2.227, - & 2.256, 2.285, 2.313, 2.341, 2.368, 2.395, 2.422, 2.449, 2.475, - & 2.501, 2.527, 2.553, 2.578, 2.603, 2.628, 2.653, 2.677, 2.701, - & 2.725, 2.749, 2.772, 2.796, 2.819, 2.841, 2.864, 2.887, 2.909, - & 2.931, 2.953, 2.974, 2.996, 3.017, 3.038, 3.059, 3.080, 3.100, - & 3.121, 3.141, 3.161, 3.181, 3.201, 3.221, 3.240, 3.259, 3.279, - & 3.298, 3.317, 3.335, 3.354, 3.372, 3.391, 3.409, 3.427, 3.445, - & 3.463, 3.480, 3.498, 3.516, 3.533, 3.550, 3.567, 3.584, 3.601, - & 3.618, 3.634, 3.651, 3.667, 3.684, 3.700, 3.716, 3.732, 3.748, - & 3.764, 3.779, 3.795, 3.810, 3.826, 3.841, 3.856, 3.872, 3.887, - & 3.902, 3.916, 3.931, 3.946, 3.961, 3.975, 3.989, 4.004, 4.018, - & 4.032, 4.046, 4.060, 4.074, 4.088, 4.102, 4.116, 4.129, 4.143, - & 4.157, 4.170, 4.183, 4.197, 4.210, 4.223, 4.236, 4.249, 4.262, - & 4.275, 4.288, 4.300, 4.313, 4.326, 4.338, 4.351, 4.363, 4.376, - & 4.388, 4.400, 4.412, 4.424, 4.436, 4.449, 4.460, 4.472, 4.484, - & 4.496, 4.508, 4.519, 4.531, 4.543, 4.554, 4.566, 4.577, 4.588, - & 4.600, 4.611, 4.622 - & /) - - - - ! Formerly BLOCK DATA KMCF323 -! -! *** NaCl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC01M_323 = (/ - &-0.044,-0.092,-0.114,-0.129,-0.139,-0.147,-0.154,-0.159,-0.163, - &-0.167,-0.170,-0.172,-0.174,-0.176,-0.177,-0.178,-0.179,-0.180, - &-0.180,-0.181,-0.181,-0.181,-0.181,-0.180,-0.180,-0.180,-0.179, - &-0.179,-0.178,-0.177,-0.177,-0.176,-0.175,-0.174,-0.173,-0.172, - &-0.171,-0.170,-0.169,-0.168,-0.167,-0.166,-0.165,-0.163,-0.162, - &-0.161,-0.160,-0.159,-0.157,-0.156,-0.155,-0.153,-0.152,-0.151, - &-0.150,-0.148,-0.147,-0.146,-0.144,-0.143,-0.142,-0.140,-0.139, - &-0.137,-0.136,-0.135,-0.133,-0.132,-0.130,-0.129,-0.127,-0.126, - &-0.125,-0.123,-0.122,-0.120,-0.119,-0.117,-0.116,-0.114,-0.113, - &-0.111,-0.109,-0.108,-0.106,-0.105,-0.103,-0.101,-0.100,-0.098, - &-0.096,-0.095,-0.093,-0.091,-0.090,-0.088,-0.086,-0.084,-0.083, - &-0.081,-0.079,-0.077,-0.076,-0.074,-0.072,-0.070,-0.068,-0.066, - &-0.065,-0.063,-0.061,-0.059,-0.057,-0.055,-0.053,-0.052,-0.050, - &-0.048,-0.046,-0.044,-0.042,-0.040,-0.038,-0.036,-0.035,-0.033, - &-0.031,-0.029,-0.027,-0.025,-0.023,-0.021,-0.019,-0.017,-0.015, - &-0.013,-0.012,-0.010,-0.008,-0.006,-0.004,-0.002, 0.000, 0.002, - & 0.004, 0.006, 0.008, 0.009, 0.011, 0.013, 0.015, 0.017, 0.019, - & 0.021, 0.023, 0.025, 0.027, 0.028, 0.030, 0.032, 0.034, 0.036, - & 0.038, 0.040, 0.042, 0.044, 0.045, 0.047, 0.049, 0.051, 0.053, - & 0.055, 0.057, 0.059, 0.060, 0.062, 0.064, 0.066, 0.068, 0.070, - & 0.072, 0.074, 0.075, 0.077, 0.079, 0.081, 0.083, 0.085, 0.086, - & 0.088, 0.090, 0.092, 0.094, 0.096, 0.097, 0.099, 0.101, 0.103, - & 0.105, 0.107, 0.108, 0.110, 0.112, 0.114, 0.116, 0.117, 0.119, - & 0.121, 0.123, 0.125, 0.127, 0.128, 0.130, 0.132, 0.134, 0.135, - & 0.137, 0.139, 0.141, 0.143, 0.144, 0.146, 0.148, 0.150, 0.151, - & 0.153, 0.155, 0.157, 0.159, 0.160, 0.162, 0.164, 0.166, 0.167, - & 0.169, 0.171, 0.173, 0.174, 0.176, 0.178, 0.180, 0.181, 0.183, - & 0.185, 0.186, 0.188, 0.190, 0.192, 0.193, 0.195, 0.197, 0.198, - & 0.200, 0.202, 0.204, 0.205, 0.207, 0.209, 0.210, 0.212, 0.214, - & 0.215, 0.217, 0.219, 0.221, 0.222, 0.224, 0.226, 0.227, 0.229, - & 0.231, 0.232, 0.234, 0.236, 0.237, 0.239, 0.241, 0.242, 0.244, - & 0.246, 0.247, 0.249, 0.250, 0.252, 0.254, 0.255, 0.257, 0.259, - & 0.260, 0.262, 0.264, 0.265, 0.267, 0.268, 0.270, 0.272, 0.273, - & 0.275, 0.276, 0.278, 0.280, 0.281, 0.283, 0.285, 0.286, 0.288, - & 0.289, 0.291, 0.293, 0.294, 0.296, 0.297, 0.299, 0.300, 0.302, - & 0.304, 0.305, 0.307, 0.308, 0.310, 0.311, 0.313, 0.315, 0.316, - & 0.318, 0.319, 0.321, 0.322, 0.324, 0.325, 0.327, 0.329, 0.330, - & 0.332, 0.333, 0.335, 0.336, 0.338, 0.339, 0.341, 0.342, 0.344, - & 0.345, 0.347, 0.349, 0.350, 0.352, 0.353, 0.355, 0.356, 0.358, - & 0.359, 0.361, 0.362, 0.364, 0.365, 0.367, 0.368, 0.370, 0.371, - & 0.373, 0.374, 0.376, 0.377, 0.379, 0.380, 0.382, 0.383, 0.384, - & 0.386, 0.387, 0.389, 0.390, 0.392, 0.393, 0.395, 0.396, 0.398, - & 0.399, 0.401, 0.402, 0.404, 0.405, 0.406, 0.408, 0.409, 0.411, - & 0.412, 0.414, 0.415, 0.417, 0.418, 0.419, 0.421, 0.422, 0.424, - & 0.425, 0.427, 0.428, 0.429, 0.445, 0.459, 0.472, 0.486, 0.499, - & 0.513, 0.526, 0.539, 0.552, 0.565, 0.577, 0.590, 0.602, 0.614, - & 0.626, 0.638, 0.650, 0.662, 0.674, 0.685, 0.697, 0.708, 0.719, - & 0.730, 0.741, 0.752, 0.763, 0.773, 0.784, 0.795, 0.805, 0.815, - & 0.825, 0.836, 0.846, 0.856, 0.866, 0.875, 0.885, 0.895, 0.904, - & 0.914, 0.923, 0.933, 0.942, 0.951, 0.960, 0.969, 0.979, 0.987, - & 0.996, 1.005, 1.014, 1.023, 1.031, 1.040, 1.049, 1.057, 1.065, - & 1.074, 1.082, 1.090, 1.099, 1.107, 1.115, 1.123, 1.131, 1.139, - & 1.147, 1.155, 1.163, 1.170, 1.178, 1.186, 1.193, 1.201, 1.209, - & 1.216, 1.224, 1.231, 1.238, 1.246, 1.253, 1.260, 1.267, 1.275, - & 1.282, 1.289, 1.296, 1.303, 1.310, 1.317, 1.324, 1.331, 1.338, - & 1.345, 1.351, 1.358, 1.365, 1.372, 1.378, 1.385, 1.392, 1.398, - & 1.405, 1.411, 1.418, 1.424, 1.431, 1.437, 1.443, 1.450, 1.456, - & 1.462, 1.469, 1.475, 1.481, 1.487, 1.493, 1.500, 1.506, 1.512, - & 1.518, 1.524, 1.530, 1.536, 1.542, 1.548, 1.554, 1.560, 1.565, - & 1.571, 1.577, 1.583, 1.589, 1.594, 1.600, 1.606, 1.612, 1.617, - & 1.623, 1.629, 1.634, 1.640, 1.645, 1.651, 1.656, 1.662, 1.667, - & 1.673, 1.678, 1.684, 1.689, 1.695, 1.700, 1.705, 1.711, 1.716, - & 1.721, 1.727, 1.732 - & /) -! -! *** Na2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC02M_323 = (/ - &-0.091,-0.196,-0.249,-0.285,-0.314,-0.337,-0.358,-0.375,-0.390, - &-0.404,-0.417,-0.428,-0.439,-0.449,-0.458,-0.466,-0.475,-0.482, - &-0.489,-0.496,-0.502,-0.508,-0.514,-0.520,-0.525,-0.530,-0.535, - &-0.540,-0.544,-0.549,-0.553,-0.557,-0.561,-0.565,-0.569,-0.572, - &-0.576,-0.579,-0.582,-0.585,-0.588,-0.591,-0.594,-0.597,-0.600, - &-0.603,-0.605,-0.608,-0.610,-0.613,-0.615,-0.617,-0.620,-0.622, - &-0.624,-0.626,-0.628,-0.630,-0.632,-0.634,-0.636,-0.638,-0.640, - &-0.641,-0.643,-0.645,-0.647,-0.648,-0.650,-0.651,-0.653,-0.654, - &-0.656,-0.657,-0.659,-0.660,-0.662,-0.663,-0.665,-0.666,-0.667, - &-0.669,-0.670,-0.671,-0.672,-0.674,-0.675,-0.676,-0.677,-0.678, - &-0.679,-0.681,-0.682,-0.683,-0.684,-0.685,-0.686,-0.687,-0.688, - &-0.689,-0.690,-0.691,-0.692,-0.693,-0.694,-0.695,-0.696,-0.697, - &-0.698,-0.699,-0.700,-0.701,-0.701,-0.702,-0.703,-0.704,-0.705, - &-0.706,-0.706,-0.707,-0.708,-0.709,-0.710,-0.710,-0.711,-0.712, - &-0.713,-0.713,-0.714,-0.715,-0.716,-0.716,-0.717,-0.718,-0.718, - &-0.719,-0.720,-0.720,-0.721,-0.722,-0.722,-0.723,-0.724,-0.724, - &-0.725,-0.725,-0.726,-0.727,-0.727,-0.728,-0.728,-0.729,-0.730, - &-0.730,-0.731,-0.731,-0.732,-0.732,-0.733,-0.733,-0.734,-0.734, - &-0.735,-0.735,-0.736,-0.736,-0.737,-0.737,-0.738,-0.738,-0.739, - &-0.739,-0.740,-0.740,-0.741,-0.741,-0.742,-0.742,-0.742,-0.743, - &-0.743,-0.744,-0.744,-0.745,-0.745,-0.745,-0.746,-0.746,-0.747, - &-0.747,-0.747,-0.748,-0.748,-0.748,-0.749,-0.749,-0.750,-0.750, - &-0.750,-0.751,-0.751,-0.751,-0.752,-0.752,-0.752,-0.753,-0.753, - &-0.753,-0.754,-0.754,-0.754,-0.755,-0.755,-0.755,-0.755,-0.756, - &-0.756,-0.756,-0.757,-0.757,-0.757,-0.758,-0.758,-0.758,-0.758, - &-0.759,-0.759,-0.759,-0.759,-0.760,-0.760,-0.760,-0.760,-0.761, - &-0.761,-0.761,-0.761,-0.762,-0.762,-0.762,-0.762,-0.763,-0.763, - &-0.763,-0.763,-0.764,-0.764,-0.764,-0.764,-0.764,-0.765,-0.765, - &-0.765,-0.765,-0.765,-0.766,-0.766,-0.766,-0.766,-0.766,-0.767, - &-0.767,-0.767,-0.767,-0.767,-0.768,-0.768,-0.768,-0.768,-0.768, - &-0.768,-0.769,-0.769,-0.769,-0.769,-0.769,-0.769,-0.770,-0.770, - &-0.770,-0.770,-0.770,-0.770,-0.771,-0.771,-0.771,-0.771,-0.771, - &-0.771,-0.771,-0.771,-0.772,-0.772,-0.772,-0.772,-0.772,-0.772, - &-0.772,-0.773,-0.773,-0.773,-0.773,-0.773,-0.773,-0.773,-0.773, - &-0.773,-0.774,-0.774,-0.774,-0.774,-0.774,-0.774,-0.774,-0.774, - &-0.774,-0.775,-0.775,-0.775,-0.775,-0.775,-0.775,-0.775,-0.775, - &-0.775,-0.775,-0.775,-0.775,-0.776,-0.776,-0.776,-0.776,-0.776, - &-0.776,-0.776,-0.776,-0.776,-0.776,-0.776,-0.776,-0.776,-0.777, - &-0.777,-0.777,-0.777,-0.777,-0.777,-0.777,-0.777,-0.777,-0.777, - &-0.777,-0.777,-0.777,-0.777,-0.777,-0.777,-0.777,-0.777,-0.778, - &-0.778,-0.778,-0.778,-0.778,-0.778,-0.778,-0.778,-0.778,-0.778, - &-0.778,-0.778,-0.778,-0.778,-0.778,-0.778,-0.778,-0.778,-0.778, - &-0.778,-0.778,-0.778,-0.778,-0.778,-0.778,-0.778,-0.778,-0.778, - &-0.778,-0.778,-0.778,-0.778,-0.778,-0.778,-0.778,-0.779,-0.779, - &-0.779,-0.779,-0.779,-0.779,-0.779,-0.779,-0.778,-0.778,-0.778, - &-0.778,-0.777,-0.777,-0.776,-0.776,-0.775,-0.774,-0.774,-0.773, - &-0.772,-0.771,-0.770,-0.769,-0.768,-0.767,-0.766,-0.765,-0.764, - &-0.763,-0.762,-0.760,-0.759,-0.758,-0.756,-0.755,-0.754,-0.752, - &-0.751,-0.749,-0.748,-0.746,-0.745,-0.743,-0.742,-0.740,-0.739, - &-0.737,-0.735,-0.734,-0.732,-0.730,-0.729,-0.727,-0.725,-0.723, - &-0.722,-0.720,-0.718,-0.716,-0.714,-0.713,-0.711,-0.709,-0.707, - &-0.705,-0.703,-0.701,-0.699,-0.697,-0.695,-0.693,-0.691,-0.690, - &-0.688,-0.686,-0.683,-0.681,-0.679,-0.677,-0.675,-0.673,-0.671, - &-0.669,-0.667,-0.665,-0.663,-0.661,-0.659,-0.656,-0.654,-0.652, - &-0.650,-0.648,-0.646,-0.644,-0.641,-0.639,-0.637,-0.635,-0.633, - &-0.630,-0.628,-0.626,-0.624,-0.621,-0.619,-0.617,-0.615,-0.612, - &-0.610,-0.608,-0.606,-0.603,-0.601,-0.599,-0.597,-0.594,-0.592, - &-0.590,-0.587,-0.585,-0.583,-0.580,-0.578,-0.576,-0.573,-0.571, - &-0.569,-0.566,-0.564,-0.562,-0.559,-0.557,-0.555,-0.552,-0.550, - &-0.547,-0.545,-0.543,-0.540,-0.538,-0.536,-0.533,-0.531,-0.528, - &-0.526,-0.524,-0.521,-0.519,-0.516,-0.514,-0.511,-0.509,-0.507, - &-0.504,-0.502,-0.499,-0.497,-0.494,-0.492,-0.490,-0.487,-0.485, - &-0.482,-0.480,-0.477 - & /) -! -! *** NaNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC03M_323 = (/ - &-0.045,-0.099,-0.125,-0.144,-0.159,-0.171,-0.181,-0.190,-0.198, - &-0.206,-0.212,-0.218,-0.224,-0.229,-0.234,-0.239,-0.243,-0.247, - &-0.251,-0.255,-0.258,-0.261,-0.265,-0.268,-0.271,-0.274,-0.276, - &-0.279,-0.281,-0.284,-0.286,-0.289,-0.291,-0.293,-0.295,-0.297, - &-0.299,-0.301,-0.303,-0.305,-0.306,-0.308,-0.310,-0.312,-0.313, - &-0.315,-0.316,-0.318,-0.319,-0.321,-0.322,-0.323,-0.325,-0.326, - &-0.327,-0.329,-0.330,-0.331,-0.332,-0.333,-0.335,-0.336,-0.337, - &-0.338,-0.339,-0.340,-0.341,-0.342,-0.343,-0.344,-0.345,-0.346, - &-0.347,-0.348,-0.349,-0.350,-0.350,-0.351,-0.352,-0.353,-0.354, - &-0.355,-0.356,-0.356,-0.357,-0.358,-0.359,-0.359,-0.360,-0.361, - &-0.362,-0.363,-0.363,-0.364,-0.365,-0.365,-0.366,-0.367,-0.368, - &-0.368,-0.369,-0.370,-0.370,-0.371,-0.372,-0.372,-0.373,-0.374, - &-0.374,-0.375,-0.375,-0.376,-0.377,-0.377,-0.378,-0.378,-0.379, - &-0.380,-0.380,-0.381,-0.381,-0.382,-0.383,-0.383,-0.384,-0.384, - &-0.385,-0.385,-0.386,-0.386,-0.387,-0.387,-0.388,-0.388,-0.389, - &-0.389,-0.390,-0.390,-0.391,-0.391,-0.392,-0.392,-0.393,-0.393, - &-0.394,-0.394,-0.395,-0.395,-0.396,-0.396,-0.397,-0.397,-0.397, - &-0.398,-0.398,-0.399,-0.399,-0.400,-0.400,-0.400,-0.401,-0.401, - &-0.402,-0.402,-0.402,-0.403,-0.403,-0.404,-0.404,-0.404,-0.405, - &-0.405,-0.406,-0.406,-0.406,-0.407,-0.407,-0.407,-0.408,-0.408, - &-0.408,-0.409,-0.409,-0.409,-0.410,-0.410,-0.411,-0.411,-0.411, - &-0.412,-0.412,-0.412,-0.413,-0.413,-0.413,-0.413,-0.414,-0.414, - &-0.414,-0.415,-0.415,-0.415,-0.416,-0.416,-0.416,-0.417,-0.417, - &-0.417,-0.417,-0.418,-0.418,-0.418,-0.419,-0.419,-0.419,-0.419, - &-0.420,-0.420,-0.420,-0.421,-0.421,-0.421,-0.421,-0.422,-0.422, - &-0.422,-0.422,-0.423,-0.423,-0.423,-0.423,-0.424,-0.424,-0.424, - &-0.424,-0.425,-0.425,-0.425,-0.425,-0.426,-0.426,-0.426,-0.426, - &-0.427,-0.427,-0.427,-0.427,-0.428,-0.428,-0.428,-0.428,-0.428, - &-0.429,-0.429,-0.429,-0.429,-0.430,-0.430,-0.430,-0.430,-0.430, - &-0.431,-0.431,-0.431,-0.431,-0.431,-0.432,-0.432,-0.432,-0.432, - &-0.432,-0.433,-0.433,-0.433,-0.433,-0.433,-0.434,-0.434,-0.434, - &-0.434,-0.434,-0.435,-0.435,-0.435,-0.435,-0.435,-0.435,-0.436, - &-0.436,-0.436,-0.436,-0.436,-0.436,-0.437,-0.437,-0.437,-0.437, - &-0.437,-0.438,-0.438,-0.438,-0.438,-0.438,-0.438,-0.438,-0.439, - &-0.439,-0.439,-0.439,-0.439,-0.439,-0.440,-0.440,-0.440,-0.440, - &-0.440,-0.440,-0.440,-0.441,-0.441,-0.441,-0.441,-0.441,-0.441, - &-0.442,-0.442,-0.442,-0.442,-0.442,-0.442,-0.442,-0.442,-0.443, - &-0.443,-0.443,-0.443,-0.443,-0.443,-0.443,-0.444,-0.444,-0.444, - &-0.444,-0.444,-0.444,-0.444,-0.444,-0.445,-0.445,-0.445,-0.445, - &-0.445,-0.445,-0.445,-0.445,-0.446,-0.446,-0.446,-0.446,-0.446, - &-0.446,-0.446,-0.446,-0.446,-0.447,-0.447,-0.447,-0.447,-0.447, - &-0.447,-0.447,-0.447,-0.447,-0.447,-0.448,-0.448,-0.448,-0.448, - &-0.448,-0.448,-0.448,-0.448,-0.448,-0.449,-0.449,-0.449,-0.449, - &-0.449,-0.449,-0.449,-0.449,-0.449,-0.449,-0.449,-0.450,-0.450, - &-0.450,-0.450,-0.450,-0.450,-0.451,-0.452,-0.452,-0.453,-0.454, - &-0.454,-0.455,-0.455,-0.456,-0.456,-0.457,-0.457,-0.457,-0.458, - &-0.458,-0.458,-0.458,-0.458,-0.458,-0.458,-0.459,-0.459,-0.459, - &-0.459,-0.459,-0.458,-0.458,-0.458,-0.458,-0.458,-0.458,-0.458, - &-0.457,-0.457,-0.457,-0.457,-0.456,-0.456,-0.456,-0.455,-0.455, - &-0.455,-0.454,-0.454,-0.453,-0.453,-0.453,-0.452,-0.452,-0.451, - &-0.451,-0.450,-0.450,-0.449,-0.449,-0.448,-0.448,-0.447,-0.446, - &-0.446,-0.445,-0.445,-0.444,-0.443,-0.443,-0.442,-0.442,-0.441, - &-0.440,-0.440,-0.439,-0.438,-0.437,-0.437,-0.436,-0.435,-0.435, - &-0.434,-0.433,-0.432,-0.432,-0.431,-0.430,-0.429,-0.429,-0.428, - &-0.427,-0.426,-0.425,-0.425,-0.424,-0.423,-0.422,-0.421,-0.420, - &-0.420,-0.419,-0.418,-0.417,-0.416,-0.415,-0.414,-0.414,-0.413, - &-0.412,-0.411,-0.410,-0.409,-0.408,-0.407,-0.406,-0.405,-0.404, - &-0.404,-0.403,-0.402,-0.401,-0.400,-0.399,-0.398,-0.397,-0.396, - &-0.395,-0.394,-0.393,-0.392,-0.391,-0.390,-0.389,-0.388,-0.387, - &-0.386,-0.385,-0.384,-0.383,-0.382,-0.381,-0.380,-0.379,-0.378, - &-0.377,-0.376,-0.375,-0.374,-0.373,-0.372,-0.371,-0.370,-0.369, - &-0.368,-0.367,-0.366,-0.365,-0.364,-0.363,-0.362,-0.361,-0.360, - &-0.359,-0.358,-0.356 - & /) -! -! *** (NH4)2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC04M_323 = (/ - &-0.091,-0.197,-0.249,-0.286,-0.315,-0.339,-0.359,-0.377,-0.392, - &-0.406,-0.419,-0.431,-0.442,-0.452,-0.461,-0.470,-0.478,-0.486, - &-0.493,-0.500,-0.507,-0.513,-0.519,-0.525,-0.530,-0.535,-0.540, - &-0.545,-0.550,-0.554,-0.559,-0.563,-0.567,-0.571,-0.575,-0.579, - &-0.582,-0.586,-0.589,-0.592,-0.596,-0.599,-0.602,-0.605,-0.608, - &-0.611,-0.613,-0.616,-0.619,-0.621,-0.624,-0.626,-0.628,-0.631, - &-0.633,-0.635,-0.637,-0.640,-0.642,-0.644,-0.646,-0.648,-0.650, - &-0.652,-0.653,-0.655,-0.657,-0.659,-0.661,-0.662,-0.664,-0.666, - &-0.667,-0.669,-0.670,-0.672,-0.673,-0.675,-0.676,-0.678,-0.679, - &-0.681,-0.682,-0.683,-0.685,-0.686,-0.687,-0.689,-0.690,-0.691, - &-0.693,-0.694,-0.695,-0.696,-0.697,-0.699,-0.700,-0.701,-0.702, - &-0.703,-0.704,-0.705,-0.707,-0.708,-0.709,-0.710,-0.711,-0.712, - &-0.713,-0.714,-0.715,-0.716,-0.717,-0.718,-0.719,-0.720,-0.721, - &-0.722,-0.723,-0.724,-0.724,-0.725,-0.726,-0.727,-0.728,-0.729, - &-0.730,-0.731,-0.731,-0.732,-0.733,-0.734,-0.735,-0.735,-0.736, - &-0.737,-0.738,-0.738,-0.739,-0.740,-0.741,-0.741,-0.742,-0.743, - &-0.744,-0.744,-0.745,-0.746,-0.746,-0.747,-0.748,-0.748,-0.749, - &-0.750,-0.750,-0.751,-0.752,-0.752,-0.753,-0.754,-0.754,-0.755, - &-0.755,-0.756,-0.757,-0.757,-0.758,-0.758,-0.759,-0.759,-0.760, - &-0.761,-0.761,-0.762,-0.762,-0.763,-0.763,-0.764,-0.764,-0.765, - &-0.765,-0.766,-0.766,-0.767,-0.767,-0.768,-0.768,-0.769,-0.769, - &-0.770,-0.770,-0.771,-0.771,-0.772,-0.772,-0.772,-0.773,-0.773, - &-0.774,-0.774,-0.775,-0.775,-0.776,-0.776,-0.776,-0.777,-0.777, - &-0.778,-0.778,-0.778,-0.779,-0.779,-0.780,-0.780,-0.780,-0.781, - &-0.781,-0.781,-0.782,-0.782,-0.783,-0.783,-0.783,-0.784,-0.784, - &-0.784,-0.785,-0.785,-0.785,-0.786,-0.786,-0.786,-0.787,-0.787, - &-0.787,-0.788,-0.788,-0.788,-0.789,-0.789,-0.789,-0.790,-0.790, - &-0.790,-0.790,-0.791,-0.791,-0.791,-0.792,-0.792,-0.792,-0.793, - &-0.793,-0.793,-0.793,-0.794,-0.794,-0.794,-0.794,-0.795,-0.795, - &-0.795,-0.795,-0.796,-0.796,-0.796,-0.796,-0.797,-0.797,-0.797, - &-0.797,-0.798,-0.798,-0.798,-0.798,-0.799,-0.799,-0.799,-0.799, - &-0.800,-0.800,-0.800,-0.800,-0.800,-0.801,-0.801,-0.801,-0.801, - &-0.801,-0.802,-0.802,-0.802,-0.802,-0.802,-0.803,-0.803,-0.803, - &-0.803,-0.803,-0.804,-0.804,-0.804,-0.804,-0.804,-0.804,-0.805, - &-0.805,-0.805,-0.805,-0.805,-0.806,-0.806,-0.806,-0.806,-0.806, - &-0.806,-0.806,-0.807,-0.807,-0.807,-0.807,-0.807,-0.807,-0.808, - &-0.808,-0.808,-0.808,-0.808,-0.808,-0.808,-0.809,-0.809,-0.809, - &-0.809,-0.809,-0.809,-0.809,-0.810,-0.810,-0.810,-0.810,-0.810, - &-0.810,-0.810,-0.810,-0.810,-0.811,-0.811,-0.811,-0.811,-0.811, - &-0.811,-0.811,-0.811,-0.812,-0.812,-0.812,-0.812,-0.812,-0.812, - &-0.812,-0.812,-0.812,-0.812,-0.813,-0.813,-0.813,-0.813,-0.813, - &-0.813,-0.813,-0.813,-0.813,-0.813,-0.813,-0.814,-0.814,-0.814, - &-0.814,-0.814,-0.814,-0.814,-0.814,-0.814,-0.814,-0.814,-0.814, - &-0.814,-0.815,-0.815,-0.815,-0.815,-0.815,-0.815,-0.815,-0.815, - &-0.815,-0.815,-0.815,-0.815,-0.816,-0.816,-0.817,-0.817,-0.817, - &-0.817,-0.817,-0.817,-0.817,-0.817,-0.817,-0.817,-0.816,-0.816, - &-0.816,-0.815,-0.815,-0.814,-0.813,-0.813,-0.812,-0.811,-0.811, - &-0.810,-0.809,-0.808,-0.807,-0.806,-0.805,-0.804,-0.803,-0.802, - &-0.801,-0.800,-0.799,-0.797,-0.796,-0.795,-0.794,-0.792,-0.791, - &-0.790,-0.788,-0.787,-0.786,-0.784,-0.783,-0.781,-0.780,-0.778, - &-0.777,-0.775,-0.774,-0.772,-0.771,-0.769,-0.767,-0.766,-0.764, - &-0.762,-0.761,-0.759,-0.757,-0.756,-0.754,-0.752,-0.750,-0.749, - &-0.747,-0.745,-0.743,-0.741,-0.740,-0.738,-0.736,-0.734,-0.732, - &-0.730,-0.728,-0.727,-0.725,-0.723,-0.721,-0.719,-0.717,-0.715, - &-0.713,-0.711,-0.709,-0.707,-0.705,-0.703,-0.701,-0.699,-0.697, - &-0.695,-0.693,-0.691,-0.689,-0.687,-0.685,-0.683,-0.681,-0.678, - &-0.676,-0.674,-0.672,-0.670,-0.668,-0.666,-0.664,-0.661,-0.659, - &-0.657,-0.655,-0.653,-0.651,-0.648,-0.646,-0.644,-0.642,-0.640, - &-0.638,-0.635,-0.633,-0.631,-0.629,-0.626,-0.624,-0.622,-0.620, - &-0.618,-0.615,-0.613,-0.611,-0.609,-0.606,-0.604,-0.602,-0.599, - &-0.597,-0.595,-0.593,-0.590,-0.588,-0.586,-0.583,-0.581,-0.579, - &-0.577,-0.574,-0.572,-0.570,-0.567,-0.565,-0.563,-0.560,-0.558, - &-0.556,-0.553,-0.551 - & /) -! -! *** NH4NO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC05M_323 = (/ - &-0.046,-0.101,-0.129,-0.149,-0.166,-0.179,-0.191,-0.202,-0.211, - &-0.220,-0.228,-0.235,-0.242,-0.249,-0.255,-0.261,-0.266,-0.272, - &-0.277,-0.282,-0.286,-0.291,-0.295,-0.299,-0.303,-0.307,-0.311, - &-0.315,-0.319,-0.322,-0.326,-0.329,-0.332,-0.335,-0.339,-0.342, - &-0.345,-0.348,-0.350,-0.353,-0.356,-0.359,-0.361,-0.364,-0.366, - &-0.369,-0.371,-0.374,-0.376,-0.378,-0.380,-0.383,-0.385,-0.387, - &-0.389,-0.391,-0.393,-0.395,-0.397,-0.399,-0.401,-0.403,-0.405, - &-0.406,-0.408,-0.410,-0.412,-0.414,-0.415,-0.417,-0.419,-0.420, - &-0.422,-0.424,-0.425,-0.427,-0.428,-0.430,-0.432,-0.433,-0.435, - &-0.436,-0.438,-0.439,-0.441,-0.442,-0.444,-0.445,-0.447,-0.448, - &-0.449,-0.451,-0.452,-0.454,-0.455,-0.456,-0.458,-0.459,-0.461, - &-0.462,-0.463,-0.465,-0.466,-0.467,-0.469,-0.470,-0.471,-0.473, - &-0.474,-0.475,-0.477,-0.478,-0.479,-0.480,-0.482,-0.483,-0.484, - &-0.485,-0.487,-0.488,-0.489,-0.490,-0.492,-0.493,-0.494,-0.495, - &-0.496,-0.498,-0.499,-0.500,-0.501,-0.502,-0.503,-0.504,-0.506, - &-0.507,-0.508,-0.509,-0.510,-0.511,-0.512,-0.513,-0.514,-0.515, - &-0.516,-0.517,-0.519,-0.520,-0.521,-0.522,-0.523,-0.524,-0.525, - &-0.526,-0.527,-0.528,-0.529,-0.530,-0.531,-0.532,-0.533,-0.534, - &-0.535,-0.535,-0.536,-0.537,-0.538,-0.539,-0.540,-0.541,-0.542, - &-0.543,-0.544,-0.545,-0.546,-0.547,-0.547,-0.548,-0.549,-0.550, - &-0.551,-0.552,-0.553,-0.553,-0.554,-0.555,-0.556,-0.557,-0.558, - &-0.559,-0.559,-0.560,-0.561,-0.562,-0.563,-0.563,-0.564,-0.565, - &-0.566,-0.567,-0.567,-0.568,-0.569,-0.570,-0.570,-0.571,-0.572, - &-0.573,-0.574,-0.574,-0.575,-0.576,-0.576,-0.577,-0.578,-0.579, - &-0.579,-0.580,-0.581,-0.582,-0.582,-0.583,-0.584,-0.584,-0.585, - &-0.586,-0.586,-0.587,-0.588,-0.589,-0.589,-0.590,-0.591,-0.591, - &-0.592,-0.593,-0.593,-0.594,-0.595,-0.595,-0.596,-0.596,-0.597, - &-0.598,-0.598,-0.599,-0.600,-0.600,-0.601,-0.602,-0.602,-0.603, - &-0.603,-0.604,-0.605,-0.605,-0.606,-0.606,-0.607,-0.608,-0.608, - &-0.609,-0.609,-0.610,-0.611,-0.611,-0.612,-0.612,-0.613,-0.613, - &-0.614,-0.615,-0.615,-0.616,-0.616,-0.617,-0.617,-0.618,-0.618, - &-0.619,-0.620,-0.620,-0.621,-0.621,-0.622,-0.622,-0.623,-0.623, - &-0.624,-0.624,-0.625,-0.625,-0.626,-0.626,-0.627,-0.627,-0.628, - &-0.628,-0.629,-0.629,-0.630,-0.630,-0.631,-0.631,-0.632,-0.632, - &-0.633,-0.633,-0.634,-0.634,-0.635,-0.635,-0.636,-0.636,-0.637, - &-0.637,-0.638,-0.638,-0.639,-0.639,-0.639,-0.640,-0.640,-0.641, - &-0.641,-0.642,-0.642,-0.643,-0.643,-0.643,-0.644,-0.644,-0.645, - &-0.645,-0.646,-0.646,-0.647,-0.647,-0.647,-0.648,-0.648,-0.649, - &-0.649,-0.649,-0.650,-0.650,-0.651,-0.651,-0.652,-0.652,-0.652, - &-0.653,-0.653,-0.654,-0.654,-0.654,-0.655,-0.655,-0.656,-0.656, - &-0.656,-0.657,-0.657,-0.658,-0.658,-0.658,-0.659,-0.659,-0.659, - &-0.660,-0.660,-0.661,-0.661,-0.661,-0.662,-0.662,-0.662,-0.663, - &-0.663,-0.663,-0.664,-0.664,-0.665,-0.665,-0.665,-0.666,-0.666, - &-0.666,-0.667,-0.667,-0.667,-0.668,-0.668,-0.668,-0.669,-0.669, - &-0.669,-0.670,-0.670,-0.670,-0.674,-0.677,-0.680,-0.683,-0.686, - &-0.688,-0.691,-0.693,-0.696,-0.698,-0.700,-0.702,-0.705,-0.706, - &-0.708,-0.710,-0.712,-0.714,-0.715,-0.717,-0.718,-0.720,-0.721, - &-0.722,-0.723,-0.725,-0.726,-0.727,-0.728,-0.729,-0.730,-0.731, - &-0.732,-0.732,-0.733,-0.734,-0.735,-0.735,-0.736,-0.736,-0.737, - &-0.737,-0.738,-0.738,-0.739,-0.739,-0.739,-0.740,-0.740,-0.740, - &-0.741,-0.741,-0.741,-0.741,-0.741,-0.741,-0.741,-0.741,-0.741, - &-0.741,-0.741,-0.741,-0.741,-0.741,-0.741,-0.741,-0.741,-0.741, - &-0.741,-0.740,-0.740,-0.740,-0.740,-0.739,-0.739,-0.739,-0.739, - &-0.738,-0.738,-0.738,-0.737,-0.737,-0.736,-0.736,-0.736,-0.735, - &-0.735,-0.734,-0.734,-0.733,-0.733,-0.732,-0.732,-0.731,-0.731, - &-0.730,-0.729,-0.729,-0.728,-0.728,-0.727,-0.726,-0.726,-0.725, - &-0.725,-0.724,-0.723,-0.723,-0.722,-0.721,-0.721,-0.720,-0.719, - &-0.718,-0.718,-0.717,-0.716,-0.715,-0.715,-0.714,-0.713,-0.712, - &-0.711,-0.711,-0.710,-0.709,-0.708,-0.707,-0.707,-0.706,-0.705, - &-0.704,-0.703,-0.702,-0.701,-0.701,-0.700,-0.699,-0.698,-0.697, - &-0.696,-0.695,-0.694,-0.693,-0.692,-0.692,-0.691,-0.690,-0.689, - &-0.688,-0.687,-0.686,-0.685,-0.684,-0.683,-0.682,-0.681,-0.680, - &-0.679,-0.678,-0.677 - & /) -! -! *** NH4Cl -! - Real(kind=fp), Parameter, Dimension(561) :: BNC06M_323 = (/ - &-0.045,-0.096,-0.120,-0.136,-0.149,-0.159,-0.167,-0.174,-0.181, - &-0.186,-0.191,-0.195,-0.199,-0.202,-0.205,-0.208,-0.210,-0.213, - &-0.215,-0.217,-0.219,-0.220,-0.222,-0.223,-0.225,-0.226,-0.227, - &-0.228,-0.229,-0.230,-0.231,-0.232,-0.232,-0.233,-0.234,-0.234, - &-0.235,-0.235,-0.236,-0.236,-0.237,-0.237,-0.237,-0.238,-0.238, - &-0.238,-0.238,-0.238,-0.239,-0.239,-0.239,-0.239,-0.239,-0.239, - &-0.239,-0.239,-0.239,-0.239,-0.239,-0.239,-0.239,-0.239,-0.239, - &-0.239,-0.239,-0.239,-0.239,-0.239,-0.239,-0.239,-0.238,-0.238, - &-0.238,-0.238,-0.238,-0.238,-0.237,-0.237,-0.237,-0.237,-0.237, - &-0.236,-0.236,-0.236,-0.235,-0.235,-0.235,-0.235,-0.234,-0.234, - &-0.234,-0.233,-0.233,-0.233,-0.232,-0.232,-0.231,-0.231,-0.231, - &-0.230,-0.230,-0.229,-0.229,-0.229,-0.228,-0.228,-0.227,-0.227, - &-0.226,-0.226,-0.225,-0.225,-0.224,-0.224,-0.224,-0.223,-0.223, - &-0.222,-0.222,-0.221,-0.221,-0.220,-0.219,-0.219,-0.218,-0.218, - &-0.217,-0.217,-0.216,-0.216,-0.215,-0.215,-0.214,-0.214,-0.213, - &-0.213,-0.212,-0.211,-0.211,-0.210,-0.210,-0.209,-0.209,-0.208, - &-0.208,-0.207,-0.206,-0.206,-0.205,-0.205,-0.204,-0.204,-0.203, - &-0.203,-0.202,-0.201,-0.201,-0.200,-0.200,-0.199,-0.199,-0.198, - &-0.197,-0.197,-0.196,-0.196,-0.195,-0.195,-0.194,-0.193,-0.193, - &-0.192,-0.192,-0.191,-0.191,-0.190,-0.189,-0.189,-0.188,-0.188, - &-0.187,-0.186,-0.186,-0.185,-0.185,-0.184,-0.184,-0.183,-0.182, - &-0.182,-0.181,-0.181,-0.180,-0.179,-0.179,-0.178,-0.178,-0.177, - &-0.177,-0.176,-0.175,-0.175,-0.174,-0.174,-0.173,-0.172,-0.172, - &-0.171,-0.171,-0.170,-0.170,-0.169,-0.168,-0.168,-0.167,-0.167, - &-0.166,-0.165,-0.165,-0.164,-0.164,-0.163,-0.163,-0.162,-0.161, - &-0.161,-0.160,-0.160,-0.159,-0.158,-0.158,-0.157,-0.157,-0.156, - &-0.156,-0.155,-0.154,-0.154,-0.153,-0.153,-0.152,-0.151,-0.151, - &-0.150,-0.150,-0.149,-0.149,-0.148,-0.147,-0.147,-0.146,-0.146, - &-0.145,-0.145,-0.144,-0.143,-0.143,-0.142,-0.142,-0.141,-0.140, - &-0.140,-0.139,-0.139,-0.138,-0.138,-0.137,-0.136,-0.136,-0.135, - &-0.135,-0.134,-0.134,-0.133,-0.132,-0.132,-0.131,-0.131,-0.130, - &-0.130,-0.129,-0.128,-0.128,-0.127,-0.127,-0.126,-0.126,-0.125, - &-0.125,-0.124,-0.123,-0.123,-0.122,-0.122,-0.121,-0.121,-0.120, - &-0.119,-0.119,-0.118,-0.118,-0.117,-0.117,-0.116,-0.115,-0.115, - &-0.114,-0.114,-0.113,-0.113,-0.112,-0.112,-0.111,-0.110,-0.110, - &-0.109,-0.109,-0.108,-0.108,-0.107,-0.107,-0.106,-0.105,-0.105, - &-0.104,-0.104,-0.103,-0.103,-0.102,-0.102,-0.101,-0.100,-0.100, - &-0.099,-0.099,-0.098,-0.098,-0.097,-0.097,-0.096,-0.096,-0.095, - &-0.094,-0.094,-0.093,-0.093,-0.092,-0.092,-0.091,-0.091,-0.090, - &-0.090,-0.089,-0.088,-0.088,-0.087,-0.087,-0.086,-0.086,-0.085, - &-0.085,-0.084,-0.084,-0.083,-0.083,-0.082,-0.081,-0.081,-0.080, - &-0.080,-0.079,-0.079,-0.078,-0.078,-0.077,-0.077,-0.076,-0.076, - &-0.075,-0.074,-0.074,-0.073,-0.073,-0.072,-0.072,-0.071,-0.071, - &-0.070,-0.070,-0.069,-0.069,-0.068,-0.068,-0.067,-0.067,-0.066, - &-0.065,-0.065,-0.064,-0.064,-0.058,-0.053,-0.048,-0.043,-0.038, - &-0.033,-0.028,-0.023,-0.018,-0.013,-0.008,-0.003, 0.002, 0.006, - & 0.011, 0.016, 0.021, 0.025, 0.030, 0.035, 0.039, 0.044, 0.048, - & 0.053, 0.057, 0.062, 0.066, 0.070, 0.075, 0.079, 0.083, 0.088, - & 0.092, 0.096, 0.100, 0.105, 0.109, 0.113, 0.117, 0.121, 0.125, - & 0.129, 0.133, 0.137, 0.141, 0.145, 0.149, 0.153, 0.157, 0.161, - & 0.165, 0.169, 0.173, 0.176, 0.180, 0.184, 0.188, 0.192, 0.195, - & 0.199, 0.203, 0.207, 0.210, 0.214, 0.218, 0.221, 0.225, 0.228, - & 0.232, 0.236, 0.239, 0.243, 0.246, 0.250, 0.253, 0.257, 0.260, - & 0.264, 0.267, 0.271, 0.274, 0.278, 0.281, 0.285, 0.288, 0.291, - & 0.295, 0.298, 0.301, 0.305, 0.308, 0.311, 0.315, 0.318, 0.321, - & 0.325, 0.328, 0.331, 0.334, 0.338, 0.341, 0.344, 0.347, 0.350, - & 0.354, 0.357, 0.360, 0.363, 0.366, 0.369, 0.373, 0.376, 0.379, - & 0.382, 0.385, 0.388, 0.391, 0.394, 0.397, 0.400, 0.403, 0.406, - & 0.409, 0.412, 0.416, 0.419, 0.422, 0.425, 0.428, 0.430, 0.433, - & 0.436, 0.439, 0.442, 0.445, 0.448, 0.451, 0.454, 0.457, 0.460, - & 0.463, 0.466, 0.469, 0.471, 0.474, 0.477, 0.480, 0.483, 0.486, - & 0.489, 0.491, 0.494, 0.497, 0.500, 0.503, 0.506, 0.508, 0.511, - & 0.514, 0.517, 0.520 - & /) -! -! *** (2H,SO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC07M_323 = (/ - &-0.091,-0.196,-0.248,-0.284,-0.312,-0.336,-0.355,-0.372,-0.388, - &-0.401,-0.414,-0.425,-0.435,-0.445,-0.453,-0.462,-0.469,-0.477, - &-0.484,-0.490,-0.496,-0.502,-0.508,-0.513,-0.518,-0.523,-0.528, - &-0.532,-0.536,-0.540,-0.544,-0.548,-0.552,-0.556,-0.559,-0.562, - &-0.566,-0.569,-0.572,-0.575,-0.578,-0.580,-0.583,-0.586,-0.588, - &-0.591,-0.593,-0.595,-0.598,-0.600,-0.602,-0.604,-0.606,-0.608, - &-0.610,-0.612,-0.614,-0.616,-0.618,-0.620,-0.621,-0.623,-0.625, - &-0.626,-0.628,-0.629,-0.631,-0.632,-0.634,-0.635,-0.637,-0.638, - &-0.639,-0.641,-0.642,-0.643,-0.644,-0.646,-0.647,-0.648,-0.649, - &-0.650,-0.652,-0.653,-0.654,-0.655,-0.656,-0.657,-0.658,-0.659, - &-0.660,-0.661,-0.662,-0.663,-0.664,-0.665,-0.666,-0.666,-0.667, - &-0.668,-0.669,-0.670,-0.671,-0.671,-0.672,-0.673,-0.674,-0.675, - &-0.675,-0.676,-0.677,-0.678,-0.678,-0.679,-0.680,-0.680,-0.681, - &-0.682,-0.682,-0.683,-0.684,-0.684,-0.685,-0.686,-0.686,-0.687, - &-0.687,-0.688,-0.689,-0.689,-0.690,-0.690,-0.691,-0.691,-0.692, - &-0.692,-0.693,-0.693,-0.694,-0.694,-0.695,-0.695,-0.696,-0.696, - &-0.697,-0.697,-0.698,-0.698,-0.699,-0.699,-0.700,-0.700,-0.700, - &-0.701,-0.701,-0.702,-0.702,-0.702,-0.703,-0.703,-0.704,-0.704, - &-0.704,-0.705,-0.705,-0.705,-0.706,-0.706,-0.706,-0.707,-0.707, - &-0.707,-0.708,-0.708,-0.708,-0.709,-0.709,-0.709,-0.710,-0.710, - &-0.710,-0.711,-0.711,-0.711,-0.711,-0.712,-0.712,-0.712,-0.712, - &-0.713,-0.713,-0.713,-0.713,-0.714,-0.714,-0.714,-0.714,-0.715, - &-0.715,-0.715,-0.715,-0.716,-0.716,-0.716,-0.716,-0.716,-0.717, - &-0.717,-0.717,-0.717,-0.717,-0.718,-0.718,-0.718,-0.718,-0.718, - &-0.719,-0.719,-0.719,-0.719,-0.719,-0.719,-0.720,-0.720,-0.720, - &-0.720,-0.720,-0.720,-0.720,-0.721,-0.721,-0.721,-0.721,-0.721, - &-0.721,-0.721,-0.722,-0.722,-0.722,-0.722,-0.722,-0.722,-0.722, - &-0.722,-0.723,-0.723,-0.723,-0.723,-0.723,-0.723,-0.723,-0.723, - &-0.723,-0.723,-0.724,-0.724,-0.724,-0.724,-0.724,-0.724,-0.724, - &-0.724,-0.724,-0.724,-0.724,-0.724,-0.725,-0.725,-0.725,-0.725, - &-0.725,-0.725,-0.725,-0.725,-0.725,-0.725,-0.725,-0.725,-0.725, - &-0.725,-0.725,-0.725,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726, - &-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726, - &-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726, - &-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726, - &-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726, - &-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726, - &-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726, - &-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.726, - &-0.726,-0.726,-0.726,-0.726,-0.726,-0.726,-0.725,-0.725,-0.725, - &-0.725,-0.725,-0.725,-0.725,-0.725,-0.725,-0.725,-0.725,-0.725, - &-0.725,-0.725,-0.725,-0.725,-0.725,-0.725,-0.725,-0.725,-0.725, - &-0.724,-0.724,-0.724,-0.724,-0.724,-0.724,-0.724,-0.724,-0.724, - &-0.724,-0.724,-0.724,-0.724,-0.724,-0.724,-0.724,-0.723,-0.723, - &-0.723,-0.723,-0.723,-0.723,-0.722,-0.721,-0.721,-0.720,-0.719, - &-0.717,-0.716,-0.715,-0.714,-0.713,-0.711,-0.710,-0.709,-0.707, - &-0.706,-0.704,-0.703,-0.701,-0.700,-0.698,-0.696,-0.695,-0.693, - &-0.691,-0.689,-0.688,-0.686,-0.684,-0.682,-0.680,-0.678,-0.676, - &-0.675,-0.673,-0.671,-0.669,-0.667,-0.665,-0.663,-0.661,-0.658, - &-0.656,-0.654,-0.652,-0.650,-0.648,-0.646,-0.644,-0.642,-0.639, - &-0.637,-0.635,-0.633,-0.631,-0.628,-0.626,-0.624,-0.622,-0.619, - &-0.617,-0.615,-0.612,-0.610,-0.608,-0.605,-0.603,-0.601,-0.598, - &-0.596,-0.594,-0.591,-0.589,-0.587,-0.584,-0.582,-0.579,-0.577, - &-0.575,-0.572,-0.570,-0.567,-0.565,-0.563,-0.560,-0.558,-0.555, - &-0.553,-0.550,-0.548,-0.545,-0.543,-0.540,-0.538,-0.535,-0.533, - &-0.530,-0.528,-0.525,-0.523,-0.520,-0.518,-0.515,-0.513,-0.510, - &-0.508,-0.505,-0.503,-0.500,-0.498,-0.495,-0.493,-0.490,-0.487, - &-0.485,-0.482,-0.480,-0.477,-0.475,-0.472,-0.470,-0.467,-0.464, - &-0.462,-0.459,-0.457,-0.454,-0.451,-0.449,-0.446,-0.444,-0.441, - &-0.438,-0.436,-0.433,-0.431,-0.428,-0.425,-0.423,-0.420,-0.418, - &-0.415,-0.412,-0.410,-0.407,-0.404,-0.402,-0.399,-0.397,-0.394, - &-0.391,-0.389,-0.386,-0.383,-0.381,-0.378,-0.375,-0.373,-0.370, - &-0.367,-0.365,-0.362 - & /) -! -! *** (H,HSO4) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC08M_323 = (/ - &-0.043,-0.086,-0.105,-0.116,-0.123,-0.128,-0.131,-0.134,-0.135, - &-0.136,-0.136,-0.135,-0.134,-0.133,-0.131,-0.129,-0.127,-0.124, - &-0.122,-0.118,-0.115,-0.112,-0.108,-0.104,-0.100,-0.096,-0.092, - &-0.088,-0.083,-0.079,-0.074,-0.069,-0.064,-0.059,-0.054,-0.048, - &-0.043,-0.037,-0.032,-0.026,-0.021,-0.015,-0.009,-0.003, 0.003, - & 0.009, 0.015, 0.021, 0.027, 0.034, 0.040, 0.046, 0.053, 0.059, - & 0.066, 0.072, 0.079, 0.086, 0.092, 0.099, 0.106, 0.112, 0.119, - & 0.126, 0.133, 0.140, 0.147, 0.154, 0.161, 0.168, 0.175, 0.182, - & 0.189, 0.196, 0.204, 0.211, 0.218, 0.226, 0.233, 0.240, 0.248, - & 0.255, 0.263, 0.270, 0.278, 0.286, 0.293, 0.301, 0.309, 0.317, - & 0.324, 0.332, 0.340, 0.348, 0.356, 0.364, 0.372, 0.380, 0.389, - & 0.397, 0.405, 0.413, 0.421, 0.430, 0.438, 0.446, 0.455, 0.463, - & 0.471, 0.480, 0.488, 0.497, 0.505, 0.514, 0.522, 0.530, 0.539, - & 0.547, 0.556, 0.564, 0.573, 0.581, 0.590, 0.598, 0.607, 0.615, - & 0.624, 0.632, 0.641, 0.649, 0.658, 0.666, 0.675, 0.683, 0.692, - & 0.700, 0.708, 0.717, 0.725, 0.734, 0.742, 0.750, 0.759, 0.767, - & 0.775, 0.784, 0.792, 0.800, 0.808, 0.817, 0.825, 0.833, 0.841, - & 0.849, 0.858, 0.866, 0.874, 0.882, 0.890, 0.898, 0.906, 0.915, - & 0.923, 0.931, 0.939, 0.947, 0.955, 0.963, 0.971, 0.979, 0.986, - & 0.994, 1.002, 1.010, 1.018, 1.026, 1.034, 1.042, 1.049, 1.057, - & 1.065, 1.073, 1.080, 1.088, 1.096, 1.104, 1.111, 1.119, 1.127, - & 1.134, 1.142, 1.150, 1.157, 1.165, 1.172, 1.180, 1.187, 1.195, - & 1.202, 1.210, 1.217, 1.225, 1.232, 1.240, 1.247, 1.254, 1.262, - & 1.269, 1.276, 1.284, 1.291, 1.298, 1.306, 1.313, 1.320, 1.327, - & 1.335, 1.342, 1.349, 1.356, 1.363, 1.371, 1.378, 1.385, 1.392, - & 1.399, 1.406, 1.413, 1.420, 1.427, 1.434, 1.441, 1.448, 1.455, - & 1.462, 1.469, 1.476, 1.483, 1.490, 1.497, 1.504, 1.510, 1.517, - & 1.524, 1.531, 1.538, 1.545, 1.551, 1.558, 1.565, 1.572, 1.578, - & 1.585, 1.592, 1.598, 1.605, 1.612, 1.618, 1.625, 1.632, 1.638, - & 1.645, 1.651, 1.658, 1.664, 1.671, 1.678, 1.684, 1.691, 1.697, - & 1.704, 1.710, 1.716, 1.723, 1.729, 1.736, 1.742, 1.749, 1.755, - & 1.761, 1.768, 1.774, 1.780, 1.787, 1.793, 1.799, 1.805, 1.812, - & 1.818, 1.824, 1.830, 1.837, 1.843, 1.849, 1.855, 1.861, 1.868, - & 1.874, 1.880, 1.886, 1.892, 1.898, 1.904, 1.910, 1.916, 1.923, - & 1.929, 1.935, 1.941, 1.947, 1.953, 1.959, 1.965, 1.971, 1.977, - & 1.983, 1.988, 1.994, 2.000, 2.006, 2.012, 2.018, 2.024, 2.030, - & 2.036, 2.041, 2.047, 2.053, 2.059, 2.065, 2.070, 2.076, 2.082, - & 2.088, 2.094, 2.099, 2.105, 2.111, 2.116, 2.122, 2.128, 2.134, - & 2.139, 2.145, 2.150, 2.156, 2.162, 2.167, 2.173, 2.179, 2.184, - & 2.190, 2.195, 2.201, 2.206, 2.212, 2.218, 2.223, 2.229, 2.234, - & 2.240, 2.245, 2.251, 2.256, 2.261, 2.267, 2.272, 2.278, 2.283, - & 2.289, 2.294, 2.299, 2.305, 2.310, 2.316, 2.321, 2.326, 2.332, - & 2.337, 2.342, 2.348, 2.353, 2.358, 2.364, 2.369, 2.374, 2.379, - & 2.385, 2.390, 2.395, 2.400, 2.406, 2.411, 2.416, 2.421, 2.426, - & 2.432, 2.437, 2.442, 2.447, 2.502, 2.553, 2.602, 2.651, 2.699, - & 2.746, 2.793, 2.839, 2.884, 2.929, 2.973, 3.017, 3.060, 3.102, - & 3.144, 3.186, 3.227, 3.267, 3.307, 3.346, 3.385, 3.424, 3.462, - & 3.499, 3.536, 3.573, 3.610, 3.646, 3.681, 3.716, 3.751, 3.786, - & 3.820, 3.854, 3.887, 3.920, 3.953, 3.985, 4.018, 4.049, 4.081, - & 4.112, 4.143, 4.174, 4.204, 4.234, 4.264, 4.294, 4.323, 4.352, - & 4.381, 4.410, 4.438, 4.466, 4.494, 4.522, 4.549, 4.577, 4.604, - & 4.630, 4.657, 4.683, 4.710, 4.736, 4.761, 4.787, 4.812, 4.838, - & 4.863, 4.888, 4.912, 4.937, 4.961, 4.985, 5.009, 5.033, 5.057, - & 5.080, 5.104, 5.127, 5.150, 5.173, 5.196, 5.218, 5.241, 5.263, - & 5.285, 5.307, 5.329, 5.351, 5.372, 5.394, 5.415, 5.436, 5.457, - & 5.478, 5.499, 5.520, 5.541, 5.561, 5.581, 5.602, 5.622, 5.642, - & 5.662, 5.682, 5.701, 5.721, 5.740, 5.760, 5.779, 5.798, 5.817, - & 5.836, 5.855, 5.874, 5.892, 5.911, 5.929, 5.948, 5.966, 5.984, - & 6.002, 6.020, 6.038, 6.056, 6.074, 6.092, 6.109, 6.127, 6.144, - & 6.161, 6.179, 6.196, 6.213, 6.230, 6.247, 6.264, 6.280, 6.297, - & 6.314, 6.330, 6.347, 6.363, 6.379, 6.396, 6.412, 6.428, 6.444, - & 6.460, 6.476, 6.492, 6.507, 6.523, 6.539, 6.554, 6.570, 6.585, - & 6.600, 6.616, 6.631 - & /) -! -! *** NH4HSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC09M_323 = (/ - &-0.045,-0.095,-0.119,-0.135,-0.147,-0.157,-0.166,-0.173,-0.179, - &-0.184,-0.189,-0.193,-0.196,-0.200,-0.203,-0.205,-0.208,-0.210, - &-0.212,-0.213,-0.215,-0.216,-0.217,-0.218,-0.219,-0.219,-0.220, - &-0.220,-0.221,-0.221,-0.221,-0.221,-0.221,-0.221,-0.220,-0.220, - &-0.219,-0.219,-0.218,-0.217,-0.217,-0.216,-0.215,-0.214,-0.213, - &-0.212,-0.211,-0.210,-0.208,-0.207,-0.206,-0.204,-0.203,-0.201, - &-0.200,-0.198,-0.197,-0.195,-0.193,-0.192,-0.190,-0.188,-0.186, - &-0.185,-0.183,-0.181,-0.179,-0.177,-0.175,-0.173,-0.171,-0.169, - &-0.167,-0.165,-0.162,-0.160,-0.158,-0.156,-0.154,-0.151,-0.149, - &-0.147,-0.144,-0.142,-0.140,-0.137,-0.135,-0.132,-0.130,-0.127, - &-0.125,-0.122,-0.120,-0.117,-0.115,-0.112,-0.109,-0.107,-0.104, - &-0.101,-0.099,-0.096,-0.093,-0.091,-0.088,-0.085,-0.082,-0.079, - &-0.077,-0.074,-0.071,-0.068,-0.065,-0.063,-0.060,-0.057,-0.054, - &-0.051,-0.048,-0.046,-0.043,-0.040,-0.037,-0.034,-0.031,-0.028, - &-0.025,-0.023,-0.020,-0.017,-0.014,-0.011,-0.008,-0.005,-0.003, - & 0.000, 0.003, 0.006, 0.009, 0.012, 0.014, 0.017, 0.020, 0.023, - & 0.026, 0.029, 0.031, 0.034, 0.037, 0.040, 0.043, 0.045, 0.048, - & 0.051, 0.054, 0.057, 0.059, 0.062, 0.065, 0.068, 0.070, 0.073, - & 0.076, 0.079, 0.081, 0.084, 0.087, 0.089, 0.092, 0.095, 0.098, - & 0.100, 0.103, 0.106, 0.108, 0.111, 0.114, 0.116, 0.119, 0.122, - & 0.124, 0.127, 0.130, 0.132, 0.135, 0.137, 0.140, 0.143, 0.145, - & 0.148, 0.150, 0.153, 0.156, 0.158, 0.161, 0.163, 0.166, 0.168, - & 0.171, 0.174, 0.176, 0.179, 0.181, 0.184, 0.186, 0.189, 0.191, - & 0.194, 0.196, 0.199, 0.201, 0.204, 0.206, 0.209, 0.211, 0.214, - & 0.216, 0.219, 0.221, 0.223, 0.226, 0.228, 0.231, 0.233, 0.236, - & 0.238, 0.240, 0.243, 0.245, 0.248, 0.250, 0.252, 0.255, 0.257, - & 0.260, 0.262, 0.264, 0.267, 0.269, 0.271, 0.274, 0.276, 0.278, - & 0.281, 0.283, 0.285, 0.288, 0.290, 0.292, 0.295, 0.297, 0.299, - & 0.302, 0.304, 0.306, 0.308, 0.311, 0.313, 0.315, 0.317, 0.320, - & 0.322, 0.324, 0.326, 0.329, 0.331, 0.333, 0.335, 0.338, 0.340, - & 0.342, 0.344, 0.346, 0.349, 0.351, 0.353, 0.355, 0.357, 0.360, - & 0.362, 0.364, 0.366, 0.368, 0.371, 0.373, 0.375, 0.377, 0.379, - & 0.381, 0.383, 0.386, 0.388, 0.390, 0.392, 0.394, 0.396, 0.398, - & 0.400, 0.403, 0.405, 0.407, 0.409, 0.411, 0.413, 0.415, 0.417, - & 0.419, 0.421, 0.423, 0.426, 0.428, 0.430, 0.432, 0.434, 0.436, - & 0.438, 0.440, 0.442, 0.444, 0.446, 0.448, 0.450, 0.452, 0.454, - & 0.456, 0.458, 0.460, 0.462, 0.464, 0.466, 0.468, 0.470, 0.472, - & 0.474, 0.476, 0.478, 0.480, 0.482, 0.484, 0.486, 0.488, 0.490, - & 0.492, 0.494, 0.496, 0.498, 0.500, 0.502, 0.504, 0.506, 0.508, - & 0.510, 0.511, 0.513, 0.515, 0.517, 0.519, 0.521, 0.523, 0.525, - & 0.527, 0.529, 0.531, 0.533, 0.534, 0.536, 0.538, 0.540, 0.542, - & 0.544, 0.546, 0.548, 0.549, 0.551, 0.553, 0.555, 0.557, 0.559, - & 0.561, 0.563, 0.564, 0.566, 0.568, 0.570, 0.572, 0.574, 0.575, - & 0.577, 0.579, 0.581, 0.583, 0.585, 0.586, 0.588, 0.590, 0.592, - & 0.594, 0.595, 0.597, 0.599, 0.618, 0.636, 0.653, 0.670, 0.687, - & 0.704, 0.721, 0.737, 0.753, 0.769, 0.784, 0.800, 0.815, 0.830, - & 0.845, 0.860, 0.875, 0.889, 0.904, 0.918, 0.932, 0.946, 0.959, - & 0.973, 0.986, 1.000, 1.013, 1.026, 1.039, 1.052, 1.065, 1.077, - & 1.090, 1.102, 1.114, 1.126, 1.138, 1.150, 1.162, 1.174, 1.186, - & 1.197, 1.209, 1.220, 1.231, 1.242, 1.254, 1.265, 1.276, 1.286, - & 1.297, 1.308, 1.318, 1.329, 1.339, 1.350, 1.360, 1.370, 1.381, - & 1.391, 1.401, 1.411, 1.421, 1.430, 1.440, 1.450, 1.459, 1.469, - & 1.479, 1.488, 1.497, 1.507, 1.516, 1.525, 1.534, 1.544, 1.553, - & 1.562, 1.571, 1.579, 1.588, 1.597, 1.606, 1.615, 1.623, 1.632, - & 1.640, 1.649, 1.657, 1.666, 1.674, 1.683, 1.691, 1.699, 1.707, - & 1.715, 1.724, 1.732, 1.740, 1.748, 1.756, 1.764, 1.771, 1.779, - & 1.787, 1.795, 1.803, 1.810, 1.818, 1.826, 1.833, 1.841, 1.848, - & 1.856, 1.863, 1.871, 1.878, 1.885, 1.893, 1.900, 1.907, 1.915, - & 1.922, 1.929, 1.936, 1.943, 1.950, 1.957, 1.964, 1.971, 1.978, - & 1.985, 1.992, 1.999, 2.006, 2.013, 2.019, 2.026, 2.033, 2.040, - & 2.046, 2.053, 2.060, 2.066, 2.073, 2.079, 2.086, 2.093, 2.099, - & 2.105, 2.112, 2.118, 2.125, 2.131, 2.138, 2.144, 2.150, 2.156, - & 2.163, 2.169, 2.175 - & /) -! -! *** (H,NO3) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC10M_323 = (/ - &-0.044,-0.092,-0.113,-0.127,-0.137,-0.145,-0.151,-0.156,-0.160, - &-0.163,-0.165,-0.167,-0.169,-0.170,-0.171,-0.172,-0.172,-0.172, - &-0.172,-0.172,-0.172,-0.172,-0.171,-0.171,-0.170,-0.169,-0.168, - &-0.167,-0.166,-0.165,-0.164,-0.163,-0.162,-0.160,-0.159,-0.158, - &-0.156,-0.155,-0.153,-0.152,-0.151,-0.149,-0.147,-0.146,-0.144, - &-0.143,-0.141,-0.140,-0.138,-0.136,-0.135,-0.133,-0.131,-0.130, - &-0.128,-0.126,-0.125,-0.123,-0.121,-0.120,-0.118,-0.116,-0.114, - &-0.113,-0.111,-0.109,-0.107,-0.106,-0.104,-0.102,-0.100,-0.099, - &-0.097,-0.095,-0.093,-0.091,-0.089,-0.088,-0.086,-0.084,-0.082, - &-0.080,-0.078,-0.076,-0.074,-0.072,-0.070,-0.068,-0.066,-0.064, - &-0.062,-0.060,-0.058,-0.056,-0.054,-0.052,-0.050,-0.048,-0.045, - &-0.043,-0.041,-0.039,-0.037,-0.035,-0.032,-0.030,-0.028,-0.026, - &-0.024,-0.021,-0.019,-0.017,-0.015,-0.012,-0.010,-0.008,-0.006, - &-0.003,-0.001, 0.001, 0.004, 0.006, 0.008, 0.010, 0.013, 0.015, - & 0.017, 0.020, 0.022, 0.024, 0.027, 0.029, 0.031, 0.033, 0.036, - & 0.038, 0.040, 0.043, 0.045, 0.047, 0.049, 0.052, 0.054, 0.056, - & 0.059, 0.061, 0.063, 0.066, 0.068, 0.070, 0.072, 0.075, 0.077, - & 0.079, 0.081, 0.084, 0.086, 0.088, 0.091, 0.093, 0.095, 0.097, - & 0.100, 0.102, 0.104, 0.106, 0.109, 0.111, 0.113, 0.115, 0.118, - & 0.120, 0.122, 0.124, 0.127, 0.129, 0.131, 0.133, 0.135, 0.138, - & 0.140, 0.142, 0.144, 0.147, 0.149, 0.151, 0.153, 0.155, 0.158, - & 0.160, 0.162, 0.164, 0.166, 0.169, 0.171, 0.173, 0.175, 0.177, - & 0.179, 0.182, 0.184, 0.186, 0.188, 0.190, 0.192, 0.195, 0.197, - & 0.199, 0.201, 0.203, 0.205, 0.207, 0.210, 0.212, 0.214, 0.216, - & 0.218, 0.220, 0.222, 0.224, 0.227, 0.229, 0.231, 0.233, 0.235, - & 0.237, 0.239, 0.241, 0.243, 0.245, 0.248, 0.250, 0.252, 0.254, - & 0.256, 0.258, 0.260, 0.262, 0.264, 0.266, 0.268, 0.270, 0.272, - & 0.274, 0.276, 0.278, 0.281, 0.283, 0.285, 0.287, 0.289, 0.291, - & 0.293, 0.295, 0.297, 0.299, 0.301, 0.303, 0.305, 0.307, 0.309, - & 0.311, 0.313, 0.315, 0.317, 0.319, 0.321, 0.323, 0.325, 0.327, - & 0.329, 0.331, 0.333, 0.335, 0.337, 0.339, 0.341, 0.343, 0.344, - & 0.346, 0.348, 0.350, 0.352, 0.354, 0.356, 0.358, 0.360, 0.362, - & 0.364, 0.366, 0.368, 0.370, 0.372, 0.373, 0.375, 0.377, 0.379, - & 0.381, 0.383, 0.385, 0.387, 0.389, 0.391, 0.393, 0.394, 0.396, - & 0.398, 0.400, 0.402, 0.404, 0.406, 0.408, 0.409, 0.411, 0.413, - & 0.415, 0.417, 0.419, 0.421, 0.422, 0.424, 0.426, 0.428, 0.430, - & 0.432, 0.433, 0.435, 0.437, 0.439, 0.441, 0.443, 0.444, 0.446, - & 0.448, 0.450, 0.452, 0.454, 0.455, 0.457, 0.459, 0.461, 0.463, - & 0.464, 0.466, 0.468, 0.470, 0.471, 0.473, 0.475, 0.477, 0.479, - & 0.480, 0.482, 0.484, 0.486, 0.487, 0.489, 0.491, 0.493, 0.494, - & 0.496, 0.498, 0.500, 0.501, 0.503, 0.505, 0.507, 0.508, 0.510, - & 0.512, 0.514, 0.515, 0.517, 0.519, 0.521, 0.522, 0.524, 0.526, - & 0.527, 0.529, 0.531, 0.533, 0.534, 0.536, 0.538, 0.539, 0.541, - & 0.543, 0.544, 0.546, 0.548, 0.549, 0.551, 0.553, 0.554, 0.556, - & 0.558, 0.560, 0.561, 0.563, 0.581, 0.597, 0.613, 0.629, 0.645, - & 0.660, 0.676, 0.691, 0.706, 0.721, 0.736, 0.750, 0.765, 0.779, - & 0.793, 0.807, 0.820, 0.834, 0.848, 0.861, 0.874, 0.887, 0.900, - & 0.913, 0.926, 0.938, 0.951, 0.963, 0.975, 0.987, 0.999, 1.011, - & 1.023, 1.035, 1.046, 1.058, 1.069, 1.081, 1.092, 1.103, 1.114, - & 1.125, 1.136, 1.147, 1.157, 1.168, 1.178, 1.189, 1.199, 1.210, - & 1.220, 1.230, 1.240, 1.250, 1.260, 1.270, 1.279, 1.289, 1.299, - & 1.308, 1.318, 1.327, 1.337, 1.346, 1.355, 1.365, 1.374, 1.383, - & 1.392, 1.401, 1.410, 1.419, 1.427, 1.436, 1.445, 1.454, 1.462, - & 1.471, 1.479, 1.488, 1.496, 1.504, 1.513, 1.521, 1.529, 1.537, - & 1.546, 1.554, 1.562, 1.570, 1.578, 1.586, 1.593, 1.601, 1.609, - & 1.617, 1.624, 1.632, 1.640, 1.647, 1.655, 1.662, 1.670, 1.677, - & 1.685, 1.692, 1.700, 1.707, 1.714, 1.721, 1.729, 1.736, 1.743, - & 1.750, 1.757, 1.764, 1.771, 1.778, 1.785, 1.792, 1.799, 1.806, - & 1.813, 1.820, 1.826, 1.833, 1.840, 1.847, 1.853, 1.860, 1.866, - & 1.873, 1.880, 1.886, 1.893, 1.899, 1.906, 1.912, 1.918, 1.925, - & 1.931, 1.938, 1.944, 1.950, 1.956, 1.963, 1.969, 1.975, 1.981, - & 1.987, 1.994, 2.000, 2.006, 2.012, 2.018, 2.024, 2.030, 2.036, - & 2.042, 2.048, 2.054 - & /) -! -! *** (H,Cl) -! - Real(kind=fp), Parameter, Dimension(561) :: BNC11M_323 = (/ - &-0.043,-0.087,-0.106,-0.117,-0.124,-0.130,-0.133,-0.135,-0.137, - &-0.138,-0.138,-0.137,-0.136,-0.135,-0.134,-0.132,-0.130,-0.127, - &-0.125,-0.122,-0.119,-0.116,-0.113,-0.110,-0.107,-0.103,-0.099, - &-0.096,-0.092,-0.088,-0.084,-0.080,-0.076,-0.071,-0.067,-0.063, - &-0.058,-0.054,-0.049,-0.045,-0.040,-0.036,-0.031,-0.027,-0.022, - &-0.017,-0.012,-0.008,-0.003, 0.002, 0.007, 0.012, 0.017, 0.022, - & 0.027, 0.031, 0.036, 0.041, 0.046, 0.051, 0.056, 0.061, 0.066, - & 0.071, 0.077, 0.082, 0.087, 0.092, 0.097, 0.102, 0.107, 0.113, - & 0.118, 0.123, 0.128, 0.134, 0.139, 0.144, 0.149, 0.155, 0.160, - & 0.166, 0.171, 0.177, 0.182, 0.188, 0.193, 0.199, 0.204, 0.210, - & 0.216, 0.221, 0.227, 0.233, 0.239, 0.244, 0.250, 0.256, 0.262, - & 0.268, 0.274, 0.280, 0.286, 0.292, 0.298, 0.304, 0.310, 0.316, - & 0.322, 0.328, 0.334, 0.340, 0.346, 0.352, 0.358, 0.364, 0.370, - & 0.377, 0.383, 0.389, 0.395, 0.401, 0.407, 0.413, 0.420, 0.426, - & 0.432, 0.438, 0.444, 0.450, 0.457, 0.463, 0.469, 0.475, 0.481, - & 0.487, 0.493, 0.499, 0.505, 0.512, 0.518, 0.524, 0.530, 0.536, - & 0.542, 0.548, 0.554, 0.560, 0.566, 0.572, 0.578, 0.584, 0.590, - & 0.596, 0.602, 0.608, 0.614, 0.620, 0.626, 0.632, 0.638, 0.643, - & 0.649, 0.655, 0.661, 0.667, 0.673, 0.679, 0.684, 0.690, 0.696, - & 0.702, 0.708, 0.713, 0.719, 0.725, 0.731, 0.737, 0.742, 0.748, - & 0.754, 0.759, 0.765, 0.771, 0.776, 0.782, 0.788, 0.793, 0.799, - & 0.805, 0.810, 0.816, 0.821, 0.827, 0.833, 0.838, 0.844, 0.849, - & 0.855, 0.860, 0.866, 0.871, 0.877, 0.882, 0.888, 0.893, 0.899, - & 0.904, 0.909, 0.915, 0.920, 0.926, 0.931, 0.936, 0.942, 0.947, - & 0.953, 0.958, 0.963, 0.969, 0.974, 0.979, 0.984, 0.990, 0.995, - & 1.000, 1.005, 1.011, 1.016, 1.021, 1.026, 1.032, 1.037, 1.042, - & 1.047, 1.052, 1.057, 1.062, 1.068, 1.073, 1.078, 1.083, 1.088, - & 1.093, 1.098, 1.103, 1.108, 1.113, 1.118, 1.123, 1.128, 1.133, - & 1.138, 1.143, 1.148, 1.153, 1.158, 1.163, 1.168, 1.173, 1.178, - & 1.183, 1.188, 1.193, 1.198, 1.202, 1.207, 1.212, 1.217, 1.222, - & 1.227, 1.232, 1.236, 1.241, 1.246, 1.251, 1.256, 1.260, 1.265, - & 1.270, 1.275, 1.279, 1.284, 1.289, 1.293, 1.298, 1.303, 1.307, - & 1.312, 1.317, 1.321, 1.326, 1.331, 1.335, 1.340, 1.345, 1.349, - & 1.354, 1.358, 1.363, 1.368, 1.372, 1.377, 1.381, 1.386, 1.390, - & 1.395, 1.399, 1.404, 1.408, 1.413, 1.417, 1.422, 1.426, 1.431, - & 1.435, 1.440, 1.444, 1.449, 1.453, 1.457, 1.462, 1.466, 1.471, - & 1.475, 1.479, 1.484, 1.488, 1.492, 1.497, 1.501, 1.506, 1.510, - & 1.514, 1.518, 1.523, 1.527, 1.531, 1.536, 1.540, 1.544, 1.548, - & 1.553, 1.557, 1.561, 1.565, 1.570, 1.574, 1.578, 1.582, 1.587, - & 1.591, 1.595, 1.599, 1.603, 1.607, 1.612, 1.616, 1.620, 1.624, - & 1.628, 1.632, 1.636, 1.640, 1.645, 1.649, 1.653, 1.657, 1.661, - & 1.665, 1.669, 1.673, 1.677, 1.681, 1.685, 1.689, 1.693, 1.697, - & 1.701, 1.705, 1.709, 1.713, 1.717, 1.721, 1.725, 1.729, 1.733, - & 1.737, 1.741, 1.745, 1.749, 1.753, 1.757, 1.761, 1.765, 1.769, - & 1.772, 1.776, 1.780, 1.784, 1.826, 1.864, 1.901, 1.938, 1.974, - & 2.010, 2.045, 2.080, 2.114, 2.148, 2.181, 2.214, 2.246, 2.278, - & 2.310, 2.341, 2.372, 2.403, 2.433, 2.463, 2.492, 2.522, 2.550, - & 2.579, 2.607, 2.635, 2.663, 2.690, 2.717, 2.744, 2.770, 2.796, - & 2.822, 2.848, 2.873, 2.898, 2.923, 2.948, 2.972, 2.996, 3.020, - & 3.044, 3.068, 3.091, 3.114, 3.137, 3.160, 3.182, 3.205, 3.227, - & 3.249, 3.271, 3.292, 3.314, 3.335, 3.356, 3.377, 3.398, 3.418, - & 3.439, 3.459, 3.479, 3.499, 3.519, 3.539, 3.558, 3.578, 3.597, - & 3.616, 3.635, 3.654, 3.673, 3.691, 3.710, 3.728, 3.746, 3.765, - & 3.783, 3.800, 3.818, 3.836, 3.853, 3.871, 3.888, 3.905, 3.922, - & 3.939, 3.956, 3.973, 3.990, 4.006, 4.023, 4.039, 4.055, 4.071, - & 4.088, 4.104, 4.119, 4.135, 4.151, 4.167, 4.182, 4.198, 4.213, - & 4.228, 4.243, 4.259, 4.274, 4.289, 4.304, 4.318, 4.333, 4.348, - & 4.362, 4.377, 4.391, 4.406, 4.420, 4.434, 4.448, 4.462, 4.476, - & 4.490, 4.504, 4.518, 4.532, 4.545, 4.559, 4.572, 4.586, 4.599, - & 4.613, 4.626, 4.639, 4.652, 4.665, 4.678, 4.691, 4.704, 4.717, - & 4.730, 4.743, 4.756, 4.768, 4.781, 4.793, 4.806, 4.818, 4.831, - & 4.843, 4.855, 4.867, 4.880, 4.892, 4.904, 4.916, 4.928, 4.940, - & 4.952, 4.964, 4.975 - & /) -! -! *** NaHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC12M_323 = (/ - &-0.044,-0.092,-0.113,-0.127,-0.138,-0.146,-0.152,-0.157,-0.162, - &-0.165,-0.168,-0.170,-0.172,-0.174,-0.175,-0.176,-0.176,-0.177, - &-0.177,-0.177,-0.176,-0.176,-0.176,-0.175,-0.174,-0.173,-0.172, - &-0.171,-0.169,-0.168,-0.167,-0.165,-0.163,-0.161,-0.160,-0.158, - &-0.156,-0.154,-0.151,-0.149,-0.147,-0.145,-0.142,-0.140,-0.137, - &-0.135,-0.132,-0.130,-0.127,-0.124,-0.122,-0.119,-0.116,-0.113, - &-0.110,-0.107,-0.104,-0.101,-0.098,-0.095,-0.092,-0.089,-0.086, - &-0.083,-0.080,-0.076,-0.073,-0.070,-0.067,-0.063,-0.060,-0.057, - &-0.053,-0.050,-0.046,-0.043,-0.039,-0.036,-0.032,-0.029,-0.025, - &-0.021,-0.018,-0.014,-0.010,-0.007,-0.003, 0.001, 0.005, 0.009, - & 0.012, 0.016, 0.020, 0.024, 0.028, 0.032, 0.036, 0.040, 0.044, - & 0.048, 0.052, 0.056, 0.060, 0.064, 0.068, 0.073, 0.077, 0.081, - & 0.085, 0.089, 0.093, 0.098, 0.102, 0.106, 0.110, 0.115, 0.119, - & 0.123, 0.127, 0.131, 0.136, 0.140, 0.144, 0.148, 0.153, 0.157, - & 0.161, 0.165, 0.170, 0.174, 0.178, 0.182, 0.187, 0.191, 0.195, - & 0.199, 0.204, 0.208, 0.212, 0.216, 0.220, 0.225, 0.229, 0.233, - & 0.237, 0.241, 0.245, 0.250, 0.254, 0.258, 0.262, 0.266, 0.270, - & 0.274, 0.279, 0.283, 0.287, 0.291, 0.295, 0.299, 0.303, 0.307, - & 0.311, 0.315, 0.319, 0.323, 0.327, 0.331, 0.335, 0.339, 0.343, - & 0.347, 0.351, 0.355, 0.359, 0.363, 0.367, 0.371, 0.375, 0.379, - & 0.383, 0.387, 0.391, 0.395, 0.399, 0.402, 0.406, 0.410, 0.414, - & 0.418, 0.422, 0.426, 0.429, 0.433, 0.437, 0.441, 0.445, 0.449, - & 0.452, 0.456, 0.460, 0.464, 0.467, 0.471, 0.475, 0.479, 0.482, - & 0.486, 0.490, 0.494, 0.497, 0.501, 0.505, 0.508, 0.512, 0.516, - & 0.519, 0.523, 0.527, 0.530, 0.534, 0.538, 0.541, 0.545, 0.548, - & 0.552, 0.556, 0.559, 0.563, 0.566, 0.570, 0.573, 0.577, 0.581, - & 0.584, 0.588, 0.591, 0.595, 0.598, 0.602, 0.605, 0.609, 0.612, - & 0.616, 0.619, 0.623, 0.626, 0.630, 0.633, 0.636, 0.640, 0.643, - & 0.647, 0.650, 0.654, 0.657, 0.660, 0.664, 0.667, 0.671, 0.674, - & 0.677, 0.681, 0.684, 0.687, 0.691, 0.694, 0.697, 0.701, 0.704, - & 0.707, 0.711, 0.714, 0.717, 0.721, 0.724, 0.727, 0.730, 0.734, - & 0.737, 0.740, 0.743, 0.747, 0.750, 0.753, 0.756, 0.760, 0.763, - & 0.766, 0.769, 0.773, 0.776, 0.779, 0.782, 0.785, 0.788, 0.792, - & 0.795, 0.798, 0.801, 0.804, 0.807, 0.811, 0.814, 0.817, 0.820, - & 0.823, 0.826, 0.829, 0.832, 0.835, 0.839, 0.842, 0.845, 0.848, - & 0.851, 0.854, 0.857, 0.860, 0.863, 0.866, 0.869, 0.872, 0.875, - & 0.878, 0.881, 0.884, 0.887, 0.890, 0.893, 0.896, 0.899, 0.902, - & 0.905, 0.908, 0.911, 0.914, 0.917, 0.920, 0.923, 0.926, 0.929, - & 0.932, 0.935, 0.938, 0.941, 0.944, 0.947, 0.949, 0.952, 0.955, - & 0.958, 0.961, 0.964, 0.967, 0.970, 0.973, 0.975, 0.978, 0.981, - & 0.984, 0.987, 0.990, 0.993, 0.995, 0.998, 1.001, 1.004, 1.007, - & 1.010, 1.012, 1.015, 1.018, 1.021, 1.024, 1.026, 1.029, 1.032, - & 1.035, 1.038, 1.040, 1.043, 1.046, 1.049, 1.051, 1.054, 1.057, - & 1.060, 1.062, 1.065, 1.068, 1.071, 1.073, 1.076, 1.079, 1.082, - & 1.084, 1.087, 1.090, 1.092, 1.121, 1.148, 1.174, 1.199, 1.225, - & 1.250, 1.274, 1.299, 1.323, 1.346, 1.370, 1.393, 1.416, 1.438, - & 1.461, 1.483, 1.504, 1.526, 1.547, 1.568, 1.589, 1.610, 1.630, - & 1.650, 1.670, 1.690, 1.710, 1.729, 1.748, 1.767, 1.786, 1.805, - & 1.823, 1.841, 1.860, 1.878, 1.895, 1.913, 1.930, 1.948, 1.965, - & 1.982, 1.999, 2.015, 2.032, 2.048, 2.065, 2.081, 2.097, 2.113, - & 2.129, 2.144, 2.160, 2.175, 2.191, 2.206, 2.221, 2.236, 2.251, - & 2.265, 2.280, 2.294, 2.309, 2.323, 2.337, 2.352, 2.366, 2.379, - & 2.393, 2.407, 2.421, 2.434, 2.448, 2.461, 2.474, 2.488, 2.501, - & 2.514, 2.527, 2.540, 2.552, 2.565, 2.578, 2.590, 2.603, 2.615, - & 2.628, 2.640, 2.652, 2.664, 2.676, 2.688, 2.700, 2.712, 2.724, - & 2.735, 2.747, 2.759, 2.770, 2.782, 2.793, 2.805, 2.816, 2.827, - & 2.838, 2.849, 2.860, 2.871, 2.882, 2.893, 2.904, 2.915, 2.926, - & 2.936, 2.947, 2.957, 2.968, 2.978, 2.989, 2.999, 3.010, 3.020, - & 3.030, 3.040, 3.050, 3.060, 3.070, 3.080, 3.090, 3.100, 3.110, - & 3.120, 3.130, 3.139, 3.149, 3.159, 3.168, 3.178, 3.188, 3.197, - & 3.206, 3.216, 3.225, 3.235, 3.244, 3.253, 3.262, 3.272, 3.281, - & 3.290, 3.299, 3.308, 3.317, 3.326, 3.335, 3.344, 3.353, 3.361, - & 3.370, 3.379, 3.388 - & /) -! -! *** (NH4)3H(SO4)2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC13M_323 = (/ - &-0.072,-0.156,-0.197,-0.226,-0.248,-0.266,-0.282,-0.295,-0.307, - &-0.317,-0.327,-0.336,-0.344,-0.351,-0.358,-0.364,-0.370,-0.375, - &-0.380,-0.385,-0.390,-0.394,-0.398,-0.402,-0.406,-0.409,-0.412, - &-0.415,-0.418,-0.421,-0.424,-0.426,-0.429,-0.431,-0.433,-0.435, - &-0.437,-0.439,-0.441,-0.442,-0.444,-0.446,-0.447,-0.449,-0.450, - &-0.451,-0.452,-0.453,-0.454,-0.456,-0.456,-0.457,-0.458,-0.459, - &-0.460,-0.461,-0.461,-0.462,-0.462,-0.463,-0.463,-0.464,-0.464, - &-0.465,-0.465,-0.465,-0.466,-0.466,-0.466,-0.467,-0.467,-0.467, - &-0.467,-0.467,-0.467,-0.467,-0.467,-0.467,-0.467,-0.467,-0.467, - &-0.467,-0.467,-0.467,-0.467,-0.467,-0.466,-0.466,-0.466,-0.466, - &-0.466,-0.465,-0.465,-0.465,-0.464,-0.464,-0.464,-0.463,-0.463, - &-0.463,-0.462,-0.462,-0.461,-0.461,-0.460,-0.460,-0.459,-0.459, - &-0.458,-0.458,-0.457,-0.457,-0.456,-0.456,-0.455,-0.455,-0.454, - &-0.454,-0.453,-0.452,-0.452,-0.451,-0.451,-0.450,-0.449,-0.449, - &-0.448,-0.447,-0.447,-0.446,-0.445,-0.445,-0.444,-0.443,-0.443, - &-0.442,-0.441,-0.441,-0.440,-0.439,-0.439,-0.438,-0.437,-0.437, - &-0.436,-0.435,-0.434,-0.434,-0.433,-0.432,-0.432,-0.431,-0.430, - &-0.429,-0.429,-0.428,-0.427,-0.427,-0.426,-0.425,-0.424,-0.424, - &-0.423,-0.422,-0.421,-0.421,-0.420,-0.419,-0.418,-0.418,-0.417, - &-0.416,-0.415,-0.415,-0.414,-0.413,-0.412,-0.412,-0.411,-0.410, - &-0.409,-0.409,-0.408,-0.407,-0.406,-0.406,-0.405,-0.404,-0.403, - &-0.403,-0.402,-0.401,-0.400,-0.400,-0.399,-0.398,-0.397,-0.397, - &-0.396,-0.395,-0.394,-0.394,-0.393,-0.392,-0.391,-0.391,-0.390, - &-0.389,-0.388,-0.388,-0.387,-0.386,-0.385,-0.385,-0.384,-0.383, - &-0.382,-0.381,-0.381,-0.380,-0.379,-0.378,-0.378,-0.377,-0.376, - &-0.375,-0.375,-0.374,-0.373,-0.372,-0.372,-0.371,-0.370,-0.369, - &-0.369,-0.368,-0.367,-0.366,-0.366,-0.365,-0.364,-0.363,-0.363, - &-0.362,-0.361,-0.360,-0.360,-0.359,-0.358,-0.357,-0.357,-0.356, - &-0.355,-0.354,-0.354,-0.353,-0.352,-0.351,-0.351,-0.350,-0.349, - &-0.348,-0.348,-0.347,-0.346,-0.345,-0.345,-0.344,-0.343,-0.342, - &-0.342,-0.341,-0.340,-0.339,-0.339,-0.338,-0.337,-0.336,-0.336, - &-0.335,-0.334,-0.333,-0.333,-0.332,-0.331,-0.331,-0.330,-0.329, - &-0.328,-0.328,-0.327,-0.326,-0.325,-0.325,-0.324,-0.323,-0.322, - &-0.322,-0.321,-0.320,-0.320,-0.319,-0.318,-0.317,-0.317,-0.316, - &-0.315,-0.314,-0.314,-0.313,-0.312,-0.312,-0.311,-0.310,-0.309, - &-0.309,-0.308,-0.307,-0.306,-0.306,-0.305,-0.304,-0.304,-0.303, - &-0.302,-0.301,-0.301,-0.300,-0.299,-0.299,-0.298,-0.297,-0.296, - &-0.296,-0.295,-0.294,-0.294,-0.293,-0.292,-0.291,-0.291,-0.290, - &-0.289,-0.289,-0.288,-0.287,-0.286,-0.286,-0.285,-0.284,-0.284, - &-0.283,-0.282,-0.281,-0.281,-0.280,-0.279,-0.279,-0.278,-0.277, - &-0.277,-0.276,-0.275,-0.274,-0.274,-0.273,-0.272,-0.272,-0.271, - &-0.270,-0.270,-0.269,-0.268,-0.267,-0.267,-0.266,-0.265,-0.265, - &-0.264,-0.263,-0.263,-0.262,-0.261,-0.261,-0.260,-0.259,-0.258, - &-0.258,-0.257,-0.256,-0.256,-0.255,-0.254,-0.254,-0.253,-0.252, - &-0.252,-0.251,-0.250,-0.250,-0.242,-0.235,-0.229,-0.222,-0.215, - &-0.209,-0.202,-0.196,-0.189,-0.183,-0.176,-0.170,-0.164,-0.157, - &-0.151,-0.145,-0.139,-0.133,-0.127,-0.121,-0.115,-0.109,-0.103, - &-0.097,-0.091,-0.085,-0.079,-0.073,-0.067,-0.062,-0.056,-0.050, - &-0.045,-0.039,-0.033,-0.028,-0.022,-0.017,-0.011,-0.006, 0.000, - & 0.005, 0.010, 0.016, 0.021, 0.026, 0.032, 0.037, 0.042, 0.048, - & 0.053, 0.058, 0.063, 0.068, 0.073, 0.079, 0.084, 0.089, 0.094, - & 0.099, 0.104, 0.109, 0.114, 0.119, 0.124, 0.129, 0.134, 0.138, - & 0.143, 0.148, 0.153, 0.158, 0.163, 0.167, 0.172, 0.177, 0.182, - & 0.186, 0.191, 0.196, 0.201, 0.205, 0.210, 0.215, 0.219, 0.224, - & 0.228, 0.233, 0.238, 0.242, 0.247, 0.251, 0.256, 0.260, 0.265, - & 0.269, 0.274, 0.278, 0.283, 0.287, 0.291, 0.296, 0.300, 0.305, - & 0.309, 0.313, 0.318, 0.322, 0.326, 0.331, 0.335, 0.339, 0.344, - & 0.348, 0.352, 0.357, 0.361, 0.365, 0.369, 0.374, 0.378, 0.382, - & 0.386, 0.390, 0.395, 0.399, 0.403, 0.407, 0.411, 0.415, 0.419, - & 0.424, 0.428, 0.432, 0.436, 0.440, 0.444, 0.448, 0.452, 0.456, - & 0.460, 0.464, 0.468, 0.472, 0.476, 0.480, 0.484, 0.488, 0.492, - & 0.496, 0.500, 0.504, 0.508, 0.512, 0.516, 0.520, 0.524, 0.528, - & 0.532, 0.536, 0.540 - & /) -! -! *** CASO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC14M_323 = (/ - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, - & 0.000, 0.000, 0.000 - & /) -! -! *** CANO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC15M_323 = (/ - &-0.090,-0.191,-0.239,-0.271,-0.296,-0.316,-0.332,-0.346,-0.358, - &-0.368,-0.378,-0.386,-0.393,-0.400,-0.405,-0.411,-0.416,-0.420, - &-0.424,-0.428,-0.431,-0.434,-0.437,-0.440,-0.442,-0.444,-0.446, - &-0.448,-0.450,-0.451,-0.453,-0.454,-0.455,-0.456,-0.457,-0.458, - &-0.459,-0.460,-0.460,-0.461,-0.461,-0.462,-0.462,-0.463,-0.463, - &-0.463,-0.463,-0.463,-0.464,-0.464,-0.464,-0.464,-0.464,-0.464, - &-0.464,-0.463,-0.463,-0.463,-0.463,-0.463,-0.462,-0.462,-0.462, - &-0.462,-0.461,-0.461,-0.460,-0.460,-0.460,-0.459,-0.459,-0.458, - &-0.458,-0.457,-0.457,-0.456,-0.455,-0.455,-0.454,-0.454,-0.453, - &-0.452,-0.451,-0.451,-0.450,-0.449,-0.448,-0.448,-0.447,-0.446, - &-0.445,-0.444,-0.443,-0.442,-0.441,-0.440,-0.439,-0.439,-0.438, - &-0.437,-0.435,-0.434,-0.433,-0.432,-0.431,-0.430,-0.429,-0.428, - &-0.427,-0.426,-0.425,-0.423,-0.422,-0.421,-0.420,-0.419,-0.417, - &-0.416,-0.415,-0.414,-0.413,-0.411,-0.410,-0.409,-0.408,-0.406, - &-0.405,-0.404,-0.403,-0.401,-0.400,-0.399,-0.398,-0.396,-0.395, - &-0.394,-0.392,-0.391,-0.390,-0.388,-0.387,-0.386,-0.385,-0.383, - &-0.382,-0.381,-0.379,-0.378,-0.377,-0.375,-0.374,-0.373,-0.371, - &-0.370,-0.369,-0.367,-0.366,-0.365,-0.363,-0.362,-0.361,-0.359, - &-0.358,-0.357,-0.355,-0.354,-0.353,-0.351,-0.350,-0.349,-0.347, - &-0.346,-0.345,-0.343,-0.342,-0.341,-0.339,-0.338,-0.337,-0.335, - &-0.334,-0.333,-0.331,-0.330,-0.328,-0.327,-0.326,-0.324,-0.323, - &-0.322,-0.320,-0.319,-0.318,-0.316,-0.315,-0.314,-0.312,-0.311, - &-0.310,-0.308,-0.307,-0.306,-0.304,-0.303,-0.301,-0.300,-0.299, - &-0.297,-0.296,-0.295,-0.293,-0.292,-0.291,-0.289,-0.288,-0.287, - &-0.285,-0.284,-0.283,-0.281,-0.280,-0.279,-0.277,-0.276,-0.275, - &-0.273,-0.272,-0.271,-0.269,-0.268,-0.267,-0.265,-0.264,-0.263, - &-0.261,-0.260,-0.259,-0.257,-0.256,-0.255,-0.253,-0.252,-0.251, - &-0.249,-0.248,-0.247,-0.245,-0.244,-0.243,-0.241,-0.240,-0.239, - &-0.237,-0.236,-0.235,-0.233,-0.232,-0.231,-0.230,-0.228,-0.227, - &-0.226,-0.224,-0.223,-0.222,-0.220,-0.219,-0.218,-0.216,-0.215, - &-0.214,-0.213,-0.211,-0.210,-0.209,-0.207,-0.206,-0.205,-0.203, - &-0.202,-0.201,-0.200,-0.198,-0.197,-0.196,-0.194,-0.193,-0.192, - &-0.191,-0.189,-0.188,-0.187,-0.185,-0.184,-0.183,-0.182,-0.180, - &-0.179,-0.178,-0.176,-0.175,-0.174,-0.173,-0.171,-0.170,-0.169, - &-0.167,-0.166,-0.165,-0.164,-0.162,-0.161,-0.160,-0.159,-0.157, - &-0.156,-0.155,-0.154,-0.152,-0.151,-0.150,-0.149,-0.147,-0.146, - &-0.145,-0.144,-0.142,-0.141,-0.140,-0.139,-0.137,-0.136,-0.135, - &-0.134,-0.132,-0.131,-0.130,-0.129,-0.127,-0.126,-0.125,-0.124, - &-0.122,-0.121,-0.120,-0.119,-0.117,-0.116,-0.115,-0.114,-0.113, - &-0.111,-0.110,-0.109,-0.108,-0.106,-0.105,-0.104,-0.103,-0.102, - &-0.100,-0.099,-0.098,-0.097,-0.095,-0.094,-0.093,-0.092,-0.091, - &-0.089,-0.088,-0.087,-0.086,-0.085,-0.083,-0.082,-0.081,-0.080, - &-0.079,-0.077,-0.076,-0.075,-0.074,-0.073,-0.071,-0.070,-0.069, - &-0.068,-0.067,-0.065,-0.064,-0.063,-0.062,-0.061,-0.059,-0.058, - &-0.057,-0.056,-0.055,-0.054,-0.041,-0.029,-0.018,-0.006, 0.005, - & 0.017, 0.028, 0.039, 0.050, 0.061, 0.072, 0.083, 0.094, 0.104, - & 0.115, 0.125, 0.136, 0.146, 0.156, 0.167, 0.177, 0.187, 0.197, - & 0.207, 0.217, 0.227, 0.236, 0.246, 0.256, 0.265, 0.275, 0.284, - & 0.294, 0.303, 0.312, 0.322, 0.331, 0.340, 0.349, 0.358, 0.367, - & 0.376, 0.385, 0.394, 0.403, 0.411, 0.420, 0.429, 0.437, 0.446, - & 0.455, 0.463, 0.472, 0.480, 0.488, 0.497, 0.505, 0.513, 0.521, - & 0.530, 0.538, 0.546, 0.554, 0.562, 0.570, 0.578, 0.586, 0.594, - & 0.602, 0.610, 0.617, 0.625, 0.633, 0.641, 0.648, 0.656, 0.664, - & 0.671, 0.679, 0.686, 0.694, 0.701, 0.709, 0.716, 0.723, 0.731, - & 0.738, 0.745, 0.753, 0.760, 0.767, 0.774, 0.782, 0.789, 0.796, - & 0.803, 0.810, 0.817, 0.824, 0.831, 0.838, 0.845, 0.852, 0.859, - & 0.866, 0.873, 0.880, 0.886, 0.893, 0.900, 0.907, 0.914, 0.920, - & 0.927, 0.934, 0.940, 0.947, 0.954, 0.960, 0.967, 0.973, 0.980, - & 0.987, 0.993, 1.000, 1.006, 1.013, 1.019, 1.025, 1.032, 1.038, - & 1.045, 1.051, 1.057, 1.064, 1.070, 1.076, 1.083, 1.089, 1.095, - & 1.101, 1.108, 1.114, 1.120, 1.126, 1.132, 1.139, 1.145, 1.151, - & 1.157, 1.163, 1.169, 1.175, 1.181, 1.187, 1.193, 1.199, 1.205, - & 1.211, 1.217, 1.223 - & /) -! -! *** CACL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC16M_323 = (/ - &-0.088,-0.184,-0.228,-0.256,-0.277,-0.293,-0.305,-0.315,-0.323, - &-0.330,-0.335,-0.340,-0.343,-0.346,-0.349,-0.350,-0.352,-0.353, - &-0.353,-0.353,-0.353,-0.353,-0.352,-0.352,-0.351,-0.349,-0.348, - &-0.347,-0.345,-0.343,-0.341,-0.339,-0.337,-0.335,-0.333,-0.331, - &-0.328,-0.326,-0.324,-0.321,-0.318,-0.316,-0.313,-0.311,-0.308, - &-0.305,-0.302,-0.299,-0.297,-0.294,-0.291,-0.288,-0.285,-0.282, - &-0.279,-0.276,-0.273,-0.270,-0.267,-0.264,-0.261,-0.258,-0.255, - &-0.252,-0.249,-0.246,-0.243,-0.239,-0.236,-0.233,-0.230,-0.227, - &-0.223,-0.220,-0.217,-0.214,-0.210,-0.207,-0.203,-0.200,-0.197, - &-0.193,-0.190,-0.186,-0.183,-0.179,-0.176,-0.172,-0.168,-0.165, - &-0.161,-0.158,-0.154,-0.150,-0.146,-0.143,-0.139,-0.135,-0.131, - &-0.127,-0.123,-0.119,-0.115,-0.111,-0.107,-0.103,-0.099,-0.095, - &-0.091,-0.087,-0.083,-0.079,-0.075,-0.071,-0.067,-0.063,-0.059, - &-0.055,-0.050,-0.046,-0.042,-0.038,-0.034,-0.030,-0.026,-0.021, - &-0.017,-0.013,-0.009,-0.005, 0.000, 0.004, 0.008, 0.012, 0.016, - & 0.020, 0.025, 0.029, 0.033, 0.037, 0.041, 0.046, 0.050, 0.054, - & 0.058, 0.062, 0.066, 0.071, 0.075, 0.079, 0.083, 0.087, 0.091, - & 0.095, 0.100, 0.104, 0.108, 0.112, 0.116, 0.120, 0.124, 0.128, - & 0.133, 0.137, 0.141, 0.145, 0.149, 0.153, 0.157, 0.161, 0.165, - & 0.169, 0.174, 0.178, 0.182, 0.186, 0.190, 0.194, 0.198, 0.202, - & 0.206, 0.210, 0.214, 0.218, 0.222, 0.226, 0.230, 0.234, 0.238, - & 0.242, 0.246, 0.250, 0.254, 0.258, 0.262, 0.266, 0.270, 0.274, - & 0.278, 0.282, 0.286, 0.290, 0.294, 0.298, 0.302, 0.306, 0.310, - & 0.314, 0.318, 0.321, 0.325, 0.329, 0.333, 0.337, 0.341, 0.345, - & 0.349, 0.353, 0.356, 0.360, 0.364, 0.368, 0.372, 0.376, 0.380, - & 0.383, 0.387, 0.391, 0.395, 0.399, 0.403, 0.406, 0.410, 0.414, - & 0.418, 0.422, 0.425, 0.429, 0.433, 0.437, 0.440, 0.444, 0.448, - & 0.452, 0.455, 0.459, 0.463, 0.467, 0.470, 0.474, 0.478, 0.482, - & 0.485, 0.489, 0.493, 0.496, 0.500, 0.504, 0.507, 0.511, 0.515, - & 0.518, 0.522, 0.526, 0.529, 0.533, 0.537, 0.540, 0.544, 0.548, - & 0.551, 0.555, 0.558, 0.562, 0.566, 0.569, 0.573, 0.576, 0.580, - & 0.584, 0.587, 0.591, 0.594, 0.598, 0.601, 0.605, 0.609, 0.612, - & 0.616, 0.619, 0.623, 0.626, 0.630, 0.633, 0.637, 0.640, 0.644, - & 0.647, 0.651, 0.654, 0.658, 0.661, 0.665, 0.668, 0.672, 0.675, - & 0.678, 0.682, 0.685, 0.689, 0.692, 0.696, 0.699, 0.703, 0.706, - & 0.709, 0.713, 0.716, 0.720, 0.723, 0.726, 0.730, 0.733, 0.737, - & 0.740, 0.743, 0.747, 0.750, 0.753, 0.757, 0.760, 0.763, 0.767, - & 0.770, 0.773, 0.777, 0.780, 0.783, 0.787, 0.790, 0.793, 0.797, - & 0.800, 0.803, 0.807, 0.810, 0.813, 0.816, 0.820, 0.823, 0.826, - & 0.829, 0.833, 0.836, 0.839, 0.842, 0.846, 0.849, 0.852, 0.855, - & 0.859, 0.862, 0.865, 0.868, 0.871, 0.875, 0.878, 0.881, 0.884, - & 0.887, 0.891, 0.894, 0.897, 0.900, 0.903, 0.906, 0.910, 0.913, - & 0.916, 0.919, 0.922, 0.925, 0.928, 0.932, 0.935, 0.938, 0.941, - & 0.944, 0.947, 0.950, 0.953, 0.957, 0.960, 0.963, 0.966, 0.969, - & 0.972, 0.975, 0.978, 0.981, 1.014, 1.044, 1.074, 1.103, 1.132, - & 1.161, 1.189, 1.218, 1.245, 1.273, 1.300, 1.327, 1.353, 1.380, - & 1.406, 1.431, 1.457, 1.482, 1.507, 1.532, 1.556, 1.580, 1.604, - & 1.628, 1.652, 1.675, 1.698, 1.721, 1.744, 1.766, 1.788, 1.811, - & 1.832, 1.854, 1.876, 1.897, 1.918, 1.939, 1.960, 1.981, 2.001, - & 2.022, 2.042, 2.062, 2.082, 2.101, 2.121, 2.140, 2.160, 2.179, - & 2.198, 2.217, 2.235, 2.254, 2.273, 2.291, 2.309, 2.327, 2.345, - & 2.363, 2.381, 2.398, 2.416, 2.433, 2.451, 2.468, 2.485, 2.502, - & 2.519, 2.535, 2.552, 2.569, 2.585, 2.601, 2.618, 2.634, 2.650, - & 2.666, 2.682, 2.698, 2.713, 2.729, 2.745, 2.760, 2.775, 2.791, - & 2.806, 2.821, 2.836, 2.851, 2.866, 2.881, 2.895, 2.910, 2.925, - & 2.939, 2.954, 2.968, 2.982, 2.997, 3.011, 3.025, 3.039, 3.053, - & 3.067, 3.081, 3.094, 3.108, 3.122, 3.135, 3.149, 3.162, 3.176, - & 3.189, 3.202, 3.216, 3.229, 3.242, 3.255, 3.268, 3.281, 3.294, - & 3.307, 3.319, 3.332, 3.345, 3.357, 3.370, 3.383, 3.395, 3.407, - & 3.420, 3.432, 3.444, 3.457, 3.469, 3.481, 3.493, 3.505, 3.517, - & 3.529, 3.541, 3.553, 3.565, 3.577, 3.588, 3.600, 3.612, 3.623, - & 3.635, 3.646, 3.658, 3.669, 3.681, 3.692, 3.704, 3.715, 3.726, - & 3.737, 3.748, 3.760 - & /) -! -! *** K2SO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC17M_323 = (/ - &-0.091,-0.197,-0.249,-0.286,-0.315,-0.339,-0.359,-0.377,-0.392, - &-0.406,-0.419,-0.431,-0.442,-0.452,-0.461,-0.470,-0.478,-0.486, - &-0.493,-0.500,-0.507,-0.513,-0.519,-0.525,-0.530,-0.535,-0.540, - &-0.545,-0.550,-0.554,-0.559,-0.563,-0.567,-0.571,-0.575,-0.579, - &-0.582,-0.586,-0.589,-0.592,-0.596,-0.599,-0.602,-0.605,-0.608, - &-0.611,-0.613,-0.616,-0.619,-0.621,-0.624,-0.626,-0.628,-0.631, - &-0.633,-0.635,-0.637,-0.640,-0.642,-0.644,-0.646,-0.648,-0.650, - &-0.652,-0.653,-0.655,-0.657,-0.659,-0.661,-0.662,-0.664,-0.666, - &-0.667,-0.669,-0.670,-0.672,-0.673,-0.675,-0.676,-0.678,-0.679, - &-0.681,-0.682,-0.683,-0.685,-0.686,-0.687,-0.689,-0.690,-0.691, - &-0.693,-0.694,-0.695,-0.696,-0.697,-0.699,-0.700,-0.701,-0.702, - &-0.703,-0.704,-0.705,-0.707,-0.708,-0.709,-0.710,-0.711,-0.712, - &-0.713,-0.714,-0.715,-0.716,-0.717,-0.718,-0.719,-0.720,-0.721, - &-0.722,-0.723,-0.724,-0.724,-0.725,-0.726,-0.727,-0.728,-0.729, - &-0.730,-0.731,-0.731,-0.732,-0.733,-0.734,-0.735,-0.735,-0.736, - &-0.737,-0.738,-0.738,-0.739,-0.740,-0.741,-0.741,-0.742,-0.743, - &-0.744,-0.744,-0.745,-0.746,-0.746,-0.747,-0.748,-0.748,-0.749, - &-0.750,-0.750,-0.751,-0.752,-0.752,-0.753,-0.754,-0.754,-0.755, - &-0.755,-0.756,-0.757,-0.757,-0.758,-0.758,-0.759,-0.759,-0.760, - &-0.761,-0.761,-0.762,-0.762,-0.763,-0.763,-0.764,-0.764,-0.765, - &-0.765,-0.766,-0.766,-0.767,-0.767,-0.768,-0.768,-0.769,-0.769, - &-0.770,-0.770,-0.771,-0.771,-0.772,-0.772,-0.772,-0.773,-0.773, - &-0.774,-0.774,-0.775,-0.775,-0.776,-0.776,-0.776,-0.777,-0.777, - &-0.778,-0.778,-0.778,-0.779,-0.779,-0.780,-0.780,-0.780,-0.781, - &-0.781,-0.781,-0.782,-0.782,-0.783,-0.783,-0.783,-0.784,-0.784, - &-0.784,-0.785,-0.785,-0.785,-0.786,-0.786,-0.786,-0.787,-0.787, - &-0.787,-0.788,-0.788,-0.788,-0.789,-0.789,-0.789,-0.790,-0.790, - &-0.790,-0.790,-0.791,-0.791,-0.791,-0.792,-0.792,-0.792,-0.793, - &-0.793,-0.793,-0.793,-0.794,-0.794,-0.794,-0.794,-0.795,-0.795, - &-0.795,-0.795,-0.796,-0.796,-0.796,-0.796,-0.797,-0.797,-0.797, - &-0.797,-0.798,-0.798,-0.798,-0.798,-0.799,-0.799,-0.799,-0.799, - &-0.800,-0.800,-0.800,-0.800,-0.800,-0.801,-0.801,-0.801,-0.801, - &-0.801,-0.802,-0.802,-0.802,-0.802,-0.802,-0.803,-0.803,-0.803, - &-0.803,-0.803,-0.804,-0.804,-0.804,-0.804,-0.804,-0.804,-0.805, - &-0.805,-0.805,-0.805,-0.805,-0.806,-0.806,-0.806,-0.806,-0.806, - &-0.806,-0.806,-0.807,-0.807,-0.807,-0.807,-0.807,-0.807,-0.808, - &-0.808,-0.808,-0.808,-0.808,-0.808,-0.808,-0.809,-0.809,-0.809, - &-0.809,-0.809,-0.809,-0.809,-0.810,-0.810,-0.810,-0.810,-0.810, - &-0.810,-0.810,-0.810,-0.810,-0.811,-0.811,-0.811,-0.811,-0.811, - &-0.811,-0.811,-0.811,-0.812,-0.812,-0.812,-0.812,-0.812,-0.812, - &-0.812,-0.812,-0.812,-0.812,-0.813,-0.813,-0.813,-0.813,-0.813, - &-0.813,-0.813,-0.813,-0.813,-0.813,-0.813,-0.814,-0.814,-0.814, - &-0.814,-0.814,-0.814,-0.814,-0.814,-0.814,-0.814,-0.814,-0.814, - &-0.814,-0.815,-0.815,-0.815,-0.815,-0.815,-0.815,-0.815,-0.815, - &-0.815,-0.815,-0.815,-0.815,-0.816,-0.816,-0.817,-0.817,-0.817, - &-0.817,-0.817,-0.817,-0.817,-0.817,-0.817,-0.817,-0.816,-0.816, - &-0.816,-0.815,-0.815,-0.814,-0.813,-0.813,-0.812,-0.811,-0.811, - &-0.810,-0.809,-0.808,-0.807,-0.806,-0.805,-0.804,-0.803,-0.802, - &-0.801,-0.800,-0.799,-0.797,-0.796,-0.795,-0.794,-0.792,-0.791, - &-0.790,-0.788,-0.787,-0.786,-0.784,-0.783,-0.781,-0.780,-0.778, - &-0.777,-0.775,-0.774,-0.772,-0.771,-0.769,-0.767,-0.766,-0.764, - &-0.762,-0.761,-0.759,-0.757,-0.756,-0.754,-0.752,-0.750,-0.749, - &-0.747,-0.745,-0.743,-0.741,-0.740,-0.738,-0.736,-0.734,-0.732, - &-0.730,-0.728,-0.727,-0.725,-0.723,-0.721,-0.719,-0.717,-0.715, - &-0.713,-0.711,-0.709,-0.707,-0.705,-0.703,-0.701,-0.699,-0.697, - &-0.695,-0.693,-0.691,-0.689,-0.687,-0.685,-0.683,-0.681,-0.678, - &-0.676,-0.674,-0.672,-0.670,-0.668,-0.666,-0.664,-0.661,-0.659, - &-0.657,-0.655,-0.653,-0.651,-0.648,-0.646,-0.644,-0.642,-0.640, - &-0.638,-0.635,-0.633,-0.631,-0.629,-0.626,-0.624,-0.622,-0.620, - &-0.618,-0.615,-0.613,-0.611,-0.609,-0.606,-0.604,-0.602,-0.599, - &-0.597,-0.595,-0.593,-0.590,-0.588,-0.586,-0.583,-0.581,-0.579, - &-0.577,-0.574,-0.572,-0.570,-0.567,-0.565,-0.563,-0.560,-0.558, - &-0.556,-0.553,-0.551 - & /) -! -! *** KHSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC18M_323 = (/ - &-0.045,-0.094,-0.118,-0.134,-0.147,-0.156,-0.165,-0.171,-0.177, - &-0.182,-0.187,-0.191,-0.195,-0.198,-0.200,-0.203,-0.205,-0.207, - &-0.209,-0.210,-0.212,-0.213,-0.214,-0.215,-0.215,-0.216,-0.216, - &-0.216,-0.217,-0.217,-0.217,-0.217,-0.216,-0.216,-0.216,-0.215, - &-0.214,-0.214,-0.213,-0.212,-0.211,-0.210,-0.209,-0.208,-0.207, - &-0.206,-0.205,-0.204,-0.202,-0.201,-0.199,-0.198,-0.196,-0.195, - &-0.193,-0.191,-0.190,-0.188,-0.186,-0.184,-0.183,-0.181,-0.179, - &-0.177,-0.175,-0.173,-0.171,-0.169,-0.167,-0.165,-0.163,-0.160, - &-0.158,-0.156,-0.154,-0.152,-0.149,-0.147,-0.145,-0.142,-0.140, - &-0.137,-0.135,-0.133,-0.130,-0.128,-0.125,-0.123,-0.120,-0.117, - &-0.115,-0.112,-0.109,-0.107,-0.104,-0.101,-0.099,-0.096,-0.093, - &-0.090,-0.088,-0.085,-0.082,-0.079,-0.076,-0.074,-0.071,-0.068, - &-0.065,-0.062,-0.059,-0.056,-0.053,-0.050,-0.047,-0.044,-0.042, - &-0.039,-0.036,-0.033,-0.030,-0.027,-0.024,-0.021,-0.018,-0.015, - &-0.012,-0.009,-0.006,-0.003, 0.000, 0.003, 0.006, 0.009, 0.012, - & 0.015, 0.018, 0.020, 0.023, 0.026, 0.029, 0.032, 0.035, 0.038, - & 0.041, 0.044, 0.047, 0.050, 0.053, 0.055, 0.058, 0.061, 0.064, - & 0.067, 0.070, 0.073, 0.076, 0.078, 0.081, 0.084, 0.087, 0.090, - & 0.093, 0.095, 0.098, 0.101, 0.104, 0.107, 0.109, 0.112, 0.115, - & 0.118, 0.121, 0.123, 0.126, 0.129, 0.132, 0.134, 0.137, 0.140, - & 0.143, 0.145, 0.148, 0.151, 0.153, 0.156, 0.159, 0.162, 0.164, - & 0.167, 0.170, 0.172, 0.175, 0.178, 0.180, 0.183, 0.186, 0.188, - & 0.191, 0.193, 0.196, 0.199, 0.201, 0.204, 0.206, 0.209, 0.212, - & 0.214, 0.217, 0.219, 0.222, 0.225, 0.227, 0.230, 0.232, 0.235, - & 0.237, 0.240, 0.242, 0.245, 0.247, 0.250, 0.252, 0.255, 0.257, - & 0.260, 0.262, 0.265, 0.267, 0.270, 0.272, 0.275, 0.277, 0.280, - & 0.282, 0.285, 0.287, 0.289, 0.292, 0.294, 0.297, 0.299, 0.302, - & 0.304, 0.306, 0.309, 0.311, 0.314, 0.316, 0.318, 0.321, 0.323, - & 0.325, 0.328, 0.330, 0.333, 0.335, 0.337, 0.340, 0.342, 0.344, - & 0.347, 0.349, 0.351, 0.354, 0.356, 0.358, 0.360, 0.363, 0.365, - & 0.367, 0.370, 0.372, 0.374, 0.376, 0.379, 0.381, 0.383, 0.386, - & 0.388, 0.390, 0.392, 0.395, 0.397, 0.399, 0.401, 0.403, 0.406, - & 0.408, 0.410, 0.412, 0.415, 0.417, 0.419, 0.421, 0.423, 0.425, - & 0.428, 0.430, 0.432, 0.434, 0.436, 0.439, 0.441, 0.443, 0.445, - & 0.447, 0.449, 0.451, 0.454, 0.456, 0.458, 0.460, 0.462, 0.464, - & 0.466, 0.468, 0.471, 0.473, 0.475, 0.477, 0.479, 0.481, 0.483, - & 0.485, 0.487, 0.489, 0.491, 0.494, 0.496, 0.498, 0.500, 0.502, - & 0.504, 0.506, 0.508, 0.510, 0.512, 0.514, 0.516, 0.518, 0.520, - & 0.522, 0.524, 0.526, 0.528, 0.530, 0.532, 0.534, 0.536, 0.538, - & 0.540, 0.542, 0.544, 0.546, 0.548, 0.550, 0.552, 0.554, 0.556, - & 0.558, 0.560, 0.562, 0.564, 0.566, 0.568, 0.570, 0.572, 0.574, - & 0.576, 0.578, 0.580, 0.582, 0.584, 0.585, 0.587, 0.589, 0.591, - & 0.593, 0.595, 0.597, 0.599, 0.601, 0.603, 0.605, 0.607, 0.608, - & 0.610, 0.612, 0.614, 0.616, 0.618, 0.620, 0.622, 0.623, 0.625, - & 0.627, 0.629, 0.631, 0.633, 0.653, 0.671, 0.689, 0.707, 0.724, - & 0.741, 0.758, 0.775, 0.792, 0.808, 0.824, 0.840, 0.856, 0.872, - & 0.887, 0.903, 0.918, 0.933, 0.947, 0.962, 0.977, 0.991, 1.005, - & 1.019, 1.033, 1.047, 1.060, 1.074, 1.087, 1.101, 1.114, 1.127, - & 1.140, 1.152, 1.165, 1.178, 1.190, 1.202, 1.215, 1.227, 1.239, - & 1.251, 1.262, 1.274, 1.286, 1.297, 1.309, 1.320, 1.332, 1.343, - & 1.354, 1.365, 1.376, 1.387, 1.397, 1.408, 1.419, 1.429, 1.440, - & 1.450, 1.461, 1.471, 1.481, 1.491, 1.501, 1.511, 1.521, 1.531, - & 1.541, 1.551, 1.561, 1.570, 1.580, 1.589, 1.599, 1.608, 1.617, - & 1.627, 1.636, 1.645, 1.654, 1.663, 1.672, 1.681, 1.690, 1.699, - & 1.708, 1.717, 1.726, 1.734, 1.743, 1.751, 1.760, 1.768, 1.777, - & 1.785, 1.794, 1.802, 1.810, 1.819, 1.827, 1.835, 1.843, 1.851, - & 1.859, 1.867, 1.875, 1.883, 1.891, 1.899, 1.907, 1.915, 1.922, - & 1.930, 1.938, 1.945, 1.953, 1.960, 1.968, 1.976, 1.983, 1.990, - & 1.998, 2.005, 2.013, 2.020, 2.027, 2.034, 2.042, 2.049, 2.056, - & 2.063, 2.070, 2.077, 2.084, 2.091, 2.098, 2.105, 2.112, 2.119, - & 2.126, 2.133, 2.140, 2.147, 2.154, 2.160, 2.167, 2.174, 2.180, - & 2.187, 2.194, 2.200, 2.207, 2.213, 2.220, 2.227, 2.233, 2.240, - & 2.246, 2.252, 2.259 - & /) -! -! *** KNO3 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC19M_323 = (/ - &-0.046,-0.105,-0.136,-0.159,-0.178,-0.194,-0.208,-0.221,-0.233, - &-0.244,-0.255,-0.265,-0.274,-0.283,-0.291,-0.299,-0.307,-0.315, - &-0.322,-0.329,-0.336,-0.342,-0.349,-0.355,-0.361,-0.367,-0.373, - &-0.379,-0.384,-0.390,-0.395,-0.400,-0.405,-0.410,-0.415,-0.420, - &-0.425,-0.430,-0.434,-0.439,-0.443,-0.447,-0.452,-0.456,-0.460, - &-0.464,-0.468,-0.472,-0.476,-0.480,-0.483,-0.487,-0.491,-0.494, - &-0.498,-0.501,-0.505,-0.508,-0.511,-0.515,-0.518,-0.521,-0.524, - &-0.528,-0.531,-0.534,-0.537,-0.540,-0.543,-0.546,-0.549,-0.552, - &-0.555,-0.557,-0.560,-0.563,-0.566,-0.569,-0.571,-0.574,-0.577, - &-0.580,-0.582,-0.585,-0.588,-0.590,-0.593,-0.596,-0.598,-0.601, - &-0.604,-0.606,-0.609,-0.611,-0.614,-0.616,-0.619,-0.622,-0.624, - &-0.627,-0.629,-0.632,-0.634,-0.637,-0.639,-0.641,-0.644,-0.646, - &-0.649,-0.651,-0.654,-0.656,-0.658,-0.661,-0.663,-0.666,-0.668, - &-0.670,-0.673,-0.675,-0.677,-0.679,-0.682,-0.684,-0.686,-0.688, - &-0.691,-0.693,-0.695,-0.697,-0.699,-0.702,-0.704,-0.706,-0.708, - &-0.710,-0.712,-0.714,-0.716,-0.718,-0.721,-0.723,-0.725,-0.727, - &-0.729,-0.731,-0.733,-0.735,-0.737,-0.739,-0.740,-0.742,-0.744, - &-0.746,-0.748,-0.750,-0.752,-0.754,-0.756,-0.757,-0.759,-0.761, - &-0.763,-0.765,-0.767,-0.768,-0.770,-0.772,-0.774,-0.775,-0.777, - &-0.779,-0.780,-0.782,-0.784,-0.786,-0.787,-0.789,-0.791,-0.792, - &-0.794,-0.796,-0.797,-0.799,-0.800,-0.802,-0.804,-0.805,-0.807, - &-0.808,-0.810,-0.811,-0.813,-0.814,-0.816,-0.817,-0.819,-0.820, - &-0.822,-0.823,-0.825,-0.826,-0.828,-0.829,-0.831,-0.832,-0.834, - &-0.835,-0.836,-0.838,-0.839,-0.841,-0.842,-0.843,-0.845,-0.846, - &-0.847,-0.849,-0.850,-0.851,-0.853,-0.854,-0.855,-0.857,-0.858, - &-0.859,-0.861,-0.862,-0.863,-0.864,-0.866,-0.867,-0.868,-0.869, - &-0.871,-0.872,-0.873,-0.874,-0.875,-0.877,-0.878,-0.879,-0.880, - &-0.881,-0.882,-0.884,-0.885,-0.886,-0.887,-0.888,-0.889,-0.890, - &-0.892,-0.893,-0.894,-0.895,-0.896,-0.897,-0.898,-0.899,-0.900, - &-0.901,-0.902,-0.904,-0.905,-0.906,-0.907,-0.908,-0.909,-0.910, - &-0.911,-0.912,-0.913,-0.914,-0.915,-0.916,-0.917,-0.918,-0.919, - &-0.920,-0.921,-0.922,-0.923,-0.924,-0.925,-0.926,-0.926,-0.927, - &-0.928,-0.929,-0.930,-0.931,-0.932,-0.933,-0.934,-0.935,-0.936, - &-0.936,-0.937,-0.938,-0.939,-0.940,-0.941,-0.942,-0.943,-0.943, - &-0.944,-0.945,-0.946,-0.947,-0.948,-0.948,-0.949,-0.950,-0.951, - &-0.952,-0.953,-0.953,-0.954,-0.955,-0.956,-0.957,-0.957,-0.958, - &-0.959,-0.960,-0.960,-0.961,-0.962,-0.963,-0.963,-0.964,-0.965, - &-0.966,-0.966,-0.967,-0.968,-0.969,-0.969,-0.970,-0.971,-0.971, - &-0.972,-0.973,-0.974,-0.974,-0.975,-0.976,-0.976,-0.977,-0.978, - &-0.978,-0.979,-0.980,-0.980,-0.981,-0.982,-0.982,-0.983,-0.984, - &-0.984,-0.985,-0.986,-0.986,-0.987,-0.988,-0.988,-0.989,-0.989, - &-0.990,-0.991,-0.991,-0.992,-0.992,-0.993,-0.994,-0.994,-0.995, - &-0.995,-0.996,-0.997,-0.997,-0.998,-0.998,-0.999,-1.000,-1.000, - &-1.001,-1.001,-1.002,-1.002,-1.003,-1.003,-1.004,-1.005,-1.005, - &-1.006,-1.006,-1.007,-1.007,-1.013,-1.018,-1.022,-1.027,-1.031, - &-1.035,-1.039,-1.042,-1.046,-1.049,-1.052,-1.055,-1.058,-1.060, - &-1.063,-1.065,-1.067,-1.069,-1.071,-1.073,-1.075,-1.076,-1.078, - &-1.079,-1.081,-1.082,-1.083,-1.084,-1.085,-1.086,-1.087,-1.088, - &-1.088,-1.089,-1.089,-1.090,-1.090,-1.091,-1.091,-1.091,-1.092, - &-1.092,-1.092,-1.092,-1.092,-1.092,-1.092,-1.092,-1.092,-1.092, - &-1.092,-1.091,-1.091,-1.091,-1.091,-1.090,-1.090,-1.090,-1.089, - &-1.089,-1.088,-1.088,-1.087,-1.087,-1.086,-1.085,-1.085,-1.084, - &-1.084,-1.083,-1.082,-1.082,-1.081,-1.080,-1.079,-1.079,-1.078, - &-1.077,-1.076,-1.075,-1.074,-1.074,-1.073,-1.072,-1.071,-1.070, - &-1.069,-1.068,-1.067,-1.066,-1.065,-1.064,-1.063,-1.062,-1.061, - &-1.060,-1.059,-1.058,-1.057,-1.056,-1.055,-1.054,-1.053,-1.052, - &-1.051,-1.050,-1.049,-1.047,-1.046,-1.045,-1.044,-1.043,-1.042, - &-1.041,-1.040,-1.038,-1.037,-1.036,-1.035,-1.034,-1.032,-1.031, - &-1.030,-1.029,-1.028,-1.026,-1.025,-1.024,-1.023,-1.022,-1.020, - &-1.019,-1.018,-1.017,-1.015,-1.014,-1.013,-1.012,-1.010,-1.009, - &-1.008,-1.007,-1.005,-1.004,-1.003,-1.001,-1.000,-0.999,-0.998, - &-0.996,-0.995,-0.994,-0.992,-0.991,-0.990,-0.989,-0.987,-0.986, - &-0.985,-0.983,-0.982 - & /) -! -! *** KCL -! - Real(kind=fp), Parameter, Dimension(561) :: BNC20M_323 = (/ - &-0.045,-0.095,-0.119,-0.136,-0.148,-0.158,-0.166,-0.173,-0.179, - &-0.184,-0.189,-0.193,-0.197,-0.200,-0.203,-0.206,-0.208,-0.210, - &-0.212,-0.214,-0.216,-0.217,-0.219,-0.220,-0.221,-0.222,-0.223, - &-0.224,-0.225,-0.226,-0.227,-0.227,-0.228,-0.229,-0.229,-0.229, - &-0.230,-0.230,-0.231,-0.231,-0.231,-0.231,-0.232,-0.232,-0.232, - &-0.232,-0.232,-0.232,-0.232,-0.232,-0.233,-0.233,-0.233,-0.232, - &-0.232,-0.232,-0.232,-0.232,-0.232,-0.232,-0.232,-0.232,-0.232, - &-0.232,-0.231,-0.231,-0.231,-0.231,-0.231,-0.230,-0.230,-0.230, - &-0.230,-0.229,-0.229,-0.229,-0.229,-0.228,-0.228,-0.228,-0.227, - &-0.227,-0.227,-0.226,-0.226,-0.226,-0.225,-0.225,-0.224,-0.224, - &-0.224,-0.223,-0.223,-0.222,-0.222,-0.221,-0.221,-0.220,-0.220, - &-0.219,-0.219,-0.218,-0.218,-0.217,-0.217,-0.216,-0.216,-0.215, - &-0.215,-0.214,-0.213,-0.213,-0.212,-0.212,-0.211,-0.211,-0.210, - &-0.209,-0.209,-0.208,-0.208,-0.207,-0.206,-0.206,-0.205,-0.205, - &-0.204,-0.203,-0.203,-0.202,-0.201,-0.201,-0.200,-0.200,-0.199, - &-0.198,-0.198,-0.197,-0.196,-0.196,-0.195,-0.194,-0.194,-0.193, - &-0.192,-0.192,-0.191,-0.191,-0.190,-0.189,-0.189,-0.188,-0.187, - &-0.187,-0.186,-0.185,-0.185,-0.184,-0.183,-0.183,-0.182,-0.181, - &-0.181,-0.180,-0.179,-0.179,-0.178,-0.177,-0.177,-0.176,-0.175, - &-0.175,-0.174,-0.173,-0.173,-0.172,-0.171,-0.171,-0.170,-0.169, - &-0.169,-0.168,-0.167,-0.167,-0.166,-0.165,-0.165,-0.164,-0.163, - &-0.163,-0.162,-0.161,-0.161,-0.160,-0.159,-0.159,-0.158,-0.157, - &-0.157,-0.156,-0.155,-0.155,-0.154,-0.153,-0.153,-0.152,-0.151, - &-0.151,-0.150,-0.149,-0.149,-0.148,-0.147,-0.147,-0.146,-0.145, - &-0.145,-0.144,-0.143,-0.143,-0.142,-0.141,-0.141,-0.140,-0.140, - &-0.139,-0.138,-0.138,-0.137,-0.136,-0.136,-0.135,-0.134,-0.134, - &-0.133,-0.132,-0.132,-0.131,-0.130,-0.130,-0.129,-0.128,-0.128, - &-0.127,-0.126,-0.126,-0.125,-0.124,-0.124,-0.123,-0.122,-0.122, - &-0.121,-0.120,-0.120,-0.119,-0.119,-0.118,-0.117,-0.117,-0.116, - &-0.115,-0.115,-0.114,-0.113,-0.113,-0.112,-0.111,-0.111,-0.110, - &-0.109,-0.109,-0.108,-0.108,-0.107,-0.106,-0.106,-0.105,-0.104, - &-0.104,-0.103,-0.102,-0.102,-0.101,-0.100,-0.100,-0.099,-0.099, - &-0.098,-0.097,-0.097,-0.096,-0.095,-0.095,-0.094,-0.093,-0.093, - &-0.092,-0.092,-0.091,-0.090,-0.090,-0.089,-0.088,-0.088,-0.087, - &-0.087,-0.086,-0.085,-0.085,-0.084,-0.083,-0.083,-0.082,-0.082, - &-0.081,-0.080,-0.080,-0.079,-0.078,-0.078,-0.077,-0.077,-0.076, - &-0.075,-0.075,-0.074,-0.073,-0.073,-0.072,-0.072,-0.071,-0.070, - &-0.070,-0.069,-0.069,-0.068,-0.067,-0.067,-0.066,-0.065,-0.065, - &-0.064,-0.064,-0.063,-0.062,-0.062,-0.061,-0.061,-0.060,-0.059, - &-0.059,-0.058,-0.058,-0.057,-0.056,-0.056,-0.055,-0.055,-0.054, - &-0.053,-0.053,-0.052,-0.051,-0.051,-0.050,-0.050,-0.049,-0.048, - &-0.048,-0.047,-0.047,-0.046,-0.046,-0.045,-0.044,-0.044,-0.043, - &-0.043,-0.042,-0.041,-0.041,-0.040,-0.040,-0.039,-0.038,-0.038, - &-0.037,-0.037,-0.036,-0.035,-0.035,-0.034,-0.034,-0.033,-0.032, - &-0.032,-0.031,-0.031,-0.030,-0.024,-0.018,-0.012,-0.007,-0.001, - & 0.005, 0.010, 0.016, 0.021, 0.027, 0.032, 0.037, 0.043, 0.048, - & 0.053, 0.058, 0.064, 0.069, 0.074, 0.079, 0.084, 0.089, 0.094, - & 0.099, 0.104, 0.109, 0.113, 0.118, 0.123, 0.128, 0.132, 0.137, - & 0.142, 0.146, 0.151, 0.156, 0.160, 0.165, 0.169, 0.174, 0.178, - & 0.183, 0.187, 0.191, 0.196, 0.200, 0.205, 0.209, 0.213, 0.217, - & 0.222, 0.226, 0.230, 0.234, 0.238, 0.242, 0.247, 0.251, 0.255, - & 0.259, 0.263, 0.267, 0.271, 0.275, 0.279, 0.283, 0.287, 0.291, - & 0.295, 0.298, 0.302, 0.306, 0.310, 0.314, 0.318, 0.321, 0.325, - & 0.329, 0.333, 0.337, 0.340, 0.344, 0.348, 0.351, 0.355, 0.359, - & 0.362, 0.366, 0.370, 0.373, 0.377, 0.380, 0.384, 0.387, 0.391, - & 0.394, 0.398, 0.401, 0.405, 0.408, 0.412, 0.415, 0.419, 0.422, - & 0.426, 0.429, 0.433, 0.436, 0.439, 0.443, 0.446, 0.449, 0.453, - & 0.456, 0.459, 0.463, 0.466, 0.469, 0.473, 0.476, 0.479, 0.482, - & 0.486, 0.489, 0.492, 0.495, 0.499, 0.502, 0.505, 0.508, 0.511, - & 0.514, 0.518, 0.521, 0.524, 0.527, 0.530, 0.533, 0.536, 0.540, - & 0.543, 0.546, 0.549, 0.552, 0.555, 0.558, 0.561, 0.564, 0.567, - & 0.570, 0.573, 0.576, 0.579, 0.582, 0.585, 0.588, 0.591, 0.594, - & 0.597, 0.600, 0.603 - & /) -! -! *** MGSO4 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC21M_323 = (/ - &-0.181,-0.389,-0.491,-0.562,-0.617,-0.661,-0.699,-0.732,-0.760, - &-0.786,-0.809,-0.829,-0.849,-0.866,-0.882,-0.897,-0.911,-0.924, - &-0.937,-0.948,-0.959,-0.969,-0.979,-0.988,-0.997,-1.006,-1.014, - &-1.021,-1.028,-1.035,-1.042,-1.048,-1.055,-1.061,-1.066,-1.072, - &-1.077,-1.082,-1.087,-1.092,-1.096,-1.100,-1.105,-1.109,-1.113, - &-1.117,-1.120,-1.124,-1.128,-1.131,-1.134,-1.137,-1.141,-1.144, - &-1.146,-1.149,-1.152,-1.155,-1.157,-1.160,-1.162,-1.165,-1.167, - &-1.169,-1.172,-1.174,-1.176,-1.178,-1.180,-1.182,-1.184,-1.186, - &-1.187,-1.189,-1.191,-1.192,-1.194,-1.196,-1.197,-1.199,-1.200, - &-1.202,-1.203,-1.204,-1.206,-1.207,-1.208,-1.209,-1.210,-1.211, - &-1.213,-1.214,-1.215,-1.216,-1.217,-1.218,-1.218,-1.219,-1.220, - &-1.221,-1.222,-1.223,-1.223,-1.224,-1.225,-1.225,-1.226,-1.227, - &-1.227,-1.228,-1.229,-1.229,-1.230,-1.230,-1.231,-1.231,-1.232, - &-1.232,-1.233,-1.233,-1.233,-1.234,-1.234,-1.235,-1.235,-1.235, - &-1.236,-1.236,-1.236,-1.236,-1.237,-1.237,-1.237,-1.237,-1.238, - &-1.238,-1.238,-1.238,-1.238,-1.239,-1.239,-1.239,-1.239,-1.239, - &-1.239,-1.239,-1.239,-1.239,-1.239,-1.240,-1.240,-1.240,-1.240, - &-1.240,-1.240,-1.240,-1.240,-1.240,-1.240,-1.240,-1.240,-1.240, - &-1.239,-1.239,-1.239,-1.239,-1.239,-1.239,-1.239,-1.239,-1.239, - &-1.239,-1.239,-1.238,-1.238,-1.238,-1.238,-1.238,-1.238,-1.238, - &-1.237,-1.237,-1.237,-1.237,-1.237,-1.237,-1.236,-1.236,-1.236, - &-1.236,-1.235,-1.235,-1.235,-1.235,-1.235,-1.234,-1.234,-1.234, - &-1.233,-1.233,-1.233,-1.233,-1.232,-1.232,-1.232,-1.232,-1.231, - &-1.231,-1.231,-1.230,-1.230,-1.230,-1.229,-1.229,-1.229,-1.228, - &-1.228,-1.228,-1.227,-1.227,-1.227,-1.226,-1.226,-1.226,-1.225, - &-1.225,-1.225,-1.224,-1.224,-1.223,-1.223,-1.223,-1.222,-1.222, - &-1.222,-1.221,-1.221,-1.220,-1.220,-1.220,-1.219,-1.219,-1.218, - &-1.218,-1.217,-1.217,-1.217,-1.216,-1.216,-1.215,-1.215,-1.214, - &-1.214,-1.214,-1.213,-1.213,-1.212,-1.212,-1.211,-1.211,-1.210, - &-1.210,-1.210,-1.209,-1.209,-1.208,-1.208,-1.207,-1.207,-1.206, - &-1.206,-1.205,-1.205,-1.204,-1.204,-1.203,-1.203,-1.202,-1.202, - &-1.201,-1.201,-1.200,-1.200,-1.199,-1.199,-1.198,-1.198,-1.197, - &-1.197,-1.196,-1.196,-1.195,-1.195,-1.194,-1.194,-1.193,-1.193, - &-1.192,-1.192,-1.191,-1.191,-1.190,-1.190,-1.189,-1.188,-1.188, - &-1.187,-1.187,-1.186,-1.186,-1.185,-1.185,-1.184,-1.184,-1.183, - &-1.182,-1.182,-1.181,-1.181,-1.180,-1.180,-1.179,-1.179,-1.178, - &-1.177,-1.177,-1.176,-1.176,-1.175,-1.175,-1.174,-1.174,-1.173, - &-1.172,-1.172,-1.171,-1.171,-1.170,-1.169,-1.169,-1.168,-1.168, - &-1.167,-1.167,-1.166,-1.165,-1.165,-1.164,-1.164,-1.163,-1.163, - &-1.162,-1.161,-1.161,-1.160,-1.160,-1.159,-1.158,-1.158,-1.157, - &-1.157,-1.156,-1.155,-1.155,-1.154,-1.154,-1.153,-1.152,-1.152, - &-1.151,-1.151,-1.150,-1.149,-1.149,-1.148,-1.148,-1.147,-1.146, - &-1.146,-1.145,-1.144,-1.144,-1.143,-1.143,-1.142,-1.141,-1.141, - &-1.140,-1.140,-1.139,-1.138,-1.138,-1.137,-1.136,-1.136,-1.135, - &-1.135,-1.134,-1.133,-1.133,-1.126,-1.120,-1.113,-1.107,-1.100, - &-1.094,-1.087,-1.080,-1.074,-1.067,-1.060,-1.054,-1.047,-1.040, - &-1.033,-1.027,-1.020,-1.013,-1.006,-0.999,-0.992,-0.985,-0.978, - &-0.971,-0.965,-0.958,-0.951,-0.944,-0.937,-0.930,-0.923,-0.916, - &-0.909,-0.902,-0.895,-0.888,-0.881,-0.874,-0.867,-0.860,-0.853, - &-0.846,-0.839,-0.832,-0.825,-0.818,-0.811,-0.804,-0.797,-0.790, - &-0.783,-0.776,-0.769,-0.762,-0.755,-0.748,-0.741,-0.734,-0.727, - &-0.720,-0.713,-0.706,-0.699,-0.692,-0.685,-0.678,-0.671,-0.664, - &-0.657,-0.650,-0.644,-0.637,-0.630,-0.623,-0.616,-0.609,-0.602, - &-0.595,-0.588,-0.581,-0.574,-0.567,-0.560,-0.554,-0.547,-0.540, - &-0.533,-0.526,-0.519,-0.512,-0.505,-0.498,-0.492,-0.485,-0.478, - &-0.471,-0.464,-0.457,-0.450,-0.444,-0.437,-0.430,-0.423,-0.416, - &-0.409,-0.403,-0.396,-0.389,-0.382,-0.375,-0.369,-0.362,-0.355, - &-0.348,-0.341,-0.335,-0.328,-0.321,-0.314,-0.308,-0.301,-0.294, - &-0.287,-0.280,-0.274,-0.267,-0.260,-0.254,-0.247,-0.240,-0.233, - &-0.227,-0.220,-0.213,-0.206,-0.200,-0.193,-0.186,-0.180,-0.173, - &-0.166,-0.160,-0.153,-0.146,-0.140,-0.133,-0.126,-0.119,-0.113, - &-0.106,-0.100,-0.093,-0.086,-0.080,-0.073,-0.066,-0.060,-0.053, - &-0.046,-0.040,-0.033 - & /) -! -! *** MGNO32 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC22M_323 = (/ - &-0.088,-0.185,-0.228,-0.257,-0.278,-0.294,-0.306,-0.317,-0.325, - &-0.332,-0.337,-0.342,-0.346,-0.349,-0.351,-0.353,-0.355,-0.356, - &-0.357,-0.357,-0.357,-0.357,-0.356,-0.356,-0.355,-0.354,-0.353, - &-0.352,-0.350,-0.349,-0.347,-0.345,-0.343,-0.341,-0.339,-0.337, - &-0.335,-0.333,-0.330,-0.328,-0.326,-0.323,-0.321,-0.318,-0.316, - &-0.313,-0.310,-0.308,-0.305,-0.302,-0.300,-0.297,-0.294,-0.291, - &-0.288,-0.286,-0.283,-0.280,-0.277,-0.274,-0.271,-0.268,-0.266, - &-0.263,-0.260,-0.257,-0.254,-0.251,-0.248,-0.245,-0.242,-0.239, - &-0.235,-0.232,-0.229,-0.226,-0.223,-0.220,-0.216,-0.213,-0.210, - &-0.207,-0.203,-0.200,-0.197,-0.193,-0.190,-0.186,-0.183,-0.180, - &-0.176,-0.173,-0.169,-0.165,-0.162,-0.158,-0.155,-0.151,-0.147, - &-0.143,-0.140,-0.136,-0.132,-0.128,-0.125,-0.121,-0.117,-0.113, - &-0.109,-0.105,-0.101,-0.098,-0.094,-0.090,-0.086,-0.082,-0.078, - &-0.074,-0.070,-0.066,-0.062,-0.058,-0.054,-0.050,-0.046,-0.042, - &-0.038,-0.034,-0.030,-0.026,-0.022,-0.018,-0.014,-0.010,-0.006, - &-0.002, 0.002, 0.006, 0.010, 0.014, 0.018, 0.022, 0.026, 0.030, - & 0.034, 0.038, 0.042, 0.046, 0.050, 0.054, 0.058, 0.062, 0.066, - & 0.070, 0.074, 0.078, 0.082, 0.086, 0.090, 0.094, 0.098, 0.102, - & 0.106, 0.110, 0.114, 0.118, 0.122, 0.126, 0.130, 0.134, 0.137, - & 0.141, 0.145, 0.149, 0.153, 0.157, 0.161, 0.165, 0.169, 0.173, - & 0.177, 0.180, 0.184, 0.188, 0.192, 0.196, 0.200, 0.204, 0.207, - & 0.211, 0.215, 0.219, 0.223, 0.227, 0.231, 0.234, 0.238, 0.242, - & 0.246, 0.250, 0.253, 0.257, 0.261, 0.265, 0.269, 0.272, 0.276, - & 0.280, 0.284, 0.288, 0.291, 0.295, 0.299, 0.303, 0.306, 0.310, - & 0.314, 0.318, 0.321, 0.325, 0.329, 0.332, 0.336, 0.340, 0.343, - & 0.347, 0.351, 0.355, 0.358, 0.362, 0.366, 0.369, 0.373, 0.377, - & 0.380, 0.384, 0.388, 0.391, 0.395, 0.398, 0.402, 0.406, 0.409, - & 0.413, 0.417, 0.420, 0.424, 0.427, 0.431, 0.435, 0.438, 0.442, - & 0.445, 0.449, 0.452, 0.456, 0.459, 0.463, 0.467, 0.470, 0.474, - & 0.477, 0.481, 0.484, 0.488, 0.491, 0.495, 0.498, 0.502, 0.505, - & 0.509, 0.512, 0.516, 0.519, 0.523, 0.526, 0.530, 0.533, 0.537, - & 0.540, 0.543, 0.547, 0.550, 0.554, 0.557, 0.561, 0.564, 0.567, - & 0.571, 0.574, 0.578, 0.581, 0.584, 0.588, 0.591, 0.595, 0.598, - & 0.601, 0.605, 0.608, 0.611, 0.615, 0.618, 0.621, 0.625, 0.628, - & 0.631, 0.635, 0.638, 0.641, 0.645, 0.648, 0.651, 0.655, 0.658, - & 0.661, 0.665, 0.668, 0.671, 0.674, 0.678, 0.681, 0.684, 0.687, - & 0.691, 0.694, 0.697, 0.700, 0.704, 0.707, 0.710, 0.713, 0.717, - & 0.720, 0.723, 0.726, 0.729, 0.733, 0.736, 0.739, 0.742, 0.745, - & 0.749, 0.752, 0.755, 0.758, 0.761, 0.764, 0.768, 0.771, 0.774, - & 0.777, 0.780, 0.783, 0.786, 0.790, 0.793, 0.796, 0.799, 0.802, - & 0.805, 0.808, 0.811, 0.814, 0.818, 0.821, 0.824, 0.827, 0.830, - & 0.833, 0.836, 0.839, 0.842, 0.845, 0.848, 0.851, 0.854, 0.857, - & 0.860, 0.864, 0.867, 0.870, 0.873, 0.876, 0.879, 0.882, 0.885, - & 0.888, 0.891, 0.894, 0.897, 0.900, 0.903, 0.906, 0.909, 0.912, - & 0.915, 0.918, 0.921, 0.924, 0.955, 0.984, 1.013, 1.041, 1.070, - & 1.097, 1.125, 1.152, 1.179, 1.205, 1.231, 1.257, 1.283, 1.308, - & 1.334, 1.359, 1.383, 1.408, 1.432, 1.456, 1.479, 1.503, 1.526, - & 1.549, 1.572, 1.594, 1.617, 1.639, 1.661, 1.683, 1.704, 1.726, - & 1.747, 1.768, 1.789, 1.810, 1.830, 1.851, 1.871, 1.891, 1.911, - & 1.930, 1.950, 1.969, 1.989, 2.008, 2.027, 2.046, 2.064, 2.083, - & 2.101, 2.120, 2.138, 2.156, 2.174, 2.192, 2.209, 2.227, 2.244, - & 2.262, 2.279, 2.296, 2.313, 2.330, 2.347, 2.363, 2.380, 2.396, - & 2.413, 2.429, 2.445, 2.461, 2.477, 2.493, 2.509, 2.525, 2.540, - & 2.556, 2.571, 2.587, 2.602, 2.617, 2.632, 2.647, 2.662, 2.677, - & 2.692, 2.707, 2.721, 2.736, 2.750, 2.765, 2.779, 2.793, 2.807, - & 2.822, 2.836, 2.850, 2.863, 2.877, 2.891, 2.905, 2.918, 2.932, - & 2.946, 2.959, 2.972, 2.986, 2.999, 3.012, 3.025, 3.039, 3.052, - & 3.065, 3.078, 3.090, 3.103, 3.116, 3.129, 3.141, 3.154, 3.167, - & 3.179, 3.191, 3.204, 3.216, 3.229, 3.241, 3.253, 3.265, 3.277, - & 3.289, 3.301, 3.313, 3.325, 3.337, 3.349, 3.361, 3.372, 3.384, - & 3.396, 3.407, 3.419, 3.431, 3.442, 3.453, 3.465, 3.476, 3.488, - & 3.499, 3.510, 3.521, 3.532, 3.544, 3.555, 3.566, 3.577, 3.588, - & 3.599, 3.610, 3.621 - & /) -! -! *** MGCL2 -! - Real(kind=fp), Parameter, Dimension(561) :: BNC23M_323 = (/ - &-0.088,-0.182,-0.225,-0.252,-0.271,-0.286,-0.297,-0.306,-0.313, - &-0.319,-0.323,-0.327,-0.329,-0.331,-0.332,-0.333,-0.333,-0.333, - &-0.333,-0.332,-0.331,-0.329,-0.328,-0.326,-0.324,-0.322,-0.319, - &-0.317,-0.314,-0.312,-0.309,-0.306,-0.303,-0.300,-0.296,-0.293, - &-0.290,-0.286,-0.283,-0.279,-0.276,-0.272,-0.268,-0.265,-0.261, - &-0.257,-0.253,-0.250,-0.246,-0.242,-0.238,-0.234,-0.230,-0.226, - &-0.223,-0.219,-0.215,-0.211,-0.207,-0.203,-0.199,-0.195,-0.191, - &-0.187,-0.183,-0.179,-0.174,-0.170,-0.166,-0.162,-0.158,-0.154, - &-0.150,-0.145,-0.141,-0.137,-0.133,-0.128,-0.124,-0.120,-0.115, - &-0.111,-0.106,-0.102,-0.097,-0.093,-0.088,-0.084,-0.079,-0.074, - &-0.070,-0.065,-0.060,-0.056,-0.051,-0.046,-0.041,-0.036,-0.031, - &-0.027,-0.022,-0.017,-0.012,-0.007,-0.002, 0.003, 0.008, 0.013, - & 0.019, 0.024, 0.029, 0.034, 0.039, 0.044, 0.049, 0.055, 0.060, - & 0.065, 0.070, 0.075, 0.081, 0.086, 0.091, 0.096, 0.101, 0.107, - & 0.112, 0.117, 0.122, 0.128, 0.133, 0.138, 0.143, 0.149, 0.154, - & 0.159, 0.164, 0.170, 0.175, 0.180, 0.185, 0.190, 0.196, 0.201, - & 0.206, 0.211, 0.216, 0.222, 0.227, 0.232, 0.237, 0.242, 0.248, - & 0.253, 0.258, 0.263, 0.268, 0.273, 0.279, 0.284, 0.289, 0.294, - & 0.299, 0.304, 0.309, 0.314, 0.320, 0.325, 0.330, 0.335, 0.340, - & 0.345, 0.350, 0.355, 0.360, 0.365, 0.370, 0.375, 0.380, 0.386, - & 0.391, 0.396, 0.401, 0.406, 0.411, 0.416, 0.421, 0.426, 0.431, - & 0.436, 0.441, 0.446, 0.450, 0.455, 0.460, 0.465, 0.470, 0.475, - & 0.480, 0.485, 0.490, 0.495, 0.500, 0.505, 0.509, 0.514, 0.519, - & 0.524, 0.529, 0.534, 0.539, 0.543, 0.548, 0.553, 0.558, 0.563, - & 0.568, 0.572, 0.577, 0.582, 0.587, 0.592, 0.596, 0.601, 0.606, - & 0.611, 0.615, 0.620, 0.625, 0.629, 0.634, 0.639, 0.644, 0.648, - & 0.653, 0.658, 0.662, 0.667, 0.672, 0.676, 0.681, 0.686, 0.690, - & 0.695, 0.700, 0.704, 0.709, 0.713, 0.718, 0.723, 0.727, 0.732, - & 0.736, 0.741, 0.745, 0.750, 0.754, 0.759, 0.764, 0.768, 0.773, - & 0.777, 0.782, 0.786, 0.791, 0.795, 0.800, 0.804, 0.809, 0.813, - & 0.817, 0.822, 0.826, 0.831, 0.835, 0.840, 0.844, 0.848, 0.853, - & 0.857, 0.862, 0.866, 0.870, 0.875, 0.879, 0.884, 0.888, 0.892, - & 0.897, 0.901, 0.905, 0.910, 0.914, 0.918, 0.923, 0.927, 0.931, - & 0.935, 0.940, 0.944, 0.948, 0.953, 0.957, 0.961, 0.965, 0.970, - & 0.974, 0.978, 0.982, 0.986, 0.991, 0.995, 0.999, 1.003, 1.007, - & 1.012, 1.016, 1.020, 1.024, 1.028, 1.032, 1.037, 1.041, 1.045, - & 1.049, 1.053, 1.057, 1.061, 1.065, 1.070, 1.074, 1.078, 1.082, - & 1.086, 1.090, 1.094, 1.098, 1.102, 1.106, 1.110, 1.114, 1.118, - & 1.122, 1.126, 1.130, 1.134, 1.138, 1.142, 1.146, 1.150, 1.154, - & 1.158, 1.162, 1.166, 1.170, 1.174, 1.178, 1.182, 1.186, 1.190, - & 1.194, 1.198, 1.202, 1.206, 1.210, 1.214, 1.217, 1.221, 1.225, - & 1.229, 1.233, 1.237, 1.241, 1.245, 1.248, 1.252, 1.256, 1.260, - & 1.264, 1.268, 1.271, 1.275, 1.279, 1.283, 1.287, 1.290, 1.294, - & 1.298, 1.302, 1.306, 1.309, 1.313, 1.317, 1.321, 1.324, 1.328, - & 1.332, 1.336, 1.339, 1.343, 1.383, 1.420, 1.456, 1.491, 1.527, - & 1.561, 1.596, 1.630, 1.663, 1.696, 1.729, 1.761, 1.793, 1.825, - & 1.856, 1.887, 1.918, 1.948, 1.978, 2.008, 2.037, 2.066, 2.095, - & 2.123, 2.152, 2.180, 2.207, 2.235, 2.262, 2.289, 2.315, 2.342, - & 2.368, 2.394, 2.419, 2.445, 2.470, 2.495, 2.520, 2.544, 2.569, - & 2.593, 2.617, 2.641, 2.664, 2.688, 2.711, 2.734, 2.757, 2.780, - & 2.802, 2.824, 2.847, 2.869, 2.890, 2.912, 2.934, 2.955, 2.976, - & 2.997, 3.018, 3.039, 3.060, 3.080, 3.101, 3.121, 3.141, 3.161, - & 3.181, 3.201, 3.220, 3.240, 3.259, 3.279, 3.298, 3.317, 3.336, - & 3.354, 3.373, 3.392, 3.410, 3.428, 3.447, 3.465, 3.483, 3.501, - & 3.519, 3.536, 3.554, 3.572, 3.589, 3.606, 3.624, 3.641, 3.658, - & 3.675, 3.692, 3.709, 3.725, 3.742, 3.759, 3.775, 3.791, 3.808, - & 3.824, 3.840, 3.856, 3.872, 3.888, 3.904, 3.920, 3.935, 3.951, - & 3.967, 3.982, 3.997, 4.013, 4.028, 4.043, 4.058, 4.074, 4.089, - & 4.103, 4.118, 4.133, 4.148, 4.163, 4.177, 4.192, 4.206, 4.221, - & 4.235, 4.249, 4.264, 4.278, 4.292, 4.306, 4.320, 4.334, 4.348, - & 4.362, 4.376, 4.390, 4.403, 4.417, 4.431, 4.444, 4.458, 4.471, - & 4.484, 4.498, 4.511, 4.524, 4.538, 4.551, 4.564, 4.577, 4.590, - & 4.603, 4.616, 4.629 - & /) - - CONTAINS -!EOC -! -! NOTES: -! (1 ) Removed references to reverse problem code since GEOS-Chem -! will only need forward problem solution (hotp 8/1/07) -! (2 ) Explicitly declared some variables and made some common blocks -! THREADPRIVATE (hotp 8/2/07) -! (3 ) Removed DATA structure in CALCACT4 for parallelization -! (hotp 8/23/07) -! (4 ) Removed DELT and A2 print statement (hotp 8/30/07) -! (5 ) Removed SETPARM routine because it's not called (hotp 8/30/07) -! (6 ) Changed NADJ from 0 to 1 to force mass balance (hotp 11/7/07) -! (7 ) Stop code if ISRP4F is called due to mass balance -! issues (hotp 11/7/07) -! (8 ) If you wish to calculated act coeff online, check that DATA -! statements in KMFUL are not problematic for parallelization -! (9 ) Changed 1d-10 in ISRP3F to TINY for mass balance (hotp -! 11/14/07) -! (10 ) Added fix for negative H+ in CALCHS4 (hotp 8/25/09) -! search for 'PHFIX' to see where the fix was applied -! fix must be activated to use -! ====================================================================== -! -! *** ISORROPIA CODE II -! *** SUBROUTINE ISORROPIA -! *** THIS SUBROUTINE IS THE MAIN ROUTINE FOR THE ISORROPIA -! THERMODYNAMIC EQUILIBRIUM AEROSOL MODEL (VERSION 1.1 and above) -! -! ======================== ARGUMENTS / USAGE =========================== -! -! INPUT: -! 1. [WI] -! Real(kind=fp) :: array of length [8]. -! Concentrations, expressed in moles/m3. Depending on the type of -! problem solved (specified in CNTRL(1)), WI contains either -! GAS+AEROSOL or AEROSOL only concentratios. -! WI(1) - sodium -! WI(2) - sulfate -! WI(3) - ammonium -! WI(4) - nitrate -! WI(5) - chloride -! WI(6) - calcium -! WI(7) - potassium -! WI(8) - magnesium -! -! 2. [RHI] -! Real(kind=fp) :: variable. -! Ambient relative humidity expressed on a (0,1) scale. -! -! 3. [TEMPI] -! Real(kind=fp) :: variable. -! Ambient temperature expressed in Kelvins. -! -! 4. [CNTRL] -! Real(kind=fp) :: array of length [2]. -! Parameters that control the type of problem solved. -! -! CNTRL(1): Defines the type of problem solved. -! 0 - Forward problem is solved. In this case, array WI contains -! GAS and AEROSOL concentrations together. -! 1 - Reverse problem is solved. In this case, array WI contains -! AEROSOL concentrations only. -! -! CNTRL(2): Defines the state of the aerosol -! 0 - The aerosol can have both solid+liquid phases (deliquescent) -! 1 - The aerosol is in only liquid state (metastable aerosol) -! -! OUTPUT: -! 1. [WT] -! Real(kind=fp) :: array of length [8]. -! Total concentrations (GAS+AEROSOL) of species, expressed in moles/m3. -! If the foreward probelm is solved (CNTRL(1)=0), array WT is -! identical to array WI. -! WT(1) - total sodium -! WT(2) - total sulfate -! WT(3) - total ammonium -! WT(4) - total nitrate -! WT(5) - total chloride -! WT(6) - total calcium -! WT(7) - total potassium -! WT(8) - total magnesium -! -! 2. [GAS] -! Real(kind=fp) :: array of length [03]. -! Gaseous species concentrations, expressed in moles/m3. -! GAS(1) - NH3 -! GAS(2) - HNO3 -! GAS(3) - HCl -! -! 3. [AERLIQ] -! Real(kind=fp) :: array of length [15]. -! Liquid aerosol species concentrations, expressed in moles/m3. -! AERLIQ(01) - H+(aq) -! AERLIQ(02) - Na+(aq) -! AERLIQ(03) - NH4+(aq) -! AERLIQ(04) - Cl-(aq) -! AERLIQ(05) - SO4--(aq) -! AERLIQ(06) - HSO4-(aq) -! AERLIQ(07) - NO3-(aq) -! AERLIQ(08) - H2O -! AERLIQ(09) - NH3(aq) (undissociated) -! AERLIQ(10) - HNCl(aq) (undissociated) -! AERLIQ(11) - HNO3(aq) (undissociated) -! AERLIQ(12) - OH-(aq) -! AERLIQ(13) - Ca2+(aq) -! AERLIQ(14) - K+(aq) -! AERLIQ(15) - Mg2+(aq) -! -! 4. [AERSLD] -! Real(kind=fp) :: array of length [19]. -! Solid aerosol species concentrations, expressed in moles/m3. -! AERSLD(01) - NaNO3(s) -! AERSLD(02) - NH4NO3(s) -! AERSLD(03) - NaCl(s) -! AERSLD(04) - NH4Cl(s) -! AERSLD(05) - Na2SO4(s) -! AERSLD(06) - (NH4)2SO4(s) -! AERSLD(07) - NaHSO4(s) -! AERSLD(08) - NH4HSO4(s) -! AERSLD(09) - (NH4)4H(SO4)2(s) -! AERSLD(10) - CaSO4(s) -! AERSLD(11) - Ca(NO3)2(s) -! AERSLD(12) - CaCl2(s) -! AERSLD(13) - K2SO4(s) -! AERSLD(14) - KHSO4(s) -! AERSLD(15) - KNO3(s) -! AERSLD(16) - KCl(s) -! AERSLD(17) - MgSO4(s) -! AERSLD(18) - Mg(NO3)2(s) -! AERSLD(19) - MgCl2(s) -! -! 5. [SCASI] -! CHARACTER*15 variable. -! Returns the subcase which the input corresponds to. -! -! 6. [OTHER] -! Real(kind=fp) :: array of length [9]. -! Returns solution information. -! -! OTHER(1): Shows if aerosol water exists. -! 0 - Aerosol is WET -! 1 - Aerosol is DRY -! -! OTHER(2): Aerosol Sulfate ratio, defined as (in moles/m3) : -! (total ammonia + total Na) / (total sulfate) -! -! OTHER(3): Sulfate ratio based on aerosol properties that defines -! a sulfate poor system: -! (aerosol ammonia + aerosol Na) / (aerosol sulfate) -! -! OTHER(4): Aerosol sodium ratio, defined as (in moles/m3) : -! (total Na) / (total sulfate) -! -! OTHER(5): Ionic strength of the aqueous aerosol (if it exists). -! -! OTHER(6): Total number of calls to the activity coefficient -! calculation subroutine. -! -! OTHER(7): Sulfate ratio with crustal species, defined as (in moles/m3) : -! (total ammonia + total crustal species + total Na) / (total sulfate) -! -! OTHER(8): Crustal species + sodium ratio, defined as (in moles/m3) : -! (total crustal species + total Na) / (total sulfate) -! -! OTHER(9): Crustal species ratio, defined as (in moles/m3) : -! (total crustal species) / (total sulfate) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE ISORROPIA (WI_IN, RHI_IN, TEMPI_IN, CNTRL, - & WT, GAS, AERLIQ, AERSLD, SCASI, OTHER) - ! Input parameters - Real(kind=fp) :: WI_IN(NCOMP) - Real(kind=fp) :: RHI_IN - Real(kind=fp) :: TEMPI_IN - Real(kind=fp) :: Cntrl(NCtrl) ! Tried integer, no luck? - - ! Output - Real(kind=fp) :: WT(NCOMP) - Real(kind=fp) :: Gas(NGasAq) - Real(kind=fp) :: AerLiq(NIons+NGasAq+2) - Real(kind=fp) :: AerSld(NSlds) - CHARACTER(Len=15) :: SCASI - Real(kind=fp) :: Other(NOther) - - ! Intermediate variables - Integer :: I - Real(kind=fp) :: WI(NComp), RHI, TempI - - ! SDE 2017-01-16: Initialize - Call Init_IsoData() - - ! Copy from input variables to the module variables - WI(:) = WI_In(:) - RHI = RHI_In - TempI = TempI_In - -! -! *** PROBLEM TYPE (0=FOREWARD, 1=REVERSE) ****************************** -! - IPROB = NINT(CNTRL(1)) -! -! *** AEROSOL STATE (0=SOLID+LIQUID, 1=METASTABLE) ********************** -! - METSTBL = NINT(CNTRL(2)) -! -! *** SOLVE FOREWARD PROBLEM ******************************************** -! -50 IF (IPROB.EQ.0) THEN - IF (WI(1)+WI(2)+WI(3)+WI(4)+WI(5)+WI(6)+WI(7)+WI(8) .LE. TINY) - & THEN !Everything=0 - CALL INIT1 (WI, RHI, TEMPI) - ELSE IF (WI(1)+WI(4)+WI(5)+WI(6)+WI(7)+WI(8) .LE. TINY) THEN !Ca,K,Mg,Na,Cl,NO3=0 - CALL ISRP1F (WI, RHI, TEMPI) - ELSE IF (WI(1)+WI(5)+WI(6)+WI(7)+WI(8) .LE. TINY) THEN !Ca,K,Mg,Na,Cl=0 - CALL ISRP2F (WI, RHI, TEMPI) - ELSE IF (WI(6)+WI(7)+WI(8) .LE. TINY) THEN !Ca,K,Mg=0 - CALL ISRP3F (WI, RHI, TEMPI) - ELSE - CALL ISRP4F (WI, RHI, TEMPI) - ENDIF -! -! *** SOLVE REVERSE PROBLEM ********************************************* -! - ELSE - ! Remove this portion of the code, GEOS-Chem will never need - ! reverse problem solution (hotp) - print*, 'ERROR: DO NOT SOLVE ISORROPIAII REVERSE PROBLEM' - STOP - - !IF (WI(1)+WI(2)+WI(3)+WI(4)+WI(5)+WI(6)+WI(7)+WI(8) .LE. TINY) - ! & THEN !Everything=0 - ! CALL INIT1 (WI, RHI, TEMPI) - !ELSE IF (WI(1)+WI(4)+WI(5)+WI(6)+WI(7)+WI(8) .LE. TINY) THEN !Ca,K,Mg,Na,Cl,NO3=0 - ! CALL ISRP1R (WI, RHI, TEMPI) - !ELSE IF (WI(1)+WI(5)+WI(6)+WI(7)+WI(8) .LE. TINY) THEN !Ca,K,Mg,Na,Cl=0 - ! CALL ISRP2R (WI, RHI, TEMPI) - !ELSE IF (WI(6)+WI(7)+WI(8) .LE. TINY) THEN !Ca,K,Mg=0 - ! CALL ISRP3R (WI, RHI, TEMPI) - !ELSE - ! CALL ISRP4R (WI, RHI, TEMPI) - !ENDIF - ENDIF -! -! *** ADJUST MASS BALANCE *********************************************** -! - IF (NADJ.EQ.1) CALL ADJUST (WI) -!cC -!cC *** IF METASTABLE AND NO WATER - RESOLVE AS NORMAL ******************** -!cC -!c IF (WATER.LE.TINY .AND. METSTBL.EQ.1) THEN -!c METSTBL = 0 -!c GOTO 50 -!c ENDIF - -! -! *** SAVE RESULTS TO ARRAYS (units = mole/m3) **************************** -! - GAS(1) = GNH3 ! Gaseous aerosol species - GAS(2) = GHNO3 - GAS(3) = GHCL -! - DO 10 I=1,7 ! Liquid aerosol species - AERLIQ(I) = MOLAL(I) - 10 CONTINUE - DO 20 I=1,NGASAQ - AERLIQ(7+1+I) = GASAQ(I) - 20 CONTINUE - AERLIQ(7+1) = WATER*1.0D3/18.0D0 - AERLIQ(7+NGASAQ+2) = COH -! - DO 250 I=8,10 ! Liquid aerosol species - AERLIQ(I+5) = MOLAL(I) - 250 CONTINUE -! - AERSLD(1) = CNANO3 ! Solid aerosol species - AERSLD(2) = CNH4NO3 - AERSLD(3) = CNACL - AERSLD(4) = CNH4CL - AERSLD(5) = CNA2SO4 - AERSLD(6) = CNH42S4 - AERSLD(7) = CNAHSO4 - AERSLD(8) = CNH4HS4 - AERSLD(9) = CLC - AERSLD(10) = CCASO4 - AERSLD(11) = CCANO32 - AERSLD(12) = CCACL2 - AERSLD(13) = CK2SO4 - AERSLD(14) = CKHSO4 - AERSLD(15) = CKNO3 - AERSLD(16) = CKCL - AERSLD(17) = CMGSO4 - AERSLD(18) = CMGNO32 - AERSLD(19) = CMGCL2 -! - IF(WATER.LE.TINY) THEN ! Dry flag - OTHER(1) = 1.d0 - ELSE - OTHER(1) = 0.d0 - ENDIF -! - OTHER(2) = SULRAT ! Other stuff - OTHER(3) = SULRATW - OTHER(4) = SODRAT - OTHER(5) = IONIC_MAIN - OTHER(6) = ICLACT - OTHER(7) = SO4RAT - OTHER(8) = CRNARAT - OTHER(9) = CRRAT -! - SCASI = SCASE -! - WT(1) = WI(1) ! Total gas+aerosol phase - WT(2) = WI(2) - WT(3) = WI(3) - WT(4) = WI(4) - WT(5) = WI(5) - WT(6) = WI(6) - WT(7) = WI(7) - WT(8) = WI(8) - - - IF (IPROB.GT.0 .AND. WATER.GT.TINY) THEN - WT(3) = WT(3) + GNH3 - WT(4) = WT(4) + GHNO3 - WT(5) = WT(5) + GHCL - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE ISORROPIA ****************************************** -! - END SUBROUTINE ISORROPIA - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE SETPARM -! *** THIS SUBROUTINE REDEFINES THE SOLUTION PARAMETERS OF ISORROPIA -! -! ======================== ARGUMENTS / USAGE =========================== -! -! *** NOTE: IF NEGATIVE VALUES ARE GIVEN FOR A PARAMETER, IT IS -! IGNORED AND THE CURRENT VALUE IS USED INSTEAD. -! -! INPUT: -! 1. [WFTYPI] -! INTEGER variable. -! Defines the type of weighting algorithm for the solution in Mutual -! Deliquescence Regions (MDR's): -! 0 - MDR's are assumed dry. This is equivalent to the approach -! used by SEQUILIB. -! 1 - The solution is assumed "half" dry and "half" wet throughout -! the MDR. -! 2 - The solution is a relative-humidity weighted mean of the -! dry and wet solutions (as defined in Nenes et al., 1998) -! -! 2. [IACALCI] -! INTEGER variable. -! Method of activity coefficient calculation: -! 0 - Calculate coefficients during runtime -! 1 - Use precalculated tables -! -! 3. [EPSI] -! DOUBLE PRECITION variable. -! Defines the convergence criterion for all iterative processes -! in ISORROPIA, except those for activity coefficient calculations -! (EPSACTI controls that). -! -! 4. [MAXITI] -! INTEGER variable. -! Defines the maximum number of iterations for all iterative -! processes in ISORROPIA, except for activity coefficient calculations -! (NSWEEPI controls that). -! -! 5. [NSWEEPI] -! INTEGER variable. -! Defines the maximum number of iterations for activity coefficient -! calculations. -! -! 6. [EPSACTI] -! Real(kind=fp) :: variable. -! Defines the convergence criterion for activity coefficient -! calculations. -! -! 7. [NDIV] -! INTEGER variable. -! Defines the number of subdivisions needed for the initial root -! tracking for the bisection method. Usually this parameter should -! not be altered, but is included for completeness. -! -! 8. [NADJ] -! INTEGER variable. -! Forces the solution obtained to satisfy total mass balance -! to machine precision -! 0 - No adjustment done (default) -! 1 - Do adjustment -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - ! hotp removed 8/30/07 - !SUBROUTINE SETPARM (WFTYPI, IACALCI, EPSI, MAXITI, NSWEEPI, - !& EPSACTI, NDIVI, NADJI) - !INTEGER WFTYPI -! -! *** SETUP SOLUTION PARAMETERS ***************************************** -! - !IF (WFTYPI .GE. 0) WFTYP = WFTYPI - !IF (IACALCI.GE. 0) IACALC = IACALCI - !IF (EPSI .GE.ZERO) EPS = EPSI - !IF (MAXITI .GT. 0) MAXIT = MAXITI - !IF (NSWEEPI.GT. 0) NSWEEP = NSWEEPI - !IF (EPSACTI.GE.ZERO) EPSACT = EPSACTI - !IF (NDIVI .GT. 0) NDIV = NDIVI - !IF (NADJI .GE. 0) NADJ = NADJI -! -! *** END OF SUBROUTINE SETPARM ***************************************** -! - !RETURN - !END - -! SDE 2017-01-16: Unused in GC -!! -!!======================================================================= -!! -!! *** ISORROPIA CODE -!! *** SUBROUTINE GETPARM -!! *** THIS SUBROUTINE OBTAINS THE CURRENT VAULES OF THE SOLUTION -!! PARAMETERS OF ISORROPIA -!! -!! ======================== ARGUMENTS / USAGE =========================== -!! -!! *** THE PARAMETERS ARE THOSE OF SUBROUTINE SETPARM -!! -!! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -!! *** GEORGIA INSTITUTE OF TECHNOLOGY -!! *** WRITTEN BY ATHANASIOS NENES -!! *** UPDATED BY CHRISTOS FOUNTOUKIS -!! -!!======================================================================= -!! -! SUBROUTINE GETPARM (WFTYPI, IACALCI, EPSI, MAXITI, NSWEEPI, -! & EPSACTI, NDIVI, NADJI) -! INTEGER WFTYPI -!! -!! *** GET SOLUTION PARAMETERS ******************************************* -!! -! WFTYPI = WFTYP -! IACALCI = IACALC -! EPSI = EPS -! MAXITI = MAXIT -! NSWEEPI = NSWEEP -! EPSACTI = EPSACT -! NDIVI = NDIV -! NADJI = NADJ -!! -!! *** END OF SUBROUTINE GETPARM ***************************************** -!! -! RETURN -! END -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE INIT1 -! *** THIS SUBROUTINE INITIALIZES ALL GLOBAL VARIABLES FOR AMMONIUM -! SULFATE AEROSOL SYSTEMS (SUBROUTINE ISRP1) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE INIT1 (WI, RHI, TEMPI) - - Real(kind=fp) :: WI(NComp), RHI, TempI - - ! Intermediate variables - Integer :: I, IRH - Real(kind=fp), Parameter :: LN10=2.3025851 - Real(kind=fp) :: IC, GII, GIO, XX - - Real(kind=fp) :: T0, T0T, COEF, TCF - !REAL IC,GII,GI0,XX,LN10 - !PARAMETER (LN10=2.3025851) -! -! *** SAVE INPUT VARIABLES IN COMMON BLOCK ****************************** -! - IF (IPROB.EQ.0) THEN ! FORWARD CALCULATION - DO 10 I=1,NCOMP - W(I) = MAX(WI(I), TINY) -10 CONTINUE - ELSE - DO 15 I=1,NCOMP ! REVERSE CALCULATION - WAER(I) = MAX(WI(I), TINY) - W(I) = ZERO -15 CONTINUE - ENDIF - RH = RHI - TEMP = TEMPI -! -! *** CALCULATE EQUILIBRIUM CONSTANTS *********************************** -! - XK1 = 1.015e-2 ! HSO4(aq) <==> H(aq) + SO4(aq) - XK21 = 57.639 ! NH3(g) <==> NH3(aq) - XK22 = 1.805e-5 ! NH3(aq) <==> NH4(aq) + OH(aq) - XK7 = 1.817 ! (NH4)2SO4(s) <==> 2*NH4(aq) + SO4(aq) - XK12 = 1.382e2 ! NH4HSO4(s) <==> NH4(aq) + HSO4(aq) - XK13 = 29.268 ! (NH4)3H(SO4)2(s) <==> 3*NH4(aq) + HSO4(aq) + SO4(aq) - XKW = 1.010e-14 ! H2O <==> H(aq) + OH(aq) -! - IF (INT(TEMP) .NE. 298) THEN ! FOR T != 298K or 298.15K - T0 = 298.15 - T0T = T0/TEMP - COEF= 1.0+LOG(T0T)-T0T - XK1 = XK1 *EXP( 8.85*(T0T-1.0) + 25.140*COEF) - XK21= XK21*EXP( 13.79*(T0T-1.0) - 5.393*COEF) - XK22= XK22*EXP( -1.50*(T0T-1.0) + 26.920*COEF) - XK7 = XK7 *EXP( -2.65*(T0T-1.0) + 38.570*COEF) - XK12= XK12*EXP( -2.87*(T0T-1.0) + 15.830*COEF) - XK13= XK13*EXP( -5.19*(T0T-1.0) + 54.400*COEF) - XKW = XKW *EXP(-22.52*(T0T-1.0) + 26.920*COEF) - ENDIF - XK2 = XK21*XK22 -! -! *** CALCULATE DELIQUESCENCE RELATIVE HUMIDITIES (UNICOMPONENT) ******** -! - DRH2SO4 = 0.0000D0 - DRNH42S4 = 0.7997D0 - DRNH4HS4 = 0.4000D0 - DRLC = 0.6900D0 - IF (INT(TEMP) .NE. 298) THEN - T0 = 298.15d0 - TCF = 1.0/TEMP - 1.0/T0 - DRNH42S4 = DRNH42S4*EXP( 80.*TCF) - DRNH4HS4 = DRNH4HS4*EXP(384.*TCF) - DRLC = DRLC *EXP(186.*TCF) - ENDIF -! -! *** CALCULATE MUTUAL DELIQUESCENCE RELATIVE HUMIDITIES **************** -! - DRMLCAB = 0.3780D0 ! (NH4)3H(SO4)2 & NH4HSO4 - DRMLCAS = 0.6900D0 ! (NH4)3H(SO4)2 & (NH4)2SO4 -!CC IF (INT(TEMP) .NE. 298) THEN ! For the time being. -!CC T0 = 298.15d0 -!CC TCF = 1.0/TEMP - 1.0/T0 -!CC DRMLCAB = DRMLCAB*EXP(507.506*TCF) -!CC DRMLCAS = DRMLCAS*EXP(133.865*TCF) -!CC ENDIF -! -! *** LIQUID PHASE ****************************************************** -! - CHNO3 = ZERO - CHCL = ZERO - CH2SO4 = ZERO - COH = ZERO - WATER = TINY -! - DO 20 I=1,NPAIR - MOLALR(I)=ZERO - GAMA(I) =0.1 - GAMIN(I) =GREAT - GAMOU(I) =GREAT - M0(I) =1d5 - 20 CONTINUE -! - DO 30 I=1,NPAIR - GAMA(I) = 0.1d0 - 30 CONTINUE -! - DO 40 I=1,NIONS - MOLAL(I)=ZERO -40 CONTINUE - COH = ZERO -! - DO 50 I=1,NGASAQ - GASAQ(I)=ZERO -50 CONTINUE -! -! *** SOLID PHASE ******************************************************* -! - CNH42S4= ZERO - CNH4HS4= ZERO - CNACL = ZERO - CNA2SO4= ZERO - CNANO3 = ZERO - CNH4NO3= ZERO - CNH4CL = ZERO - CNAHSO4= ZERO - CLC = ZERO - CCASO4 = ZERO - CCANO32= ZERO - CCACL2 = ZERO - CK2SO4 = ZERO - CKHSO4 = ZERO - CKNO3 = ZERO - CKCL = ZERO - CMGSO4 = ZERO - CMGNO32= ZERO - CMGCL2 = ZERO -! -! *** GAS PHASE ********************************************************* -! - GNH3 = ZERO - GHNO3 = ZERO - GHCL = ZERO -! -! *** CALCULATE ZSR PARAMETERS ****************************************** -! - IRH = MIN (INT(RH*NZSR+0.5),NZSR) ! Position in ZSR arrays - IRH = MAX (IRH, 1) -! -! M0(01) = AWSC(IRH) ! NACl -! IF (M0(01) .LT. 100.0) THEN -! IC = M0(01) -! CALL KMTAB(IC,298.0, GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),GII,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(01) = M0(01)*EXP(LN10*(GI0-GII)) -! ENDIF -!C -! M0(02) = AWSS(IRH) ! (NA)2SO4 -! IF (M0(02) .LT. 100.0) THEN -! IC = 3.0*M0(02) -! CALL KMTAB(IC,298.0, XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,GII,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(02) = M0(02)*EXP(LN10*(GI0-GII)) -! ENDIF -!C -! M0(03) = AWSN(IRH) ! NANO3 -! IF (M0(03) .LT. 100.0) THEN -! IC = M0(03) -! CALL KMTAB(IC,298.0, XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,GII,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(03) = M0(03)*EXP(LN10*(GI0-GII)) -! ENDIF -!C - M0(04) = AWAS(IRH) ! (NH4)2SO4 -!C IF (M0(04) .LT. 100.0) THEN -!C IC = 3.0*M0(04) -! C CALL KMTAB(IC,298.0, XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,GII,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(04) = M0(04)*EXP(LN10*(GI0-GII)) -!C ENDIF -! -! M0(05) = AWAN(IRH) ! NH4NO3 -! IF (M0(05) .LT. 100.0) THEN -! IC = M0(05) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,GII,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(05) = M0(05)*EXP(LN10*(GI0-GII)) -! ENDIF -!C -! M0(06) = AWAC(IRH) ! NH4CL -! IF (M0(06) .LT. 100.0) THEN -! IC = M0(06) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,GII,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(06) = M0(06)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(07) = AWSA(IRH) ! 2H-SO4 -!C IF (M0(07) .LT. 100.0) THEN -!C IC = 3.0*M0(07) -!C CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,GII,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(07) = M0(07)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(08) = AWSA(IRH) ! H-HSO4 -!CC IF (M0(08) .LT. 100.0) THEN ! These are redundant, because M0(8) is not used -!CC IC = M0(08) -!CC CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX) -!CC CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX) -!CCCCC CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,GII,XX,XX,XX,XX) -!CC M0(08) = M0(08)*EXP(LN10*(GI0-GII)) -!CC ENDIF -! - M0(09) = AWAB(IRH) ! NH4HSO4 -!C IF (M0(09) .LT. 100.0) THEN -!C IC = M0(09) -!C CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,GII,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(09) = M0(09)*EXP(LN10*(GI0-GII)) -!C ENDIF -! -! M0(12) = AWSB(IRH) ! NAHSO4 -! IF (M0(12) .LT. 100.0) THEN -! IC = M0(12) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,GI0, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,GII, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(12) = M0(12)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(13) = AWLC(IRH) ! (NH4)3H(SO4)2 -!C IF (M0(13) .LT. 100.0) THEN -!C IC = 4.0*M0(13) -!C CALL KMTAB(IC,298.0, XX,XX,XX,GI0,XX,XX,XX,XX,GII,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C G130 = 0.2*(3.0*GI0+2.0*GII) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,GI0,XX,XX,XX,XX,GII,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C G13I = 0.2*(3.0*GI0+2.0*GII) -!C M0(13) = M0(13)*EXP(LN10*SNGL(G130-G13I)) -!C ENDIF -! -! *** OTHER INITIALIZATIONS ********************************************* -! - ICLACT = 0 - CALAOU = .TRUE. - CALAIN = .TRUE. - FRST = .TRUE. - SCASE = '??' - SULRATW = 2.0 - SODRAT = ZERO - CRNARAT = ZERO - CRRAT = ZERO - NOFER = 0 - STKOFL =.FALSE. - DO 60 I=1,NERRMX - ERRSTK(I) =-999 - ERRMSG(I) = 'MESSAGE N/A' - 60 CONTINUE -! -! *** END OF SUBROUTINE INIT1 ******************************************* -! - END SUBROUTINE INIT1 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE INIT2 -! *** THIS SUBROUTINE INITIALIZES ALL GLOBAL VARIABLES FOR AMMONIUM, -! NITRATE, SULFATE AEROSOL SYSTEMS (SUBROUTINE ISRP2) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE INIT2 (WI, RHI, TEMPI) - Real(kind=fp) :: WI(NCOMP), RHI, TEMPI - Real(kind=fp) :: IC,GII,GI0,XX - Real(kind=fp) :: Coef, T0, T0T, TCF - Integer :: I, IRH - Real(kind=fp), Parameter :: LN10=2.3025851 -! -! *** SAVE INPUT VARIABLES IN COMMON BLOCK ****************************** -! - IF (IPROB.EQ.0) THEN ! FORWARD CALCULATION - DO 10 I=1,NCOMP - W(I) = MAX(WI(I), TINY) -10 CONTINUE - ELSE - DO 15 I=1,NCOMP ! REVERSE CALCULATION - WAER(I) = MAX(WI(I), TINY) - W(I) = ZERO -15 CONTINUE - ENDIF - RH = RHI - TEMP = TEMPI -! -! *** CALCULATE EQUILIBRIUM CONSTANTS *********************************** -! - XK1 = 1.015e-2 ! HSO4(aq) <==> H(aq) + SO4(aq) - XK21 = 57.639 ! NH3(g) <==> NH3(aq) - XK22 = 1.805e-5 ! NH3(aq) <==> NH4(aq) + OH(aq) - XK4 = 2.511e6 ! HNO3(g) <==> H(aq) + NO3(aq) ! ISORR -!CC XK4 = 3.638e6 ! HNO3(g) <==> H(aq) + NO3(aq) ! SEQUIL - XK41 = 2.100e5 ! HNO3(g) <==> HNO3(aq) - XK7 = 1.817 ! (NH4)2SO4(s) <==> 2*NH4(aq) + SO4(aq) - XK10 = 5.746e-17 ! NH4NO3(s) <==> NH3(g) + HNO3(g) ! ISORR -!CC XK10 = 2.985e-17 ! NH4NO3(s) <==> NH3(g) + HNO3(g) ! SEQUIL - XK12 = 1.382e2 ! NH4HSO4(s) <==> NH4(aq) + HSO4(aq) - XK13 = 29.268 ! (NH4)3H(SO4)2(s) <==> 3*NH4(aq) + HSO4(aq) + SO4(aq) - XKW = 1.010e-14 ! H2O <==> H(aq) + OH(aq) -! - IF (INT(TEMP) .NE. 298) THEN ! FOR T != 298K or 298.15K - T0 = 298.15D0 - T0T = T0/TEMP - COEF= 1.0+LOG(T0T)-T0T - XK1 = XK1 *EXP( 8.85*(T0T-1.0) + 25.140*COEF) - XK21= XK21*EXP( 13.79*(T0T-1.0) - 5.393*COEF) - XK22= XK22*EXP( -1.50*(T0T-1.0) + 26.920*COEF) - XK4 = XK4 *EXP( 29.17*(T0T-1.0) + 16.830*COEF) !ISORR -!CC XK4 = XK4 *EXP( 29.47*(T0T-1.0) + 16.840*COEF) ! SEQUIL - XK41= XK41*EXP( 29.17*(T0T-1.0) + 16.830*COEF) - XK7 = XK7 *EXP( -2.65*(T0T-1.0) + 38.570*COEF) - XK10= XK10*EXP(-74.38*(T0T-1.0) + 6.120*COEF) ! ISORR -!CC XK10= XK10*EXP(-75.11*(T0T-1.0) + 13.460*COEF) ! SEQUIL - XK12= XK12*EXP( -2.87*(T0T-1.0) + 15.830*COEF) - XK13= XK13*EXP( -5.19*(T0T-1.0) + 54.400*COEF) - XKW = XKW *EXP(-22.52*(T0T-1.0) + 26.920*COEF) - ENDIF - XK2 = XK21*XK22 - XK42 = XK4/XK41 -! -! *** CALCULATE DELIQUESCENCE RELATIVE HUMIDITIES (UNICOMPONENT) ******** -! - DRH2SO4 = ZERO - DRNH42S4 = 0.7997D0 - DRNH4HS4 = 0.4000D0 - DRNH4NO3 = 0.6183D0 - DRLC = 0.6900D0 - IF (INT(TEMP) .NE. 298) THEN - T0 = 298.15D0 - TCF = 1.0/TEMP - 1.0/T0 - DRNH4NO3 = DRNH4NO3*EXP(852.*TCF) - DRNH42S4 = DRNH42S4*EXP( 80.*TCF) - DRNH4HS4 = DRNH4HS4*EXP(384.*TCF) - DRLC = DRLC *EXP(186.*TCF) - DRNH4NO3 = MIN (DRNH4NO3,DRNH42S4) ! ADJUST FOR DRH CROSSOVER AT T<271K - ENDIF -! -! *** CALCULATE MUTUAL DELIQUESCENCE RELATIVE HUMIDITIES **************** -! - DRMLCAB = 0.3780D0 ! (NH4)3H(SO4)2 & NH4HSO4 - DRMLCAS = 0.6900D0 ! (NH4)3H(SO4)2 & (NH4)2SO4 - DRMASAN = 0.6000D0 ! (NH4)2SO4 & NH4NO3 -!CC IF (INT(TEMP) .NE. 298) THEN ! For the time being -!CC T0 = 298.15d0 -!CC TCF = 1.0/TEMP - 1.0/T0 -!CC DRMLCAB = DRMLCAB*EXP( 507.506*TCF) -!CC DRMLCAS = DRMLCAS*EXP( 133.865*TCF) -!CC DRMASAN = DRMASAN*EXP(1269.068*TCF) -!CC ENDIF -! -! *** LIQUID PHASE ****************************************************** -! - CHNO3 = ZERO - CHCL = ZERO - CH2SO4 = ZERO - COH = ZERO - WATER = TINY -! - DO 20 I=1,NPAIR - MOLALR(I)=ZERO - GAMA(I) =0.1 - GAMIN(I) =GREAT - GAMOU(I) =GREAT - M0(I) =1d5 - 20 CONTINUE -! - DO 30 I=1,NPAIR - GAMA(I) = 0.1d0 - 30 CONTINUE -! - DO 40 I=1,NIONS - MOLAL(I)=ZERO -40 CONTINUE - COH = ZERO -! - DO 50 I=1,NGASAQ - GASAQ(I)=ZERO -50 CONTINUE -! -! *** SOLID PHASE ****************************************************** -! - CNH42S4= ZERO - CNH4HS4= ZERO - CNACL = ZERO - CNA2SO4= ZERO - CNANO3 = ZERO - CNH4NO3= ZERO - CNH4CL = ZERO - CNAHSO4= ZERO - CLC = ZERO - CCASO4 = ZERO - CCANO32= ZERO - CCACL2 = ZERO - CK2SO4 = ZERO - CKHSO4 = ZERO - CKNO3 = ZERO - CKCL = ZERO - CMGSO4 = ZERO - CMGNO32= ZERO - CMGCL2 = ZERO -! -! *** GAS PHASE ******************************************************** -! - GNH3 = ZERO - GHNO3 = ZERO - GHCL = ZERO -! -! *** CALCULATE ZSR PARAMETERS ***************************************** -! - IRH = MIN (INT(RH*NZSR+0.5),NZSR) ! Position in ZSR arrays - IRH = MAX (IRH, 1) -! -! M0(01) = AWSC(IRH) ! NACl -! IF (M0(01) .LT. 100.0) THEN -! IC = M0(01) -! CALL KMTAB(IC,298.0, GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),GII,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(01) = M0(01)*EXP(LN10*(GI0-GII)) -! ENDIF -!C -! M0(02) = AWSS(IRH) ! (NA)2SO4 -! IF (M0(02) .LT. 100.0) THEN -! IC = 3.0*M0(02) -! CALL KMTAB(IC,298.0, XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,GII,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(02) = M0(02)*EXP(LN10*(GI0-GII)) -! ENDIF -!CC -! M0(03) = AWSN(IRH) ! NANO3 -! IF (M0(03) .LT. 100.0) THEN -! IC = M0(03) -! CALL KMTAB(IC,298.0, XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,GII,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(03) = M0(03)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(04) = AWAS(IRH) ! (NH4)2SO4 -!C IF (M0(04) .LT. 100.0) THEN -!C IC = 3.0*M0(04) -!C CALL KMTAB(IC,298.0, XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,GII,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(04) = M0(04)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(05) = AWAN(IRH) ! NH4NO3 -!C IF (M0(05) .LT. 100.0) THEN -!C IC = M0(05) -!C CALL KMTAB(IC,298.0, XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,GII,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(05) = M0(05)*EXP(LN10*(GI0-GII)) -!C ENDIF -! -! M0(06) = AWAC(IRH) ! NH4CL -! IF (M0(06) .LT. 100.0) THEN -! IC = M0(06) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,GII,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(06) = M0(06)*EXP(LN10*(GI0-GII)) -! ENDIF -!C - M0(07) = AWSA(IRH) ! 2H-SO4 -!C IF (M0(07) .LT. 100.0) THEN -!C IC = 3.0*M0(07) -!C CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,GII,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(07) = M0(07)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(08) = AWSA(IRH) ! H-HSO4 -!CC IF (M0(08) .LT. 100.0) THEN ! These are redundant, because M0(8) is not used -!CC IC = M0(08) -!CC CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX) -!CC CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX) -!CCCCC CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,GII,XX,XX,XX,XX) -!CC M0(08) = M0(08)*EXP(LN10*(GI0-GII)) -!CC ENDIF -! - M0(09) = AWAB(IRH) ! NH4HSO4 -!C IF (M0(09) .LT. 100.0) THEN -!C IC = M0(09) -!C CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,GII,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(09) = M0(09)*EXP(LN10*(GI0-GII)) -!C ENDIF -! -! M0(12) = AWSB(IRH) ! NAHSO4 -! IF (M0(12) .LT. 100.0) THEN -! IC = M0(12) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,GI0, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,GII, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(12) = M0(12)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(13) = AWLC(IRH) ! (NH4)3H(SO4)2 -! IF (M0(13) .LT. 100.0) THEN -! IC = 4.0*M0(13) -! CALL KMTAB(IC,298.0, XX,XX,XX,GI0,XX,XX,XX,XX,GII,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! G130 = 0.2*(3.0*GI0+2.0*GII) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,GI0,XX,XX,XX,XX,GII,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! G13I = 0.2*(3.0*GI0+2.0*GII) -! M0(13) = M0(13)*EXP(LN10*SNGL(G130-G13I)) -! ENDIF -! -! *** OTHER INITIALIZATIONS ********************************************* -! - ICLACT = 0 - CALAOU = .TRUE. - CALAIN = .TRUE. - FRST = .TRUE. - SCASE = '??' - SULRATW = 2.0 - SODRAT = ZERO - CRNARAT = ZERO - CRRAT = ZERO - NOFER = 0 - STKOFL =.FALSE. - DO 60 I=1,NERRMX - ERRSTK(I) =-999 - ERRMSG(I) = 'MESSAGE N/A' - 60 CONTINUE -! -! *** END OF SUBROUTINE INIT2 ******************************************* -! - END SUBROUTINE INIT2 - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE ISOINIT3 -! *** THIS SUBROUTINE INITIALIZES ALL GLOBAL VARIABLES FOR AMMONIUM, -! SODIUM, CHLORIDE, NITRATE, SULFATE AEROSOL SYSTEMS (SUBROUTINE -! ISRP3) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE ISOINIT3 (WI, RHI, TEMPI) - Real(kind=fp) :: WI(NCOMP), RHI, TEMPI - Real(kind=fp) :: IC,GII,GI0,XX,T0,T0T,COEF,TCF - Integer :: I, IRH - Real(kind=fp), Parameter :: LN10=2.3025851 -! -! *** SAVE INPUT VARIABLES IN COMMON BLOCK ****************************** -! - IF (IPROB.EQ.0) THEN ! FORWARD CALCULATION - DO 10 I=1,NCOMP - W(I) = MAX(WI(I), TINY) -10 CONTINUE - ELSE - DO 15 I=1,NCOMP ! REVERSE CALCULATION - WAER(I) = MAX(WI(I), TINY) - W(I) = ZERO -15 CONTINUE - ENDIF - RH = RHI - TEMP = TEMPI -! -! *** CALCULATE EQUILIBRIUM CONSTANTS *********************************** -! - XK1 = 1.015D-2 ! HSO4(aq) <==> H(aq) + SO4(aq) - XK21 = 57.639D0 ! NH3(g) <==> NH3(aq) - XK22 = 1.805D-5 ! NH3(aq) <==> NH4(aq) + OH(aq) - XK3 = 1.971D6 ! HCL(g) <==> H(aq) + CL(aq) - XK31 = 2.500e3 ! HCL(g) <==> HCL(aq) - XK4 = 2.511e6 ! HNO3(g) <==> H(aq) + NO3(aq) ! ISORR -!CC XK4 = 3.638e6 ! HNO3(g) <==> H(aq) + NO3(aq) ! SEQUIL - XK41 = 2.100e5 ! HNO3(g) <==> HNO3(aq) - XK5 = 0.4799D0 ! NA2SO4(s) <==> 2*NA(aq) + SO4(aq) - XK6 = 1.086D-16 ! NH4CL(s) <==> NH3(g) + HCL(g) - XK7 = 1.817D0 ! (NH4)2SO4(s) <==> 2*NH4(aq) + SO4(aq) - XK8 = 37.661D0 ! NACL(s) <==> NA(aq) + CL(aq) - XK10 = 5.746D-17 ! NH4NO3(s) <==> NH3(g) + HNO3(g) ! ISORR -!CC XK10 = 2.985e-17 ! NH4NO3(s) <==> NH3(g) + HNO3(g) ! SEQUIL - XK11 = 2.413D4 ! NAHSO4(s) <==> NA(aq) + HSO4(aq) - XK12 = 1.382D2 ! NH4HSO4(s) <==> NH4(aq) + HSO4(aq) - XK13 = 29.268D0 ! (NH4)3H(SO4)2(s) <==> 3*NH4(aq) + HSO4(aq) + SO4(aq) - XK14 = 22.05D0 ! NH4CL(s) <==> NH4(aq) + CL(aq) - XKW = 1.010D-14 ! H2O <==> H(aq) + OH(aq) - XK9 = 11.977D0 ! NANO3(s) <==> NA(aq) + NO3(aq) -! - IF (INT(TEMP) .NE. 298) THEN ! FOR T != 298K or 298.15K - T0 = 298.15D0 - T0T = T0/TEMP - COEF= 1.0+LOG(T0T)-T0T - XK1 = XK1 *EXP( 8.85*(T0T-1.0) + 25.140*COEF) - XK21= XK21*EXP( 13.79*(T0T-1.0) - 5.393*COEF) - XK22= XK22*EXP( -1.50*(T0T-1.0) + 26.920*COEF) - XK3 = XK3 *EXP( 30.20*(T0T-1.0) + 19.910*COEF) - XK31= XK31*EXP( 30.20*(T0T-1.0) + 19.910*COEF) - XK4 = XK4 *EXP( 29.17*(T0T-1.0) + 16.830*COEF) !ISORR -!CC XK4 = XK4 *EXP( 29.47*(T0T-1.0) + 16.840*COEF) ! SEQUIL - XK41= XK41*EXP( 29.17*(T0T-1.0) + 16.830*COEF) - XK5 = XK5 *EXP( 0.98*(T0T-1.0) + 39.500*COEF) - XK6 = XK6 *EXP(-71.00*(T0T-1.0) + 2.400*COEF) - XK7 = XK7 *EXP( -2.65*(T0T-1.0) + 38.570*COEF) - XK8 = XK8 *EXP( -1.56*(T0T-1.0) + 16.900*COEF) - XK9 = XK9 *EXP( -8.22*(T0T-1.0) + 16.010*COEF) - XK10= XK10*EXP(-74.38*(T0T-1.0) + 6.120*COEF) ! ISORR -!CC XK10= XK10*EXP(-75.11*(T0T-1.0) + 13.460*COEF) ! SEQUIL - XK11= XK11*EXP( 0.79*(T0T-1.0) + 14.746*COEF) - XK12= XK12*EXP( -2.87*(T0T-1.0) + 15.830*COEF) - XK13= XK13*EXP( -5.19*(T0T-1.0) + 54.400*COEF) - XK14= XK14*EXP( 24.55*(T0T-1.0) + 16.900*COEF) - XKW = XKW *EXP(-22.52*(T0T-1.0) + 26.920*COEF) - ENDIF - XK2 = XK21*XK22 - XK42 = XK4/XK41 - XK32 = XK3/XK31 -! -! *** CALCULATE DELIQUESCENCE RELATIVE HUMIDITIES (UNICOMPONENT) ******** -! - DRH2SO4 = ZERO - DRNH42S4 = 0.7997D0 - DRNH4HS4 = 0.4000D0 - DRLC = 0.6900D0 - DRNACL = 0.7528D0 - DRNANO3 = 0.7379D0 - DRNH4CL = 0.7710D0 - DRNH4NO3 = 0.6183D0 - DRNA2SO4 = 0.9300D0 - DRNAHSO4 = 0.5200D0 - IF (INT(TEMP) .NE. 298) THEN - T0 = 298.15D0 - TCF = 1.0/TEMP - 1.0/T0 - DRNACL = DRNACL *EXP( 25.*TCF) - DRNANO3 = DRNANO3 *EXP(304.*TCF) - DRNA2SO4 = DRNA2SO4*EXP( 80.*TCF) - DRNH4NO3 = DRNH4NO3*EXP(852.*TCF) - DRNH42S4 = DRNH42S4*EXP( 80.*TCF) - DRNH4HS4 = DRNH4HS4*EXP(384.*TCF) - DRLC = DRLC *EXP(186.*TCF) - DRNH4CL = DRNH4Cl *EXP(239.*TCF) - DRNAHSO4 = DRNAHSO4*EXP(-45.*TCF) -! -! *** ADJUST FOR DRH "CROSSOVER" AT LOW TEMPERATURES -! - DRNH4NO3 = MIN (DRNH4NO3, DRNH4CL, DRNH42S4, DRNANO3, DRNACL) - DRNANO3 = MIN (DRNANO3, DRNACL) - DRNH4CL = MIN (DRNH4Cl, DRNH42S4) -! - ENDIF -! -! *** CALCULATE MUTUAL DELIQUESCENCE RELATIVE HUMIDITIES **************** -! - DRMLCAB = 0.378D0 ! (NH4)3H(SO4)2 & NH4HSO4 - DRMLCAS = 0.690D0 ! (NH4)3H(SO4)2 & (NH4)2SO4 - DRMASAN = 0.600D0 ! (NH4)2SO4 & NH4NO3 - DRMG1 = 0.460D0 ! (NH4)2SO4, NH4NO3, NA2SO4, NH4CL - DRMG2 = 0.691D0 ! (NH4)2SO4, NA2SO4, NH4CL - DRMG3 = 0.697D0 ! (NH4)2SO4, NA2SO4 - DRMH1 = 0.240D0 ! NA2SO4, NANO3, NACL, NH4NO3, NH4CL - DRMH2 = 0.596D0 ! NA2SO4, NANO3, NACL, NH4CL - DRMI1 = 0.240D0 ! LC, NAHSO4, NH4HSO4, NA2SO4, (NH4)2SO4 - DRMI2 = 0.363D0 ! LC, NAHSO4, NA2SO4, (NH4)2SO4 - NO DATA - - DRMI3 = 0.610D0 ! LC, NA2SO4, (NH4)2SO4 - DRMQ1 = 0.494D0 ! (NH4)2SO4, NH4NO3, NA2SO4 - DRMR1 = 0.663D0 ! NA2SO4, NANO3, NACL - DRMR2 = 0.735D0 ! NA2SO4, NACL - DRMR3 = 0.673D0 ! NANO3, NACL - DRMR4 = 0.694D0 ! NA2SO4, NACL, NH4CL - DRMR5 = 0.731D0 ! NA2SO4, NH4CL - DRMR6 = 0.596D0 ! NA2SO4, NANO3, NH4CL - DRMR7 = 0.380D0 ! NA2SO4, NANO3, NACL, NH4NO3 - DRMR8 = 0.380D0 ! NA2SO4, NACL, NH4NO3 - DRMR9 = 0.494D0 ! NA2SO4, NH4NO3 - DRMR10 = 0.476D0 ! NA2SO4, NANO3, NH4NO3 - DRMR11 = 0.340D0 ! NA2SO4, NACL, NH4NO3, NH4CL - DRMR12 = 0.460D0 ! NA2SO4, NH4NO3, NH4CL - DRMR13 = 0.438D0 ! NA2SO4, NANO3, NH4NO3, NH4CL -!CC IF (INT(TEMP) .NE. 298) THEN -!CC T0 = 298.15d0 -!CC TCF = 1.0/TEMP - 1.0/T0 -!CC DRMLCAB = DRMLCAB*EXP( 507.506*TCF) -!CC DRMLCAS = DRMLCAS*EXP( 133.865*TCF) -!CC DRMASAN = DRMASAN*EXP(1269.068*TCF) -!CC DRMG1 = DRMG1 *EXP( 572.207*TCF) -!CC DRMG2 = DRMG2 *EXP( 58.166*TCF) -!CC DRMG3 = DRMG3 *EXP( 22.253*TCF) -!CC DRMH1 = DRMH1 *EXP(2116.542*TCF) -!CC DRMH2 = DRMH2 *EXP( 650.549*TCF) -!CC DRMI1 = DRMI1 *EXP( 565.743*TCF) -!CC DRMI2 = DRMI2 *EXP( 91.745*TCF) -!CC DRMI3 = DRMI3 *EXP( 161.272*TCF) -!CC DRMQ1 = DRMQ1 *EXP(1616.621*TCF) -!CC DRMR1 = DRMR1 *EXP( 292.564*TCF) -!CC DRMR2 = DRMR2 *EXP( 14.587*TCF) -!CC DRMR3 = DRMR3 *EXP( 307.907*TCF) -!CC DRMR4 = DRMR4 *EXP( 97.605*TCF) -!CC DRMR5 = DRMR5 *EXP( 98.523*TCF) -!CC DRMR6 = DRMR6 *EXP( 465.500*TCF) -!CC DRMR7 = DRMR7 *EXP( 324.425*TCF) -!CC DRMR8 = DRMR8 *EXP(2660.184*TCF) -!CC DRMR9 = DRMR9 *EXP(1617.178*TCF) -!CC DRMR10 = DRMR10 *EXP(1745.226*TCF) -!CC DRMR11 = DRMR11 *EXP(3691.328*TCF) -!CC DRMR12 = DRMR12 *EXP(1836.842*TCF) -!CC DRMR13 = DRMR13 *EXP(1967.938*TCF) -!CC ENDIF -! -! *** LIQUID PHASE ****************************************************** -! - CHNO3 = ZERO - CHCL = ZERO - CH2SO4 = ZERO - COH = ZERO - WATER = TINY -! - DO 20 I=1,NPAIR - MOLALR(I)=ZERO - GAMA(I) =0.1 - GAMIN(I) =GREAT - GAMOU(I) =GREAT - M0(I) =1d5 - 20 CONTINUE -! - DO 30 I=1,NPAIR - GAMA(I) = 0.1d0 - 30 CONTINUE -! - DO 40 I=1,NIONS - MOLAL(I)=ZERO -40 CONTINUE - COH = ZERO -! - DO 50 I=1,NGASAQ - GASAQ(I)=ZERO -50 CONTINUE -! -! *** SOLID PHASE ******************************************************* -! - CNH42S4= ZERO - CNH4HS4= ZERO - CNACL = ZERO - CNA2SO4= ZERO - CNANO3 = ZERO - CNH4NO3= ZERO - CNH4CL = ZERO - CNAHSO4= ZERO - CLC = ZERO - CCASO4 = ZERO - CCANO32= ZERO - CCACL2 = ZERO - CK2SO4 = ZERO - CKHSO4 = ZERO - CKNO3 = ZERO - CKCL = ZERO - CMGSO4 = ZERO - CMGNO32= ZERO - CMGCL2 = ZERO -! -! *** GAS PHASE ********************************************************* -! - GNH3 = ZERO - GHNO3 = ZERO - GHCL = ZERO -! -! *** CALCULATE ZSR PARAMETERS ****************************************** -! - IRH = MIN (INT(RH*NZSR+0.5),NZSR) ! Position in ZSR arrays - IRH = MAX (IRH, 1) -! - M0(01) = AWSC(IRH) ! NACl -!C IF (M0(01) .LT. 100.0) THEN -!C IC = M0(01) -!C CALL KMTAB(IC,298.0, GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),GII,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(01) = M0(01)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(02) = AWSS(IRH) ! (NA)2SO4 -!C IF (M0(02) .LT. 100.0) THEN -!C IC = 3.0*M0(02) -!C CALL KMTAB(IC,298.0, XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,GII,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(02) = M0(02)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(03) = AWSN(IRH) ! NANO3 -!C IF (M0(03) .LT. 100.0) THEN -!C IC = M0(03) -!C CALL KMTAB(IC,298.0, XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,GII,XX,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! C M0(03) = M0(03)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(04) = AWAS(IRH) ! (NH4)2SO4 -!C IF (M0(04) .LT. 100.0) THEN -!C IC = 3.0*M0(04) -!C CALL KMTAB(IC,298.0, XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,GII,XX,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(04) = M0(04)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(05) = AWAN(IRH) ! NH4NO3 -!C IF (M0(05) .LT. 100.0) THEN -!C IC = M0(05) -!C CALL KMTAB(IC,298.0, XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,GII,XX,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(05) = M0(05)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(06) = AWAC(IRH) ! NH4CL -!C IF (M0(06) .LT. 100.0) THEN -!C IC = M0(06) -!C CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,GII,XX,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(06) = M0(06)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(07) = AWSA(IRH) ! 2H-SO4 -!C IF (M0(07) .LT. 100.0) THEN -!C IC = 3.0*M0(07) -!C CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,GII,XX,XX,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(07) = M0(07)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(08) = AWSA(IRH) ! H-HSO4 -!CC IF (M0(08) .LT. 100.0) THEN ! These are redundant, because M0(8) is not used -!CC IC = M0(08) -!CC CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX) -!CC CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX) -!CCCCC CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,GII,XX,XX,XX,XX) -!CC M0(08) = M0(08)*EXP(LN10*(GI0-GII)) -!CC ENDIF -! - M0(09) = AWAB(IRH) ! NH4HSO4 -!C IF (M0(09) .LT. 100.0) THEN -!C IC = M0(09) -!C CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,GII,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(09) = M0(09)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(12) = AWSB(IRH) ! NAHSO4 -!C IF (M0(12) .LT. 100.0) THEN -!C IC = M0(12) -!C CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,GI0, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,GII, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C M0(12) = M0(12)*EXP(LN10*(GI0-GII)) -!C ENDIF -! - M0(13) = AWLC(IRH) ! (NH4)3H(SO4)2 -!C IF (M0(13) .LT. 100.0) THEN -!C IC = 4.0*M0(13) -!C CALL KMTAB(IC,298.0, XX,XX,XX,GI0,XX,XX,XX,XX,GII,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C G130 = 0.2*(3.0*GI0+2.0*GII) -!C CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,GI0,XX,XX,XX,XX,GII,XX,XX,XX, -!C & XX,XX,XX,XX,XX,XX,XX,XX,XX) -!C G13I = 0.2*(3.0*GI0+2.0*GII) -!C M0(13) = M0(13)*EXP(LN10*SNGL(G130-G13I)) -!C ENDIF -! -! *** OTHER INITIALIZATIONS ********************************************* -! - ICLACT = 0 - CALAOU = .TRUE. - CALAIN = .TRUE. - FRST = .TRUE. - SCASE = '??' - SULRATW = 2.0 - CRNARAT = ZERO - CRRAT = ZERO - NOFER = 0 - STKOFL =.FALSE. - DO 60 I=1,NERRMX - ERRSTK(I) =-999 - ERRMSG(I) = 'MESSAGE N/A' - 60 CONTINUE -! -! *** END OF SUBROUTINE ISOINIT3 ******************************************* -! - END SUBROUTINE ISOINIT3 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE INIT4 -! *** THIS SUBROUTINE INITIALIZES ALL GLOBAL VARIABLES FOR AMMONIUM, -! SODIUM, CHLORIDE, NITRATE, SULFATE, CALCIUM, POTASSIUM, MAGNESIUM -! AEROSOL SYSTEMS (SUBROUTINE ISRP4) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE INIT4 (WI, RHI, TEMPI) - Real(kind=fp) :: WI(NCOMP), RHI, TEMPI - Real(kind=fp) :: IC,GII,GI0,XX,T0,T0T,TCF,COEF - Real(kind=fp), Parameter :: LN10=2.3025851 - Integer :: I, IRH -! -! *** SAVE INPUT VARIABLES IN COMMON BLOCK ****************************** -! - IF (IPROB.EQ.0) THEN ! FORWARD CALCULATION - DO 10 I=1,NCOMP - W(I) = MAX(WI(I), TINY) -10 CONTINUE - ELSE - DO 15 I=1,NCOMP ! REVERSE CALCULATION - WAER(I) = MAX(WI(I), TINY) - W(I) = ZERO -15 CONTINUE - ENDIF - RH = RHI - TEMP = TEMPI -! -! *** CALCULATE EQUILIBRIUM CONSTANTS *********************************** -! - XK1 = 1.015D-2 ! HSO4(aq) <==> H(aq) + SO4(aq) - XK21 = 57.639D0 ! NH3(g) <==> NH3(aq) - XK22 = 1.805D-5 ! NH3(aq) <==> NH4(aq) + OH(aq) - XK3 = 1.971D6 ! HCL(g) <==> H(aq) + CL(aq) - XK31 = 2.500e3 ! HCL(g) <==> HCL(aq) - XK4 = 2.511e6 ! HNO3(g) <==> H(aq) + NO3(aq) ! ISORR -! XK4 = 3.638e6 ! HNO3(g) <==> H(aq) + NO3(aq) ! SEQUIL - XK41 = 2.100e5 ! HNO3(g) <==> HNO3(aq) - XK5 = 0.4799D0 ! NA2SO4(s) <==> 2*NA(aq) + SO4(aq) - XK6 = 1.086D-16 ! NH4CL(s) <==> NH3(g) + HCL(g) - XK7 = 1.817D0 ! (NH4)2SO4(s) <==> 2*NH4(aq) + SO4(aq) - XK8 = 37.661D0 ! NACL(s) <==> NA(aq) + CL(aq) -! XK10 = 5.746D-17 ! NH4NO3(s) <==> NH3(g) + HNO3(g) ! ISORR - XK10 = 4.199D-17 ! NH4NO3(s) <==> NH3(g) + HNO3(g) ! (Mozurkewich, 1993) -! XK10 = 2.985e-17 ! NH4NO3(s) <==> NH3(g) + HNO3(g) ! SEQUIL - XK11 = 2.413D4 ! NAHSO4(s) <==> NA(aq) + HSO4(aq) - XK12 = 1.382D2 ! NH4HSO4(s) <==> NH4(aq) + HSO4(aq) - XK13 = 29.268D0 ! (NH4)3H(SO4)2(s) <==> 3*NH4(aq) + HSO4(aq) + SO4(aq) - XK14 = 22.05D0 ! NH4CL(s) <==> NH4(aq) + CL(aq) - XKW = 1.010D-14 ! H2O <==> H(aq) + OH(aq) - XK9 = 11.977D0 ! NANO3(s) <==> NA(aq) + NO3(aq) -!CC - XK15 = 6.067D5 ! CA(NO3)2(s) <==> CA(aq) + 2NO3(aq) - XK16 = 7.974D11 ! CACL2(s) <==> CA(aq) + 2CL(aq) - XK17 = 1.569D-2 ! K2SO4(s) <==> 2K(aq) + SO4(aq) - XK18 = 24.016 ! KHSO4(s) <==> K(aq) + HSO4(aq) - XK19 = 0.872 ! KNO3(s) <==> K(aq) + NO3(aq) - XK20 = 8.680 ! KCL(s) <==> K(aq) + CL(aq) - XK23 = 1.079D5 ! MGS04(s) <==> MG(aq) + SO4(aq) - XK24 = 2.507D15 ! MG(NO3)2(s) <==> MG(aq) + 2NO3(aq) - XK25 = 9.557D21 ! MGCL2(s) <==> MG(aq) + 2CL(aq) -! XK26 = 4.299D-7 ! CO2(aq) + H2O <==> HCO3(aq) + H(aq) -! XK27 = 4.678D-11 ! HCO3(aq) <==> CO3(aq) + H(aq) - -! - IF (INT(TEMP) .NE. 298) THEN ! FOR T != 298K or 298.15K - T0 = 298.15D0 - T0T = T0/TEMP - COEF= 1.0+LOG(T0T)-T0T - XK1 = XK1 *EXP( 8.85*(T0T-1.0) + 25.140*COEF) - XK21= XK21*EXP( 13.79*(T0T-1.0) - 5.393*COEF) - XK22= XK22*EXP( -1.50*(T0T-1.0) + 26.920*COEF) - XK3 = XK3 *EXP( 30.20*(T0T-1.0) + 19.910*COEF) - XK31= XK31*EXP( 30.20*(T0T-1.0) + 19.910*COEF) - XK4 = XK4 *EXP( 29.17*(T0T-1.0) + 16.830*COEF) !ISORR -! XK4 = XK4 *EXP( 29.47*(T0T-1.0) + 16.840*COEF) ! SEQUIL - XK41= XK41*EXP( 29.17*(T0T-1.0) + 16.830*COEF) - XK5 = XK5 *EXP( 0.98*(T0T-1.0) + 39.500*COEF) - XK6 = XK6 *EXP(-71.00*(T0T-1.0) + 2.400*COEF) - XK7 = XK7 *EXP( -2.65*(T0T-1.0) + 38.570*COEF) - XK8 = XK8 *EXP( -1.56*(T0T-1.0) + 16.900*COEF) - XK9 = XK9 *EXP( -8.22*(T0T-1.0) + 16.010*COEF) -! XK10= XK10*EXP(-74.38*(T0T-1.0) + 6.120*COEF) ! ISORR - XK10= XK10*EXP(-74.7351*(T0T-1.0) + 6.025*COEF) ! (Mozurkewich, 1993) -! XK10= XK10*EXP(-75.11*(T0T-1.0) + 13.460*COEF) ! SEQUIL - XK11= XK11*EXP( 0.79*(T0T-1.0) + 14.746*COEF) - XK12= XK12*EXP( -2.87*(T0T-1.0) + 15.830*COEF) - XK13= XK13*EXP( -5.19*(T0T-1.0) + 54.400*COEF) - XK14= XK14*EXP( 24.55*(T0T-1.0) + 16.900*COEF) - XKW = XKW *EXP(-22.52*(T0T-1.0) + 26.920*COEF) -!CC -! XK15= XK15 *EXP( .0*(T0T-1.0) + .0*COEF) -! XK16= XK16 *EXP( .0*(T0T-1.0) + .0*COEF) - XK17= XK17 *EXP(-9.585*(T0T-1.0) + 45.81*COEF) - XK18= XK18 *EXP(-8.423*(T0T-1.0) + 17.96*COEF) - XK19= XK19 *EXP(-14.08*(T0T-1.0) + 19.39*COEF) - XK20= XK20 *EXP(-6.902*(T0T-1.0) + 19.95*COEF) -! XK23= XK23 *EXP( .0*(T0T-1.0) + .0*COEF) -! XK24= XK24 *EXP( .0*(T0T-1.0) + .0*COEF) -! XK25= XK25 *EXP( .0*(T0T-1.0) + .0*COEF) -! XK26= XK26 *EXP(-3.0821*(T0T-1.0) + 31.8139*COEF) -! XK27= XK27 *EXP(-5.9908*(T0T-1.0) + 38.844*COEF) - - ENDIF - XK2 = XK21*XK22 - XK42 = XK4/XK41 - XK32 = XK3/XK31 -! -! *** CALCULATE DELIQUESCENCE RELATIVE HUMIDITIES (UNICOMPONENT) ******** -! - DRH2SO4 = ZERO - DRNH42S4 = 0.7997D0 - DRNH4HS4 = 0.4000D0 - DRLC = 0.6900D0 - DRNACL = 0.7528D0 - DRNANO3 = 0.7379D0 - DRNH4CL = 0.7710D0 - DRNH4NO3 = 0.6183D0 - DRNA2SO4 = 0.9300D0 - DRNAHSO4 = 0.5200D0 - DRCANO32 = 0.4906D0 - DRCACL2 = 0.2830D0 - DRK2SO4 = 0.9750D0 - DRKHSO4 = 0.8600D0 - DRKNO3 = 0.9248D0 - DRKCL = 0.8426D0 - DRMGSO4 = 0.8613D0 - DRMGNO32 = 0.5400D0 - DRMGCL2 = 0.3284D0 - IF (INT(TEMP) .NE. 298) THEN - T0 = 298.15D0 - TCF = 1.0/TEMP - 1.0/T0 - DRNACL = DRNACL *EXP( 25.*TCF) - DRNANO3 = DRNANO3 *EXP(304.*TCF) - DRNA2SO4 = DRNA2SO4*EXP( 80.*TCF) - DRNH4NO3 = DRNH4NO3*EXP(852.*TCF) - DRNH42S4 = DRNH42S4*EXP( 80.*TCF) - DRNH4HS4 = DRNH4HS4*EXP(384.*TCF) - DRLC = DRLC *EXP(186.*TCF) - DRNH4CL = DRNH4Cl *EXP(239.*TCF) - DRNAHSO4 = DRNAHSO4*EXP(-45.*TCF) -! DRCANO32 = DRCANO32*EXP(-430.5*TCF) - DRCANO32 = DRCANO32*EXP(509.4*TCF) ! KELLY & WEXLER (2005) FOR CANO32.4H20 -! DRCACL2 = DRCACL2 *EXP(-1121.*TCF) - DRCACL2 = DRCACL2 *EXP(551.1*TCF) ! KELLY & WEXLER (2005) FOR CACL2.6H20 - DRK2SO4 = DRK2SO4 *EXP(35.6*TCF) -! DRKHSO4 = DRKHSO4 *EXP( 0.*TCF) -! DRKNO3 = DRKNO3 *EXP( 0.*TCF) - DRKCL = DRKCL *EXP(159.*TCF) - DRMGSO4 = DRMGSO4 *EXP(-714.45*TCF) - DRMGNO32 = DRMGNO32*EXP(230.2*TCF) ! KELLY & WEXLER (2005) FOR MGNO32.6H20 -! DRMGCL2 = DRMGCL2 *EXP(-1860.*TCF) - DRMGCL2 = DRMGCL2 *EXP(42.23*TCF) ! KELLY & WEXLER (2005) FOR MGCL2.6H20 -! - ENDIF -! -! *** CALCULATE MUTUAL DELIQUESCENCE RELATIVE HUMIDITIES **************** -! - DRMLCAB = 0.378D0 ! (NH4)3H(SO4)2 & NH4HSO4 - DRMLCAS = 0.690D0 ! (NH4)3H(SO4)2 & (NH4)2SO4 - DRMASAN = 0.600D0 ! (NH4)2SO4 & NH4NO3 - DRMG1 = 0.460D0 ! (NH4)2SO4, NH4NO3, NA2SO4, NH4CL - DRMG2 = 0.691D0 ! (NH4)2SO4, NA2SO4, NH4CL - DRMG3 = 0.697D0 ! (NH4)2SO4, NA2SO4 - DRMH1 = 0.240D0 ! NA2SO4, NANO3, NACL, NH4NO3, NH4CL - DRMH2 = 0.596D0 ! NA2SO4, NANO3, NACL, NH4CL - DRMI1 = 0.240D0 ! LC, NAHSO4, NH4HSO4, NA2SO4, (NH4)2SO4 - DRMI2 = 0.363D0 ! LC, NAHSO4, NA2SO4, (NH4)2SO4 - NO DATA - - DRMI3 = 0.610D0 ! LC, NA2SO4, (NH4)2SO4 - DRMQ1 = 0.494D0 ! (NH4)2SO4, NH4NO3, NA2SO4 - DRMR1 = 0.663D0 ! NA2SO4, NANO3, NACL - DRMR2 = 0.735D0 ! NA2SO4, NACL - DRMR3 = 0.673D0 ! NANO3, NACL - DRMR4 = 0.694D0 ! NA2SO4, NACL, NH4CL - DRMR5 = 0.731D0 ! NA2SO4, NH4CL - DRMR6 = 0.596D0 ! NA2SO4, NANO3, NH4CL - DRMR7 = 0.380D0 ! NA2SO4, NANO3, NACL, NH4NO3 - DRMR8 = 0.380D0 ! NA2SO4, NACL, NH4NO3 - DRMR9 = 0.494D0 ! NA2SO4, NH4NO3 - DRMR10 = 0.476D0 ! NA2SO4, NANO3, NH4NO3 - DRMR11 = 0.340D0 ! NA2SO4, NACL, NH4NO3, NH4CL - DRMR12 = 0.460D0 ! NA2SO4, NH4NO3, NH4CL - DRMR13 = 0.438D0 ! NA2SO4, NANO3, NH4NO3, NH4CL -! - DRMO1 = 0.460D0 ! (NH4)2SO4, NH4NO3, NH4Cl, NA2SO4, K2SO4, MGSO4 - DRMO2 = 0.691D0 ! (NH4)2SO4, NH4Cl, NA2SO4, K2SO4, MGSO4 - DRMO3 = 0.697D0 ! (NH4)2SO4, NA2SO4, K2SO4, MGSO4 - DRML1 = 0.240D0 ! K2SO4, MGSO4, KHSO4, NH4HSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC - DRML2 = 0.363D0 ! K2SO4, MGSO4, KHSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC - DRML3 = 0.610D0 ! K2SO4, MGSO4, KHSO4, (NH4)2SO4, NA2SO4, LC - DRMM1 = 0.240D0 ! K2SO4, NA2SO4, MGSO4, NH4CL, NACL, NANO3, NH4NO3 - DRMM2 = 0.596D0 ! K2SO4, NA2SO4, MGSO4, NH4CL, NACL, NANO3 - DRMP1 = 0.200D0 ! CA(NO3)2, CACL2, K2SO4, KNO3, KCL, MGSO4, MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL - DRMP2 = 0.240D0 ! CA(NO3)2, K2SO4, KNO3, KCL, MGSO4, MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL - DRMP3 = 0.240D0 ! CA(NO3)2, K2SO4, KNO3, KCL, MGSO4, MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL - DRMP4 = 0.240D0 ! K2SO4, KNO3, KCL, MGSO4, MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL - DRMP5 = 0.240D0 ! K2SO4, KNO3, KCL, MGSO4, NANO3, NACL, NH4NO3, NH4CL -!C - DRMV1 = 0.494D0 ! (NH4)2SO4, NH4NO3, NA2SO4, K2SO4, MGSO4 -!C -!C -! DRMO1 = 0.1D0 ! (NH4)2SO4, NH4NO3, NH4Cl, NA2SO4, K2SO4, MGSO4 -! DRMO2 = 0.1D0 ! (NH4)2SO4, NH4Cl, NA2SO4, K2SO4, MGSO4 -! DRMO3 = 0.1D0 ! (NH4)2SO4, NA2SO4, K2SO4, MGSO4 -! DRML1 = 0.1D0 ! K2SO4, MGSO4, KHSO4, NH4HSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC -! DRML2 = 0.1D0 ! K2SO4, MGSO4, KHSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC -! DRML3 = 0.1D0 ! K2SO4, MGSO4, KHSO4, (NH4)2SO4, NA2SO4, LC -! DRMM1 = 0.1D0 ! K2SO4, NA2SO4, MGSO4, NH4CL, NACL, NANO3, NH4NO3 -! DRMM2 = 0.1D0 ! K2SO4, NA2SO4, MGSO4, NH4CL, NACL, NANO3 -! DRMP1 = 0.1D0 ! CA(NO3)2, CACL2, K2SO4, KNO3, KCL, MGSO4, MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! DRMP2 = 0.1D0 ! CA(NO3)2, K2SO4, KNO3, KCL, MGSO4, MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! DRMP3 = 0.1D0 ! CA(NO3)2, K2SO4, KNO3, KCL, MGSO4, MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL -! DRMP4 = 0.1D0 ! K2SO4, KNO3, KCL, MGSO4, MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL -! DRMP5 = 0.1D0 ! K2SO4, KNO3, KCL, MGSO4, NANO3, NACL, NH4NO3, NH4CL -!C -! DRMV1 = 0.1D0 ! (NH4)2SO4, NH4NO3, NA2SO4, K2SO4, MGSO4 -! -!CC IF (INT(TEMP) .NE. 298) THEN -!CC T0 = 298.15d0 -!CC TCF = 1.0/TEMP - 1.0/T0 -!CC DRMLCAB = DRMLCAB*EXP( 507.506*TCF) -!CC DRMLCAS = DRMLCAS*EXP( 133.865*TCF) -!CC DRMASAN = DRMASAN*EXP(1269.068*TCF) -!CC DRMG1 = DRMG1 *EXP( 572.207*TCF) -!CC DRMG2 = DRMG2 *EXP( 58.166*TCF) -!CC DRMG3 = DRMG3 *EXP( 22.253*TCF) -!CC DRMH1 = DRMH1 *EXP(2116.542*TCF) -!CC DRMH2 = DRMH2 *EXP( 650.549*TCF) -!CC DRMI1 = DRMI1 *EXP( 565.743*TCF) -!CC DRMI2 = DRMI2 *EXP( 91.745*TCF) -!CC DRMI3 = DRMI3 *EXP( 161.272*TCF) -!CC DRMQ1 = DRMQ1 *EXP(1616.621*TCF) -!CC DRMR1 = DRMR1 *EXP( 292.564*TCF) -!CC DRMR2 = DRMR2 *EXP( 14.587*TCF) -!CC DRMR3 = DRMR3 *EXP( 307.907*TCF) -!CC DRMR4 = DRMR4 *EXP( 97.605*TCF) -!CC DRMR5 = DRMR5 *EXP( 98.523*TCF) -!CC DRMR6 = DRMR6 *EXP( 465.500*TCF) -!CC DRMR7 = DRMR7 *EXP( 324.425*TCF) -!CC DRMR8 = DRMR8 *EXP(2660.184*TCF) -!CC DRMR9 = DRMR9 *EXP(1617.178*TCF) -!CC DRMR10 = DRMR10 *EXP(1745.226*TCF) -!CC DRMR11 = DRMR11 *EXP(3691.328*TCF) -!CC DRMR12 = DRMR12 *EXP(1836.842*TCF) -!CC DRMR13 = DRMR13 *EXP(1967.938*TCF) -!CC ENDIF -! -! *** LIQUID PHASE ****************************************************** -! - CHNO3 = ZERO - CHCL = ZERO - CH2SO4 = ZERO - COH = ZERO - WATER = TINY -! - DO 20 I=1,NPAIR - MOLALR(I)=ZERO - GAMA(I) =0.1 - GAMIN(I) =GREAT - GAMOU(I) =GREAT - M0(I) =1d5 - 20 CONTINUE -! - DO 30 I=1,NPAIR - GAMA(I) = 0.1d0 - 30 CONTINUE -! - DO 40 I=1,NIONS - MOLAL(I)=ZERO -40 CONTINUE - COH = ZERO -! - DO 50 I=1,NGASAQ - GASAQ(I)=ZERO -50 CONTINUE -! -! *** SOLID PHASE ******************************************************* -! - CNH42S4= ZERO - CNH4HS4= ZERO - CNACL = ZERO - CNA2SO4= ZERO - CNANO3 = ZERO - CNH4NO3= ZERO - CNH4CL = ZERO - CNAHSO4= ZERO - CLC = ZERO - CCASO4 = ZERO - CCANO32= ZERO - CCACL2 = ZERO - CK2SO4 = ZERO - CKHSO4 = ZERO - CKNO3 = ZERO - CKCL = ZERO - CMGSO4 = ZERO - CMGNO32= ZERO - CMGCL2 = ZERO -! -! *** GAS PHASE ********************************************************* -! - GNH3 = ZERO - GHNO3 = ZERO - GHCL = ZERO -! -! *** CALCULATE ZSR PARAMETERS ****************************************** -! - IRH = MIN (INT(RH*NZSR+0.5),NZSR) ! Position in ZSR arrays - IRH = MAX (IRH, 1) -! - M0(01) = AWSC(IRH) ! NACl -! IF (M0(01) .LT. 100.0) THEN -! IC = M0(01) -! CALL KMTAB(IC,298.0, GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),GII,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(01) = M0(01)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(02) = AWSS(IRH) ! (NA)2SO4 -! IF (M0(02) .LT. 100.0) THEN -! IC = 3.0*M0(02) -! CALL KMTAB(IC,298.0, XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,GII,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(02) = M0(02)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(03) = AWSN(IRH) ! NANO3 -! IF (M0(03) .LT. 100.0) THEN -! IC = M0(03) -! CALL KMTAB(IC,298.0, XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,GII,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(03) = M0(03)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(04) = AWAS(IRH) ! (NH4)2SO4 -! IF (M0(04) .LT. 100.0) THEN -! IC = 3.0*M0(04) -! CALL KMTAB(IC,298.0, XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,GII,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(04) = M0(04)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(05) = AWAN(IRH) ! NH4NO3 -! IF (M0(05) .LT. 100.0) THEN -! IC = M0(05) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,GII,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(05) = M0(05)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(06) = AWAC(IRH) ! NH4CL -! IF (M0(06) .LT. 100.0) THEN -! IC = M0(06) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,GII,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(06) = M0(06)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(07) = AWSA(IRH) ! 2H-SO4 -! IF (M0(07) .LT. 100.0) THEN -! IC = 3.0*M0(07) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,GII,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(07) = M0(07)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(08) = AWSA(IRH) ! H-HSO4 -!CC IF (M0(08) .LT. 100.0) THEN ! These are redundant, because M0(8) is not used -!CC IC = M0(08) -!CC CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX) -!CC CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX,XX) -!CCCCC CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,GII,XX,XX,XX,XX) -!CC M0(08) = M0(08)*EXP(LN10*(GI0-GII)) -!CC ENDIF -! - M0(09) = AWAB(IRH) ! NH4HSO4 -! IF (M0(09) .LT. 100.0) THEN -! IC = M0(09) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,GI0,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,GII,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(09) = M0(09)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(12) = AWSB(IRH) ! NAHSO4 -! IF (M0(12) .LT. 100.0) THEN -! IC = M0(12) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,GI0, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,GII, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(12) = M0(12)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(13) = AWLC(IRH) ! (NH4)3H(SO4)2 -! IF (M0(13) .LT. 100.0) THEN -! IC = 4.0*M0(13) -! CALL KMTAB(IC,298.0, XX,XX,XX,GI0,XX,XX,XX,XX,GII,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! G130 = 0.2*(3.0*GI0+2.0*GII) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,GI0,XX,XX,XX,XX,GII,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,XX) -! G13I = 0.2*(3.0*GI0+2.0*GII) -! M0(13) = M0(13)*EXP(LN10*SNGL(G130-G13I)) -! ENDIF -! - M0(15) = AWCN(IRH) ! CA(NO3)2 -! IF (M0(15) .LT. 100.0) THEN -! IC = M0(15) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & GI0,XX,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & GII,XX,XX,XX,XX,XX,XX,XX,XX) -! M0(15) = M0(15)*EXP(LN10*(GI0-GII)) -! ENDIF -!C - M0(16) = AWCC(IRH) ! CACl2 -! IF (M0(16) .LT. 100.0) THEN -! IC = M0(16) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,GI0,XX,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,GII,XX,XX,XX,XX,XX,XX,XX) -! M0(16) = M0(16)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(17) = AWPS(IRH) ! K2SO4 -! IF (M0(17) .LT. 100.0) THEN -! IC = M0(17) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,GI0,XX,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,GII,XX,XX,XX,XX,XX,XX) -! M0(17) = M0(17)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(18) = AWPB(IRH) ! KHSO4 -! IF (M0(18) .LT. 100.0) THEN -! IC = M0(18) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,GI0,XX,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,GII,XX,XX,XX,XX,XX) -! M0(18) = M0(18)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(19) = AWPN(IRH) ! KNO3 -! IF (M0(19) .LT. 100.0) THEN -! IC = M0(19) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,GI0,XX,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,GII,XX,XX,XX,XX) -! M0(19) = M0(19)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(20) = AWPC(IRH) ! KCl -! IF (M0(20) .LT. 100.0) THEN -! IC = M0(20) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,GI0,XX,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,GII,XX,XX,XX) -! M0(20) = M0(20)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(21) = AWMS(IRH) ! MGSO4 -! IF (M0(21) .LT. 100.0) THEN -! IC = M0(21) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,GI0,XX,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,GII,XX,XX) -! M0(21) = M0(21)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(22) = AWMN(IRH) ! MG(NO3)2 -! IF (M0(22) .LT. 100.0) THEN -! IC = M0(22) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,GI0,XX) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,GII,XX) -! M0(22) = M0(22)*EXP(LN10*(GI0-GII)) -! ENDIF -! - M0(23) = AWMC(IRH) ! MGCL2 -! IF (M0(23) .LT. 100.0) THEN -! IC = M0(23) -! CALL KMTAB(IC,298.0, XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,GI0) -! CALL KMTAB(IC,SNGL(TEMP),XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX,XX, -! & XX,XX,XX,XX,XX,XX,XX,XX,GII) -! M0(23) = M0(23)*EXP(LN10*(GI0-GII)) -! ENDIF -! -! *** OTHER INITIALIZATIONS ********************************************* -! - ICLACT = 0 - CALAOU = .TRUE. - CALAIN = .TRUE. - FRST = .TRUE. - SCASE = '??' - SULRATW = 2.0 - SO4RAT = 2.0 - CRNARAT = 2.0 - CRRAT = 2.0 - NOFER = 0 - STKOFL =.FALSE. - DO 60 I=1,NERRMX - ERRSTK(I) =-999 - ERRMSG(I) = 'MESSAGE N/A' - 60 CONTINUE -! -! *** END OF SUBROUTINE INIT4 ******************************************* -! - END SUBROUTINE INIT4 - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE ADJUST -! *** ADJUSTS FOR MASS BALANCE BETWEEN VOLATILE SPECIES AND SULFATE -! FIRST CALCULATE THE EXCESS OF EACH PRECURSOR, AND IF IT EXISTS, THEN -! ADJUST SEQUENTIALY AEROSOL PHASE SPECIES WHICH CONTAIN THE EXCESS -! PRECURSOR. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE ADJUST (WI) - Real(kind=fp) :: WI(*) - Real(kind=fp) :: ExNH4, ExCl, ExNO3, ExS4 -! -! *** FOR AMMONIUM ***************************************************** -! - IF (IPROB.EQ.0) THEN ! Calculate excess (solution - input) - EXNH4 = GNH3 + MOLAL(3) + CNH4CL + CNH4NO3 + CNH4HS4 - & + 2D0*CNH42S4 + 3D0*CLC - & -WI(3) - ELSE - EXNH4 = MOLAL(3) + CNH4CL + CNH4NO3 + CNH4HS4 + 2D0*CNH42S4 - & + 3D0*CLC - & -WI(3) - - ENDIF - EXNH4 = MAX(EXNH4,ZERO) - IF (EXNH4.LT.TINY) GOTO 20 ! No excess NH4, go to next precursor -! - IF (MOLAL(3).GT.EXNH4) THEN ! Adjust aqueous phase NH4 - MOLAL(3) = MOLAL(3) - EXNH4 - GOTO 20 - ELSE - EXNH4 = EXNH4 - MOLAL(3) - MOLAL(3) = ZERO - ENDIF -! - IF (CNH4CL.GT.EXNH4) THEN ! Adjust NH4Cl(s) - CNH4CL = CNH4CL - EXNH4 ! more solid than excess - GHCL = GHCL + EXNH4 ! evaporate Cl to gas phase - GOTO 20 - ELSE ! less solid than excess - GHCL = GHCL + CNH4CL ! evaporate into gas phase - EXNH4 = EXNH4 - CNH4CL ! reduce excess - CNH4CL = ZERO ! zero salt concentration - ENDIF -! - IF (CNH4NO3.GT.EXNH4) THEN ! Adjust NH4NO3(s) - CNH4NO3 = CNH4NO3- EXNH4 ! more solid than excess - GHNO3 = GHNO3 + EXNH4 ! evaporate NO3 to gas phase - GOTO 20 - ELSE ! less solid than excess - GHNO3 = GHNO3 + CNH4NO3! evaporate into gas phase - EXNH4 = EXNH4 - CNH4NO3! reduce excess - CNH4NO3 = ZERO ! zero salt concentration - ENDIF -! - IF (CLC.GT.3d0*EXNH4) THEN ! Adjust (NH4)3H(SO4)2(s) - CLC = CLC - EXNH4/3d0 ! more solid than excess - GOTO 20 - ELSE ! less solid than excess - EXNH4 = EXNH4 - 3d0*CLC ! reduce excess - CLC = ZERO ! zero salt concentration - ENDIF -! - IF (CNH4HS4.GT.EXNH4) THEN ! Adjust NH4HSO4(s) - CNH4HS4 = CNH4HS4- EXNH4 ! more solid than excess - GOTO 20 - ELSE ! less solid than excess - EXNH4 = EXNH4 - CNH4HS4! reduce excess - CNH4HS4 = ZERO ! zero salt concentration - ENDIF -! - IF (CNH42S4.GT.EXNH4) THEN ! Adjust (NH4)2SO4(s) - CNH42S4 = CNH42S4- EXNH4 ! more solid than excess - GOTO 20 - ELSE ! less solid than excess - EXNH4 = EXNH4 - CNH42S4! reduce excess - CNH42S4 = ZERO ! zero salt concentration - ENDIF -! -! *** FOR NITRATE ****************************************************** -! - 20 IF (IPROB.EQ.0) THEN ! Calculate excess (solution - input) - EXNO3 = GHNO3 + MOLAL(7) + CNH4NO3 - & -WI(4) - ELSE - EXNO3 = MOLAL(7) + CNH4NO3 - & -WI(4) - ENDIF - EXNO3 = MAX(EXNO3,ZERO) - IF (EXNO3.LT.TINY) GOTO 30 ! No excess NO3, go to next precursor -! - IF (MOLAL(7).GT.EXNO3) THEN ! Adjust aqueous phase NO3 - MOLAL(7) = MOLAL(7) - EXNO3 - GOTO 30 - ELSE - EXNO3 = EXNO3 - MOLAL(7) - MOLAL(7) = ZERO - ENDIF -! - IF (CNH4NO3.GT.EXNO3) THEN ! Adjust NH4NO3(s) - CNH4NO3 = CNH4NO3- EXNO3 ! more solid than excess - GNH3 = GNH3 + EXNO3 ! evaporate NO3 to gas phase - GOTO 30 - ELSE ! less solid than excess - GNH3 = GNH3 + CNH4NO3! evaporate into gas phase - EXNO3 = EXNO3 - CNH4NO3! reduce excess - CNH4NO3 = ZERO ! zero salt concentration - ENDIF -! -! *** FOR CHLORIDE ***************************************************** -! - 30 IF (IPROB.EQ.0) THEN ! Calculate excess (solution - input) - EXCl = GHCL + MOLAL(4) + CNH4CL - & -WI(5) - ELSE - EXCl = MOLAL(4) + CNH4CL - & -WI(5) - ENDIF - EXCl = MAX(EXCl,ZERO) - IF (EXCl.LT.TINY) GOTO 40 ! No excess Cl, go to next precursor -! - IF (MOLAL(4).GT.EXCL) THEN ! Adjust aqueous phase Cl - MOLAL(4) = MOLAL(4) - EXCL - GOTO 40 - ELSE - EXCL = EXCL - MOLAL(4) - MOLAL(4) = ZERO - ENDIF -! - IF (CNH4CL.GT.EXCL) THEN ! Adjust NH4Cl(s) - CNH4CL = CNH4CL - EXCL ! more solid than excess - GHCL = GHCL + EXCL ! evaporate Cl to gas phase - GOTO 40 - ELSE ! less solid than excess - GHCL = GHCL + CNH4CL ! evaporate into gas phase - EXCL = EXCL - CNH4CL ! reduce excess - CNH4CL = ZERO ! zero salt concentration - ENDIF -! -! *** FOR SULFATE ****************************************************** -! - 40 EXS4 = MOLAL(5) + MOLAL(6) + 2.d0*CLC + CNH42S4 + CNH4HS4 + - & CNA2SO4 + CNAHSO4 - WI(2) - EXS4 = MAX(EXS4,ZERO) ! Calculate excess (solution - input) - IF (EXS4.LT.TINY) GOTO 50 ! No excess SO4, return -! - IF (MOLAL(6).GT.EXS4) THEN ! Adjust aqueous phase HSO4 - MOLAL(6) = MOLAL(6) - EXS4 - GOTO 50 - ELSE - EXS4 = EXS4 - MOLAL(6) - MOLAL(6) = ZERO - ENDIF -! - IF (MOLAL(5).GT.EXS4) THEN ! Adjust aqueous phase SO4 - MOLAL(5) = MOLAL(5) - EXS4 - GOTO 50 - ELSE - EXS4 = EXS4 - MOLAL(5) - MOLAL(5) = ZERO - ENDIF -! - IF (CLC.GT.2d0*EXS4) THEN ! Adjust (NH4)3H(SO4)2(s) - CLC = CLC - EXS4/2d0 ! more solid than excess - GNH3 = GNH3 +1.5d0*EXS4! evaporate NH3 to gas phase - GOTO 50 - ELSE ! less solid than excess - GNH3 = GNH3 + 1.5d0*CLC! evaporate NH3 to gas phase - EXS4 = EXS4 - 2d0*CLC ! reduce excess - CLC = ZERO ! zero salt concentration - ENDIF -! - IF (CNH4HS4.GT.EXS4) THEN ! Adjust NH4HSO4(s) - CNH4HS4 = CNH4HS4 - EXS4 ! more solid than excess - GNH3 = GNH3 + EXS4 ! evaporate NH3 to gas phase - GOTO 50 - ELSE ! less solid than excess - GNH3 = GNH3 + CNH4HS4 ! evaporate NH3 to gas phase - EXS4 = EXS4 - CNH4HS4 ! reduce excess - CNH4HS4 = ZERO ! zero salt concentration - ENDIF -! - IF (CNH42S4.GT.EXS4) THEN ! Adjust (NH4)2SO4(s) - CNH42S4 = CNH42S4- EXS4 ! more solid than excess - GNH3 = GNH3 + 2.d0*EXS4! evaporate NH3 to gas phase - GOTO 50 - ELSE ! less solid than excess - GNH3 = GNH3+2.d0*CNH42S4 ! evaporate NH3 to gas phase - EXS4 = EXS4 - CNH42S4 ! reduce excess - CNH42S4 = ZERO ! zero salt concentration - ENDIF -! -! *** RETURN ********************************************************** -! - 50 RETURN - END SUBROUTINE ADJUST - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** FUNCTION GETASR -! *** CALCULATES THE LIMITING NH4+/SO4 RATIO OF A SULFATE POOR SYSTEM -! (i.e. SULFATE RATIO = 2.0) FOR GIVEN SO4 LEVEL AND RH -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION GETASR (SO4I, RHI) - !PARAMETER (NSO4S=14, NRHS=20, NASRD=NSO4S*NRHS) - !Real(kind=fp) :: SO4I, RHI - Real(kind=fp) :: SO4I, RHI - Integer :: A1, IA1, INDS, INDR, INDSL, INDSH, IPOSL, IPOSH, IRH - Real(kind=fp) :: WF, RAT -!CC -!CC *** SOLVE USING FULL COMPUTATIONS, NOT LOOK-UP TABLES ************** -!CC -!CC W(2) = WAER(2) -!CC W(3) = WAER(2)*2.0001D0 -!CC CALL CALCA2 -!CC SULRATW = MOLAL(3)/WAER(2) -!CC CALL INIT1 (WI, RHI, TEMPI) ! Re-initialize COMMON BLOCK -! -! *** CALCULATE INDICES ************************************************ -! - RAT = SO4I/1.E-9 - A1 = INT(LOG10(RAT)) ! Magnitude of RAT - IA1 = INT(RAT/2.5/10.0**A1) -! - INDS = 4.0*A1 + MIN(IA1,4) - INDS = MIN(MAX(0, INDS), NSO4S-1) + 1 ! SO4 component of IPOS -! - INDR = INT(99.0-RHI*100.0) + 1 - INDR = MIN(MAX(1, INDR), NRHS) ! RH component of IPOS -! -! *** GET VALUE AND RETURN ********************************************* -! - INDSL = INDS - INDSH = MIN(INDSL+1, NSO4S) - IPOSL = (INDSL-1)*NRHS + INDR ! Low position in array - IPOSH = (INDSH-1)*NRHS + INDR ! High position in array -! - WF = (SO4I-ASSO4(INDSL))/(ASSO4(INDSH)-ASSO4(INDSL) + 1e-7) - WF = MIN(MAX(WF, 0.0), 1.0) -! - GETASR = WF*ASRAT(IPOSH) + (1.0-WF)*ASRAT(IPOSL) -! -! *** END OF FUNCTION GETASR ******************************************* -! - RETURN - END FUNCTION GETASR - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCHA -! *** CALCULATES CHLORIDES SPECIATION -! -! HYDROCHLORIC ACID IN THE LIQUID PHASE IS ASSUMED A MINOR SPECIES, -! AND DOES NOT SIGNIFICANTLY PERTURB THE HSO4-SO4 EQUILIBRIUM. THE -! HYDROCHLORIC ACID DISSOLVED IS CALCULATED FROM THE -! HCL(G) <-> (H+) + (CL-) -! EQUILIBRIUM, USING THE (H+) FROM THE SULFATES. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCHA() - !Real(kind=fp) :: KAPA - Real(kind=fp) :: KAPA, X, DELT, ALFA, DIAK -!C CHARACTER ERRINF*40 -! -! *** CALCULATE HCL DISSOLUTION ***************************************** -! - X = W(5) - DELT = 0.0d0 - IF (WATER.GT.TINY) THEN - KAPA = MOLAL(1) - ALFA = XK3*R*TEMP*(WATER/GAMA(11))**2.0 - DIAK = SQRT( (KAPA+ALFA)**2.0 + 4.0*ALFA*X) - DELT = 0.5*(-(KAPA+ALFA) + DIAK) -!C IF (DELT/KAPA.GT.0.1d0) THEN -!C WRITE (ERRINF,'(1PE10.3)') DELT/KAPA*100.0 -!C CALL PUSHERR (0033, ERRINF) -!C ENDIF - ENDIF -! -! *** CALCULATE HCL SPECIATION IN THE GAS PHASE ************************* -! - GHCL = MAX(X-DELT, 0.0d0) ! GAS HCL -! -! *** CALCULATE HCL SPECIATION IN THE LIQUID PHASE ********************** -! - MOLAL(4) = DELT ! CL- - MOLAL(1) = MOLAL(1) + DELT ! H+ -! - RETURN -! -! *** END OF SUBROUTINE CALCHA ****************************************** -! - END SUBROUTINE CALCHA - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCHAP -! *** CALCULATES CHLORIDES SPECIATION -! -! HYDROCHLORIC ACID IN THE LIQUID PHASE IS ASSUMED A MINOR SPECIES, -! THAT DOES NOT SIGNIFICANTLY PERTURB THE HSO4-SO4 EQUILIBRIUM. -! THE HYDROCHLORIC ACID DISSOLVED IS CALCULATED FROM THE -! HCL(G) -> HCL(AQ) AND HCL(AQ) -> (H+) + (CL-) -! EQUILIBRIA, USING (H+) FROM THE SULFATES. -! -! THIS IS THE VERSION USED BY THE INVERSE PROBLEM SOVER -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCHAP() - Real(kind=fp) :: DELT, ALFA -! -! *** IS THERE A LIQUID PHASE? ****************************************** -! - IF (WATER.LE.TINY) RETURN -! -! *** CALCULATE HCL SPECIATION IN THE GAS PHASE ************************* -! - CALL CALCCLAQ (MOLAL(4), MOLAL(1), DELT) - ALFA = XK3*R*TEMP*(WATER/GAMA(11))**2.0 - GASAQ(3) = DELT - MOLAL(1) = MOLAL(1) - DELT - MOLAL(4) = MOLAL(4) - DELT - GHCL = MOLAL(1)*MOLAL(4)/ALFA -! - RETURN -! -! *** END OF SUBROUTINE CALCHAP ***************************************** -! - END SUBROUTINE CALCHAP - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCNA -! *** CALCULATES NITRATES SPECIATION -! -! NITRIC ACID IN THE LIQUID PHASE IS ASSUMED A MINOR SPECIES, THAT -! DOES NOT SIGNIFICANTLY PERTURB THE HSO4-SO4 EQUILIBRIUM. THE NITRIC -! ACID DISSOLVED IS CALCULATED FROM THE HNO3(G) -> (H+) + (NO3-) -! EQUILIBRIUM, USING THE (H+) FROM THE SULFATES. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCNA() - Real(kind=fp) :: KAPA, DELT, ALFA, DIAK, X -!C CHARACTER ERRINF*40 -! -! *** CALCULATE HNO3 DISSOLUTION **************************************** -! - X = W(4) - DELT = 0.0d0 - IF (WATER.GT.TINY) THEN - KAPA = MOLAL(1) - ALFA = XK4*R*TEMP*(WATER/GAMA(10))**2.0 - DIAK = SQRT( (KAPA+ALFA)**2.0 + 4.0*ALFA*X) - DELT = 0.5*(-(KAPA+ALFA) + DIAK) -!C IF (DELT/KAPA.GT.0.1d0) THEN -!C WRITE (ERRINF,'(1PE10.3)') DELT/KAPA*100.0 -!C CALL PUSHERR (0019, ERRINF) ! WARNING ERROR: NO SOLUTION -!C ENDIF - ENDIF -! -! *** CALCULATE HNO3 SPECIATION IN THE GAS PHASE ************************ -! - GHNO3 = MAX(X-DELT, 0.0d0) ! GAS HNO3 -! -! *** CALCULATE HNO3 SPECIATION IN THE LIQUID PHASE ********************* -! - MOLAL(7) = DELT ! NO3- - MOLAL(1) = MOLAL(1) + DELT ! H+ -! - RETURN -! -! *** END OF SUBROUTINE CALCNA ****************************************** -! - END SUBROUTINE CALCNA - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCNAP -! *** CALCULATES NITRATES SPECIATION -! -! NITRIC ACID IN THE LIQUID PHASE IS ASSUMED A MINOR SPECIES, THAT -! DOES NOT SIGNIFICANTLY PERTURB THE HSO4-SO4 EQUILIBRIUM. THE NITRIC -! ACID DISSOLVED IS CALCULATED FROM THE HNO3(G) -> HNO3(AQ) AND -! HNO3(AQ) -> (H+) + (CL-) EQUILIBRIA, USING (H+) FROM THE SULFATES. -! -! THIS IS THE VERSION USED BY THE INVERSE PROBLEM SOVER -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCNAP() - Real(kind=fp) :: KAPA, DELT, ALFA -! -! *** IS THERE A LIQUID PHASE? ****************************************** -! - IF (WATER.LE.TINY) RETURN -! -! *** CALCULATE HNO3 SPECIATION IN THE GAS PHASE ************************ -! - CALL CALCNIAQ (MOLAL(7), MOLAL(1), DELT) - ALFA = XK4*R*TEMP*(WATER/GAMA(10))**2.0 - GASAQ(3) = DELT - MOLAL(1) = MOLAL(1) - DELT - MOLAL(7) = MOLAL(7) - DELT - GHNO3 = MOLAL(1)*MOLAL(7)/ALFA - - write (*,*) ALFA, MOLAL(1), MOLAL(7), GHNO3, DELT -! - RETURN -! -! *** END OF SUBROUTINE CALCNAP ***************************************** -! - END SUBROUTINE CALCNAP - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCNH3 -! *** CALCULATES AMMONIA IN GAS PHASE -! -! AMMONIA IN THE GAS PHASE IS ASSUMED A MINOR SPECIES, THAT -! DOES NOT SIGNIFICANTLY PERTURB THE AEROSOL EQUILIBRIUM. -! AMMONIA GAS IS CALCULATED FROM THE NH3(g) + (H+)(l) <==> (NH4+)(l) -! EQUILIBRIUM, USING (H+), (NH4+) FROM THE AEROSOL SOLUTION. -! -! THIS IS THE VERSION USED BY THE DIRECT PROBLEM -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCNH3() - Real(kind=fp) :: A1, BB, CC, DIAK, PSI -! -! *** IS THERE A LIQUID PHASE? ****************************************** -! - IF (WATER.LE.TINY) RETURN -! -! *** CALCULATE NH3 SUBLIMATION ***************************************** -! - A1 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - CHI1 = MOLAL(3) - CHI2 = MOLAL(1) -! - BB =(CHI2 + ONE/A1) ! a=1; b!=1; c!=1 - CC =-CHI1/A1 - DIAK = SQRT(BB*BB - 4.0*CC) ! Always > 0 - PSI = 0.5*(-BB + DIAK) ! One positive root - PSI = MAX(TINY, MIN(PSI,CHI1))! Constrict in acceptible range -! -! *** CALCULATE NH3 SPECIATION IN THE GAS PHASE ************************* -! - GNH3 = PSI ! GAS HNO3 -! -! *** CALCULATE NH3 AFFECT IN THE LIQUID PHASE ************************** -! - MOLAL(3) = CHI1 - PSI ! NH4+ - MOLAL(1) = CHI2 + PSI ! H+ -! - RETURN -! -! *** END OF SUBROUTINE CALCNH3 ***************************************** -! - END SUBROUTINE CALCNH3 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCNH3P -! *** CALCULATES AMMONIA IN GAS PHASE -! -! AMMONIA GAS IS CALCULATED FROM THE NH3(g) + (H+)(l) <==> (NH4+)(l) -! EQUILIBRIUM, USING (H+), (NH4+) FROM THE AEROSOL SOLUTION. -! -! THIS IS THE VERSION USED BY THE INVERSE PROBLEM SOLVER -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCNH3P() - Real(kind=fp) :: A1 -! -! *** IS THERE A LIQUID PHASE? ****************************************** -! - IF (WATER.LE.TINY) RETURN -! -! *** CALCULATE NH3 GAS PHASE CONCENTRATION ***************************** -! - A1 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - GNH3 = MOLAL(3)/MOLAL(1)/A1 -! - RETURN -! -! *** END OF SUBROUTINE CALCNH3P **************************************** -! - END SUBROUTINE CALCNH3P - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCNHA -! -! THIS SUBROUTINE CALCULATES THE DISSOLUTION OF HCL, HNO3 AT -! THE PRESENCE OF (H,SO4). HCL, HNO3 ARE CONSIDERED MINOR SPECIES, -! THAT DO NOT SIGNIFICANTLY AFFECT THE EQUILIBRIUM POINT. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCNHA() - CHARACTER*40 :: ERRINF - Real(kind=fp) :: A3, A4, DELCL, DELNO, OMEGA - Real(kind=fp) :: C1, C2, C3, M1, M2, M3 - Integer :: ISLV -! -! *** SPECIAL CASE; WATER=ZERO ****************************************** -! - IF (WATER.LE.TINY) THEN - GOTO 55 -! -! *** SPECIAL CASE; HCL=HNO3=ZERO *************************************** -! - ELSEIF (W(5).LE.TINY .AND. W(4).LE.TINY) THEN - GOTO 60 -! -! *** SPECIAL CASE; HCL=ZERO ******************************************** -! - ELSE IF (W(5).LE.TINY) THEN - CALL CALCNA ! CALL HNO3 DISSOLUTION ROUTINE - GOTO 60 -! -! *** SPECIAL CASE; HNO3=ZERO ******************************************* -! - ELSE IF (W(4).LE.TINY) THEN - CALL CALCHA ! CALL HCL DISSOLUTION ROUTINE - GOTO 60 - ENDIF -! -! *** CALCULATE EQUILIBRIUM CONSTANTS *********************************** -! - A3 = XK4*R*TEMP*(WATER/GAMA(10))**2.0 ! HNO3 - A4 = XK3*R*TEMP*(WATER/GAMA(11))**2.0 ! HCL -! -! *** CALCULATE CUBIC EQUATION COEFFICIENTS ***************************** -! - DELCL = ZERO - DELNO = ZERO -! - OMEGA = MOLAL(1) ! H+ - CHI3 = W(4) ! HNO3 - CHI4 = W(5) ! HCL -! - C1 = A3*CHI3 - C2 = A4*CHI4 - C3 = A3 - A4 -! - M1 = (C1 + C2 + (OMEGA+A4)*C3)/C3 - M2 = ((OMEGA+A4)*C2 - A4*C3*CHI4)/C3 - M3 =-A4*C2*CHI4/C3 -! -! *** CALCULATE ROOTS *************************************************** -! - CALL POLY3 (M1, M2, M3, DELCL, ISLV) ! HCL DISSOLUTION - IF (ISLV.NE.0) THEN - DELCL = TINY ! TINY AMOUNTS OF HCL ASSUMED WHEN NO ROOT -! WRITE (ERRINF,'(1PE7.1)') TINY -! CALL PUSHERR (0022, ERRINF) ! WARNING ERROR: NO SOLUTION - ENDIF - DELCL = MIN(DELCL, CHI4) -! - DELNO = C1*DELCL/(C2 + C3*DELCL) - DELNO = MIN(DELNO, CHI3) -! - IF (DELCL.LT.ZERO .OR. DELNO.LT.ZERO .OR. - & DELCL.GT.CHI4 .OR. DELNO.GT.CHI3 ) THEN - DELCL = TINY ! TINY AMOUNTS OF HCL ASSUMED WHEN NO ROOT - DELNO = TINY -! WRITE (ERRINF,'(1PE7.1)') TINY -! CALL PUSHERR (0022, ERRINF) ! WARNING ERROR: NO SOLUTION - ENDIF -!CC -!CC *** COMPARE DELTA TO TOTAL H+ ; ESTIMATE EFFECT TO HSO4 *************** -!CC -!C IF ((DELCL+DELNO)/MOLAL(1).GT.0.1d0) THEN -!C WRITE (ERRINF,'(1PE10.3)') (DELCL+DELNO)/MOLAL(1)*100.0 -!C CALL PUSHERR (0021, ERRINF) -!C ENDIF -! -! *** EFFECT ON LIQUID PHASE ******************************************** -! -50 MOLAL(1) = MOLAL(1) + (DELNO+DELCL) ! H+ CHANGE - MOLAL(4) = MOLAL(4) + DELCL ! CL- CHANGE - MOLAL(7) = MOLAL(7) + DELNO ! NO3- CHANGE -! -! *** EFFECT ON GAS PHASE *********************************************** -! -55 GHCL = MAX(W(5) - MOLAL(4), TINY) - GHNO3 = MAX(W(4) - MOLAL(7), TINY) -! -60 RETURN -! -! *** END OF SUBROUTINE CALCNHA ***************************************** -! - END SUBROUTINE CALCNHA - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCNHP -! -! THIS SUBROUTINE CALCULATES THE GAS PHASE NITRIC AND HYDROCHLORIC -! ACID. CONCENTRATIONS ARE CALCULATED FROM THE DISSOLUTION -! EQUILIBRIA, USING (H+), (Cl-), (NO3-) IN THE AEROSOL PHASE. -! -! THIS IS THE VERSION USED BY THE INVERSE PROBLEM SOLVER -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCNHP() - Real(kind=fp) :: A3, A4, DELT -! -! *** IS THERE A LIQUID PHASE? ****************************************** -! - IF (WATER.LE.TINY) RETURN -! -! *** CALCULATE EQUILIBRIUM CONSTANTS *********************************** -! - A3 = XK3*R*TEMP*(WATER/GAMA(11))**2.0 - A4 = XK4*R*TEMP*(WATER/GAMA(10))**2.0 - MOLAL(1) = MOLAL(1) + WAER(4) + WAER(5) ! H+ increases because NO3, Cl are added. -! -! *** CALCULATE CONCENTRATIONS ****************************************** -! *** ASSUME THAT 'DELT' FROM HNO3 >> 'DELT' FROM HCL -! - CALL CALCNIAQ (WAER(4), MOLAL(1)+MOLAL(7)+MOLAL(4), DELT) - MOLAL(1) = MOLAL(1) - DELT - MOLAL(7) = WAER(4) - DELT ! NO3- = Waer(4) minus any turned into (HNO3aq) - GASAQ(3) = DELT -! - CALL CALCCLAQ (WAER(5), MOLAL(1)+MOLAL(7)+MOLAL(4), DELT) - MOLAL(1) = MOLAL(1) - DELT - MOLAL(4) = WAER(5) - DELT ! Cl- = Waer(4) minus any turned into (HNO3aq) - GASAQ(2) = DELT -! - GHNO3 = MOLAL(1)*MOLAL(7)/A4 - GHCL = MOLAL(1)*MOLAL(4)/A3 -! - RETURN -! -! *** END OF SUBROUTINE CALCNHP ***************************************** -! - END SUBROUTINE CALCNHP - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCHCO3 -! *** CORRECTS FOR H+ WHEN CRUSTALS ARE IN EXCESS -! -! CARBONATES ARE IN EXCESS, HCO3- IS ASSUMED A MINOR SPECIES, -! THE H+ CONCENTRATION IS CALCULATED FROM THE -! CO2(aq) + H2O <-> (HCO3-) + (H+) -! HCO3- <-> (H+) + (CO3--) EQUILIBRIUM. -! THE CO3-- CONCENTRATION IS ASSUMED NEGLIGIBLE WITH RESPECT TO HCO3- -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! -! SUBROUTINE CALCHCO3() -! Real(kind=fp) :: KAPA -!CC CHARACTER ERRINF*40 -!C -!C *** SPECIAL CASE; WATER=ZERO ****************************************** -!C -! IF (WATER.LE.TINY) THEN -! GOTO 521 -! ENDIF -!C -!C *** CALCULATE CO2 DISSOLUTION ***************************************** -!C -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT = 0.0d0 -!C DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -! KAPA = MOLAL(1) -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS *********************************** -!C -! ALFA = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -!C ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -!C *** CALCULATE CUBIC EQUATION COEFFICIENTS ***************************** -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS HCO3- -!C -! BB =-(KAPA + X + ALFA) -! CC = KAPA*X -! DD = BB*BB - 4.0*CC -!C -! IF (DD.GE.ZERO) THEN -! SQDD = SQRT(DD) -! DELT = 0.5*(-BB - SQDD) -! ELSE -! DELT = ZERO -! ENDIF -! -! ENDIF -!C -!C *** CALCULATE H+ ***************************************************** -!C -! MOLAL(1) = KAPA - DELT ! H+ -!C -!521 RETURN -!C -!C *** END OF SUBROUTINE CALCHCO3 *************************************** -!C -! END SUBROUTINE CALCHCO3 -!C - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCAMAQ -! *** THIS SUBROUTINE CALCULATES THE NH3(aq) GENERATED FROM (H,NH4+). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCAMAQ (NH4I, OHI, DELT) - !Real(kind=fp) :: NH4I - Real(kind=fp) :: A22, AKW, OM1, OM2, BB, CC, DD, DEL1, DEL2 - Real(kind=fp) :: NH4I, OHI, DELT -!C CHARACTER ERRINF*40 -! -! *** EQUILIBRIUM CONSTANTS -! - A22 = XK22/XKW/WATER*(GAMA(8)/GAMA(9))**2. ! GAMA(NH3) ASSUMED 1 - AKW = XKW *RH*WATER*WATER -! -! *** FIND ROOT -! - OM1 = NH4I - OM2 = OHI - BB =-(OM1+OM2+A22*AKW) - CC = OM1*OM2 - DD = SQRT(BB*BB-4.0*CC) - - DEL1 = 0.5D0*(-BB - DD) - DEL2 = 0.5D0*(-BB + DD) -! -! *** GET APPROPRIATE ROOT. -! - IF (DEL1.LT.ZERO) THEN - IF (DEL2.GT.NH4I .OR. DEL2.GT.OHI) THEN - DELT = ZERO - ELSE - DELT = DEL2 - ENDIF - ELSE - DELT = DEL1 - ENDIF -!C -!C *** COMPARE DELTA TO TOTAL NH4+ ; ESTIMATE EFFECT ********************* -!C -!C IF (DELTA/HYD.GT.0.1d0) THEN -!C WRITE (ERRINF,'(1PE10.3)') DELTA/HYD*100.0 -!C CALL PUSHERR (0020, ERRINF) -!C ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCAMAQ **************************************** -! - END SUBROUTINE CALCAMAQ - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCAMAQ2 -! -! THIS SUBROUTINE CALCULATES THE NH3(aq) GENERATED FROM (H,NH4+). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCAMAQ2 (GGNH3, NH4I, OHI, NH3AQ) - !Real(kind=fp) :: NH4I, NH3AQ - Real(kind=fp) :: GGNH3, NH4I, OHI, NH3AQ - Real(kind=fp) :: A22, AKW, ALF1, ALF2, BB, CC, DEL -! -! *** EQUILIBRIUM CONSTANTS -! - A22 = XK22/XKW/WATER*(GAMA(8)/GAMA(9))**2. ! GAMA(NH3) ASSUMED 1 - AKW = XKW *RH*WATER*WATER -! -! *** FIND ROOT -! - ALF1 = NH4I - GGNH3 - ALF2 = GGNH3 - BB = ALF1 + A22*AKW - CC =-A22*AKW*ALF2 - DEL = 0.5D0*(-BB + SQRT(BB*BB-4.0*CC)) -! -! *** ADJUST CONCENTRATIONS -! - NH4I = ALF1 + DEL - OHI = DEL - IF (OHI.LE.TINY) OHI = SQRT(AKW) ! If solution is neutral. - NH3AQ = ALF2 - DEL -! - RETURN -! -! *** END OF SUBROUTINE CALCAMAQ2 **************************************** -! - END SUBROUTINE CALCAMAQ2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCCLAQ -! -! THIS SUBROUTINE CALCULATES THE HCL(aq) GENERATED FROM (H+,CL-). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCCLAQ (CLI, HI, DELT) - !Real(kind=fp) :: CLI - Real(kind=fp) :: CLI, HI, DELT - Real(kind=fp) :: A32, OM1, OM2, BB, CC, DD, DEL1, DEL2 -! -! *** EQUILIBRIUM CONSTANTS -! - A32 = XK32*WATER/(GAMA(11))**2. ! GAMA(HCL) ASSUMED 1 -! -! *** FIND ROOT -! - OM1 = CLI - OM2 = HI - BB =-(OM1+OM2+A32) - CC = OM1*OM2 - DD = SQRT(BB*BB-4.0*CC) - - DEL1 = 0.5D0*(-BB - DD) - DEL2 = 0.5D0*(-BB + DD) -! -! *** GET APPROPRIATE ROOT. -! - IF (DEL1.LT.ZERO) THEN - IF (DEL2.LT.ZERO .OR. DEL2.GT.CLI .OR. DEL2.GT.HI) THEN - DELT = ZERO - ELSE - DELT = DEL2 - ENDIF - ELSE - DELT = DEL1 - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCCLAQ **************************************** -! - END SUBROUTINE CALCCLAQ - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCCLAQ2 -! -! THIS SUBROUTINE CALCULATES THE HCL(aq) GENERATED FROM (H+,CL-). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCCLAQ2 (GGCL, CLI, HI, CLAQ) - !Real(kind=fp) :: CLI - Real(kind=fp) :: GGCL, CLI, HI, CLAQ - Real(kind=fp) :: A32, AKW, ALF1, ALF2, COEF, DEL1 -! -! *** EQUILIBRIUM CONSTANTS -! - A32 = XK32*WATER/(GAMA(11))**2. ! GAMA(HCL) ASSUMED 1 - AKW = XKW *RH*WATER*WATER -! -! *** FIND ROOT -! - ALF1 = CLI - GGCL - ALF2 = GGCL - COEF = (ALF1+A32) - DEL1 = 0.5*(-COEF + SQRT(COEF*COEF+4.0*A32*ALF2)) -! -! *** CORRECT CONCENTRATIONS -! - CLI = ALF1 + DEL1 - HI = DEL1 - IF (HI.LE.TINY) HI = SQRT(AKW) ! If solution is neutral. - CLAQ = ALF2 - DEL1 -! - RETURN -! -! *** END OF SUBROUTINE CALCCLAQ2 **************************************** -! - END SUBROUTINE CALCCLAQ2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCNIAQ -! -! THIS SUBROUTINE CALCULATES THE HNO3(aq) GENERATED FROM (H,NO3-). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCNIAQ (NO3I, HI, DELT) - !Real(kind=fp) :: NO3I, HI, DELT - Real(kind=fp) :: NO3I, HI, DELT - Real(kind=fp) :: A42, OM1, OM2, BB, CC, DD, DEL1, DEL2 -! -! *** EQUILIBRIUM CONSTANTS -! - A42 = XK42*WATER/(GAMA(10))**2. ! GAMA(HNO3) ASSUMED 1 -! -! *** FIND ROOT -! - OM1 = NO3I - OM2 = HI - BB =-(OM1+OM2+A42) - CC = OM1*OM2 - DD = SQRT(BB*BB-4.0*CC) - - DEL1 = 0.5D0*(-BB - DD) - DEL2 = 0.5D0*(-BB + DD) -! -! *** GET APPROPRIATE ROOT. -! - IF (DEL1.LT.ZERO .OR. DEL1.GT.HI .OR. DEL1.GT.NO3I) THEN - !print *, DELT - DELT = ZERO - ELSE - DELT = DEL1 - RETURN - ENDIF -! - IF (DEL2.LT.ZERO .OR. DEL2.GT.NO3I .OR. DEL2.GT.HI) THEN - DELT = ZERO - ELSE - DELT = DEL2 - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCNIAQ **************************************** -! - END SUBROUTINE CALCNIAQ - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCNIAQ2 -! -! THIS SUBROUTINE CALCULATES THE UNDISSOCIATED HNO3(aq) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCNIAQ2 (GGNO3, NO3I, HI, NO3AQ) - !Real(kind=fp) :: NO3I, NO3AQ - Real(kind=fp) :: GGNO3, NO3I, HI, NO3AQ - Real(kind=fp) :: A42, AKW, ALF1, ALF2, ALF3, BB, CC, DEL1 -! -! *** EQUILIBRIUM CONSTANTS -! - A42 = XK42*WATER/(GAMA(10))**2. ! GAMA(HNO3) ASSUMED 1 - AKW = XKW *RH*WATER*WATER -! -! *** FIND ROOT -! - ALF1 = NO3I - GGNO3 - ALF2 = GGNO3 - ALF3 = HI -! - BB = ALF3 + ALF1 + A42 - CC = ALF3*ALF1 - A42*ALF2 - DEL1 = 0.5*(-BB + SQRT(BB*BB-4.0*CC)) -! -! *** CORRECT CONCENTRATIONS -! - NO3I = ALF1 + DEL1 - HI = ALF3 + DEL1 - IF (HI.LE.TINY) HI = SQRT(AKW) ! If solution is neutral. - NO3AQ = ALF2 - DEL1 -! - RETURN -! -! *** END OF SUBROUTINE CALCNIAQ2 **************************************** -! - END SUBROUTINE CALCNIAQ2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCMR -! *** THIS SUBROUTINE CALCULATES: -! 1. ION PAIR CONCENTRATIONS (FROM [MOLAR] ARRAY) -! 2. WATER CONTENT OF LIQUID AEROSOL PHASE (FROM ZSR CORRELATION) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCMR() - - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization - ! Moved to module variables -! - !CHARACTER SC*1 - Character*1 :: SC - Real(kind=fp) :: SO4I, HSO4I, AML5, TOTS4, FRNH4, FRNO3, FRCL - Integer :: I -! -! *** CALCULATE ION PAIR CONCENTRATIONS ACCORDING TO SPECIFIC CASE **** -! - SC =SCASE(1:1) ! SULRAT & SODRAT case -! -! *** NH4-SO4 SYSTEM ; SULFATE POOR CASE -! - IF (SC.EQ.'A') THEN - MOLALR(4) = MOLAL(5)+MOLAL(6) ! (NH4)2SO4 - CORRECT FOR SO4 TO HSO4 -! -! *** NH4-SO4 SYSTEM ; SULFATE RICH CASE ; NO FREE ACID -! - ELSE IF (SC.EQ.'B') THEN - SO4I = MOLAL(5)-MOLAL(1) ! CORRECT FOR HSO4 DISSOCIATION - HSO4I = MOLAL(6)+MOLAL(1) - IF (SO4I.LT.HSO4I) THEN - MOLALR(13) = SO4I ! [LC] = [SO4] - MOLALR(9) = MAX(HSO4I-SO4I, ZERO) ! NH4HSO4 - ELSE - MOLALR(13) = HSO4I ! [LC] = [HSO4] - MOLALR(4) = MAX(SO4I-HSO4I, ZERO) ! (NH4)2SO4 - ENDIF -! -! *** NH4-SO4 SYSTEM ; SULFATE RICH CASE ; FREE ACID -! - ELSE IF (SC.EQ.'C') THEN -#if defined( ISORROPIA_V22 ) - MOLALR(9) = MOLAL(3) ! NH4HSO4 -#else - MOLALR(4) = MOLAL(3) -#endif - MOLALR(7) = MAX(W(2)-W(3), ZERO) ! H2SO4 -! -! *** NH4-SO4-NO3 SYSTEM ; SULFATE POOR CASE -! - ELSE IF (SC.EQ.'D') THEN - MOLALR(4) = MOLAL(5) + MOLAL(6) ! (NH4)2SO4 - AML5 = MOLAL(3)-2.0*MOLALR(4) ! "free" NH4 - MOLALR(5) = MAX(MIN(AML5,MOLAL(7)), ZERO)! NH4NO3 = MIN("free", NO3) -! -! *** NH4-SO4-NO3 SYSTEM ; SULFATE RICH CASE ; NO FREE ACID -! - ELSE IF (SC.EQ.'E') THEN - SO4I = MAX(MOLAL(5)-MOLAL(1),ZERO) ! FROM HSO4 DISSOCIATION - HSO4I = MOLAL(6)+MOLAL(1) - IF (SO4I.LT.HSO4I) THEN - MOLALR(13) = SO4I ! [LC] = [SO4] - MOLALR(9) = MAX(HSO4I-SO4I, ZERO) ! NH4HSO4 - ELSE - MOLALR(13) = HSO4I ! [LC] = [HSO4] - MOLALR(4) = MAX(SO4I-HSO4I, ZERO) ! (NH4)2SO4 - ENDIF -! -! *** NH4-SO4-NO3 SYSTEM ; SULFATE RICH CASE ; FREE ACID -! - ELSE IF (SC.EQ.'F') THEN -#if defined( ISORROPIA_V22 ) - MOLALR(9) = MOLAL(3) ! NH4HSO4 -#else - MOLALR(4) = MOLAL(3) -#endif - MOLALR(7) = MAX(MOLAL(5)+MOLAL(6)-MOLAL(3),ZERO) ! H2SO4 -! -! *** NA-NH4-SO4-NO3-CL SYSTEM ; SULFATE POOR ; SODIUM POOR CASE -! - ELSE IF (SC.EQ.'G') THEN - MOLALR(2) = 0.5D0*MOLAL(2) ! NA2SO4 - TOTS4 = MOLAL(5)+MOLAL(6) ! Total SO4 - MOLALR(4) = MAX(TOTS4 - MOLALR(2), ZERO) ! (NH4)2SO4 - FRNH4 = MAX(MOLAL(3) - 2.0*MOLALR(4), ZERO) - MOLALR(5) = MIN(MOLAL(7),FRNH4) ! NH4NO3 - FRNH4 = MAX(FRNH4 - MOLALR(5), ZERO) - MOLALR(6) = MIN(MOLAL(4), FRNH4) ! NH4CL -! -! *** NA-NH4-SO4-NO3-CL SYSTEM ; SULFATE POOR ; SODIUM RICH CASE -! *** RETREIVE DISSOLVED SALTS DIRECTLY FROM COMMON BLOCK /SOLUT/ -! - ELSE IF (SC.EQ.'H') THEN - MOLALR(1) = PSI7 ! NACL - MOLALR(2) = PSI1 ! NA2SO4 - MOLALR(3) = PSI8 ! NANO3 - MOLALR(4) = ZERO ! (NH4)2SO4 - FRNO3 = MAX(MOLAL(7) - MOLALR(3), ZERO) ! "FREE" NO3 - FRCL = MAX(MOLAL(4) - MOLALR(1), ZERO) ! "FREE" CL - MOLALR(5) = MIN(MOLAL(3),FRNO3) ! NH4NO3 - FRNH4 = MAX(MOLAL(3) - MOLALR(5), ZERO) ! "FREE" NH3 - MOLALR(6) = MIN(FRCL, FRNH4) ! NH4CL -! -! *** NA-NH4-SO4-NO3-CL SYSTEM ; SULFATE RICH CASE ; NO FREE ACID -! *** RETREIVE DISSOLVED SALTS DIRECTLY FROM COMMON BLOCK /SOLUT/ -! - ELSE IF (SC.EQ.'I') THEN - MOLALR(04) = PSI5 ! (NH4)2SO4 - MOLALR(02) = PSI4 ! NA2SO4 - MOLALR(09) = PSI1 ! NH4HSO4 - MOLALR(12) = PSI3 ! NAHSO4 - MOLALR(13) = PSI2 ! LC -! -! *** NA-NH4-SO4-NO3-CL SYSTEM ; SULFATE RICH CASE ; FREE ACID -! - ELSE IF (SC.EQ.'J') THEN - MOLALR(09) = MOLAL(3) ! NH4HSO4 - MOLALR(12) = MOLAL(2) ! NAHSO4 - MOLALR(07) = MOLAL(5)+MOLAL(6)-MOLAL(3)-MOLAL(2) ! H2SO4 - MOLALR(07) = MAX(MOLALR(07),ZERO) -! -! *** NA-NH4-SO4-NO3-CL-CA-K-MG SYSTEM ; SULFATE POOR ; CR+NA POOR CASE -! - ELSE IF (SC.EQ.'O') THEN - MOLALR(2) = 0.5D0*MOLAL(2) ! NA2SO4 - TOTS4 = MOLAL(5)+MOLAL(6) ! Total SO4 - MOLALR(17)= 0.5*MOLAL(9) ! K2SO4 - MOLALR(21)= MOLAL(10) ! MGSO4 - MOLALR(4) = MAX(TOTS4 - MOLALR(2) - MOLALR(17) - & - MOLALR(21), ZERO) ! (NH4)2SO4 - FRNH4 = MAX(MOLAL(3) - 2.0*MOLALR(4), ZERO) - MOLALR(5) = MIN(MOLAL(7),FRNH4) ! NH4NO3 - FRNH4 = MAX(FRNH4 - MOLALR(5), ZERO) - MOLALR(6) = MIN(MOLAL(4), FRNH4) ! NH4CL -! -! *** NA-NH4-SO4-NO3-CL-CA-K-MG SYSTEM ; SULFATE POOR ; CR+NA RICH; CR POOR CASE -! *** RETREIVE DISSOLVED SALTS DIRECTLY FROM COMMON BLOCK /SOLUT/ -! - ELSE IF (SC.EQ.'M') THEN - MOLALR(1) = PSI7 ! NACL - MOLALR(2) = PSI1 ! NA2SO4 - MOLALR(3) = PSI8 ! NANO3 - MOLALR(4) = ZERO ! (NH4)2SO4 - FRNO3 = MAX(MOLAL(7) - MOLALR(3), ZERO) ! "FREE" NO3 - FRCL = MAX(MOLAL(4) - MOLALR(1), ZERO) ! "FREE" CL - MOLALR(5) = MIN(MOLAL(3),FRNO3) ! NH4NO3 - FRNH4 = MAX(MOLAL(3) - MOLALR(5), ZERO) ! "FREE" NH3 - MOLALR(6) = MIN(FRCL, FRNH4) ! NH4CL - MOLALR(17)= PSI9 ! K2SO4 - MOLALR(21)= PSI10 ! MGSO4 -! -! *** NA-NH4-SO4-NO3-CL-CA-K-MG SYSTEM ; SULFATE POOR ; CR+NA RICH; CR RICH CASE -! *** RETREIVE DISSOLVED SALTS DIRECTLY FROM COMMON BLOCK /SOLUT/ -! - ELSE IF (SC.EQ.'P') THEN - MOLALR(1) = PSI7 ! NACL - MOLALR(3) = PSI8 ! NANO3 - MOLALR(15)= PSI12 ! CANO32 - MOLALR(16)= PSI17 ! CACL2 - MOLALR(19)= PSI13 ! KNO3 - MOLALR(20)= PSI14 ! KCL - MOLALR(22)= PSI15 ! MGNO32 - MOLALR(23)= PSI16 ! MGCL2 - FRNO3 = MAX(MOLAL(7)-MOLALR(3)-2.0*MOLALR(15) - & -MOLALR(19)-2.0*MOLALR(22), ZERO) ! "FREE" NO3 - FRCL = MAX(MOLAL(4)-MOLALR(1)-2.0*MOLALR(16) - & -MOLALR(20)-2.0*MOLALR(23), ZERO) ! "FREE" CL - MOLALR(5) = MIN(MOLAL(3),FRNO3) ! NH4NO3 - FRNH4 = MAX(MOLAL(3) - MOLALR(5), ZERO) ! "FREE" NH3 - MOLALR(6) = MIN(FRCL, FRNH4) ! NH4CL - MOLALR(17)= PSI9 ! K2SO4 - MOLALR(21)= PSI10 ! MGSO4 -! -! *** NA-NH4-SO4-NO3-CL-CA-K-MG SYSTEM ; SULFATE RICH CASE ; NO FREE ACID -! - ELSE IF (SC.EQ.'L') THEN - MOLALR(04) = PSI5 ! (NH4)2SO4 - MOLALR(02) = PSI4 ! NA2SO4 - MOLALR(09) = PSI1 ! NH4HSO4 - MOLALR(12) = PSI3 ! NAHSO4 - MOLALR(13) = PSI2 ! LC - MOLALR(17) = PSI6 ! K2SO4 - MOLALR(21) = PSI7 ! MGSO4 - MOLALR(18) = PSI8 ! KHSO4 -! -! *** NA-NH4-SO4-NO3-CL-CA-K-MG SYSTEM ; SULFATE SUPER RICH CASE ; FREE ACID -! - ELSE IF (SC.EQ.'K') THEN - MOLALR(09) = MOLAL(3) ! NH4HSO4 - MOLALR(12) = MOLAL(2) ! NAHSO4 - MOLALR(14) = MOLAL(8) ! CASO4 - MOLALR(18) = MOLAL(9) ! KHSO4 -#if defined( ISORROPIA_V22) - MOLALR(21) = MOLAL(10) ! MGSO4 - MOLALR(07) = MOLAL(5)+MOLAL(6)-MOLAL(3) - & -MOLAL(2)-MOLAL(8)-MOLAL(9)-MOLAL(10)! H2SO4 -#else - MOLALR(07) = MOLAL(5)+MOLAL(6)-MOLAL(3) - & -MOLAL(2)-MOLAL(8)-MOLAL(9) -#endif - MOLALR(07) = MAX(MOLALR(07),ZERO) -! -! ======= REVERSE PROBLEMS =========================================== -! -! *** NH4-SO4-NO3 SYSTEM ; SULFATE POOR CASE -! - ELSE IF (SC.EQ.'N') THEN - MOLALR(4) = MOLAL(5) + MOLAL(6) ! (NH4)2SO4 - AML5 = WAER(3)-2.0*MOLALR(4) ! "free" NH4 - MOLALR(5) = MAX(MIN(AML5,WAER(4)), ZERO) ! NH4NO3 = MIN("free", NO3) -! -! *** NH4-SO4-NO3-NA-CL SYSTEM ; SULFATE POOR, SODIUM POOR CASE -! - ELSE IF (SC.EQ.'Q') THEN - MOLALR(2) = PSI1 ! NA2SO4 - MOLALR(4) = PSI6 ! (NH4)2SO4 - MOLALR(5) = PSI5 ! NH4NO3 - MOLALR(6) = PSI4 ! NH4CL -! -! *** NH4-SO4-NO3-NA-CL SYSTEM ; SULFATE POOR, SODIUM RICH CASE -! - ELSE IF (SC.EQ.'R') THEN - MOLALR(1) = PSI3 ! NACL - MOLALR(2) = PSI1 ! NA2SO4 - MOLALR(3) = PSI2 ! NANO3 - MOLALR(4) = ZERO ! (NH4)2SO4 - MOLALR(5) = PSI5 ! NH4NO3 - MOLALR(6) = PSI4 ! NH4CL -! -! *** NH4-SO4-NO3-NA-CL-CA-K-MG SYSTEM ; SULFATE POOR, CRUSTAL&SODIUM POOR CASE -! - ELSE IF (SC.EQ.'V') THEN - MOLALR(2) = PSI1 ! NA2SO4 - MOLALR(4) = PSI6 ! (NH4)2SO4 - MOLALR(5) = PSI5 ! NH4NO3 - MOLALR(6) = PSI4 ! NH4CL - MOLALR(17)= PSI7 ! K2SO4 - MOLALR(21)= PSI8 ! MGSO4 -! -! *** NH4-SO4-NO3-NA-CL-CA-K-MG SYSTEM ; SULFATE POOR, CRUSTAL&SODIUM RICH, CRUSTAL POOR CASE -! - ELSE IF (SC.EQ.'U') THEN - MOLALR(1) = PSI3 ! NACL - MOLALR(2) = PSI1 ! NA2SO4 - MOLALR(3) = PSI2 ! NANO3 - MOLALR(5) = PSI5 ! NH4NO3 - MOLALR(6) = PSI4 ! NH4CL - MOLALR(17)= PSI7 ! K2SO4 - MOLALR(21)= PSI8 ! MGSO4 -! -! *** NH4-SO4-NO3-NA-CL-CA-K-MG SYSTEM ; SULFATE POOR, CRUSTAL&SODIUM RICH, CRUSTAL RICH CASE -! - ELSE IF (SC.EQ.'W') THEN - MOLALR(1) = PSI7 ! NACL - MOLALR(3) = PSI8 ! NANO3 - MOLALR(5) = PSI6 ! NH4NO3 - MOLALR(6) = PSI5 ! NH4CL - MOLALR(15)= PSI12 ! CANO32 - MOLALR(16)= PSI17 ! CACL2 - MOLALR(17)= PSI9 ! K2SO4 - MOLALR(19)= PSI13 ! KNO3 - MOLALR(20)= PSI14 ! KCL - MOLALR(21)= PSI10 ! MGSO4 - MOLALR(22)= PSI15 ! MGNO32 - MOLALR(23)= PSI16 ! MGCL2 -! -! *** UNKNOWN CASE -! -! ELSE -! CALL PUSHERR (1001, ' ') ! FATAL ERROR: CASE NOT SUPPORTED - ENDIF -! -! *** CALCULATE WATER CONTENT ; ZSR CORRELATION *********************** -! - WATER = ZERO - DO 10 I=1,NPAIR - WATER = WATER + MOLALR(I)/M0(I) -10 CONTINUE - WATER = MAX(WATER, TINY) -! - RETURN -! -! *** END OF SUBROUTINE CALCMR ****************************************** -! - END SUBROUTINE CALCMR -! - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCMDRH -! -! THIS IS THE CASE WHERE THE RELATIVE HUMIDITY IS IN THE MUTUAL -! DRH REGION. THE SOLUTION IS ASSUMED TO BE THE SUM OF TWO WEIGHTED -! SOLUTIONS ; THE 'DRY' SOLUTION (SUBROUTINE DRYCASE) AND THE -! 'SATURATED LIQUID' SOLUTION (SUBROUTINE LIQCASE). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCMDRH (RHI, RHDRY, RHLIQ, DRYCASE, LIQCASE) - !EXTERNAL DRYCASE, LIQCASE - Real(kind=fp) :: RHI, RHDRY, RHLIQ - Real(kind=fp) :: WF, ONEMWF, GHNO3O - Real(kind=fp) :: CNH42SO, CLCO, CNH4HSO, CNH4N3O, CNH4CLO - Real(kind=fp) :: CNAHSO, CNA2SO, CNANO, CNACLO, GNH3O, GHCLO - Real(kind=fp) :: DAMSUL, DSOSUL, DAMBIS, DSOBIS, DLC, DAMNIT - Real(kind=fp) :: DAMCHL, DSONIT, DSOCHL, DAMG, DHAG, DNAG - Integer :: I - -! -! *** FIND WEIGHT FACTOR ********************************************** -! - IF (WFTYP.EQ.0) THEN - WF = ONE - ELSEIF (WFTYP.EQ.1) THEN - WF = 0.5D0 - ELSE - WF = (RHLIQ-RHI)/(RHLIQ-RHDRY) - ENDIF - ONEMWF = ONE - WF -! -! *** FIND FIRST SECTION ; DRY ONE ************************************ -! - CALL DRYCASE - IF (ABS(ONEMWF).LE.1D-5) GOTO 200 ! DRY AEROSOL -! - CNH42SO = CNH42S4 ! FIRST (DRY) SOLUTION - CNH4HSO = CNH4HS4 - CLCO = CLC - CNH4N3O = CNH4NO3 - CNH4CLO = CNH4CL - CNA2SO = CNA2SO4 - CNAHSO = CNAHSO4 - CNANO = CNANO3 - CNACLO = CNACL - GNH3O = GNH3 - GHNO3O = GHNO3 - GHCLO = GHCL -! -! *** FIND SECOND SECTION ; DRY & LIQUID ****************************** -! - CNH42S4 = ZERO - CNH4HS4 = ZERO - CLC = ZERO - CNH4NO3 = ZERO - CNH4CL = ZERO - CNA2SO4 = ZERO - CNAHSO4 = ZERO - CNANO3 = ZERO - CNACL = ZERO - GNH3 = ZERO - GHNO3 = ZERO - GHCL = ZERO - CALL LIQCASE ! SECOND (LIQUID) SOLUTION -! -! *** ADJUST THINGS FOR THE CASE THAT THE LIQUID SUB PREDICTS DRY AEROSOL -! - IF (WATER.LE.TINY) THEN - DO 100 I=1,NIONS - MOLAL(I)= ZERO ! Aqueous phase - 100 CONTINUE - WATER = ZERO -! - CNH42S4 = CNH42SO ! Solid phase - CNA2SO4 = CNA2SO - CNAHSO4 = CNAHSO - CNH4HS4 = CNH4HSO - CLC = CLCO - CNH4NO3 = CNH4N3O - CNANO3 = CNANO - CNACL = CNACLO - CNH4CL = CNH4CLO -! - GNH3 = GNH3O ! Gas phase - GHNO3 = GHNO3O - GHCL = GHCLO -! - GOTO 200 - ENDIF -! -! *** FIND SALT DISSOLUTIONS BETWEEN DRY & LIQUID SOLUTIONS. -! - DAMSUL = CNH42SO - CNH42S4 - DSOSUL = CNA2SO - CNA2SO4 - DAMBIS = CNH4HSO - CNH4HS4 - DSOBIS = CNAHSO - CNAHSO4 - DLC = CLCO - CLC - DAMNIT = CNH4N3O - CNH4NO3 - DAMCHL = CNH4CLO - CNH4CL - DSONIT = CNANO - CNANO3 - DSOCHL = CNACLO - CNACL -! -! *** FIND GAS DISSOLUTIONS BETWEEN DRY & LIQUID SOLUTIONS. -! - DAMG = GNH3O - GNH3 - DHAG = GHCLO - GHCL - DNAG = GHNO3O - GHNO3 -! -! *** FIND SOLUTION AT MDRH BY WEIGHTING DRY & LIQUID SOLUTIONS. -! -! LIQUID -! - MOLAL(1)= ONEMWF*MOLAL(1) ! H+ - MOLAL(2)= ONEMWF*(2.0*DSOSUL + DSOBIS + DSONIT + DSOCHL) ! NA+ - MOLAL(3)= ONEMWF*(2.0*DAMSUL + DAMG + DAMBIS + DAMCHL + - & 3.0*DLC + DAMNIT ) ! NH4+ - MOLAL(4)= ONEMWF*( DAMCHL + DSOCHL + DHAG) ! CL- - MOLAL(5)= ONEMWF*( DAMSUL + DSOSUL + DLC - MOLAL(6)) ! SO4-- !VB 17 Sept 2001 - MOLAL(6)= ONEMWF*( MOLAL(6) + DSOBIS + DAMBIS + DLC) ! HSO4- - MOLAL(7)= ONEMWF*( DAMNIT + DSONIT + DNAG) ! NO3- - WATER = ONEMWF*WATER -! -! SOLID -! - CNH42S4 = WF*CNH42SO + ONEMWF*CNH42S4 - CNA2SO4 = WF*CNA2SO + ONEMWF*CNA2SO4 - CNAHSO4 = WF*CNAHSO + ONEMWF*CNAHSO4 - CNH4HS4 = WF*CNH4HSO + ONEMWF*CNH4HS4 - CLC = WF*CLCO + ONEMWF*CLC - CNH4NO3 = WF*CNH4N3O + ONEMWF*CNH4NO3 - CNANO3 = WF*CNANO + ONEMWF*CNANO3 - CNACL = WF*CNACLO + ONEMWF*CNACL - CNH4CL = WF*CNH4CLO + ONEMWF*CNH4CL -! -! GAS -! - GNH3 = WF*GNH3O + ONEMWF*GNH3 - GHNO3 = WF*GHNO3O + ONEMWF*GHNO3 - GHCL = WF*GHCLO + ONEMWF*GHCL -! -! *** RETURN POINT -! -200 RETURN -! -! *** END OF SUBROUTINE CALCMDRH **************************************** -! - END SUBROUTINE CALCMDRH - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCMDRH2 -! -! THIS IS THE CASE WHERE THE RELATIVE HUMIDITY IS IN THE MUTUAL -! DRH REGION. THE SOLUTION IS ASSUMED TO BE THE SUM OF TWO WEIGHTED -! SOLUTIONS ; THE 'DRY' SOLUTION (SUBROUTINE DRYCASE) AND THE -! 'SATURATED LIQUID' SOLUTION (SUBROUTINE LIQCASE). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCMDRH2 (RHI, RHDRY, RHLIQ, DRYCASE, LIQCASE) - !EXTERNAL DRYCASE, LIQCASE - Real(kind=fp) :: RHI, RHDRY, RHLIQ - Real(kind=fp) :: WF, ONEMWF - Real(kind=fp) :: CNH42SO, CNH4HSO, CLCO, CNH4N3O, CNH4CLO - Real(kind=fp) :: CNAHSO, CNANO, CNACLO, GNH3O, GHCLO, CCASO - Real(kind=fp) :: CMGSO, CKHSO, CCAN32O, CCA2L, CKN3O, CKCLO - Real(kind=fp) :: CMGC2L, GHNO3O, CCAC2L, DAMSUL, DSOSUL, DAMBIS - Real(kind=fp) :: DLC, DAMNIT, DAMCHL, DSONIT, DSOCHL, DCASUL - Real(kind=fp) :: DMGSUL, DPOBIS, DCANIT, DCACHL, DPONIT, DPOCHL - Real(kind=fp) :: DMGCHL, DAMG, DHAG, DNAG, DMGNIT - Real(kind=fp) :: CNA2SO, CK2SO, CMGN32O, DSOBIS, DPOSUL - Integer :: I -! -! *** FIND WEIGHT FACTOR ********************************************** -! - IF (WFTYP.EQ.0) THEN - WF = ONE - ELSEIF (WFTYP.EQ.1) THEN - WF = 0.5D0 - ELSE - WF = (RHLIQ-RHI)/(RHLIQ-RHDRY) - ENDIF - ONEMWF = ONE - WF -! -! *** FIND FIRST SECTION ; DRY ONE ************************************ -! - CALL DRYCASE - IF (ABS(ONEMWF).LE.1D-5) GOTO 200 ! DRY AEROSOL -! - CNH42SO = CNH42S4 ! FIRST (DRY) SOLUTION - CNH4HSO = CNH4HS4 - CLCO = CLC - CNH4N3O = CNH4NO3 - CNH4CLO = CNH4CL - CNA2SO = CNA2SO4 - CNAHSO = CNAHSO4 - CNANO = CNANO3 - CNACLO = CNACL - GNH3O = GNH3 - GHNO3O = GHNO3 - GHCLO = GHCL -! - CCASO = CCASO4 - CK2SO = CK2SO4 - CMGSO = CMGSO4 - CKHSO = CKHSO4 - CCAN32O = CCANO32 - CCAC2L = CCACL2 - CKN3O = CKNO3 - CKCLO = CKCL - CMGN32O = CMGNO32 - CMGC2L = CMGCL2 -! -! *** FIND SECOND SECTION ; DRY & LIQUID ****************************** -! - CNH42S4 = ZERO - CNH4HS4 = ZERO - CLC = ZERO - CNH4NO3 = ZERO - CNH4CL = ZERO - CNA2SO4 = ZERO - CNAHSO4 = ZERO - CNANO3 = ZERO - CNACL = ZERO - GNH3 = ZERO - GHNO3 = ZERO - GHCL = ZERO -! - CCASO4 = ZERO - CK2SO4 = ZERO - CMGSO4 = ZERO - CKHSO4 = ZERO - CCANO32 = ZERO - CCACL2 = ZERO - CKNO3 = ZERO - CKCL = ZERO - CMGNO32 = ZERO - CMGCL2 = ZERO -! - CALL LIQCASE ! SECOND (LIQUID) SOLUTION -! -! *** ADJUST THINGS FOR THE CASE THAT THE LIQUID SUB PREDICTS DRY AEROSOL -! - IF (WATER.LE.TINY) THEN - DO 100 I=1,NIONS - MOLAL(I)= ZERO ! Aqueous phase - 100 CONTINUE - WATER = ZERO -! - CNH42S4 = CNH42SO ! Solid phase - CNA2SO4 = CNA2SO - CNAHSO4 = CNAHSO - CNH4HS4 = CNH4HSO - CLC = CLCO - CNH4NO3 = CNH4N3O - CNANO3 = CNANO - CNACL = CNACLO - CNH4CL = CNH4CLO -! - GNH3 = GNH3O ! Gas phase - GHNO3 = GHNO3O - GHCL = GHCLO -! - CCASO4 = CCASO - CK2SO4 = CK2SO - CMGSO4 = CMGSO - CKHSO4 = CKHSO - CCANO32 = CCAN32O - CCACL2 = CCAC2L - CKNO3 = CKN3O - CKCL = CKCLO - CMGNO32 = CMGN32O - CMGCL2 = CMGC2L -! - GOTO 200 - ENDIF -! -! *** FIND SALT DISSOLUTIONS BETWEEN DRY & LIQUID SOLUTIONS. -! - DAMSUL = CNH42SO - CNH42S4 - DSOSUL = CNA2SO - CNA2SO4 - DAMBIS = CNH4HSO - CNH4HS4 - DSOBIS = CNAHSO - CNAHSO4 - DLC = CLCO - CLC - DAMNIT = CNH4N3O - CNH4NO3 - DAMCHL = CNH4CLO - CNH4CL - DSONIT = CNANO - CNANO3 - DSOCHL = CNACLO - CNACL -! - DCASUL = CCASO - CCASO4 - DPOSUL = CK2SO - CK2SO4 - DMGSUL = CMGSO - CMGSO4 - DPOBIS = CKHSO - CKHSO4 - DCANIT = CCAN32O - CCANO32 - DCACHL = CCAC2L - CCACL2 - DPONIT = CKN3O - CKNO3 - DPOCHL = CKCLO - CKCL - DMGNIT = CMGN32O - CMGNO32 - DMGCHL = CMGC2L - CMGCL2 -! -! *** FIND GAS DISSOLUTIONS BETWEEN DRY & LIQUID SOLUTIONS. -! - DAMG = GNH3O - GNH3 - DHAG = GHCLO - GHCL - DNAG = GHNO3O - GHNO3 -! -! *** FIND SOLUTION AT MDRH BY WEIGHTING DRY & LIQUID SOLUTIONS. -! -! LIQUID -! - MOLAL(1) = ONEMWF*MOLAL(1) ! H+ - MOLAL(2) = ONEMWF*(2.0*DSOSUL + DSOBIS + DSONIT + DSOCHL) ! NA+ - MOLAL(3) = ONEMWF*(2.0*DAMSUL + DAMG + DAMBIS + DAMCHL + - & 3.0*DLC + DAMNIT ) ! NH4+ - MOLAL(4) = ONEMWF*(DAMCHL + DSOCHL + DHAG + 2.0*DCACHL + - & 2.0*DMGCHL + DPOCHL) ! CL- - MOLAL(5) = ONEMWF*(DAMSUL + DSOSUL + DLC - MOLAL(6) - & +DCASUL + DPOSUL + DMGSUL) ! SO4-- !VB 17 Sept 2001 - MOLAL(6) = ONEMWF*(MOLAL(6) + DSOBIS + DAMBIS + DLC + DPOBIS) ! HSO4- - MOLAL(7) = ONEMWF*(DAMNIT + DSONIT + DNAG + 2.0*DCANIT - & + 2.0*DMGNIT + DPONIT) ! NO3- - MOLAL(8) = ONEMWF*(DCASUL + DCANIT + DCACHL) ! CA2+ - MOLAL(9) = ONEMWF*(2.0*DPOSUL + DPONIT + DPOCHL + DPOBIS) ! K+ - MOLAL(10)= ONEMWF*(DMGSUL + DMGNIT + DMGCHL) ! MG2+ - WATER = ONEMWF*WATER -! -! SOLID -! - CNH42S4 = WF*CNH42SO + ONEMWF*CNH42S4 - CNA2SO4 = WF*CNA2SO + ONEMWF*CNA2SO4 - CNAHSO4 = WF*CNAHSO + ONEMWF*CNAHSO4 - CNH4HS4 = WF*CNH4HSO + ONEMWF*CNH4HS4 - CLC = WF*CLCO + ONEMWF*CLC - CNH4NO3 = WF*CNH4N3O + ONEMWF*CNH4NO3 - CNANO3 = WF*CNANO + ONEMWF*CNANO3 - CNACL = WF*CNACLO + ONEMWF*CNACL - CNH4CL = WF*CNH4CLO + ONEMWF*CNH4CL -! - CCASO4 = WF*CCASO + ONEMWF*CCASO4 - CK2SO4 = WF*CK2SO + ONEMWF*CK2SO4 - CMGSO4 = WF*CMGSO + ONEMWF*CMGSO4 - CKHSO4 = WF*CKHSO + ONEMWF*CKHSO4 - CCANO32 = WF*CCAN32O + ONEMWF*CCANO32 - CCACL2 = WF*CCAC2L + ONEMWF*CCACL2 - CMGNO32 = WF*CMGN32O + ONEMWF*CMGNO32 - CMGCL2 = WF*CMGC2L + ONEMWF*CMGCL2 - CKCL = WF*CKCLO + ONEMWF*CKCL -! -! GAS -! - GNH3 = WF*GNH3O + ONEMWF*GNH3 - GHNO3 = WF*GHNO3O + ONEMWF*GHNO3 - GHCL = WF*GHCLO + ONEMWF*GHCL -! -! *** RETURN POINT -! -200 RETURN -! -! *** END OF SUBROUTINE CALCMDRH2 **************************************** -! - END SUBROUTINE CALCMDRH2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCMDRP -! -! THIS IS THE CASE WHERE THE RELATIVE HUMIDITY IS IN THE MUTUAL -! DRH REGION. THE SOLUTION IS ASSUMED TO BE THE SUM OF TWO WEIGHTED -! SOLUTIONS ; THE 'DRY' SOLUTION (SUBROUTINE DRYCASE) AND THE -! 'SATURATED LIQUID' SOLUTION (SUBROUTINE LIQCASE). (REVERSE PROBLEM) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCMDRP (RHI, RHDRY, RHLIQ, DRYCASE, LIQCASE) - !EXTERNAL DRYCASE, LIQCASE - Real(kind=fp) :: RHI, RHDRY, RHLIQ - Real(kind=fp) :: WF, ONEMWF, CNH42SO, CNH4HSO, CLCO, CNH4N3O - Real(kind=fp) :: CNA2SO, CNAHSO, CNACLO, CNANO, DAMBIS, DSOBIS - Real(kind=fp) :: HIEQ, HIEN, A2, A3, A4, A8, CNH4CLO, DLC - Integer :: I -! -! *** FIND WEIGHT FACTOR ********************************************** -! - IF (WFTYP.EQ.0) THEN - WF = ONE - ELSEIF (WFTYP.EQ.1) THEN - WF = 0.5D0 - ELSE - WF = (RHLIQ-RHI)/(RHLIQ-RHDRY) - ENDIF - ONEMWF = ONE - WF -! -! *** FIND FIRST SECTION ; DRY ONE ************************************ -! - CALL DRYCASE - IF (ABS(ONEMWF).LE.1D-5) GOTO 200 ! DRY AEROSOL -! - CNH42SO = CNH42S4 ! FIRST (DRY) SOLUTION - CNH4HSO = CNH4HS4 - CLCO = CLC - CNH4N3O = CNH4NO3 - CNH4CLO = CNH4CL - CNA2SO = CNA2SO4 - CNAHSO = CNAHSO4 - CNANO = CNANO3 - CNACLO = CNACL -! -! *** FIND SECOND SECTION ; DRY & LIQUID ****************************** -! - CNH42S4 = ZERO - CNH4HS4 = ZERO - CLC = ZERO - CNH4NO3 = ZERO - CNH4CL = ZERO - CNA2SO4 = ZERO - CNAHSO4 = ZERO - CNANO3 = ZERO - CNACL = ZERO - GNH3 = ZERO - GHNO3 = ZERO - GHCL = ZERO - CALL LIQCASE ! SECOND (LIQUID) SOLUTION -! -! *** ADJUST THINGS FOR THE CASE THAT THE LIQUID SUB PREDICTS DRY AEROSOL -! - IF (WATER.LE.TINY) THEN - WATER = ZERO - DO 100 I=1,NIONS - MOLAL(I)= ZERO - 100 CONTINUE - CALL DRYCASE - GOTO 200 - ENDIF -! -! *** FIND SALT DISSOLUTIONS BETWEEN DRY & LIQUID SOLUTIONS. -! - DAMBIS = CNH4HSO - CNH4HS4 - DSOBIS = CNAHSO - CNAHSO4 - DLC = CLCO - CLC -! -! *** FIND SOLUTION AT MDRH BY WEIGHTING DRY & LIQUID SOLUTIONS. -! -! *** SOLID -! - CNH42S4 = WF*CNH42SO + ONEMWF*CNH42S4 - CNA2SO4 = WF*CNA2SO + ONEMWF*CNA2SO4 - CNAHSO4 = WF*CNAHSO + ONEMWF*CNAHSO4 - CNH4HS4 = WF*CNH4HSO + ONEMWF*CNH4HS4 - CLC = WF*CLCO + ONEMWF*CLC - CNH4NO3 = WF*CNH4N3O + ONEMWF*CNH4NO3 - CNANO3 = WF*CNANO + ONEMWF*CNANO3 - CNACL = WF*CNACLO + ONEMWF*CNACL - CNH4CL = WF*CNH4CLO + ONEMWF*CNH4CL -! -! *** LIQUID -! - WATER = ONEMWF*WATER -! - MOLAL(2)= WAER(1) - 2.0*CNA2SO4 - CNAHSO4 - CNANO3 - - & CNACL ! NA+ - MOLAL(3)= WAER(3) - 2.0*CNH42S4 - CNH4HS4 - CNH4CL - - & 3.0*CLC - CNH4NO3 ! NH4+ - MOLAL(4)= WAER(5) - CNACL - CNH4CL ! CL- - MOLAL(7)= WAER(4) - CNANO3 - CNH4NO3 ! NO3- - MOLAL(6)= ONEMWF*(MOLAL(6) + DSOBIS + DAMBIS + DLC) ! HSO4- - MOLAL(5)= WAER(2) - MOLAL(6) - CLC - CNH42S4 - CNA2SO4 ! SO4-- -! - A8 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. - IF (MOLAL(5).LE.TINY) THEN - HIEQ = SQRT(XKW *RH*WATER*WATER) ! Neutral solution - ELSE - HIEQ = A8*MOLAL(6)/MOLAL(5) - ENDIF - HIEN = MOLAL(4) + MOLAL(7) + MOLAL(6) + 2.0*MOLAL(5) - - & MOLAL(2) - MOLAL(3) - MOLAL(1)= MAX (HIEQ, HIEN) ! H+ -! -! *** GAS (ACTIVITY COEFS FROM LIQUID SOLUTION) -! - A2 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2. ! NH3 <==> NH4+ - A3 = XK4 *R*TEMP*(WATER/GAMA(10))**2. ! HNO3 <==> NO3- - A4 = XK3 *R*TEMP*(WATER/GAMA(11))**2. ! HCL <==> CL- -! - GNH3 = MOLAL(3)/MAX(MOLAL(1),TINY)/A2 - GHNO3 = MOLAL(1)*MOLAL(7)/A3 - GHCL = MOLAL(1)*MOLAL(4)/A4 -! -200 RETURN -! -! *** END OF SUBROUTINE CALCMDRP **************************************** -! - END SUBROUTINE CALCMDRP - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCMDRPII -! -! THIS IS THE CASE WHERE THE RELATIVE HUMIDITY IS IN THE MUTUAL -! DRH REGION. THE SOLUTION IS ASSUMED TO BE THE SUM OF TWO WEIGHTED -! SOLUTIONS ; THE 'DRY' SOLUTION (SUBROUTINE DRYCASE) AND THE -! 'SATURATED LIQUID' SOLUTION (SUBROUTINE LIQCASE). (REVERSE PROBLEM) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCMDRPII (RHI, RHDRY, RHLIQ, DRYCASE, LIQCASE) - !EXTERNAL DRYCASE, LIQCASE - Real(kind=fp) :: RHI, RHDRY, RHLIQ - Real(kind=fp) :: WF, ONEMWF, CNH42SO, CNH4HSO, CLCO, CNH4N3O - Real(kind=fp) :: CNA2SO, CNAHSO, CNACLO, CNANO, CCASO, CK2SO - Real(kind=fp) :: CKHSO, CCAN32O, CCAC2L, CKN3O, CKCLO, CMGN32O - Real(kind=fp) :: DAMBIS, DSOBIS, DLC, DPOBIS, CNH4CLO, CMGSO - Real(kind=fp) :: HIEQ, HIEN, A2, A3, A4, A8, CMGC2L - Integer :: I -! -! *** FIND WEIGHT FACTOR ********************************************** -! - IF (WFTYP.EQ.0) THEN - WF = ONE - ELSEIF (WFTYP.EQ.1) THEN - WF = 0.5D0 - ELSE - WF = (RHLIQ-RHI)/(RHLIQ-RHDRY) - ENDIF - ONEMWF = ONE - WF -! -! *** FIND FIRST SECTION ; DRY ONE ************************************ -! - CALL DRYCASE - IF (ABS(ONEMWF).LE.1D-5) GOTO 200 ! DRY AEROSOL -! - CNH42SO = CNH42S4 ! FIRST (DRY) SOLUTION - CNH4HSO = CNH4HS4 - CLCO = CLC - CNH4N3O = CNH4NO3 - CNH4CLO = CNH4CL - CNA2SO = CNA2SO4 - CNAHSO = CNAHSO4 - CNANO = CNANO3 - CNACLO = CNACL -! - CCASO = CCASO4 - CK2SO = CK2SO4 - CMGSO = CMGSO4 - CKHSO = CKHSO4 - CCAN32O = CCANO32 - CCAC2L = CCACL2 - CKN3O = CKNO3 - CKCLO = CKCL - CMGN32O = CMGNO32 - CMGC2L = CMGCL2 -! -! *** FIND SECOND SECTION ; DRY & LIQUID ****************************** -! - CNH42S4 = ZERO - CNH4HS4 = ZERO - CLC = ZERO - CNH4NO3 = ZERO - CNH4CL = ZERO - CNA2SO4 = ZERO - CNAHSO4 = ZERO - CNANO3 = ZERO - CNACL = ZERO - GNH3 = ZERO - GHNO3 = ZERO - GHCL = ZERO -! - CCASO4 = ZERO - CK2SO4 = ZERO - CMGSO4 = ZERO - CKHSO4 = ZERO - CCANO32 = ZERO - CCACL2 = ZERO - CKNO3 = ZERO - CKCL = ZERO - CMGNO32 = ZERO - CMGCL2 = ZERO -! - CALL LIQCASE ! SECOND (LIQUID) SOLUTION -! -! *** ADJUST THINGS FOR THE CASE THAT THE LIQUID SUB PREDICTS DRY AEROSOL -! - IF (WATER.LE.TINY) THEN - WATER = ZERO - DO 100 I=1,NIONS - MOLAL(I)= ZERO - 100 CONTINUE - CALL DRYCASE - GOTO 200 - ENDIF -! -! *** FIND SALT DISSOLUTIONS BETWEEN DRY & LIQUID SOLUTIONS. -! - DAMBIS = CNH4HSO - CNH4HS4 - DSOBIS = CNAHSO - CNAHSO4 - DLC = CLCO - CLC - DPOBIS = CKHSO - CKHSO4 -! -! *** FIND SOLUTION AT MDRH BY WEIGHTING DRY & LIQUID SOLUTIONS. -! -! *** SOLID -! - CNH42S4 = WF*CNH42SO + ONEMWF*CNH42S4 - CNA2SO4 = WF*CNA2SO + ONEMWF*CNA2SO4 - CNAHSO4 = WF*CNAHSO + ONEMWF*CNAHSO4 - CNH4HS4 = WF*CNH4HSO + ONEMWF*CNH4HS4 - CLC = WF*CLCO + ONEMWF*CLC - CNH4NO3 = WF*CNH4N3O + ONEMWF*CNH4NO3 - CNANO3 = WF*CNANO + ONEMWF*CNANO3 - CNACL = WF*CNACLO + ONEMWF*CNACL - CNH4CL = WF*CNH4CLO + ONEMWF*CNH4CL -! - CCASO4 = WF*CCASO + ONEMWF*CCASO4 - CK2SO4 = WF*CK2SO + ONEMWF*CK2SO4 - CMGSO4 = WF*CMGSO + ONEMWF*CMGSO4 - CKHSO4 = WF*CKHSO + ONEMWF*CKHSO4 - CCANO32 = WF*CCAN32O + ONEMWF*CCANO32 - CCACL2 = WF*CCAC2L + ONEMWF*CCACL2 - CMGNO32 = WF*CMGN32O + ONEMWF*CMGNO32 - CMGCL2 = WF*CMGC2L + ONEMWF*CMGCL2 - CKCL = WF*CKCLO + ONEMWF*CKCL -! -! *** LIQUID -! - WATER = ONEMWF*WATER -! - MOLAL(2)= WAER(1) - 2.0*CNA2SO4 - CNAHSO4 - CNANO3 - - & CNACL ! NA+ - MOLAL(3)= WAER(3) - 2.0*CNH42S4 - CNH4HS4 - CNH4CL - - & 3.0*CLC - CNH4NO3 ! NH4+ - MOLAL(4)= WAER(5) - CNACL - CNH4CL - 2.0*CCACL2 - - & 2.0*CMGCL2 - CKCL ! CL- - MOLAL(7)= WAER(4) - CNANO3 - CNH4NO3 - CKNO3 - & - 2.0*CCANO32 - 2.0*CMGNO32 ! NO3- - MOLAL(6)= ONEMWF*(MOLAL(6) + DSOBIS + DAMBIS + DLC + DPOBIS) ! HSO4- - MOLAL(5)= WAER(2) - MOLAL(6) - CLC - CNH42S4 - CNA2SO4 - & - CCASO4 - CK2SO4 - CMGSO4 ! SO4-- - MOLAL(8)= WAER(6) - CCASO4 - CCANO32 - CCACL2 ! CA++ - MOLAL(9)= WAER(7) - 2.0*CK2SO4 - CKNO3 - CKCL - CKHSO4 ! K+ - MOLAL(10)=WAER(8) - CMGSO4 - CMGNO32 - CMGCL2 ! MG++ -! - A8 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. - IF (MOLAL(5).LE.TINY) THEN - HIEQ = SQRT(XKW *RH*WATER*WATER) ! Neutral solution - ELSE - HIEQ = A8*MOLAL(6)/MOLAL(5) - ENDIF - HIEN = MOLAL(4) + MOLAL(7) + MOLAL(6) + 2.0*MOLAL(5) - - & MOLAL(2) - MOLAL(3) - MOLAL(1)= MAX (HIEQ, HIEN) ! H+ -! -! *** GAS (ACTIVITY COEFS FROM LIQUID SOLUTION) -! - A2 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2. ! NH3 <==> NH4+ - A3 = XK4 *R*TEMP*(WATER/GAMA(10))**2. ! HNO3 <==> NO3- - A4 = XK3 *R*TEMP*(WATER/GAMA(11))**2. ! HCL <==> CL- -! - GNH3 = MOLAL(3)/MAX(MOLAL(1),TINY)/A2 - GHNO3 = MOLAL(1)*MOLAL(7)/A3 - GHCL = MOLAL(1)*MOLAL(4)/A4 -! -200 RETURN -! -! *** END OF SUBROUTINE CALCMDRPII ************************************** -! - END SUBROUTINE CALCMDRPII - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCHS4 -! *** THIS SUBROUTINE CALCULATES THE HSO4 GENERATED FROM (H,SO4). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCHS4 (HI, SO4I, HSO4I, DELTA) -!C CHARACTER ERRINF*40 - Real(kind=fp) :: HI, SO4I, HSO4I, DELTA - Real(kind=fp) :: A8, BB, CC, DD, SQDD, DELTA1, DELTA2 -! -! *** IF TOO LITTLE WATER, DONT SOLVE -! - IF (WATER.LE.1d1*TINY) THEN - DELTA = ZERO - RETURN - ENDIF -! -! *** CALCULATE HSO4 SPECIATION ***************************************** -! - A8 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! - BB =-(HI + SO4I + A8) - CC = HI*SO4I - HSO4I*A8 - DD = BB*BB - 4.0*CC -! - IF (DD.GE.ZERO) THEN - SQDD = SQRT(DD) - DELTA1 = 0.5*(-BB + SQDD) - DELTA2 = 0.5*(-BB - SQDD) - IF (HSO4I.LE.TINY) THEN - DELTA = DELTA2 - ELSEIF( HI*SO4I .GE. A8*HSO4I ) THEN - DELTA = DELTA2 - ELSEIF( HI*SO4I .LT. A8*HSO4I ) THEN - DELTA = DELTA1 - ELSE - DELTA = ZERO - ENDIF - ELSE - DELTA = ZERO - ENDIF - - ! PHFIX applied by Havala (just a quick fix, not a final solution) - ! make sure H+ is positive (hotp 8/19/09) - ! Negative H+ was due to subtracting two similar, small numbers - ! for a set of test conditions examined - !IF ( DELTA > HI ) DELTA = HI - 1d-30 - -!CC -!CC *** COMPARE DELTA TO TOTAL H+ ; ESTIMATE EFFECT OF HSO4 *************** -!CC -!C HYD = MAX(HI, MOLAL(1)) -!C IF (HYD.GT.TINY) THEN -!C IF (DELTA/HYD.GT.0.1d0) THEN -!C WRITE (ERRINF,'(1PE10.3)') DELTA/HYD*100.0 -!C CALL PUSHERR (0020, ERRINF) -!C ENDIF -!C ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCHS4 ***************************************** -! - END SUBROUTINE CALCHS4 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCPH -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCPH (GG, HI, OHI) - Real(kind=fp) :: GG, HI, OHI - Real(kind=fp) :: CN, AKW, BB, CC, DD -! - AKW = XKW *RH*WATER*WATER - CN = SQRT(AKW) -! -! *** GG = (negative charge) - (positive charge) -! - IF (GG.GT.TINY) THEN ! H+ in excess - BB =-GG - CC =-AKW - DD = BB*BB - 4.0*CC - HI = MAX(0.5D0*(-BB + SQRT(DD)),CN) - OHI= AKW/HI - ELSE ! OH- in excess - BB = GG - CC =-AKW - DD = BB*BB - 4.0*CC - OHI= MAX(0.5D0*(-BB + SQRT(DD)),CN) - HI = AKW/OHI - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCPH ****************************************** -! - END SUBROUTINE CALCPH - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCACT -! *** CALCULATES MULTI-COMPONENT ACTIVITY COEFFICIENTS FROM BROMLEYS -! METHOD. THE BINARY ACTIVITY COEFFICIENTS ARE CALCULATED BY -! KUSIK-MEISNER RELATION (SUBROUTINE KMTAB or SUBROUTINE KMFUL). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCACT() -! -! - ! The pre-v22 code incorrectly forces the most complex calculation under - ! all circumstances; kept for legacy reasons -#if defined( ISORROPIA_V22 ) - IF (W(1)+W(4)+W(5)+W(6)+W(7)+W(8) .LE. (6.d0*TINY)) THEN !Ca,K,Mg,Na,Cl,NO3=0 - CALL CALCACT1 - ELSE IF (W(1)+W(5)+W(6)+W(7)+W(8) .LE. (5.d0*TINY)) THEN !Ca,K,Mg,Na,Cl=0 - CALL CALCACT2 - ELSE IF (W(6)+W(7)+W(8) .LE. (3.d0*TINY)) THEN !Ca,K,Mg=0 - CALL CALCACT3 - ELSE - CALL CALCACT4 - ENDIF -#else - IF (W(1)+W(4)+W(5)+W(6)+W(7)+W(8) .LE. TINY) THEN !Ca,K,Mg,Na,Cl,NO3=0 - CALL CALCACT1 - ELSE IF (W(1)+W(5)+W(6)+W(7)+W(8) .LE. TINY) THEN !Ca,K,Mg,Na,Cl=0 - CALL CALCACT2 - ELSE IF (W(6)+W(7)+W(8) .LE. TINY) THEN !Ca,K,Mg=0 - CALL CALCACT3 - ELSE - CALL CALCACT4 - ENDIF -#endif -! -! *** Return point ; End of subroutine -! - RETURN - END SUBROUTINE CALCACT - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCACT4 -! *** CALCULATES MULTI-COMPONENT ACTIVITY COEFFICIENTS FROM BROMLEYS -! METHOD FOR AN AMMONIUM-SULFATE-NITRATE-CHLORIDE-SODIUM-CALCIUM-POTASSIUM-MAGNESIUM -! AEROSOL SYSTEM. THE BINARY ACTIVITY COEFFICIENTS ARE CALCULATED BY -! KUSIK-MEISNER RELATION (SUBROUTINE KMTAB or SUBROUTINE KMFUL4). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCACT4() -! - Real(Kind=IonicKind) :: Ionic - Real(Kind=fp) :: G0(6,4) - Real(Kind=fp) :: ZPL,ZMI,AGAMA,SION,H,CH,F1(6),F2A(4),F2B(4) - !Real(kind=fp) :: MPL, XIJ, YJI - Real(kind=fp) :: MPL, XIJ, YJI - - Real(kind=fp) :: ErrOu, ErrIn - Real(kind=fp) :: GA, GB - - ! hotp removed for parallelization (8/23/07), integer declared - !DATA G0/24*0D0/ - INTEGER I,J - - ! WARNING: These are actually functions! - GA(I,J)= (F1(I)/Z(I) + F2A(J)/Z(J+3)) / (Z(I)+Z(J+3)) - H - GB(I,J)= (F1(I)/Z(I+4) + F2B(J)/Z(J+3)) / (Z(I+4)+Z(J+3)) - H - - ! initialize G0 array here (hotp 8/23/07) - DO J = 1, 4 - DO I = 1, 6 - G0(I,J) = 0.0 - ENDDO - ENDDO -! -! *** SAVE ACTIVITIES IN OLD ARRAY ************************************* -! - IF (FRST) THEN ! Outer loop - DO 10 I=1,NPAIR - GAMOU(I) = GAMA(I) -10 CONTINUE - ENDIF -! - DO 20 I=1,NPAIR ! Inner loop - GAMIN(I) = GAMA(I) -20 CONTINUE -! -! *** CALCULATE IONIC ACTIVITY OF SOLUTION ***************************** -! - IONIC_MAIN = 0.0 - IONIC=0.0 - DO 30 I=1,NIONS - IONIC=IONIC + MOLAL(I)*Z(I)*Z(I) -30 CONTINUE - IONIC = MAX(MIN(0.5*IONIC/WATER,100.d0), TINY) -! -! *** CALCULATE BINARY ACTIVITY COEFFICIENTS *************************** -! -! G0(1,1)=G11;G0(1,2)=G07;G0(1,3)=G08;G0(1,4)=G10;G0(2,1)=G01;G0(2,2)=G02 -! G0(2,3)=G12;G0(2,4)=G03;G0(3,1)=G06;G0(3,2)=G04;G0(3,3)=G09;G0(3,4)=G05 -! - IF (IACALC.EQ.0) THEN ! K.M.; FULL - CALL KMFUL4 (IONIC, TEMP,G0(2,1),G0(2,2),G0(2,4), - & G0(3,2),G0(3,4),G0(3,1),G0(1,2),G0(1,3),G0(3,3), - & G0(1,4),G0(1,1),G0(2,3),G0(4,4),G0(4,1),G0(5,2), - & G0(5,3),G0(5,4),G0(5,1),G0(6,2),G0(6,4),G0(6,1)) - ELSE ! K.M.; TABULATED - CALL KMTAB (IONIC, TEMP,G0(2,1),G0(2,2),G0(2,4), - & G0(3,2),G0(3,4),G0(3,1),G0(1,2),G0(1,3),G0(3,3), - & G0(1,4),G0(1,1),G0(2,3),G0(4,4),G0(4,1),G0(5,2), - & G0(5,3),G0(5,4),G0(5,1),G0(6,2),G0(6,4),G0(6,1)) - ENDIF -! -! *** CALCULATE MULTICOMPONENT ACTIVITY COEFFICIENTS ******************* -! - AGAMA = 0.511*(298.0/TEMP)**1.5 ! Debye Huckel const. at T - SION = SQRT(IONIC) - H = AGAMA*SION/(1+SION) -! - DO 100 I=1,4 - F1(I)=0.0 - F2A(I)=0.0 - F2B(I)=0.0 -100 CONTINUE - F1(5)=0.0 - F1(6)=0.0 -! - ! Rewrite so that nested DO loops don't end on the same CONTINUE, - ! which may cause an warning/error on newer compilers (bmy, 1/13/21) - DO 109 I=1,3 - ZPL = Z(I) - MPL = MOLAL(I)/WATER - DO 110 J=1,4 - ZMI = Z(J+3) - CH = 0.25*(ZPL+ZMI)*(ZPL+ZMI)/IONIC - XIJ = CH*MPL - YJI = CH*MOLAL(J+3)/WATER - F1(I) = F1(I) + SNGL(YJI*(G0(I,J) + ZPL*ZMI*H)) - F2A(J) = F2A(J) + SNGL(XIJ*(G0(I,J) + ZPL*ZMI*H)) - 110 CONTINUE - 109 CONTINUE -! - ! Rewrite so that nested DO loops don't end on the same CONTINUE, - ! which may cause an warning/error on newer compilers (bmy, 1/13/21) - DO 329 I=4,6 - ZPL = Z(I+4) - MPL = MOLAL(I+4)/WATER - DO 330 J=1,4 - ZMI = Z(J+3) - IF (J.EQ.3) THEN - IF (I.EQ.4 .OR. I.EQ.6) THEN - GO TO 330 - ENDIF - ENDIF - CH = 0.25*(ZPL+ZMI)*(ZPL+ZMI)/IONIC - XIJ = CH*MPL - YJI = CH*MOLAL(J+3)/WATER - F1(I) = F1(I) + SNGL(YJI*(G0(I,J) + ZPL*ZMI*H)) - F2B(J) = F2B(J) + SNGL(XIJ*(G0(I,J) + ZPL*ZMI*H)) - 330 CONTINUE - 329 CONTINUE -! -! *** LOG10 OF ACTIVITY COEFFICIENTS *********************************** -! - GAMA(01) = GA(2,1)*ZZ(01) ! NACL - GAMA(02) = GA(2,2)*ZZ(02) ! NA2SO4 - GAMA(03) = GA(2,4)*ZZ(03) ! NANO3 - GAMA(04) = GA(3,2)*ZZ(04) ! (NH4)2SO4 - GAMA(05) = GA(3,4)*ZZ(05) ! NH4NO3 - GAMA(06) = GA(3,1)*ZZ(06) ! NH4CL - GAMA(07) = GA(1,2)*ZZ(07) ! 2H-SO4 - GAMA(08) = GA(1,3)*ZZ(08) ! H-HSO4 - GAMA(09) = GA(3,3)*ZZ(09) ! NH4HSO4 - GAMA(10) = GA(1,4)*ZZ(10) ! HNO3 - GAMA(11) = GA(1,1)*ZZ(11) ! HCL - GAMA(12) = GA(2,3)*ZZ(12) ! NAHSO4 - GAMA(13) = 0.20*(3.0*GAMA(04)+2.0*GAMA(09)) ! LC ; SCAPE -!C GAMA(13) = 0.50*(GAMA(04)+GAMA(09)) ! LC ; SEQUILIB -!C GAMA(13) = 0.25*(3.0*GAMA(04)+GAMA(07)) ! LC ; AIM - GAMA(14) = 0.0d0 ! CASO4 - GAMA(15) = GB(4,4)*ZZ(15) ! CA(NO3)2 - GAMA(16) = GB(4,1)*ZZ(16) ! CACL2 - GAMA(17) = GB(5,2)*ZZ(17) ! K2SO4 - GAMA(18) = GB(5,3)*ZZ(18) ! KHSO4 - GAMA(19) = GB(5,4)*ZZ(19) ! KNO3 - GAMA(20) = GB(5,1)*ZZ(20) ! KCL - GAMA(21) = GB(6,2)*ZZ(21) ! MGSO4 - GAMA(22) = GB(6,4)*ZZ(22) ! MG(NO3)2 - GAMA(23) = GB(6,1)*ZZ(23) ! MGCL2 -! -! *** CONVERT LOG (GAMA) COEFFICIENTS TO GAMA ************************** -! - DO 200 I=1,NPAIR - GAMA(I)=MAX(-5.0d0, MIN(GAMA(I),5.0d0) ) ! F77 LIBRARY ROUTINE - GAMA(I)=10.0**GAMA(I) -!C GAMA(I)=EX10(SNGL(GAMA(I)), 5.0) ! CUTOFF SET TO [-5,5] - 200 CONTINUE -! -! *** SETUP ACTIVITY CALCULATION FLAGS ******************************** -! -! OUTER CALCULATION LOOP ; ONLY IF FRST=.TRUE. -! - IF (FRST) THEN - ERROU = ZERO ! CONVERGENCE CRITERION - DO 210 I=1,NPAIR - ERROU=MAX(ERROU, ABS((GAMOU(I)-GAMA(I))/GAMOU(I))) -210 CONTINUE - CALAOU = ERROU .GE. EPSACT ! SETUP FLAGS - FRST =.FALSE. - ENDIF -! -! INNER CALCULATION LOOP ; ALWAYS -! - ERRIN = ZERO ! CONVERGENCE CRITERION - DO 220 I=1,NPAIR - ERRIN = MAX (ERRIN, ABS((GAMIN(I)-GAMA(I))/GAMIN(I))) -220 CONTINUE - CALAIN = ERRIN .GE. EPSACT -! - ICLACT = ICLACT + 1 ! Increment ACTIVITY call counter - - ! Store the result of IONIC - IONIC_MAIN = IONIC -! -! *** END OF SUBROUTINE ACTIVITY **************************************** -! - RETURN - END SUBROUTINE CALCACT4 - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCACT3 -! *** CALCULATES MULTI-COMPONENT ACTIVITY COEFFICIENTS FROM BROMLEYS -! METHOD FOR AN AMMONIUM-SULFATE-NITRATE-CHLORIDE-SODIUM AEROSOL SYSTEM. -! THE BINARY ACTIVITY COEFFICIENTS ARE CALCULATED BY -! KUSIK-MEISNER RELATION (SUBROUTINE KMTAB or SUBROUTINE KMFUL3). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCACT3() -! - Real(Kind=IonicKind) :: Ionic - Real(kind=fp) :: G0(6,4),ZPL,ZMI,AGAMA,SION,H,CH,F1(3),F2(4) - Real(kind=fp) :: MPL, XIJ, YJI - Real(kind=fp) :: ErrOu, ErrIn - Real(kind=fp), Parameter :: URF=0.5 -! PARAMETER (LN10=2.30258509299404568402D0) -! - ! This is a function - Real(kind=fp) :: G - Integer :: I,J - G(I,J)= (F1(I)/Z(I) + F2(J)/Z(J+3)) / (Z(I)+Z(J+3)) - H - -#if defined( ISORROPIA_V22 ) - ! S. Capps 2015-11-20: Initialize G0 following approach of - ! H.O.T.P. in CALCACT4 - DO J = 1, 4 - DO I = 1, 6 - G0(I,J) = 0.0 - ENDDO - ENDDO -#endif -! -! *** SAVE ACTIVITIES IN OLD ARRAY ************************************* -! - IF (FRST) THEN ! Outer loop - DO 10 I=1,13 - GAMOU(I) = GAMA(I) -10 CONTINUE - ENDIF -! - DO 20 I=1,13 ! Inner loop - GAMIN(I) = GAMA(I) -20 CONTINUE -! -! *** CALCULATE IONIC ACTIVITY OF SOLUTION ***************************** -! - Ionic_Main = 0.0 - IONIC=0.0 - DO 30 I=1,7 - IONIC=IONIC + MOLAL(I)*Z(I)*Z(I) -30 CONTINUE - IONIC = MAX(MIN(0.5*IONIC/WATER,100.d0), TINY) -! -! *** CALCULATE BINARY ACTIVITY COEFFICIENTS *************************** -! -! G0(1,1)=G11;G0(1,2)=G07;G0(1,3)=G08;G0(1,4)=G10;G0(2,1)=G01;G0(2,2)=G02 -! G0(2,3)=G12;G0(2,4)=G03;G0(3,1)=G06;G0(3,2)=G04;G0(3,3)=G09;G0(3,4)=G05 -! - IF (IACALC.EQ.0) THEN ! K.M.; FULL - CALL KMFUL3 (IONIC, TEMP,G0(2,1),G0(2,2),G0(2,4), - & G0(3,2),G0(3,4),G0(3,1),G0(1,2),G0(1,3),G0(3,3), - & G0(1,4),G0(1,1),G0(2,3)) - ELSE ! K.M.; TABULATED - CALL KMTAB (IONIC, TEMP,G0(2,1),G0(2,2),G0(2,4), - & G0(3,2),G0(3,4),G0(3,1),G0(1,2),G0(1,3),G0(3,3), - & G0(1,4),G0(1,1),G0(2,3),G0(4,4),G0(4,1),G0(5,2), - & G0(5,3),G0(5,4),G0(5,1),G0(6,2),G0(6,4),G0(6,1)) - ENDIF -! -! *** CALCULATE MULTICOMPONENT ACTIVITY COEFFICIENTS ******************* -! - AGAMA = 0.511*(298.0/TEMP)**1.5 ! Debye Huckel const. at T - SION = SQRT(IONIC) - H = AGAMA*SION/(1+SION) -! - DO 100 I=1,3 - F1(I)=0.0 - F2(I)=0.0 -100 CONTINUE - F2(4)=0.0 -! - ! Rewrite so that nested DO loops don't end on the same CONTINUE, - ! which may cause an warning/error on newer compilers (bmy, 1/13/21) - DO 109 I=1,3 - ZPL = Z(I) - MPL = MOLAL(I)/WATER - DO 110 J=1,4 - ZMI = Z(J+3) - CH = 0.25*(ZPL+ZMI)*(ZPL+ZMI)/IONIC - XIJ = CH*MPL - YJI = CH*MOLAL(J+3)/WATER - F1(I) = F1(I) + SNGL(YJI*(G0(I,J) + ZPL*ZMI*H)) - F2(J) = F2(J) + SNGL(XIJ*(G0(I,J) + ZPL*ZMI*H)) - 110 CONTINUE - 109 CONTINUE -! -! *** LOG10 OF ACTIVITY COEFFICIENTS *********************************** -! - GAMA(01) = G(2,1)*ZZ(01) ! NACL - GAMA(02) = G(2,2)*ZZ(02) ! NA2SO4 - GAMA(03) = G(2,4)*ZZ(03) ! NANO3 - GAMA(04) = G(3,2)*ZZ(04) ! (NH4)2SO4 - GAMA(05) = G(3,4)*ZZ(05) ! NH4NO3 - GAMA(06) = G(3,1)*ZZ(06) ! NH4CL - GAMA(07) = G(1,2)*ZZ(07) ! 2H-SO4 - GAMA(08) = G(1,3)*ZZ(08) ! H-HSO4 - GAMA(09) = G(3,3)*ZZ(09) ! NH4HSO4 - GAMA(10) = G(1,4)*ZZ(10) ! HNO3 - GAMA(11) = G(1,1)*ZZ(11) ! HCL - GAMA(12) = G(2,3)*ZZ(12) ! NAHSO4 - GAMA(13) = 0.20*(3.0*GAMA(04)+2.0*GAMA(09)) ! LC ; SCAPE -!C GAMA(13) = 0.50*(GAMA(04)+GAMA(09)) ! LC ; SEQUILIB -!C GAMA(13) = 0.25*(3.0*GAMA(04)+GAMA(07)) ! LC ; AIM -! -! *** CONVERT LOG (GAMA) COEFFICIENTS TO GAMA ************************** -! - DO 200 I=1,13 - GAMA(I)=MAX(-5.0d0, MIN(GAMA(I),5.0d0) ) ! F77 LIBRARY ROUTINE - GAMA(I)=10.0**GAMA(I) -! GAMA(I)=EXP(LN10*GAMA(I)) -!C GAMA(I)=EX10(SNGL(GAMA(I)), 5.0) ! CUTOFF SET TO [-5,5] -! GAMA(I) = GAMIN(I)*(1.0-URF) + URF*GAMA(I) ! Under-relax GAMA's - 200 CONTINUE -! -! *** SETUP ACTIVITY CALCULATION FLAGS ********************************* -! -! OUTER CALCULATION LOOP ; ONLY IF FRST=.TRUE. -! - IF (FRST) THEN - ERROU = ZERO ! CONVERGENCE CRITERION - DO 210 I=1,13 - ERROU=MAX(ERROU, ABS((GAMOU(I)-GAMA(I))/GAMOU(I))) -210 CONTINUE - CALAOU = ERROU .GE. EPSACT ! SETUP FLAGS - FRST =.FALSE. - ENDIF -! -! INNER CALCULATION LOOP ; ALWAYS -! - ERRIN = ZERO ! CONVERGENCE CRITERION - DO 220 I=1,13 - ERRIN = MAX (ERRIN, ABS((GAMIN(I)-GAMA(I))/GAMIN(I))) -220 CONTINUE - CALAIN = ERRIN .GE. EPSACT -! - ICLACT = ICLACT + 1 ! Increment ACTIVITY call counter - - ! Store IONIC - IONIC_MAIN = IONIC -! -! *** END OF SUBROUTINE ACTIVITY **************************************** -! - RETURN - END SUBROUTINE CALCACT3 - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCACT2 -! *** CALCULATES MULTI-COMPONENT ACTIVITY COEFFICIENTS FROM BROMLEYS -! METHOD FOR AN AMMONIUM-SULFATE-NITRATE AEROSOL SYSTEM. -! THE BINARY ACTIVITY COEFFICIENTS ARE CALCULATED BY -! KUSIK-MEISNER RELATION (SUBROUTINE KMTAB or SUBROUTINE KMFUL2). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCACT2() -! - Real(Kind=IonicKind) :: Ionic - Real(Kind=fp) :: G0(6,4),ZPL,ZMI,AGAMA,SION,H,CH,F1(3),F2(4) - Real(kind=fp) :: MPL, XIJ, YJI - Real(kind=fp) :: ErrOu, ErrIn - Real(kind=fp), Parameter :: URF=0.5 -! PARAMETER (LN10=2.30258509299404568402D0) -! - ! This is a function - Real(kind=fp) :: G - Integer :: I,J - G(I,J)= (F1(I)/Z(I) + F2(J)/Z(J+3)) / (Z(I)+Z(J+3)) - H - -#if defined( ISORROPIA_V22 ) - ! S. Capps 2015-11-20: Initialize G0 following approach of - ! H.O.T.P. in CALCACT4 - DO J = 1, 4 - DO I = 1, 6 - G0(I,J) = 0.0 - ENDDO - ENDDO -#endif -! -! *** SAVE ACTIVITIES IN OLD ARRAY ************************************* -! - IF (FRST) THEN ! Outer loop - DO 10 I=7,10 - GAMOU(I) = GAMA(I) -10 CONTINUE - GAMOU(4) = GAMA(4) - GAMOU(5) = GAMA(5) - GAMOU(13) = GAMA(13) - ENDIF -! - DO 20 I=7,10 ! Inner loop - GAMIN(I) = GAMA(I) -20 CONTINUE - GAMIN(4) = GAMA(4) - GAMIN(5) = GAMA(5) - GAMIN(13) = GAMA(13) -! -! *** CALCULATE IONIC ACTIVITY OF SOLUTION ***************************** -! - Ionic_Main = 0.0 - IONIC=0.0 - MOLAL(2) = ZERO - MOLAL(4) = ZERO - DO 30 I=1,7 - IONIC=IONIC + MOLAL(I)*Z(I)*Z(I) -30 CONTINUE - IONIC = MAX(MIN(0.5*IONIC/WATER,100.d0), TINY) -! -! *** CALCULATE BINARY ACTIVITY COEFFICIENTS *************************** -! -! G0(1,1)=G11;G0(1,2)=G07;G0(1,3)=G08;G0(1,4)=G10;G0(2,1)=G01;G0(2,2)=G02 -! G0(2,3)=G12;G0(2,4)=G03;G0(3,1)=G06;G0(3,2)=G04;G0(3,3)=G09;G0(3,4)=G05 -! - IF (IACALC.EQ.0) THEN ! K.M.; FULL - CALL KMFUL2 (IONIC, TEMP,G0(3,2),G0(3,4),G0(1,2), - & G0(1,3),G0(3,3),G0(1,4)) - ELSE ! K.M.; TABULATED - CALL KMTAB (IONIC, TEMP,G0(2,1),G0(2,2),G0(2,4), - & G0(3,2),G0(3,4),G0(3,1),G0(1,2),G0(1,3),G0(3,3), - & G0(1,4),G0(1,1),G0(2,3),G0(4,4),G0(4,1),G0(5,2), - & G0(5,3),G0(5,4),G0(5,1),G0(6,2),G0(6,4),G0(6,1)) - ENDIF -! -! *** CALCULATE MULTICOMPONENT ACTIVITY COEFFICIENTS ******************* -! - AGAMA = 0.511*(298.0/TEMP)**1.5 ! Debye Huckel const. at T - SION = SQRT(IONIC) - H = AGAMA*SION/(1+SION) -! - DO 100 I=1,3 - F1(I)=0.0 - F2(I)=0.0 -100 CONTINUE - F2(4)=0.0 -! - ! Rewrite so that nested DO loops don't end on the same CONTINUE, - ! which may cause an warning/error on newer compilers (bmy, 1/13/21) - DO 109 I=1,3,2 - ZPL = Z(I) - MPL = MOLAL(I)/WATER - DO 110 J=2,4 - ZMI = Z(J+3) - CH = 0.25*(ZPL+ZMI)*(ZPL+ZMI)/IONIC - XIJ = CH*MPL - YJI = CH*MOLAL(J+3)/WATER - F1(I) = F1(I) + SNGL(YJI*(G0(I,J) + ZPL*ZMI*H)) - F2(J) = F2(J) + SNGL(XIJ*(G0(I,J) + ZPL*ZMI*H)) - 110 CONTINUE - 109 CONTINUE -! -! *** LOG10 OF ACTIVITY COEFFICIENTS *********************************** -! -! GAMA(01) = G(2,1)*ZZ(01) ! NACL -! GAMA(02) = G(2,2)*ZZ(02) ! NA2SO4 -! GAMA(03) = G(2,4)*ZZ(03) ! NANO3 - GAMA(04) = G(3,2)*ZZ(04) ! (NH4)2SO4 - GAMA(05) = G(3,4)*ZZ(05) ! NH4NO3 -! GAMA(06) = G(3,1)*ZZ(06) ! NH4CL - GAMA(07) = G(1,2)*ZZ(07) ! 2H-SO4 - GAMA(08) = G(1,3)*ZZ(08) ! H-HSO4 - GAMA(09) = G(3,3)*ZZ(09) ! NH4HSO4 - GAMA(10) = G(1,4)*ZZ(10) ! HNO3 -! GAMA(11) = G(1,1)*ZZ(11) ! HCL -! GAMA(12) = G(2,3)*ZZ(12) ! NAHSO4 - GAMA(13) = 0.20*(3.0*GAMA(04)+2.0*GAMA(09)) ! LC ; SCAPE -!C GAMA(13) = 0.50*(GAMA(04)+GAMA(09)) ! LC ; SEQUILIB -!C GAMA(13) = 0.25*(3.0*GAMA(04)+GAMA(07)) ! LC ; AIM -! -! *** CONVERT LOG (GAMA) COEFFICIENTS TO GAMA ************************** -! - DO 200 I=7,10 - GAMA(I)=MAX(-5.0d0, MIN(GAMA(I),5.0d0) ) ! F77 LIBRARY ROUTINE - GAMA(I)=10.0**GAMA(I) -! GAMA(I)=EXP(LN10*GAMA(I)) -!C GAMA(I)=EX10(SNGL(GAMA(I)), 5.0) ! CUTOFF SET TO [-5,5] -! GAMA(I) = GAMIN(I)*(1.0-URF) + URF*GAMA(I) ! Under-relax GAMA's - 200 CONTINUE -! - GAMA(4)=MAX(-5.0d0, MIN(GAMA(4),5.0d0) ) ! F77 LIBRARY ROUTINE - GAMA(4)=10.0**GAMA(4) -! GAMA(I)=EXP(LN10*GAMA(I)) -!C GAMA(I)=EX10(SNGL(GAMA(I)), 5.0) ! CUTOFF SET TO [-5,5] -! GAMA(4) = GAMIN(4)*(1.0-URF) + URF*GAMA(4) ! Under-relax GAMA's -! - GAMA(5)=MAX(-5.0d0, MIN(GAMA(5),5.0d0) ) ! F77 LIBRARY ROUTINE - GAMA(5)=10.0**GAMA(5) -! GAMA(I)=EXP(LN10*GAMA(I)) -!C GAMA(I)=EX10(SNGL(GAMA(I)), 5.0) ! CUTOFF SET TO [-5,5] -! GAMA(5) = GAMIN(5)*(1.0-URF) + URF*GAMA(I) ! Under-relax GAMA's -! - GAMA(13)=MAX(-5.0d0, MIN(GAMA(13),5.0d0) ) ! F77 LIBRARY ROUTINE - GAMA(13)=10.0**GAMA(13) -! GAMA(I)=EXP(LN10*GAMA(I)) -!C GAMA(I)=EX10(SNGL(GAMA(I)), 5.0) ! CUTOFF SET TO [-5,5] -! GAMA(13) = GAMIN(13)*(1.0-URF) + URF*GAMA(13) ! Under-relax GAMA's -! -! *** SETUP ACTIVITY CALCULATION FLAGS ********************************* -! -! OUTER CALCULATION LOOP ; ONLY IF FRST=.TRUE. -! - IF (FRST) THEN - ERROU = ZERO ! CONVERGENCE CRITERION - DO 210 I=7,10 - ERROU=MAX(ERROU, ABS((GAMOU(I)-GAMA(I))/GAMOU(I))) -210 CONTINUE - ERROU=MAX(ERROU, ABS((GAMOU(4)-GAMA(4))/GAMOU(4))) - ERROU=MAX(ERROU, ABS((GAMOU(5)-GAMA(5))/GAMOU(5))) - ERROU=MAX(ERROU, ABS((GAMOU(13)-GAMA(13))/GAMOU(13))) -! - CALAOU = ERROU .GE. EPSACT ! SETUP FLAGS - FRST =.FALSE. - ENDIF -! -! INNER CALCULATION LOOP ; ALWAYS -! - ERRIN = ZERO ! CONVERGENCE CRITERION - DO 220 I=7,10 - ERRIN = MAX (ERRIN, ABS((GAMIN(I)-GAMA(I))/GAMIN(I))) -220 CONTINUE - ERRIN = MAX (ERRIN, ABS((GAMIN(4)-GAMA(4))/GAMIN(4))) - ERRIN = MAX (ERRIN, ABS((GAMIN(5)-GAMA(5))/GAMIN(5))) - ERRIN = MAX (ERRIN, ABS((GAMIN(13)-GAMA(13))/GAMIN(13))) - CALAIN = ERRIN .GE. EPSACT -! - ICLACT = ICLACT + 1 ! Increment ACTIVITY call counter - - ! Store IONIC - IONIC_MAIN = IONIC -! -! *** END OF SUBROUTINE ACTIVITY **************************************** -! - RETURN - END SUBROUTINE CALCACT2 - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCACT1 -! *** CALCULATES MULTI-COMPONENT ACTIVITY COEFFICIENTS FROM BROMLEYS -! METHOD FOR AN AMMONIUM-SULFATE AEROSOL SYSTEM. -! THE BINARY ACTIVITY COEFFICIENTS ARE CALCULATED BY -! KUSIK-MEISNER RELATION (SUBROUTINE KMTAB or SUBROUTINE KMFUL1). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCACT1() -! - Real(Kind=IonicKind) :: Ionic - Real(Kind=fp), Parameter :: URF=0.5 - Real(Kind=fp) :: G0(6,4),ZPL,ZMI,AGAMA,SION,H,CH,F1(3),F2(4) - Real(kind=fp) :: MPL, XIJ, YJI - Real(kind=fp) :: ErrOu, ErrIn -! PARAMETER (LN10=2.30258509299404568402D0) -! - ! This is a function - Real(kind=fp) :: G - Integer :: I,J - G(I,J)= (F1(I)/Z(I) + F2(J)/Z(J+3)) / (Z(I)+Z(J+3)) - H - -#if defined( ISORROPIA_V22 ) - ! S. Capps 2015-11-20: Initialize G0 following approach of - ! H.O.T.P. in CALCACT4 - DO J = 1, 4 - DO I = 1, 6 - G0(I,J) = 0.0 - ENDDO - ENDDO -#endif -! -! *** SAVE ACTIVITIES IN OLD ARRAY ************************************* -! - IF (FRST) THEN ! Outer loop - DO 10 I=7,9 - GAMOU(I) = GAMA(I) -10 CONTINUE - GAMOU(4) = GAMA(4) -! GAMOU(5) = GAMA(5) - GAMOU(13) = GAMA(13) - ENDIF -! - DO 20 I=7,9 ! Inner loop - GAMIN(I) = GAMA(I) -20 CONTINUE - GAMIN(4) = GAMA(4) -! GAMIN(5) = GAMA(5) - GAMIN(13) = GAMA(13) -! -! *** CALCULATE IONIC ACTIVITY OF SOLUTION ***************************** -! - Ionic_Main = 0.0 - IONIC=0.0 - MOLAL(2) = ZERO - MOLAL(4) = ZERO - MOLAL(7) = ZERO - DO 30 I=1,7 - IONIC=IONIC + MOLAL(I)*Z(I)*Z(I) -30 CONTINUE - IONIC = MAX(MIN(0.5*IONIC/WATER,100.d0), TINY) -! -! *** CALCULATE BINARY ACTIVITY COEFFICIENTS *************************** -! -! G0(1,1)=G11;G0(1,2)=G07;G0(1,3)=G08;G0(1,4)=G10;G0(2,1)=G01;G0(2,2)=G02 -! G0(2,3)=G12;G0(2,4)=G03;G0(3,1)=G06;G0(3,2)=G04;G0(3,3)=G09;G0(3,4)=G05 -! - IF (IACALC.EQ.0) THEN ! K.M.; FULL - CALL KMFUL1 (IONIC, TEMP,G0(3,2),G0(1,2), - & G0(1,3),G0(3,3)) - ELSE ! K.M.; TABULATED - CALL KMTAB (IONIC, TEMP,G0(2,1),G0(2,2),G0(2,4), - & G0(3,2),G0(3,4),G0(3,1),G0(1,2),G0(1,3),G0(3,3), - & G0(1,4),G0(1,1),G0(2,3),G0(4,4),G0(4,1),G0(5,2), - & G0(5,3),G0(5,4),G0(5,1),G0(6,2),G0(6,4),G0(6,1)) - ENDIF -! -! *** CALCULATE MULTICOMPONENT ACTIVITY COEFFICIENTS ******************* -! - AGAMA = 0.511*(298.0/TEMP)**1.5 ! Debye Huckel const. at T - SION = SQRT(IONIC) - H = AGAMA*SION/(1+SION) -! - DO 100 I=1,3 - F1(I)=0.0 - F2(I)=0.0 -100 CONTINUE - F2(4)=0.0 -! - ! Rewrite so that nested DO loops don't end on the same CONTINUE, - ! which may cause an warning/error on newer compilers (bmy, 1/13/21) - DO 109 I=1,3,2 - ZPL = Z(I) - MPL = MOLAL(I)/WATER - DO 110 J=2,3 - ZMI = Z(J+3) - CH = 0.25*(ZPL+ZMI)*(ZPL+ZMI)/IONIC - XIJ = CH*MPL - YJI = CH*MOLAL(J+3)/WATER - F1(I) = F1(I) + SNGL(YJI*(G0(I,J) + ZPL*ZMI*H)) - F2(J) = F2(J) + SNGL(XIJ*(G0(I,J) + ZPL*ZMI*H)) - 110 CONTINUE - 109 CONTINUE -! -! *** LOG10 OF ACTIVITY COEFFICIENTS *********************************** -! -! GAMA(01) = G(2,1)*ZZ(01) ! NACL -! GAMA(02) = G(2,2)*ZZ(02) ! NA2SO4 -! GAMA(03) = G(2,4)*ZZ(03) ! NANO3 - GAMA(04) = G(3,2)*ZZ(04) ! (NH4)2SO4 -! GAMA(05) = G(3,4)*ZZ(05) ! NH4NO3 -! GAMA(06) = G(3,1)*ZZ(06) ! NH4CL - GAMA(07) = G(1,2)*ZZ(07) ! 2H-SO4 - GAMA(08) = G(1,3)*ZZ(08) ! H-HSO4 -#if defined( ISORROPIA_V22 ) - GAMA(09) = G(3,3)*ZZ(09) ! NH4HSO4 (SLC 2015-11-20) -#else - GAMA(09) = 0.5*(GAMA(04)+GAMA(07)) ! NH4HSO4 ; AIM (Wexler & Seinfeld, 1991) -#endif -! GAMA(10) = G(1,4)*ZZ(10) ! HNO3 -! GAMA(11) = G(1,1)*ZZ(11) ! HCL -! GAMA(12) = G(2,3)*ZZ(12) ! NAHSO4 - GAMA(13) = 0.20*(3.0*GAMA(04)+2.0*GAMA(09)) ! LC ; SCAPE -!C GAMA(13) = 0.50*(GAMA(04)+GAMA(09)) ! LC ; SEQUILIB -!C GAMA(13) = 0.25*(3.0*GAMA(04)+GAMA(07)) ! LC ; AIM -! -! *** CONVERT LOG (GAMA) COEFFICIENTS TO GAMA ************************** -! - DO 200 I=7,9 - GAMA(I)=MAX(-5.0d0, MIN(GAMA(I),5.0d0) ) ! F77 LIBRARY ROUTINE - GAMA(I)=10.0**GAMA(I) -! GAMA(I)=EXP(LN10*GAMA(I)) -!C GAMA(I)=EX10(SNGL(GAMA(I)), 5.0) ! CUTOFF SET TO [-5,5] -! GAMA(I) = GAMIN(I)*(1.0-URF) + URF*GAMA(I) ! Under-relax GAMA's - 200 CONTINUE -! - GAMA(4)=MAX(-5.0d0, MIN(GAMA(4),5.0d0) ) ! F77 LIBRARY ROUTINE - GAMA(4)=10.0**GAMA(4) -! GAMA(I)=EXP(LN10*GAMA(I)) -!C GAMA(I)=EX10(SNGL(GAMA(I)), 5.0) ! CUTOFF SET TO [-5,5] -! GAMA(4) = GAMIN(4)*(1.0-URF) + URF*GAMA(4) ! Under-relax GAMA's -! -! GAMA(5)=MAX(-5.0d0, MIN(GAMA(5),5.0d0) ) ! F77 LIBRARY ROUTINE -! GAMA(5)=10.0**GAMA(5) -!C GAMA(I)=EXP(LN10*GAMA(I)) -!CC GAMA(I)=EX10(SNGL(GAMA(I)), 5.0) ! CUTOFF SET TO [-5,5] -! GAMA(5) = GAMIN(5)*(1.0-URF) + URF*GAMA(I) ! Under-relax GAMA's -! - GAMA(13)=MAX(-5.0d0, MIN(GAMA(13),5.0d0) ) ! F77 LIBRARY ROUTINE - GAMA(13)=10.0**GAMA(13) -! GAMA(I)=EXP(LN10*GAMA(I)) -!C GAMA(I)=EX10(SNGL(GAMA(I)), 5.0) ! CUTOFF SET TO [-5,5] -! GAMA(13) = GAMIN(13)*(1.0-URF) + URF*GAMA(13) ! Under-relax GAMA's -! -! *** SETUP ACTIVITY CALCULATION FLAGS ********************************* -! -! OUTER CALCULATION LOOP ; ONLY IF FRST=.TRUE. -! - IF (FRST) THEN - ERROU = ZERO ! CONVERGENCE CRITERION - DO 210 I=7,9 - ERROU=MAX(ERROU, ABS((GAMOU(I)-GAMA(I))/GAMOU(I))) -210 CONTINUE - ERROU=MAX(ERROU, ABS((GAMOU(4)-GAMA(4))/GAMOU(4))) -! ERROU=MAX(ERROU, ABS((GAMOU(5)-GAMA(5))/GAMOU(5))) - ERROU=MAX(ERROU, ABS((GAMOU(13)-GAMA(13))/GAMOU(13))) -! - CALAOU = ERROU .GE. EPSACT ! SETUP FLAGS - FRST =.FALSE. - ENDIF -! -! INNER CALCULATION LOOP ; ALWAYS -! - ERRIN = ZERO ! CONVERGENCE CRITERION - DO 220 I=7,9 - ERRIN = MAX (ERRIN, ABS((GAMIN(I)-GAMA(I))/GAMIN(I))) -220 CONTINUE - ERRIN = MAX (ERRIN, ABS((GAMIN(4)-GAMA(4))/GAMIN(4))) -! ERRIN = MAX (ERRIN, ABS((GAMIN(5)-GAMA(5))/GAMIN(5))) - ERRIN = MAX (ERRIN, ABS((GAMIN(13)-GAMA(13))/GAMIN(13))) - CALAIN = ERRIN .GE. EPSACT -! - ICLACT = ICLACT + 1 ! Increment ACTIVITY call counter - - ! Store IONIC - IONIC_MAIN = IONIC -! -! *** END OF SUBROUTINE ACTIVITY **************************************** -! - RETURN - END SUBROUTINE CALCACT1 - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE RSTGAM -! *** RESETS ACTIVITY COEFFICIENT ARRAYS TO DEFAULT VALUE OF 0.1 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE RSTGAM() - Integer :: I -! - DO 10 I=1, NPAIR - GAMA(I) = 0.1 -10 CONTINUE -! -! *** END OF SUBROUTINE RSTGAM ****************************************** -! - RETURN - END SUBROUTINE RSTGAM - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE RSTGAMP -! *** RESETS ACTIVITY COEFFICIENT ARRAYS TO DEFAULT VALUE OF 0.1 IF -! *** GREATER THAN THE THRESHOLD VALUE -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE RSTGAMP() - Integer :: I - Real(kind=fp), Parameter :: GThresh=100.0d0 - Real(kind=fp) :: GMax -! -#if defined( ISORROPIA_V22 ) - GMax = 0.1d0 - Do I=1, NPAIR - GMax = Max(GMax,GAMA(I)) - End Do - - If (GMax.gt.GThresh) Then - Do I=1, NPAIR - GAMA(I) = 0.1d0 - GAMIN(I) = GREAT - GAMOU(I) = GREAT - End Do - CALAOU = .TRUE. - FRST = .TRUE. - End If -#else - Return -#endif -! -! *** END OF SUBROUTINE RSTGAMP ***************************************** -! - END SUBROUTINE RSTGAMP - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE KMFUL4 -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD -! FOR AN AMMONIUM-SULFATE-NITRATE-CHLORIDE-SODIUM-CALCIUM-POTASSIUM-MAGNESIUM -! AEROSOL SYSTEM. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE KMFUL4 (IONIC,T0,G01,G02,G03,G04,G05,G06,G07,G08,G09, - & G10,G11,G12,G15,G16,G17,G18,G19,G20, - & G21,G22,G23) - ! Input variables - Real(Kind=IonicKind) :: IONIC - Real(kind=fp) :: T0 - Real(kind=fp) :: G01,G02,G03,G04,G05,G06,G07,G08,G09,G10 - Real(kind=fp) :: G11,G12,G13,G14,G15,G16,G17,G18,G19,G20 - Real(kind=fp) :: G21,G22,G23 - Real(kind=fp) :: CF1, CF2 - - ! Parameters - Real(kind=fp), Parameter :: Z01 = 1 - Real(kind=fp), Parameter :: Z02 = 2 - Real(kind=fp), Parameter :: Z03 = 1 - Real(kind=fp), Parameter :: Z04 = 2 - Real(kind=fp), Parameter :: Z05 = 1 - Real(kind=fp), Parameter :: Z06 = 1 - Real(kind=fp), Parameter :: Z07 = 2 - Real(kind=fp), Parameter :: Z08 = 1 - Real(kind=fp), Parameter :: Z10 = 1 - Real(kind=fp), Parameter :: Z11 = 1 - Real(kind=fp), Parameter :: Z15 = 2 - Real(kind=fp), Parameter :: Z16 = 2 - Real(kind=fp), Parameter :: Z17 = 2 - Real(kind=fp), Parameter :: Z19 = 1 - Real(kind=fp), Parameter :: Z20 = 1 - Real(kind=fp), Parameter :: Z21 = 4 - Real(kind=fp), Parameter :: Z22 = 2 - Real(kind=fp), Parameter :: Z23 = 2 - - ! Intermediate variables - Real(kind=fp) :: SIon, TI, TC -! - SION = SQRT(IONIC) -! -! *** Coefficients at 25 oC -! - CALL MKBI(2.230_fp, IONIC, SION, Z01, G01) - CALL MKBI(-0.19_fp, IONIC, SION, Z02, G02) - CALL MKBI(-0.39_fp, IONIC, SION, Z03, G03) - CALL MKBI(-0.25_fp, IONIC, SION, Z04, G04) - CALL MKBI(-1.15_fp, IONIC, SION, Z05, G05) - CALL MKBI(0.820_fp, IONIC, SION, Z06, G06) - CALL MKBI(-.100_fp, IONIC, SION, Z07, G07) - CALL MKBI(8.000_fp, IONIC, SION, Z08, G08) - CALL MKBI(2.600_fp, IONIC, SION, Z10, G10) - CALL MKBI(6.000_fp, IONIC, SION, Z11, G11) - CALL MKBI(0.930_fp, IONIC, SION, Z15, G15) - CALL MKBI(2.400_fp, IONIC, SION, Z16, G16) - CALL MKBI(-0.25_fp, IONIC, SION, Z17, G17) - CALL MKBI(-2.33_fp, IONIC, SION, Z19, G19) - CALL MKBI(0.920_fp, IONIC, SION, Z20, G20) - CALL MKBI(0.150_fp, IONIC, SION, Z21, G21) - CALL MKBI(2.320_fp, IONIC, SION, Z22, G22) - CALL MKBI(2.900_fp, IONIC, SION, Z23, G23) -! -! *** Correct for T other than 298 K -! - TI = T0-273.0 - TC = TI-25.0 - IF (ABS(TC) .GT. 1.0) THEN - CF1 = 1.125-0.005*TI - CF2 = (0.125-0.005*TI)*(0.039*IONIC**0.92-0.41*SION/(1.+SION)) - G01 = CF1*G01 - CF2*Z01 - G02 = CF1*G02 - CF2*Z02 - G03 = CF1*G03 - CF2*Z03 - G04 = CF1*G04 - CF2*Z04 - G05 = CF1*G05 - CF2*Z05 - G06 = CF1*G06 - CF2*Z06 - G07 = CF1*G07 - CF2*Z07 - G08 = CF1*G08 - CF2*Z08 - G10 = CF1*G10 - CF2*Z10 - G11 = CF1*G11 - CF2*Z11 - G15 = CF1*G15 - CF2*Z15 - G16 = CF1*G16 - CF2*Z16 - G17 = CF1*G17 - CF2*Z17 - G19 = CF1*G19 - CF2*Z19 - G20 = CF1*G20 - CF2*Z20 - G21 = CF1*G21 - CF2*Z21 - G22 = CF1*G22 - CF2*Z22 - G23 = CF1*G23 - CF2*Z23 - - ENDIF -! - G09 = G06 + G08 - G11 - G12 = G01 + G08 - G11 - G18 = G08 + G20 - G11 -! -! *** Return point ; End of subroutine -! - RETURN - END SUBROUTINE KMFUL4 - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE KMFUL3 -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD -! FOR AN AMMONIUM-SULFATE-NITRATE-CHLORIDE-SODIUM AEROSOL SYSTEM. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE KMFUL3 (IONIC,T0,G01,G02,G03,G04,G05,G06,G07,G08,G09, - & G10,G11,G12) - Real(Kind=IonicKind) :: Ionic - Real(kind=fp) :: T0 - Real(kind=fp), Parameter :: Z01 = 1 - Real(kind=fp), Parameter :: Z02 = 2 - Real(kind=fp), Parameter :: Z03 = 1 - Real(kind=fp), Parameter :: Z04 = 2 - Real(kind=fp), Parameter :: Z05 = 1 - Real(kind=fp), Parameter :: Z06 = 1 - Real(kind=fp), Parameter :: Z07 = 2 - Real(kind=fp), Parameter :: Z08 = 1 - Real(kind=fp), Parameter :: Z10 = 1 - Real(kind=fp), Parameter :: Z11 = 1 - Real(kind=fp) :: G01, G02, G03, G04, G05, G06, G07, G08, G09 - Real(kind=fp) :: G10, G11, G12 - Real(kind=fp) :: SIon, TI, TC, CF1, CF2 -! - SION = SQRT(IONIC) -! -! *** Coefficients at 25 oC -! - CALL MKBI(2.230_fp, IONIC, SION, Z01, G01) - CALL MKBI(-0.19_fp, IONIC, SION, Z02, G02) - CALL MKBI(-0.39_fp, IONIC, SION, Z03, G03) - CALL MKBI(-0.25_fp, IONIC, SION, Z04, G04) - CALL MKBI(-1.15_fp, IONIC, SION, Z05, G05) - CALL MKBI(0.820_fp, IONIC, SION, Z06, G06) - CALL MKBI(-.100_fp, IONIC, SION, Z07, G07) - CALL MKBI(8.000_fp, IONIC, SION, Z08, G08) - CALL MKBI(2.600_fp, IONIC, SION, Z10, G10) - CALL MKBI(6.000_fp, IONIC, SION, Z11, G11) -! -! *** Correct for T other than 298 K -! - TI = T0-273.0 - TC = TI-25.0 - IF (ABS(TC) .GT. 1.0) THEN - CF1 = 1.125-0.005*TI - CF2 = (0.125-0.005*TI)*(0.039*IONIC**0.92-0.41*SION/(1.+SION)) - G01 = CF1*G01 - CF2*Z01 - G02 = CF1*G02 - CF2*Z02 - G03 = CF1*G03 - CF2*Z03 - G04 = CF1*G04 - CF2*Z04 - G05 = CF1*G05 - CF2*Z05 - G06 = CF1*G06 - CF2*Z06 - G07 = CF1*G07 - CF2*Z07 - G08 = CF1*G08 - CF2*Z08 - G10 = CF1*G10 - CF2*Z10 - G11 = CF1*G11 - CF2*Z11 - ENDIF -! - G09 = G06 + G08 - G11 - G12 = G01 + G08 - G11 -! -! *** Return point ; End of subroutine -! - RETURN - END SUBROUTINE KMFUL3 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE KMFUL2 -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD -! FOR AN AMMONIUM-SULFATE-NITRATE AEROSOL SYSTEM. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE KMFUL2 (IONIC,T0,G04,G05,G07,G08,G09,G10) - Real(Kind=IonicKind) :: IONIC - Real(kind=fp) :: T0 - Real(kind=fp), Parameter :: Z01 = 1 - Real(kind=fp), Parameter :: Z02 = 2 - Real(kind=fp), Parameter :: Z03 = 1 - Real(kind=fp), Parameter :: Z04 = 2 - Real(kind=fp), Parameter :: Z05 = 1 - Real(kind=fp), Parameter :: Z06 = 1 - Real(kind=fp), Parameter :: Z07 = 2 - Real(kind=fp), Parameter :: Z08 = 1 - Real(kind=fp), Parameter :: Z10 = 1 - Real(kind=fp), Parameter :: Z11 = 1 - Real(kind=fp) :: G04, G05, G06, G07, G08, G09, G10, G11 - Real(kind=fp) :: SIon, TI, TC, CF1, CF2 -! - SION = SQRT(IONIC) -! -! *** Coefficients at 25 oC -! -! CALL MKBI(2.230_fp, IONIC, SION, Z01, G01) -! CALL MKBI(-0.19_fp, IONIC, SION, Z02, G02) -! CALL MKBI(-0.39_fp, IONIC, SION, Z03, G03) - CALL MKBI(-0.25_fp, IONIC, SION, Z04, G04) - CALL MKBI(-1.15_fp, IONIC, SION, Z05, G05) -#if defined( ISORROPIA_V22 ) - CALL MKBI(0.820_fp, IONIC, SION, Z06, G06) -#endif - CALL MKBI(-.100_fp, IONIC, SION, Z07, G07) - CALL MKBI(8.000_fp, IONIC, SION, Z08, G08) - CALL MKBI(2.600_fp, IONIC, SION, Z10, G10) -#if defined( ISORROPIA_V22 ) - CALL MKBI(6.000_fp, IONIC, SION, Z11, G11) -#endif -! -! *** Correct for T other than 298 K -! - TI = T0-273.0 - TC = TI-25.0 - IF (ABS(TC) .GT. 1.0) THEN - CF1 = 1.125-0.005*TI - CF2 = (0.125-0.005*TI)*(0.039*IONIC**0.92-0.41*SION/(1.+SION)) -! G01 = CF1*G01 - CF2*Z01 -! G02 = CF1*G02 - CF2*Z02 -! G03 = CF1*G03 - CF2*Z03 - G04 = CF1*G04 - CF2*Z04 - G05 = CF1*G05 - CF2*Z05 -#if defined( ISORROPIA_V22 ) - G06 = CF1*G06 - CF2*Z06 -#endif - G07 = CF1*G07 - CF2*Z07 - G08 = CF1*G08 - CF2*Z08 - G10 = CF1*G10 - CF2*Z10 -#if defined( ISORROPIA_V22 ) - G11 = CF1*G11 - CF2*Z11 -#endif - ENDIF -! -#if defined( ISORROPIA_V22 ) - ! Use original method of calculating G09 as written up for - ! CALCACT3 for consistency (SLC 2012-02-01) - G09 = G06 + G08 - G11 -#else - G09 = G05 + G08 - G10 -#endif -! G12 = G01 + G08 - G11 -! -! *** Return point ; End of subroutine -! - RETURN - END SUBROUTINE KMFUL2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE KMFUL1 -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD -! FOR AN AMMONIUM-SULFATE AEROSOL SYSTEM. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE KMFUL1 (IONIC,T0,G04,G07,G08,G09) - Real(kind=fp) :: T0 - Real(kind=fp), Parameter :: Z01 = 1 - Real(kind=fp), Parameter :: Z02 = 2 - Real(kind=fp), Parameter :: Z03 = 1 - Real(kind=fp), Parameter :: Z04 = 2 - Real(kind=fp), Parameter :: Z05 = 1 - Real(kind=fp), Parameter :: Z06 = 1 - Real(kind=fp), Parameter :: Z07 = 2 - Real(kind=fp), Parameter :: Z08 = 1 - Real(kind=fp), Parameter :: Z10 = 1 - Real(kind=fp), Parameter :: Z11 = 1 - Real(kind=fp) :: G04, G06, G07, G08, G09, G11 - Real(kind=fp) :: SIon, TI, TC, CF1, CF2 - Real(Kind=IonicKind) :: IONIC -! - SION = SQRT(IONIC) -! -! *** Coefficients at 25 oC -! -! CALL MKBI(2.230_fp, IONIC, SION, Z01, G01) -! CALL MKBI(-0.19_fp, IONIC, SION, Z02, G02) -! CALL MKBI(-0.39_fp, IONIC, SION, Z03, G03) - CALL MKBI(-0.25_fp, IONIC, SION, Z04, G04) -! CALL MKBI(-1.15_fp, IONIC, SION, Z05, G05) -#if defined( ISORROPIA_V22 ) - CALL MKBI(0.820_fp, IONIC, SION, Z06, G06) -#endif - CALL MKBI(-.100_fp, IONIC, SION, Z07, G07) - CALL MKBI(8.000_fp, IONIC, SION, Z08, G08) -! CALL MKBI(2.600_fp, IONIC, SION, Z10, G10) -#if defined( ISORROPIA_V22 ) - CALL MKBI(6.000_fp, IONIC, SION, Z11, G11) -#endif -! -! *** Correct for T other than 298 K -! - TI = T0-273.0 - TC = TI-25.0 - IF (ABS(TC) .GT. 1.0) THEN - CF1 = 1.125-0.005*TI - CF2 = (0.125-0.005*TI)*(0.039*IONIC**0.92-0.41*SION/(1.+SION)) -! G01 = CF1*G01 - CF2*Z01 -! G02 = CF1*G02 - CF2*Z02 -! G03 = CF1*G03 - CF2*Z03 - G04 = CF1*G04 - CF2*Z04 -! G05 = CF1*G05 - CF2*Z05 -#if defined( ISORROPIA_V22 ) - G06 = CF1*G06 - CF2*Z06 -#endif - G07 = CF1*G07 - CF2*Z07 - G08 = CF1*G08 - CF2*Z08 -! G10 = CF1*G10 - CF2*Z10 -#if defined( ISORROPIA_V22 ) - G11 = CF1*G11 - CF2*Z11 -#endif - ENDIF -! -#if defined( ISORROPIA_V22 ) - ! Correction - G09 is G0(3,3), which is not calculated in - ! CALCACT1. Use G09 from CALCACT3 to represent G09 - ! (SLC 2012-02-01) - G09 = G06 + G08 - G11 -#else -! G09 = G05 + G08 - G10 ! CALCULATED IN CALCACT1 -#endif -! G12 = G01 + G08 - G11 -! -! *** Return point ; End of subroutine -! - RETURN - END SUBROUTINE KMFUL1 - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE MKBI -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE MKBI(Q,IONIC,SION,ZIP,BI) -! - Real(Kind=IonicKind) :: Ionic - Real(kind=fp) :: Q, SIon, ZIP - Real(kind=fp) :: BI - Real(kind=fp) :: B, C, XX -! - B=.75-.065*Q - C= 1.0 - IF (IONIC.LT.6.0) C=1.+.055*Q*EXP(-.023*IONIC*IONIC*IONIC) - XX=-0.5107*SION/(1.+C*SION) - BI=(1.+B*(1.+.1*IONIC)**Q-B) - BI=ZIP*LOG10(BI) + ZIP*XX -! - RETURN - END SUBROUTINE MKBI - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE KMTAB -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD. -! THE COMPUTATIONS HAVE BEEN PERFORMED AND THE RESULTS ARE STORED IN -! LOOKUP TABLES. THE IONIC ACTIVITY 'IONIC' IS INPUT, AND THE ARRAY -! 'BINARR' IS RETURNED WITH THE BINARY COEFFICIENTS. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE KMTAB (Ionic,T0,G01,G02,G03,G04,G05,G06,G07,G08,G09, - & G10,G11,G12,G15,G16,G17,G18,G19,G20,G21,G22,G23) - Real(Kind=fp) :: Binarray (23), T0 - Real(Kind=IonicKind) :: Ionic - Real(kind=fp) :: G01,G02,G03,G04,G05,G06,G07,G08,G09,G10 - Real(kind=fp) :: G11,G12,G13,G14,G15,G16,G17,G18,G19,G20 - Real(kind=fp) :: G21,G22,G23 - Integer :: Ind -! -! *** Find temperature range -! - IND = NINT((T0-198.0)/25.0) + 1 - IND = MIN(MAX(IND,1),6) -! -! *** Call appropriate routine -! - IF (IND.EQ.1) THEN - CALL KM198 (Ionic,binarray) - ELSEIF (IND.EQ.2) THEN - CALL KM223 (Ionic,binarray) - ELSEIF (IND.EQ.3) THEN - CALL KM248 (Ionic,binarray) - ELSEIF (IND.EQ.4) THEN - CALL KM273 (Ionic,binarray) - ELSEIF (IND.EQ.5) THEN - CALL KM298 (Ionic,binarray) - ELSE - CALL KM323 (Ionic,binarray) - ENDIF -! - G01 = binarray(01) - G02 = binarray(02) - G03 = binarray(03) - G04 = binarray(04) - G05 = binarray(05) - G06 = binarray(06) - G07 = binarray(07) - G08 = binarray(08) - G09 = binarray(09) - G10 = binarray(10) - G11 = binarray(11) - G12 = binarray(12) - G13 = binarray(13) - G14 = binarray(14) - G15 = binarray(15) - G16 = binarray(16) - G17 = binarray(17) - G18 = binarray(18) - G19 = binarray(19) - G20 = binarray(20) - G21 = binarray(21) - G22 = binarray(22) - G23 = binarray(23) -! -! *** Return point; End of subroutine -! - RETURN - END SUBROUTINE KMTAB - - -! INTEGER FUNCTION IBACPOS(IN) -!C -!C Compute the index in the binary activity coefficient array -!C based on the input ionic strength. -!C -!C Chris Nolte, 6/16/05 -!C -! implicit none -! real IN -! IF (IN .LE. 0.300000E+02) THEN -! ibacpos = MIN(NINT( 0.200000E+02*IN) + 1, 600) -! ELSE -! ibacpos = 600+NINT( 0.200000E+01*IN- 0.600000E+02) -! ENDIF -! ibacpos = min(ibacpos, 741) -! return -! end - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE KM198 -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD. -! THE COMPUTATIONS HAVE BEEN PERFORMED AND THE RESULTS ARE STORED IN -! LOOKUP TABLES. THE IONIC ACTIVITY 'IN' IS INPUT, AND THE ARRAY -! 'BINARR' IS RETURNED WITH THE BINARY COEFFICIENTS. -! -! TEMPERATURE IS 198K -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE KM198 (IONIC, BINARR) - Real(Kind=IonicKind) :: IONIC - Real(kind=fp) :: Binarr (23) - Integer :: ipos -! -! *** Find position in arrays for bincoef -! - IF (Ionic.LE. 0.200000E+02) THEN - ipos = MIN(NINT( 0.200000E+02*Ionic) + 1, 400) - ELSE - ipos = 400+NINT( 0.200000E+01*Ionic- 0.400000E+02) - ENDIF - ipos = min(ipos, 561) -! -! *** Assign values to return array -! - Binarr(01) = BNC01M_198(ipos) - Binarr(02) = BNC02M_198(ipos) - Binarr(03) = BNC03M_198(ipos) - Binarr(04) = BNC04M_198(ipos) - Binarr(05) = BNC05M_198(ipos) - Binarr(06) = BNC06M_198(ipos) - Binarr(07) = BNC07M_198(ipos) - Binarr(08) = BNC08M_198(ipos) - Binarr(09) = BNC09M_198(ipos) - Binarr(10) = BNC10M_198(ipos) - Binarr(11) = BNC11M_198(ipos) - Binarr(12) = BNC12M_198(ipos) - Binarr(13) = BNC13M_198(ipos) - Binarr(14) = BNC14M_198(ipos) - Binarr(15) = BNC15M_198(ipos) - Binarr(16) = BNC16M_198(ipos) - Binarr(17) = BNC17M_198(ipos) - Binarr(18) = BNC18M_198(ipos) - Binarr(19) = BNC19M_198(ipos) - Binarr(20) = BNC20M_198(ipos) - Binarr(21) = BNC21M_198(ipos) - Binarr(22) = BNC22M_198(ipos) - Binarr(23) = BNC23M_198(ipos) -! -! *** Return point ; End of subroutine -! - RETURN - END SUBROUTINE KM198 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE KM223 -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD. -! THE COMPUTATIONS HAVE BEEN PERFORMED AND THE RESULTS ARE STORED IN -! LOOKUP TABLES. THE IONIC ACTIVITY 'IN' IS INPUT, AND THE ARRAY -! 'BINARR' IS RETURNED WITH THE BINARY COEFFICIENTS. -! -! TEMPERATURE IS 223K -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE KM223 (IONIC, BINARR) - Real(Kind=IonicKind) :: IONIC - Real(kind=fp) :: Binarr (23) - Integer :: ipos -! -! *** Find position in arrays for bincoef -! - IF (Ionic.LE. 0.200000E+02) THEN - ipos = MIN(NINT( 0.200000E+02*Ionic) + 1, 400) - ELSE - ipos = 400+NINT( 0.200000E+01*Ionic- 0.400000E+02) - ENDIF - ipos = min(ipos, 561) -! -! *** Assign values to return array -! - Binarr(01) = BNC01M_223(ipos) - Binarr(02) = BNC02M_223(ipos) - Binarr(03) = BNC03M_223(ipos) - Binarr(04) = BNC04M_223(ipos) - Binarr(05) = BNC05M_223(ipos) - Binarr(06) = BNC06M_223(ipos) - Binarr(07) = BNC07M_223(ipos) - Binarr(08) = BNC08M_223(ipos) - Binarr(09) = BNC09M_223(ipos) - Binarr(10) = BNC10M_223(ipos) - Binarr(11) = BNC11M_223(ipos) - Binarr(12) = BNC12M_223(ipos) - Binarr(13) = BNC13M_223(ipos) - Binarr(14) = BNC14M_223(ipos) - Binarr(15) = BNC15M_223(ipos) - Binarr(16) = BNC16M_223(ipos) - Binarr(17) = BNC17M_223(ipos) - Binarr(18) = BNC18M_223(ipos) - Binarr(19) = BNC19M_223(ipos) - Binarr(20) = BNC20M_223(ipos) - Binarr(21) = BNC21M_223(ipos) - Binarr(22) = BNC22M_223(ipos) - Binarr(23) = BNC23M_223(ipos) -! -! *** Return point ; End of subroutine -! - RETURN - END SUBROUTINE KM223 -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE KM248 -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD. -! THE COMPUTATIONS HAVE BEEN PERFORMED AND THE RESULTS ARE STORED IN -! LOOKUP TABLES. THE IONIC ACTIVITY 'IN' IS INPUT, AND THE ARRAY -! 'BINARR' IS RETURNED WITH THE BINARY COEFFICIENTS. -! -! TEMPERATURE IS 248K -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE KM248 (IONIC, BINARR) - Real(Kind=IonicKind) :: IONIC - Real(kind=fp) :: Binarr (23) - Integer :: ipos -! -! *** Find position in arrays for bincoef -! - IF (Ionic.LE. 0.200000E+02) THEN - ipos = MIN(NINT( 0.200000E+02*Ionic) + 1, 400) - ELSE - ipos = 400+NINT( 0.200000E+01*Ionic- 0.400000E+02) - ENDIF - ipos = min(ipos, 561) -! -! *** Assign values to return array -! - Binarr(01) = BNC01M_248(ipos) - Binarr(02) = BNC02M_248(ipos) - Binarr(03) = BNC03M_248(ipos) - Binarr(04) = BNC04M_248(ipos) - Binarr(05) = BNC05M_248(ipos) - Binarr(06) = BNC06M_248(ipos) - Binarr(07) = BNC07M_248(ipos) - Binarr(08) = BNC08M_248(ipos) - Binarr(09) = BNC09M_248(ipos) - Binarr(10) = BNC10M_248(ipos) - Binarr(11) = BNC11M_248(ipos) - Binarr(12) = BNC12M_248(ipos) - Binarr(13) = BNC13M_248(ipos) - Binarr(14) = BNC14M_248(ipos) - Binarr(15) = BNC15M_248(ipos) - Binarr(16) = BNC16M_248(ipos) - Binarr(17) = BNC17M_248(ipos) - Binarr(18) = BNC18M_248(ipos) - Binarr(19) = BNC19M_248(ipos) - Binarr(20) = BNC20M_248(ipos) - Binarr(21) = BNC21M_248(ipos) - Binarr(22) = BNC22M_248(ipos) - Binarr(23) = BNC23M_248(ipos) -! -! *** Return point ; End of subroutine -! - RETURN - END SUBROUTINE KM248 - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE KM273 -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD. -! THE COMPUTATIONS HAVE BEEN PERFORMED AND THE RESULTS ARE STORED IN -! LOOKUP TABLES. THE IONIC ACTIVITY 'IN' IS INPUT, AND THE ARRAY -! 'BINARR' IS RETURNED WITH THE BINARY COEFFICIENTS. -! -! TEMPERATURE IS 273K -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE KM273 (IONIC, BINARR) - Real(Kind=IonicKind) :: IONIC - Real(kind=fp) :: Binarr (23) - Integer :: ipos -! -! *** Find position in arrays for bincoef -! - IF (Ionic.LE. 0.200000E+02) THEN - ipos = MIN(NINT( 0.200000E+02*Ionic) + 1, 400) - ELSE - ipos = 400+NINT( 0.200000E+01*Ionic- 0.400000E+02) - ENDIF - ipos = min(ipos, 561) -! -! *** Assign values to return array -! - Binarr(01) = BNC01M_273(ipos) - Binarr(02) = BNC02M_273(ipos) - Binarr(03) = BNC03M_273(ipos) - Binarr(04) = BNC04M_273(ipos) - Binarr(05) = BNC05M_273(ipos) - Binarr(06) = BNC06M_273(ipos) - Binarr(07) = BNC07M_273(ipos) - Binarr(08) = BNC08M_273(ipos) - Binarr(09) = BNC09M_273(ipos) - Binarr(10) = BNC10M_273(ipos) - Binarr(11) = BNC11M_273(ipos) - Binarr(12) = BNC12M_273(ipos) - Binarr(13) = BNC13M_273(ipos) - Binarr(14) = BNC14M_273(ipos) - Binarr(15) = BNC15M_273(ipos) - Binarr(16) = BNC16M_273(ipos) - Binarr(17) = BNC17M_273(ipos) - Binarr(18) = BNC18M_273(ipos) - Binarr(19) = BNC19M_273(ipos) - Binarr(20) = BNC20M_273(ipos) - Binarr(21) = BNC21M_273(ipos) - Binarr(22) = BNC22M_273(ipos) - Binarr(23) = BNC23M_273(ipos) -! -! *** Return point ; End of subroutine -! - RETURN - END SUBROUTINE KM273 - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE KM298 -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD. -! THE COMPUTATIONS HAVE BEEN PERFORMED AND THE RESULTS ARE STORED IN -! LOOKUP TABLES. THE IONIC ACTIVITY 'IN' IS INPUT, AND THE ARRAY -! 'BINARR' IS RETURNED WITH THE BINARY COEFFICIENTS. -! -! TEMPERATURE IS 298K -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE KM298 (IONIC, BINARR) - Real(kind=fp) :: Binarr (23) - Real(Kind=IonicKind) :: IONIC - Integer :: ipos -! -! *** Find position in arrays for bincoef -! - IF (Ionic.LE. 0.200000E+02) THEN - ipos = MIN(NINT( 0.200000E+02*Ionic) + 1, 400) - ELSE - ipos = 400+NINT( 0.200000E+01*Ionic- 0.400000E+02) - ENDIF - ipos = min(ipos, 561) -! -! *** Assign values to return array -! - Binarr(01) = BNC01M_298(ipos) - Binarr(02) = BNC02M_298(ipos) - Binarr(03) = BNC03M_298(ipos) - Binarr(04) = BNC04M_298(ipos) - Binarr(05) = BNC05M_298(ipos) - Binarr(06) = BNC06M_298(ipos) - Binarr(07) = BNC07M_298(ipos) - Binarr(08) = BNC08M_298(ipos) - Binarr(09) = BNC09M_298(ipos) - Binarr(10) = BNC10M_298(ipos) - Binarr(11) = BNC11M_298(ipos) - Binarr(12) = BNC12M_298(ipos) - Binarr(13) = BNC13M_298(ipos) - Binarr(14) = BNC14M_298(ipos) - Binarr(15) = BNC15M_298(ipos) - Binarr(16) = BNC16M_298(ipos) - Binarr(17) = BNC17M_298(ipos) - Binarr(18) = BNC18M_298(ipos) - Binarr(19) = BNC19M_298(ipos) - Binarr(20) = BNC20M_298(ipos) - Binarr(21) = BNC21M_298(ipos) - Binarr(22) = BNC22M_298(ipos) - Binarr(23) = BNC23M_298(ipos) -! -! *** Return point ; End of subroutine -! - RETURN - END SUBROUTINE KM298 - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE KM323 -! *** CALCULATES BINARY ACTIVITY COEFFICIENTS BY KUSIK-MEISSNER METHOD. -! THE COMPUTATIONS HAVE BEEN PERFORMED AND THE RESULTS ARE STORED IN -! LOOKUP TABLES. THE IONIC ACTIVITY 'IN' IS INPUT, AND THE ARRAY -! 'BINARR' IS RETURNED WITH THE BINARY COEFFICIENTS. -! -! TEMPERATURE IS 323K -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE KM323 (IONIC, BINARR) - Real(Kind=IonicKind) :: IONIC - Real(kind=fp) :: Binarr (23) - Integer :: ipos -! -! *** Find position in arrays for bincoef -! - IF (Ionic.LE. 0.200000E+02) THEN - ipos = MIN(NINT( 0.200000E+02*Ionic) + 1, 400) - ELSE - ipos = 400+NINT( 0.200000E+01*Ionic- 0.400000E+02) - ENDIF - ipos = min(ipos, 561) -! -! *** Assign values to return array -! - Binarr(01) = BNC01M_323(ipos) - Binarr(02) = BNC02M_323(ipos) - Binarr(03) = BNC03M_323(ipos) - Binarr(04) = BNC04M_323(ipos) - Binarr(05) = BNC05M_323(ipos) - Binarr(06) = BNC06M_323(ipos) - Binarr(07) = BNC07M_323(ipos) - Binarr(08) = BNC08M_323(ipos) - Binarr(09) = BNC09M_323(ipos) - Binarr(10) = BNC10M_323(ipos) - Binarr(11) = BNC11M_323(ipos) - Binarr(12) = BNC12M_323(ipos) - Binarr(13) = BNC13M_323(ipos) - Binarr(14) = BNC14M_323(ipos) - Binarr(15) = BNC15M_323(ipos) - Binarr(16) = BNC16M_323(ipos) - Binarr(17) = BNC17M_323(ipos) - Binarr(18) = BNC18M_323(ipos) - Binarr(19) = BNC19M_323(ipos) - Binarr(20) = BNC20M_323(ipos) - Binarr(21) = BNC21M_323(ipos) - Binarr(22) = BNC22M_323(ipos) - Binarr(23) = BNC23M_323(ipos) -! -! *** Return point ; End of subroutine -! - RETURN - END SUBROUTINE KM323 - - -!C************************************************************************* -!C -!C TOOLBOX LIBRARY v.1.0 (May 1995) -!C -!C Program unit : SUBROUTINE CHRBLN -!C Purpose : Position of last non-blank character in a string -!C Author : Athanasios Nenes -!C -!C ======================= ARGUMENTS / USAGE ============================= -!C -!C STR is the CHARACTER variable containing the string examined -!C IBLK is a INTEGER variable containing the position of last non -!C blank character. If string is all spaces (ie ' '), then -!C the value returned is 1. -!C -!C EXAMPLE: -!C STR = 'TEST1.DAT ' -!C CALL CHRBLN (STR, IBLK) -!C -!C after execution of this code segment, "IBLK" has the value "9", which -!C is the position of the last non-blank character of "STR". -!C -!C*********************************************************************** -!C - SUBROUTINE CHRBLN (STR, IBLK) -!C -!C*********************************************************************** - CHARACTER*(*) STR - Integer :: IBLK, I, ILEN -! - IBLK = 1 ! Substring pointer (default=1) - ILEN = LEN(STR) ! Length of string - DO 10 i=ILEN,1,-1 - IF (STR(i:i).NE.' ' .AND. STR(i:i).NE.CHAR(0)) THEN - IBLK = i - RETURN - ENDIF -10 CONTINUE - RETURN -! - END SUBROUTINE CHRBLN - - -!C************************************************************************* -!C -!C TOOLBOX LIBRARY v.1.0 (May 1995) -!C -!C Program unit : SUBROUTINE SHFTRGHT -!C Purpose : RIGHT-JUSTIFICATION FUNCTION ON A STRING -!C Author : Athanasios Nenes -!C -!C ======================= ARGUMENTS / USAGE ============================= -!C -!C STRING is the CHARACTER variable with the string to be justified -!C -!C EXAMPLE: -!C STRING = 'AAAA ' -!C CALL SHFTRGHT (STRING) -!C -!C after execution of this code segment, STRING contains the value -!C ' AAAA'. -!C -!C************************************************************************* -!C - SUBROUTINE SHFTRGHT (CHR) -!C -!C*********************************************************************** - CHARACTER CHR*(*) - Integer :: I1, I2, I -! - I1 = LEN(CHR) ! Total length of string - CALL CHRBLN(CHR,I2) ! Position of last non-blank character - IF (I2.EQ.I1) RETURN -! - DO 10 I=I2,1,-1 ! Shift characters - CHR(I1+I-I2:I1+I-I2) = CHR(I:I) - CHR(I:I) = ' ' -10 CONTINUE - RETURN -! - END SUBROUTINE SHFTRGHT - - -!C************************************************************************* -!C -!C TOOLBOX LIBRARY v.1.0 (May 1995) -!C -!C Program unit : SUBROUTINE RPLSTR -!C Purpose : REPLACE CHARACTERS OCCURING IN A STRING -!C Author : Athanasios Nenes -!C -!C ======================= ARGUMENTS / USAGE ============================= -!C -!C STRING is the CHARACTER variable with the string to be edited -!C OLD is the old character which is to be replaced -!C NEW is the new character which OLD is to be replaced with -!C IERR is 0 if everything went well, is 1 if 'NEW' contains 'OLD'. -!C In this case, this is invalid, and no change is done. -!C -!C EXAMPLE: -!C STRING = 'AAAA' -!C OLD = 'A' -!C NEW = 'B' -!C CALL RPLSTR (STRING, OLD, NEW) -!C -!C after execution of this code segment, STRING contains the value -!C 'BBBB'. -!C -!C************************************************************************* -!C - SUBROUTINE RPLSTR (STRING, OLD, NEW, IERR) -!C -!C*********************************************************************** - CHARACTER STRING*(*), OLD*(*), NEW*(*) - Integer :: ILo, IErr, IP -! -! *** INITIALIZE ******************************************************** -! - ILO = LEN(OLD) -! -! *** CHECK AND SEE IF 'NEW' CONTAINS 'OLD', WHICH CANNOT *************** -! - IP = INDEX(NEW,OLD) - IF (IP.NE.0) THEN - IERR = 1 - RETURN - ELSE - IERR = 0 - ENDIF -! -! *** PROCEED WITH REPLACING ******************************************* -! -10 IP = INDEX(STRING,OLD) ! SEE IF 'OLD' EXISTS IN 'STRING' - IF (IP.EQ.0) RETURN ! 'OLD' DOES NOT EXIST ; RETURN - STRING(IP:IP+ILO-1) = NEW ! REPLACE SUBSTRING 'OLD' WITH 'NEW' - GOTO 10 ! GO FOR NEW OCCURANCE OF 'OLD' -! - END SUBROUTINE RPLSTR - - -!C************************************************************************* -!C -!C TOOLBOX LIBRARY v.1.0 (May 1995) -!C -!C Program unit : SUBROUTINE INPTD -!C Purpose : Prompts user for a value (DOUBLE). A default value -!C is provided, so if user presses , the default -!C is used. -!C Author : Athanasios Nenes -!C -!C ======================= ARGUMENTS / USAGE ============================= -!C -!C VAR is the DOUBLE PRECISION variable which value is to be saved -!C DEF is a DOUBLE PRECISION variable, with the default value of VAR. -!C PROMPT is a CHARACTER varible containing the prompt string. -!C PRFMT is a CHARACTER variable containing the FORMAT specifier -!C for the default value DEF. -!C IERR is an INTEGER error flag, and has the values: -!C 0 - No error detected. -!C 1 - Invalid FORMAT and/or Invalid default value. -!C 2 - Bad value specified by user -!C -!C EXAMPLE: -!C CALL INPTD (VAR, 1.0D0, 'Give value for A ', '*', Ierr) -!C -!C after execution of this code segment, the user is prompted for the -!C value of variable VAR. If is pressed (ie no value is specified) -!C then 1.0 is assigned to VAR. The default value is displayed in free- -!C format. The error status is specified by variable Ierr -!C -!C*********************************************************************** -!C - SUBROUTINE INPTD (VAR, DEF, PROMPT, PRFMT, IERR) -!C -!C*********************************************************************** - CHARACTER PROMPT*(*), PRFMT*(*), BUFFER*128 - Real(kind=fp) :: DEF, VAR - INTEGER IERR - Integer :: IEnd -! - IERR = 0 -! -! *** WRITE DEFAULT VALUE TO WORK BUFFER ******************************* -! - WRITE (BUFFER, FMT=PRFMT, ERR=10) DEF - CALL CHRBLN (BUFFER, IEND) -! -! *** PROMPT USER FOR INPUT AND READ IT ******************************** -! - WRITE (*,*) PROMPT,' [',BUFFER(1:IEND),']: ' - READ (*, '(A)', ERR=20, END=20) BUFFER - CALL CHRBLN (BUFFER,IEND) -! -! *** READ DATA OR SET DEFAULT ? **************************************** -! - IF (IEND.EQ.1 .AND. BUFFER(1:1).EQ.' ') THEN - VAR = DEF - ELSE - READ (BUFFER, *, ERR=20, END=20) VAR - ENDIF -! -! *** RETURN POINT ****************************************************** -! -30 RETURN -! -! *** ERROR HANDLER ***************************************************** -! -10 IERR = 1 ! Bad FORMAT and/or bad default value - GOTO 30 -! -20 IERR = 2 ! Bad number given by user - GOTO 30 -! - END SUBROUTINE INPTD - - -!C************************************************************************* -!C -!C TOOLBOX LIBRARY v.1.0 (May 1995) -!C -!C Program unit : SUBROUTINE Pushend -!C Purpose : Positions the pointer of a sequential file at its end -!C Simulates the ACCESS='APPEND' clause of a F77L OPEN -!C statement with Standard Fortran commands. -!C -!C ======================= ARGUMENTS / USAGE ============================= -!C -!C Iunit is a INTEGER variable, the file unit which the file is -!C connected to. -!C -!C EXAMPLE: -!C CALL PUSHEND (10) -!C -!C after execution of this code segment, the pointer of unit 10 is -!C pushed to its end. -!C -!C*********************************************************************** -!C - SUBROUTINE Pushend (Iunit) -!C -!C*********************************************************************** -! - - LOGICAL OPNED - Integer :: IUnit -! -! *** INQUIRE IF Iunit CONNECTED TO FILE ******************************** -! - INQUIRE (UNIT=Iunit, OPENED=OPNED) - IF (.NOT.OPNED) GOTO 25 -! -! *** Iunit CONNECTED, PUSH POINTER TO END ****************************** -! -10 READ (Iunit,'()', ERR=20, END=20) - GOTO 10 -! -! *** RETURN POINT ****************************************************** -! -20 BACKSPACE (Iunit) -25 RETURN - END SUBROUTINE Pushend - - -!C************************************************************************* -!C -!C TOOLBOX LIBRARY v.1.0 (May 1995) -!C -!C Program unit : SUBROUTINE APPENDEXT -!C Purpose : Fix extension in file name string -!C -!C ======================= ARGUMENTS / USAGE ============================= -!C -!C Filename is the CHARACTER variable with the file name -!C Defext is the CHARACTER variable with extension (including '.', -!C ex. '.DAT') -!C Overwrite is a LOGICAL value, .TRUE. overwrites any existing extension -!C in "Filename" with "Defext", .FALSE. puts "Defext" only if -!C there is no extension in "Filename". -!C -!C EXAMPLE: -!C FILENAME1 = 'TEST.DAT' -!C FILENAME2 = 'TEST.DAT' -!C CALL APPENDEXT (FILENAME1, '.TXT', .FALSE.) -!C CALL APPENDEXT (FILENAME2, '.TXT', .TRUE. ) -!C -!C after execution of this code segment, "FILENAME1" has the value -!C 'TEST.DAT', while "FILENAME2" has the value 'TEST.TXT' -!C -!C*********************************************************************** -!C - SUBROUTINE Appendext (Filename, Defext, Overwrite) -!C -!C*********************************************************************** - CHARACTER*(*) Filename, Defext - LOGICAL Overwrite - Integer :: Idot, IEnd -! - CALL CHRBLN (Filename, Iend) - IF (Filename(1:1).EQ.' ' .AND. Iend.EQ.1) RETURN ! Filename empty - Idot = INDEX (Filename, '.') ! Append extension ? - IF (Idot.EQ.0) Filename = Filename(1:Iend)//Defext - IF (Overwrite .AND. Idot.NE.0) - & Filename = Filename(:Idot-1)//Defext - RETURN - END SUBROUTINE Appendext - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE POLY3 -! *** FINDS THE REAL ROOTS OF THE THIRD ORDER ALGEBRAIC EQUATION: -! X**3 + A1*X**2 + A2*X + A3 = 0.0 -! THE EQUATION IS SOLVED ANALYTICALLY. -! -! PARAMETERS A1, A2, A3 ARE SPECIFIED BY THE USER. THE MINIMUM -! NONEGATIVE ROOT IS RETURNED IN VARIABLE 'ROOT'. IF NO ROOT IS -! FOUND (WHICH IS GREATER THAN ZERO), ROOT HAS THE VALUE 1D30. -! AND THE FLAG ISLV HAS A VALUE GREATER THAN ZERO. -! -! SOLUTION FORMULA IS FOUND IN PAGE 32 OF: -! MATHEMATICAL HANDBOOK OF FORMULAS AND TABLES -! SCHAUM'S OUTLINE SERIES -! MURRAY SPIEGER, McGRAW-HILL, NEW YORK, 1968 -! (GREEK TRANSLATION: BY SOTIRIOS PERSIDES, ESPI, ATHENS, 1976) -! -! A SPECIAL CASE IS CONSIDERED SEPERATELY ; WHEN A3 = 0, THEN -! ONE ROOT IS X=0.0, AND THE OTHER TWO FROM THE SOLUTION OF THE -! QUADRATIC EQUATION X**2 + A1*X + A2 = 0.0 -! THIS SPECIAL CASE IS CONSIDERED BECAUSE THE ANALYTICAL FORMULA -! DOES NOT YIELD ACCURATE RESULTS (DUE TO NUMERICAL ROUNDOFF ERRORS) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE POLY3 (A1, A2, A3, ROOT, ISLV) -! - ! I/O - Real(kind=fp) :: A1, A2, A3, ROOT - Integer :: ISLV - - !IMPLICIT DOUBLE PRECISION (A-H, O-Z) - Real(kind=fp), Parameter :: EXPON = (1.0d0/3.0d0) - Real(kind=fp), Parameter :: THET1 = (120.0d0/180.0d0) - Real(kind=fp), Parameter :: THET2 = (240.0d0/180.0d0) - Real(kind=fp), Parameter :: EPSPoly = 1.0e-50 - - ! Intermediate - Integer :: I, IX - Real(kind=fp) :: X(3), D, SQD, R, Q, SSIG, S, T, TSIG - Real(kind=fp) :: THET, COEF -! -! *** SPECIAL CASE : QUADRATIC*X EQUATION ***************************** -! - IF (ABS(A3).LE.EPSPoly) THEN - ISLV = 1 - IX = 1 - X(1) = ZERO - D = A1*A1-4.0*A2 - IF (D.GE.ZERO) THEN - IX = 3 - SQD = SQRT(D) - X(2) = 0.5*(-A1+SQD) - X(3) = 0.5*(-A1-SQD) - ENDIF - ELSE -! -! *** NORMAL CASE : CUBIC EQUATION ************************************ -! -! DEFINE PARAMETERS Q, R, S, T, D -! - ISLV= 1 - Q = (3.0*A2 - A1*A1)/9.0 - R = (9.0*A1*A2 - 27.0*A3 - 2.0*A1*A1*A1)/54.0 - D = Q*Q*Q + R*R -! -! *** CALCULATE ROOTS ************************************************* -! -! D < 0, THREE REAL ROOTS -! - IF (D.LT.-EPSPoly) THEN ! D < -EPS : D < ZERO - IX = 3 - THET = EXPON*ACOS(R/SQRT(-Q*Q*Q)) - COEF = 2.0*SQRT(-Q) - X(1) = COEF*COS(THET) - EXPON*A1 - X(2) = COEF*COS(THET + THET1*PI) - EXPON*A1 - X(3) = COEF*COS(THET + THET2*PI) - EXPON*A1 -! -! D = 0, THREE REAL (ONE DOUBLE) ROOTS -! - ELSE IF (D.LE.EPSPoly) THEN ! -EPS <= D <= EPS : D = ZERO - IX = 2 - SSIG = SIGN (ONE, R) - S = SSIG*(ABS(R))**EXPON - X(1) = 2.0*S - EXPON*A1 - X(2) = -S - EXPON*A1 -! -! D > 0, ONE REAL ROOT -! - ELSE ! D > EPS : D > ZERO - IX = 1 - SQD = SQRT(D) - SSIG = SIGN (ONE, R+SQD) ! TRANSFER SIGN TO SSIG - TSIG = SIGN (ONE, R-SQD) - S = SSIG*(ABS(R+SQD))**EXPON ! EXPONENTIATE ABS() - T = TSIG*(ABS(R-SQD))**EXPON - X(1) = S + T - EXPON*A1 - ENDIF - ENDIF -! -! *** SELECT APPROPRIATE ROOT ***************************************** -! - ROOT = 1.D30 - DO 10 I=1,IX - IF (X(I).GT.ZERO) THEN - ROOT = MIN (ROOT, X(I)) - ISLV = 0 - ENDIF -10 CONTINUE -! -! *** END OF SUBROUTINE POLY3 ***************************************** -! - RETURN - END SUBROUTINE POLY3 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE POLY3B -! *** FINDS A REAL ROOT OF THE THIRD ORDER ALGEBRAIC EQUATION: -! X**3 + A1*X**2 + A2*X + A3 = 0.0 -! THE EQUATION IS SOLVED NUMERICALLY (BISECTION). -! -! PARAMETERS A1, A2, A3 ARE SPECIFIED BY THE USER. THE MINIMUM -! NONEGATIVE ROOT IS RETURNED IN VARIABLE 'ROOT'. IF NO ROOT IS -! FOUND (WHICH IS GREATER THAN ZERO), ROOT HAS THE VALUE 1D30. -! AND THE FLAG ISLV HAS A VALUE GREATER THAN ZERO. -! -! RTLW, RTHI DEFINE THE INTERVAL WHICH THE ROOT IS LOOKED FOR. -! -!======================================================================= -! - SUBROUTINE POLY3B (A1, A2, A3, RTLW, RTHI, ROOT, ISLV) -! - ! Set up in initialization - !PARAMETER (ZERO=0.0, EPS=1D-15, MAXIT=100, NDIV=5) - ! Inputs - Real(kind=fp) :: A1, A2, A3, RTLW, RTHI - ! Output - Real(kind=fp) :: ROOT - Integer :: ISLV - ! Intermediate variables - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, DX - Integer :: I -! ! This is a function - Real(kind=fp) :: Func, X - FUNC(X) = X**3.d0 + A1*X**2.0 + A2*X + A3 -! -! *** INITIAL VALUES FOR BISECTION ************************************* -! - X1 = RTLW - Y1 = FUNC(X1) - IF (ABS(Y1).LE.EPS) THEN ! Is low a root? - ROOT = RTLW - GOTO 50 - ENDIF -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO *********************** -! - DX = (RTHI-RTLW)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNC (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2) .LT. ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION FOUND -! - IF (ABS(Y2) .LT. EPS) THEN ! X2 is a root - ROOT = X2 - ELSE - ROOT = 1.d30 - ISLV = 1 - ENDIF - GOTO 50 -! -! *** BISECTION ******************************************************* -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - Y3 = FUNC (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE -! -! *** CONVERGED ; RETURN *********************************************** -! -40 X3 = 0.5*(X1+X2) - Y3 = FUNC (X3) - ROOT = X3 - ISLV = 0 -! -50 RETURN -! -! *** END OF SUBROUTINE POLY3B ***************************************** -! - END SUBROUTINE POLY3B - - -!cc PROGRAM DRIVER() -!cc Real(kind=fp) :: ROOT -!ccC -!cc CALL POLY3 (-1.d0, 1.d0, -1.d0, ROOT, ISLV) -!cc IF (ISLV.NE.0) STOP 'Error in POLY3' -!cc WRITE (*,*) 'Root=', ROOT -!ccC -!cc CALL POLY3B (-1.d0, 1.d0, -1.d0, -10.d0, 10.d0, ROOT, ISLV) -!cc IF (ISLV.NE.0) STOP 'Error in POLY3B' -!cc WRITE (*,*) 'Root=', ROOT -!ccC -!cc END SUBROUTINE DRIVER - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** FUNCTION EX10 -! *** 10^X FUNCTION ; ALTERNATE OF LIBRARY ROUTINE ; USED BECAUSE IT IS -! MUCH FASTER BUT WITHOUT GREAT LOSS IN ACCURACY. , -! MAXIMUM ERROR IS 2%, EXECUTION TIME IS 42% OF THE LIBRARY ROUTINE -! (ON A 80286/80287 MACHINE, using Lahey FORTRAN 77 v.3.0). -! -! EXPONENT RANGE IS BETWEEN -K AND K (K IS THE REAL ARGUMENT 'K') -! MAX VALUE FOR K: 9.999 -! IF X < -K, X IS SET TO -K, IF X > K, X IS SET TO K -! -! THE EXPONENT IS CALCULATED BY THE PRODUCT ADEC*AINT, WHERE ADEC -! IS THE MANTISSA AND AINT IS THE MAGNITUDE (EXPONENT). BOTH -! MANTISSA AND MAGNITUDE ARE PRE-CALCULATED AND STORED IN LOOKUP -! TABLES ; THIS LEADS TO THE INCREASED SPEED. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - FUNCTION EX10(X,K) RESULT( OutVal ) - Real(kind=fp) :: X, Y, K - INTEGER :: K1, K2 - Real(kind=fp) :: OutVal -! -! *** LIMIT X TO [-K, K] RANGE ***************************************** -! - Y = MAX(-K, MIN(X,K)) ! MIN: -9.999, MAX: 9.999 -! -! *** GET INTEGER AND DECIMAL PART ************************************* -! - K1 = INT(Y) - K2 = INT(100*(Y-K1)) -! -! *** CALCULATE EXP FUNCTION ******************************************* -! - OutVal = AINT10(K1+10)*ADEC10(K2+100) -! -! *** END OF EXP FUNCTION ********************************************** -! - RETURN - END FUNCTION EX10 - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE PUSHERR -! *** THIS SUBROUTINE SAVES AN ERROR MESSAGE IN THE ERROR STACK -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE PUSHERR (IERR,ERRINF) - CHARACTER ERRINF*(*) - Integer :: IErr -! -! *** SAVE ERROR CODE IF THERE IS ANY SPACE *************************** -! - IF (NOFER.LT.NERRMX) THEN - NOFER = NOFER + 1 - ERRSTK(NOFER) = IERR - ERRMSG(NOFER) = ERRINF - STKOFL =.FALSE. - ELSE - STKOFL =.TRUE. ! STACK OVERFLOW - ENDIF -! -! *** END OF SUBROUTINE PUSHERR **************************************** -! - END SUBROUTINE PUSHERR - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE ISERRINF -! *** THIS SUBROUTINE OBTAINS A COPY OF THE ERROR STACK (& MESSAGES) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE ISERRINF (ERRSTKI, ERRMSGI, NOFERI, STKOFLI) - CHARACTER ERRMSGI*40 - INTEGER ERRSTKI - LOGICAL STKOFLI - DIMENSION ERRMSGI(NERRMX), ERRSTKI(NERRMX) - Integer :: I, NOFERI -! -! *** OBTAIN WHOLE ERROR STACK **************************************** -! - DO 10 I=1,NOFER ! Error messages & codes - ERRSTKI(I) = ERRSTK(I) - ERRMSGI(I) = ERRMSG(I) - 10 CONTINUE -! - STKOFLI = STKOFL - NOFERI = NOFER -! - RETURN -! -! *** END OF SUBROUTINE ISERRINF *************************************** -! - END SUBROUTINE ISERRINF - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE ERRSTAT -! *** THIS SUBROUTINE REPORTS ERROR MESSAGES TO UNIT 'IO' -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE ERRSTAT (IO,IERR,ERRINF) - Character ERRINF*(*) - Character(Len=4) :: CER - Character(Len=29), Parameter :: NCIS = - & 'NO CONVERGENCE IN SUBROUTINE' - Character(Len=27), Parameter :: NCIF = - & 'NO CONVERGENCE IN FUNCTION' - Character(Len=26), Parameter :: NSIS = - & 'NO SOLUTION IN SUBROUTINE' - Character(Len=24), Parameter :: NSIF = - & 'NO SOLUTION IN FUNCTION' - Integer :: IO, IERR, IOK, IEND -! -! *** WRITE ERROR IN CHARACTER ***************************************** -! - WRITE (CER,'(I4)') IERR - CALL RPLSTR (CER, ' ', '0',IOK) ! REPLACE BLANKS WITH ZEROS - CALL CHRBLN (ERRINF, IEND) ! LAST POSITION OF ERRINF CHAR -! -! *** WRITE ERROR TYPE (FATAL, WARNING ) ******************************* -! - IF (IERR.EQ.0) THEN - WRITE (IO,1000) 'NO ERRORS DETECTED ' - GOTO 10 -! - ELSE IF (IERR.LT.0) THEN - WRITE (IO,1000) 'ERROR STACK EXHAUSTED ' - GOTO 10 -! - ELSE IF (IERR.GT.1000) THEN - WRITE (IO,1100) 'FATAL',CER -! - ELSE - WRITE (IO,1100) 'WARNING',CER - ENDIF -! -! *** WRITE ERROR MESSAGE ********************************************** -! -! FATAL MESSAGES -! - IF (IERR.EQ.1001) THEN - CALL CHRBLN (SCASE, IEND) - WRITE (IO,1000) 'CASE NOT SUPPORTED IN CALCMR ['//SCASE(1:IEND) - & //']' -! - ELSEIF (IERR.EQ.1002) THEN - CALL CHRBLN (SCASE, IEND) - WRITE (IO,1000) 'CASE NOT SUPPORTED ['//SCASE(1:IEND)//']' -! -! WARNING MESSAGES -! - ELSEIF (IERR.EQ.0001) THEN - WRITE (IO,1000) NSIS,ERRINF -! - ELSEIF (IERR.EQ.0002) THEN - WRITE (IO,1000) NCIS,ERRINF -! - ELSEIF (IERR.EQ.0003) THEN - WRITE (IO,1000) NSIF,ERRINF -! - ELSEIF (IERR.EQ.0004) THEN - WRITE (IO,1000) NCIF,ERRINF -! - ELSE IF (IERR.EQ.0019) THEN - WRITE (IO,1000) 'HNO3(aq) AFFECTS H+, WHICH '// - & 'MIGHT AFFECT SO4/HSO4 RATIO' - WRITE (IO,1000) 'DIRECT INCREASE IN H+ [',ERRINF(1:IEND),'] %' -! - ELSE IF (IERR.EQ.0020) THEN - IF (W(4).GT.TINY .AND. W(5).GT.TINY) THEN - WRITE (IO,1000) 'HSO4-SO4 EQUILIBRIUM MIGHT AFFECT HNO3,' - & //'HCL DISSOLUTION' - ELSE - WRITE (IO,1000) 'HSO4-SO4 EQUILIBRIUM MIGHT AFFECT NH3 ' - & //'DISSOLUTION' - ENDIF - WRITE (IO,1000) 'DIRECT DECREASE IN H+ [',ERRINF(1:IEND),'] %' -! - ELSE IF (IERR.EQ.0021) THEN - WRITE (IO,1000) 'HNO3(aq),HCL(aq) AFFECT H+, WHICH '// - & 'MIGHT AFFECT SO4/HSO4 RATIO' - WRITE (IO,1000) 'DIRECT INCREASE IN H+ [',ERRINF(1:IEND),'] %' -! - ELSE IF (IERR.EQ.0022) THEN - WRITE (IO,1000) 'HCL(g) EQUILIBRIUM YIELDS NONPHYSICAL '// - & 'DISSOLUTION' - WRITE (IO,1000) 'A TINY AMOUNT [',ERRINF(1:IEND),'] IS '// - & 'ASSUMED TO BE DISSOLVED' -! - ELSEIF (IERR.EQ.0033) THEN - WRITE (IO,1000) 'HCL(aq) AFFECTS H+, WHICH '// - & 'MIGHT AFFECT SO4/HSO4 RATIO' - WRITE (IO,1000) 'DIRECT INCREASE IN H+ [',ERRINF(1:IEND),'] %' -! - ELSEIF (IERR.EQ.0050) THEN - WRITE (IO,1000) 'TOO MUCH SODIUM GIVEN AS INPUT.' - WRITE (IO,1000) 'REDUCED TO COMPLETELY NEUTRALIZE SO4,Cl,NO3.' - WRITE (IO,1000) 'EXCESS SODIUM IS IGNORED.' -! - ELSEIF (IERR.EQ.0051) THEN - WRITE (IO,1000) 'TOO MUCH CALCIUM GIVEN AS INPUT.' - WRITE (IO,1000) 'REDUCED TO COMPLETELY NEUTRALIZE SO4,Cl,NO3.' - WRITE (IO,1000) 'EXCESS CALCIUM IS IGNORED.' -! - ELSEIF (IERR.EQ.0052) THEN - WRITE (IO,1000) 'TOO MUCH SODIUM (+Ca) GIVEN AS INPUT.' - WRITE (IO,1000) 'REDUCED TO COMPLETELY NEUTRALIZE SO4,Cl,NO3.' - WRITE (IO,1000) 'EXCESS SODIUM IS IGNORED.' -! - ELSEIF (IERR.EQ.0053) THEN - WRITE (IO,1000) 'TOO MUCH MAGNESIUM (+Ca,Na) GIVEN AS INPUT.' - WRITE (IO,1000) 'REDUCED TO COMPLETELY NEUTRALIZE SO4,Cl,NO3.' - WRITE (IO,1000) 'EXCESS MAGNESIUM IS IGNORED.' -! - ELSEIF (IERR.EQ.0054) THEN - WRITE (IO,1000) 'TOO MUCH POTASSIUM(+Ca,Na,Mg) GIVEN AS INPUT.' - WRITE (IO,1000) 'REDUCED TO COMPLETELY NEUTRALIZE SO4,Cl,NO3.' - WRITE (IO,1000) 'EXCESS POTASSIUM IS IGNORED.' -! - ELSE - WRITE (IO,1000) 'NO DIAGNOSTIC MESSAGE AVAILABLE' - ENDIF -! -10 RETURN -! -! *** FORMAT STATEMENTS ************************************* -! -1000 FORMAT (1X,A:A:A:A:A) -1100 FORMAT (1X,A,' ERROR [',A4,']:') -! -! *** END OF SUBROUTINE ERRSTAT ***************************** -! - END SUBROUTINE ERRSTAT - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE ISORINF -! *** THIS SUBROUTINE PROVIDES INFORMATION ABOUT ISORROPIA -! -! ======================== ARGUMENTS / USAGE =========================== -! -! OUTPUT: -! 1. [VERSI] -! CHARACTER*15 variable. -! Contains version-date information of ISORROPIA -! -! 2. [NCMP] -! INTEGER variable. -! The number of components needed in input array WI -! (or, the number of major species accounted for by ISORROPIA) -! -! 3. [NION] -! INTEGER variable -! The number of ions considered in the aqueous phase -! -! 4. [NAQGAS] -! INTEGER variable -! The number of undissociated species found in aqueous aerosol -! phase -! -! 5. [NSOL] -! INTEGER variable -! The number of solids considered in the solid aerosol phase -! -! 6. [NERR] -! INTEGER variable -! The size of the error stack (maximum number of errors that can -! be stored before the stack exhausts). -! -! 7. [TIN] -! Real(kind=fp) :: variable -! The value used for a very small number. -! -! 8. [GRT] -! Real(kind=fp) :: variable -! The value used for a very large number. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE ISORINF (VERSI, NCMP, NION, NAQGAS, NSOL, NERR, TIN, - & GRT) - CHARACTER VERSI*(*) - Integer :: NCMP, NION, NAQGAS, NSOL, NERR - Real(kind=fp) :: TIN, GRT -! -! *** ASSIGN INFO ******************************************************* -! - VERSI = VERSION - NCMP = NCOMP - NION = NIONS - NAQGAS = NGASAQ - NSOL = NSLDS - NERR = NERRMX - TIN = TINY - GRT = GREAT -! - RETURN -! -! *** END OF SUBROUTINE ISORINF ******************************************* -! - END SUBROUTINE ISORINF - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE ISRP1F -! *** THIS SUBROUTINE IS THE DRIVER ROUTINE FOR THE FOREWARD PROBLEM OF -! AN AMMONIUM-SULFATE AEROSOL SYSTEM. -! THE COMPOSITION REGIME IS DETERMINED BY THE SULFATE RATIO AND BY -! THE AMBIENT RELATIVE HUMIDITY. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE ISRP1F (WI, RHI, TEMPI) - Real(kind=fp) :: WI(NCOMP), RHI, TEMPI - Real(kind=fp) :: DC -! -! *** INITIALIZE ALL VARIABLES IN COMMON BLOCK ************************** -! - CALL INIT1 (WI, RHI, TEMPI) -! -! *** CALCULATE SULFATE RATIO ******************************************* -! - SULRAT = W(3)/W(2) -! -! *** FIND CALCULATION REGIME FROM (SULRAT,RH) ************************** -! -! *** SULFATE POOR -! - IF (2.0.LE.SULRAT) THEN - DC = W(3) - 2.001D0*W(2) ! For numerical stability - W(3) = W(3) + MAX(-DC, ZERO) -! - IF(METSTBL.EQ.1) THEN - SCASE = 'A2' - CALL CALCA2 ! Only liquid (metastable) - ELSE -! - IF (RH.LT.DRNH42S4) THEN - SCASE = 'A1' - CALL CALCA1 ! NH42SO4 ; case A1 -! - ELSEIF (DRNH42S4.LE.RH) THEN - SCASE = 'A2' - CALL CALCA2 ! Only liquid ; case A2 - ENDIF - ENDIF -! -! *** SULFATE RICH (NO ACID) -! - ELSEIF (1.0.LE.SULRAT .AND. SULRAT.LT.2.0) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'B4' - CALL CALCB4 ! Only liquid (metastable) - ELSE -! - IF (RH.LT.DRNH4HS4) THEN - SCASE = 'B1' - CALL CALCB1 ! NH4HSO4,LC,NH42SO4 ; case B1 -! - ELSEIF (DRNH4HS4.LE.RH .AND. RH.LT.DRLC) THEN - SCASE = 'B2' - CALL CALCB2 ! LC,NH42S4 ; case B2 -! - ELSEIF (DRLC.LE.RH .AND. RH.LT.DRNH42S4) THEN - SCASE = 'B3' - CALL CALCB3 ! NH42S4 ; case B3 -! - ELSEIF (DRNH42S4.LE.RH) THEN - SCASE = 'B4' - CALL CALCB4 ! Only liquid ; case B4 - ENDIF - ENDIF - CALL CALCNH3 -! -! *** SULFATE RICH (FREE ACID) -! - ELSEIF (SULRAT.LT.1.0) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'C2' - CALL CALCC2 ! Only liquid (metastable) - ELSE -! - IF (RH.LT.DRNH4HS4) THEN - SCASE = 'C1' - CALL CALCC1 ! NH4HSO4 ; case C1 -! - ELSEIF (DRNH4HS4.LE.RH) THEN - SCASE = 'C2' - CALL CALCC2 ! Only liquid ; case C2 -! - ENDIF - ENDIF - CALL CALCNH3 - ENDIF -! -! *** RETURN POINT -! - RETURN -! -! *** END OF SUBROUTINE ISRP1F ***************************************** -! - END SUBROUTINE ISRP1F - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE ISRP2F -! *** THIS SUBROUTINE IS THE DRIVER ROUTINE FOR THE FOREWARD PROBLEM OF -! AN AMMONIUM-SULFATE-NITRATE AEROSOL SYSTEM. -! THE COMPOSITION REGIME IS DETERMINED BY THE SULFATE RATIO AND BY -! THE AMBIENT RELATIVE HUMIDITY. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE ISRP2F (WI, RHI, TEMPI) - Real(kind=fp) :: WI(NCOMP), RHI, TEMPI -! -! *** INITIALIZE ALL VARIABLES IN COMMON BLOCK ************************** -! - CALL INIT2 (WI, RHI, TEMPI) -! -! *** CALCULATE SULFATE RATIO ******************************************* -! - SULRAT = W(3)/W(2) -! -! *** FIND CALCULATION REGIME FROM (SULRAT,RH) ************************** -! -! *** SULFATE POOR -! - IF (2.0.LE.SULRAT) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'D3' - CALL CALCD3 ! Only liquid (metastable) - ELSE -! - IF (RH.LT.DRNH4NO3) THEN - SCASE = 'D1' - CALL CALCD1 ! NH42SO4,NH4NO3 ; case D1 -! - ELSEIF (DRNH4NO3.LE.RH .AND. RH.LT.DRNH42S4) THEN - SCASE = 'D2' - CALL CALCD2 ! NH42S4 ; case D2 -! - ELSEIF (DRNH42S4.LE.RH) THEN - SCASE = 'D3' - CALL CALCD3 ! Only liquid ; case D3 - ENDIF - ENDIF -! -! *** SULFATE RICH (NO ACID) -! FOR SOLVING THIS CASE, NITRIC ACID IS ASSUMED A MINOR SPECIES, -! THAT DOES NOT SIGNIFICANTLY PERTURB THE HSO4-SO4 EQUILIBRIUM. -! SUBROUTINES CALCB? ARE CALLED, AND THEN THE NITRIC ACID IS DISSOLVED -! FROM THE HNO3(G) -> (H+) + (NO3-) EQUILIBRIUM. -! - ELSEIF (1.0.LE.SULRAT .AND. SULRAT.LT.2.0) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'B4' - CALL CALCB4 ! Only liquid (metastable) - SCASE = 'E4' - ELSE -! - IF (RH.LT.DRNH4HS4) THEN - SCASE = 'B1' - CALL CALCB1 ! NH4HSO4,LC,NH42SO4 ; case E1 - SCASE = 'E1' -! - ELSEIF (DRNH4HS4.LE.RH .AND. RH.LT.DRLC) THEN - SCASE = 'B2' - CALL CALCB2 ! LC,NH42S4 ; case E2 - SCASE = 'E2' -! - ELSEIF (DRLC.LE.RH .AND. RH.LT.DRNH42S4) THEN - SCASE = 'B3' - CALL CALCB3 ! NH42S4 ; case E3 - SCASE = 'E3' -! - ELSEIF (DRNH42S4.LE.RH) THEN - SCASE = 'B4' - CALL CALCB4 ! Only liquid ; case E4 - SCASE = 'E4' - ENDIF - ENDIF -! - CALL CALCNA ! HNO3(g) DISSOLUTION -! -! *** SULFATE RICH (FREE ACID) -! FOR SOLVING THIS CASE, NITRIC ACID IS ASSUMED A MINOR SPECIES, -! THAT DOES NOT SIGNIFICANTLY PERTURB THE HSO4-SO4 EQUILIBRIUM -! SUBROUTINE CALCC? IS CALLED, AND THEN THE NITRIC ACID IS DISSOLVED -! FROM THE HNO3(G) -> (H+) + (NO3-) EQUILIBRIUM. -! - ELSEIF (SULRAT.LT.1.0) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'C2' - CALL CALCC2 ! Only liquid (metastable) - SCASE = 'F2' - ELSE -! - IF (RH.LT.DRNH4HS4) THEN - SCASE = 'C1' - CALL CALCC1 ! NH4HSO4 ; case F1 - SCASE = 'F1' -! - ELSEIF (DRNH4HS4.LE.RH) THEN - SCASE = 'C2' - CALL CALCC2 ! Only liquid ; case F2 - SCASE = 'F2' - ENDIF - ENDIF -! - CALL CALCNA ! HNO3(g) DISSOLUTION - ENDIF -! -! *** RETURN POINT -! - RETURN -! -! *** END OF SUBROUTINE ISRP2F ***************************************** -! - END SUBROUTINE ISRP2F - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE ISRP3F -! *** THIS SUBROUTINE IS THE DRIVER ROUTINE FOR THE FORWARD PROBLEM OF -! AN AMMONIUM-SULFATE-NITRATE-CHLORIDE-SODIUM AEROSOL SYSTEM. -! THE COMPOSITION REGIME IS DETERMINED BY THE SULFATE & SODIUM -! RATIOS AND BY THE AMBIENT RELATIVE HUMIDITY. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE ISRP3F (WI, RHI, TEMPI) - Real(kind=fp) :: WI(NCOMP), RHI, TEMPI - Real(kind=fp) :: REST -! -! *** ADJUST FOR TOO LITTLE AMMONIUM AND CHLORIDE *********************** -! - ! To have better conservation of mass, change to TINY - ! (hotp 11/14/07) - !WI(3) = MAX (WI(3), 1.D-10) ! NH4+ : 1e-4 umoles/m3 - !WI(5) = MAX (WI(5), 1.D-10) ! Cl- : 1e-4 umoles/m3 - WI(3) = MAX (WI(3), TINY) ! NH4+ : 1e-4 umoles/m3 - WI(5) = MAX (WI(5), TINY) ! Cl- : 1e-4 umoles/m3 -! -! *** ADJUST FOR TOO LITTLE SODIUM, SULFATE AND NITRATE COMBINED ******** -! - ! To have better conservation of mass, change to TINY - ! (hotp 11/14/07) - !IF (WI(1)+WI(2)+WI(4) .LE. 1d-10) THEN - ! WI(1) = 1.D-10 ! Na+ : 1e-4 umoles/m3 - ! WI(2) = 1.D-10 ! SO4- : 1e-4 umoles/m3 - !ENDIF - IF (WI(1)+WI(2)+WI(4) .LE. TINY) THEN - WI(1) = TINY ! Na+ : 1e-4 umoles/m3 - WI(2) = TINY ! SO4- : 1e-4 umoles/m3 - ENDIF -! -! *** INITIALIZE ALL VARIABLES IN COMMON BLOCK ************************** -! - CALL ISOINIT3 (WI, RHI, TEMPI) -! -! *** CHECK IF TOO MUCH SODIUM ; ADJUST AND ISSUE ERROR MESSAGE ********* -! - REST = 2.0*W(2) + W(4) + W(5) - IF (W(1).GT.REST) THEN ! NA > 2*SO4+CL+NO3 ? - W(1) = (ONE-1D-6)*REST ! Adjust Na amount - CALL PUSHERR (0050, 'ISRP3F') ! Warning error: Na adjusted - ENDIF -! -! *** CALCULATE SULFATE & SODIUM RATIOS ********************************* -! - SULRAT = (W(1)+W(3))/W(2) - SODRAT = W(1)/W(2) -! -! *** FIND CALCULATION REGIME FROM (SULRAT,RH) ************************** - -! *** SULFATE POOR ; SODIUM POOR -! - IF (2.0.LE.SULRAT .AND. SODRAT.LT.2.0) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'G5' - CALL CALCG5 ! Only liquid (metastable) - ELSE -! - IF (RH.LT.DRNH4NO3) THEN - SCASE = 'G1' - CALL CALCG1 ! NH42SO4,NH4NO3,NH4CL,NA2SO4 -! - ELSEIF (DRNH4NO3.LE.RH .AND. RH.LT.DRNH4CL) THEN - SCASE = 'G2' - CALL CALCG2 ! NH42SO4,NH4CL,NA2SO4 -! - ELSEIF (DRNH4CL.LE.RH .AND. RH.LT.DRNH42S4) THEN - SCASE = 'G3' - CALL CALCG3 ! NH42SO4,NA2SO4 -! - ELSEIF (DRNH42S4.LE.RH .AND. RH.LT.DRNA2SO4) THEN - SCASE = 'G4' - CALL CALCG4 ! NA2SO4 -! - ELSEIF (DRNA2SO4.LE.RH) THEN - SCASE = 'G5' - CALL CALCG5 ! Only liquid - ENDIF - ENDIF -! -! *** SULFATE POOR ; SODIUM RICH -! - ELSE IF (SULRAT.GE.2.0 .AND. SODRAT.GE.2.0) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'H6' - CALL CALCH6 ! Only liquid (metastable) - ELSE -! - IF (RH.LT.DRNH4NO3) THEN - SCASE = 'H1' - CALL CALCH1 ! NH4NO3,NH4CL,NA2SO4,NACL,NANO3 -! - ELSEIF (DRNH4NO3.LE.RH .AND. RH.LT.DRNANO3) THEN - SCASE = 'H2' - CALL CALCH2 ! NH4CL,NA2SO4,NACL,NANO3 -! - ELSEIF (DRNANO3.LE.RH .AND. RH.LT.DRNACL) THEN - SCASE = 'H3' - CALL CALCH3 ! NH4CL,NA2SO4,NACL -! - ELSEIF (DRNACL.LE.RH .AND. RH.LT.DRNH4Cl) THEN - SCASE = 'H4' - CALL CALCH4 ! NH4CL,NA2SO4 -! - ELSEIF (DRNH4Cl.LE.RH .AND. RH.LT.DRNA2SO4) THEN - SCASE = 'H5' - CALL CALCH5 ! NA2SO4 -! - ELSEIF (DRNA2SO4.LE.RH) THEN - SCASE = 'H6' - CALL CALCH6 ! NO SOLID - ENDIF - ENDIF -! -! *** SULFATE RICH (NO ACID) -! - ELSEIF (1.0.LE.SULRAT .AND. SULRAT.LT.2.0) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'I6' - CALL CALCI6 ! Only liquid (metastable) - ELSE -! - IF (RH.LT.DRNH4HS4) THEN - SCASE = 'I1' - CALL CALCI1 ! NA2SO4,(NH4)2SO4,NAHSO4,NH4HSO4,LC -! - ELSEIF (DRNH4HS4.LE.RH .AND. RH.LT.DRNAHSO4) THEN - SCASE = 'I2' - CALL CALCI2 ! NA2SO4,(NH4)2SO4,NAHSO4,LC -! - ELSEIF (DRNAHSO4.LE.RH .AND. RH.LT.DRLC) THEN - SCASE = 'I3' - CALL CALCI3 ! NA2SO4,(NH4)2SO4,LC -! - ELSEIF (DRLC.LE.RH .AND. RH.LT.DRNH42S4) THEN - SCASE = 'I4' - CALL CALCI4 ! NA2SO4,(NH4)2SO4 -! - ELSEIF (DRNH42S4.LE.RH .AND. RH.LT.DRNA2SO4) THEN - SCASE = 'I5' - CALL CALCI5 ! NA2SO4 -! - ELSEIF (DRNA2SO4.LE.RH) THEN - SCASE = 'I6' - CALL CALCI6 ! NO SOLIDS - ENDIF - ENDIF -! - CALL CALCNHA ! MINOR SPECIES: HNO3, HCl - CALL CALCNH3 ! NH3 -! -! *** SULFATE RICH (FREE ACID) -! - ELSEIF (SULRAT.LT.1.0) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'J3' - CALL CALCJ3 ! Only liquid (metastable) - ELSE -! - IF (RH.LT.DRNH4HS4) THEN - SCASE = 'J1' - CALL CALCJ1 ! NH4HSO4,NAHSO4 -! - ELSEIF (DRNH4HS4.LE.RH .AND. RH.LT.DRNAHSO4) THEN - SCASE = 'J2' - CALL CALCJ2 ! NAHSO4 -! - ELSEIF (DRNAHSO4.LE.RH) THEN - SCASE = 'J3' - CALL CALCJ3 - ENDIF - ENDIF -! - CALL CALCNHA ! MINOR SPECIES: HNO3, HCl - CALL CALCNH3 ! NH3 - ENDIF -! -! *** RETURN POINT -! - RETURN -! -! *** END OF SUBROUTINE ISRP3F ***************************************** -! - END SUBROUTINE ISRP3F - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE ISRP4F -! *** THIS SUBROUTINE IS THE DRIVER ROUTINE FOR THE FORWARD PROBLEM OF -! AN AMMONIUM-SULFATE-NITRATE-CHLORIDE-SODIUM-CALCIUM-POTASSIUM-MAGNESIUM -! AEROSOL SYSTEM. -! THE COMPOSITION REGIME IS DETERMINED BY THE SULFATE & SODIUM -! RATIOS AND BY THE AMBIENT RELATIVE HUMIDITY. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE ISRP4F (WI, RHI, TEMPI) - Real(kind=fp) :: WI(NCOMP), RHI, TEMPI - Real(kind=fp) :: NAFRI, NO3FRI, REST - Real(kind=fp) :: CCASO4I, FRSO4I, CCANO32I, CAFRI, CCACL2I - Real(kind=fp) :: CLFRI, REST1, CNA2SO4I, CNACLI, CNANO3I - Real(kind=fp) :: NO3FR, REST2, CMGSO4I, FRMGI, CMGNO32I - Real(kind=fp) :: CMGCL2I, REST3 -! -! *** ADJUST FOR TOO LITTLE AMMONIUM AND CHLORIDE *********************** -! -! WI(3) = MAX (WI(3), 1.D-10) ! NH4+ : 1e-4 umoles/m3 -! WI(5) = MAX (WI(5), 1.D-10) ! Cl- : 1e-4 umoles/m3 -! -! *** ADJUST FOR TOO LITTLE SODIUM, SULFATE AND NITRATE COMBINED ******** -! -! IF (WI(1)+WI(2)+WI(4) .LE. 1d-10) THEN -! WI(1) = 1.D-10 ! Na+ : 1e-4 umoles/m3 -! WI(2) = 1.D-10 ! SO4- : 1e-4 umoles/m3 -! ENDIF -! -! *** INITIALIZE ALL VARIABLES IN COMMON BLOCK ************************** -! - CALL INIT4 (WI, RHI, TEMPI) -! -! *** CHECK IF TOO MUCH SODIUM+CRUSTALS ; ADJUST AND ISSUE ERROR MESSAGE -! - REST = 2.0*W(2) + W(4) + W(5) -! - IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -! - CCASO4I = MIN (W(2),W(6)) - FRSO4I = MAX (W(2) - CCASO4I, ZERO) - CAFRI = MAX (W(6) - CCASO4I, ZERO) - CCANO32I = MIN (CAFRI, 0.5D0*W(4)) - CAFRI = MAX (CAFRI - CCANO32I, ZERO) - NO3FRI = MAX (W(4) - 2.0*CCANO32I, ZERO) - CCACL2I = MIN (CAFRI, 0.5D0*W(5)) - CLFRI = MAX (W(5) - 2.0*CCACL2I, ZERO) - REST1 = 2.0*FRSO4I + NO3FRI + CLFRI -! - CNA2SO4I = MIN (FRSO4I, 0.5D0*W(1)) - FRSO4I = MAX (FRSO4I - CNA2SO4I, ZERO) - NAFRI = MAX (W(1) - 2.0*CNA2SO4I, ZERO) - CNACLI = MIN (NAFRI, CLFRI) - NAFRI = MAX (NAFRI - CNACLI, ZERO) - CLFRI = MAX (CLFRI - CNACLI, ZERO) - CNANO3I = MIN (NAFRI, NO3FRI) - NO3FR = MAX (NO3FRI - CNANO3I, ZERO) - REST2 = 2.0*FRSO4I + NO3FRI + CLFRI -! - CMGSO4I = MIN (FRSO4I, W(8)) - FRMGI = MAX (W(8) - CMGSO4I, ZERO) - FRSO4I = MAX (FRSO4I - CMGSO4I, ZERO) - CMGNO32I = MIN (FRMGI, 0.5D0*NO3FRI) - FRMGI = MAX (FRMGI - CMGNO32I, ZERO) - NO3FRI = MAX (NO3FRI - 2.0*CMGNO32I, ZERO) - CMGCL2I = MIN (FRMGI, 0.5D0*CLFRI) - CLFRI = MAX (CLFRI - 2.0*CMGCL2I, ZERO) - REST3 = 2.0*FRSO4I + NO3FRI + CLFRI -! - IF (W(6).GT.REST) THEN ! Ca > 2*SO4+CL+NO3 ? - W(6) = (ONE-1D-6)*REST ! Adjust Ca amount - W(1)= ZERO ! Adjust Na amount - W(7)= ZERO ! Adjust K amount - W(8)= ZERO ! Adjust Mg amount - CALL PUSHERR (0051, 'ISRP4F') ! Warning error: Ca, Na, K, Mg in excess -! - ELSE IF (W(1).GT.REST1) THEN ! Na > 2*FRSO4+FRCL+FRNO3 ? - W(1) = (ONE-1D-6)*REST1 ! Adjust Na amount - W(7)= ZERO ! Adjust K amount - W(8)= ZERO ! Adjust Mg amount - CALL PUSHERR (0052, 'ISRP4F') ! Warning error: Na, K, Mg in excess -! - ELSE IF (W(8).GT.REST2) THEN ! Mg > 2*FRSO4+FRCL+FRNO3 ? - W(8) = (ONE-1D-6)*REST2 ! Adjust Mg amount - W(7)= ZERO ! Adjust K amount - CALL PUSHERR (0053, 'ISRP4F') ! Warning error: K, Mg in excess -! - ELSE IF (W(7).GT.REST3) THEN ! K > 2*FRSO4+FRCL+FRNO3 ? - W(7) = (ONE-1D-6)*REST3 ! Adjust K amount - CALL PUSHERR (0054, 'ISRP4F') ! Warning error: K in excess - ENDIF - ENDIF -! -! *** CALCULATE RATIOS ************************************************* -! - SO4RAT = (W(1)+W(3)+W(6)+W(7)+W(8))/W(2) - CRNARAT = (W(1)+W(6)+W(7)+W(8))/W(2) - CRRAT = (W(6)+W(7)+W(8))/W(2) -! -! *** FIND CALCULATION REGIME FROM (SO4RAT, CRNARAT, CRRAT, RRH) ******** -! -! *** SULFATE POOR: Rso4>2; (DUST + SODIUM) POOR: R(Cr+Na)<2 -! - IF (2.0.LE.SO4RAT .AND. CRNARAT.LT.2.0) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'O7' - CALL CALCO7 ! Only liquid (metastable) - ELSE -! - IF (RH.LT.DRNH4NO3) THEN - SCASE = 'O1' - CALL CALCO1 ! CaSO4, NH4NO3, NH4CL, (NH4)2SO4, MGSO4, NA2SO4, K2SO4 -! - ELSEIF (DRNH4NO3.LE.RH .AND. RH.LT.DRNH4CL) THEN - SCASE = 'O2' - CALL CALCO2 ! CaSO4, NH4CL, (NH4)2SO4, MGSO4, NA2SO4, K2SO4 -! - ELSEIF (DRNH4CL.LE.RH .AND. RH.LT.DRNH42S4) THEN - SCASE = 'O3' - CALL CALCO3 ! CaSO4, (NH4)2SO4, MGSO4, NA2SO4, K2SO4 -! - ELSEIF (DRNH42S4.LE.RH .AND. RH.LT.DRMGSO4) THEN - SCASE = 'O4' - CALL CALCO4 ! CaSO4, MGSO4, NA2SO4, K2SO4 -! - ELSEIF (DRMGSO4.LE.RH .AND. RH.LT.DRNA2SO4) THEN - SCASE = 'O5' - CALL CALCO5 ! CaSO4, NA2SO4, K2SO4 -! - ELSEIF (DRNA2SO4.LE.RH .AND. RH.LT.DRK2SO4) THEN - SCASE = 'O6' - CALL CALCO6 ! CaSO4, K2SO4 -! - ELSEIF (DRK2SO4.LE.RH) THEN - SCASE = 'O7' - CALL CALCO7 ! CaSO4 - ENDIF - ENDIF -! -! *** SULFATE POOR: Rso4>2; (DUST + SODIUM) RICH: R(Cr+Na)>2; DUST POOR: Rcr<2. -! - ELSEIF (SO4RAT.GE.2.0 .AND. CRNARAT.GE.2.0) THEN -! - IF (CRRAT.LE.2.0) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'M8' - CALL CALCM8 ! Only liquid (metastable) - ELSE -! - IF (RH.LT.DRNH4NO3) THEN - SCASE = 'M1' - CALL CALCM1 ! CaSO4, NH4NO3, NH4CL, MGSO4, NA2SO4, K2SO4, NACL, NANO3 -! - ELSEIF (DRNH4NO3.LE.RH .AND. RH.LT.DRNANO3) THEN - SCASE = 'M2' - CALL CALCM2 ! CaSO4, NH4CL, MGSO4, NA2SO4, K2SO4, NACL, NANO3 -! - ELSEIF (DRNANO3.LE.RH .AND. RH.LT.DRNACL) THEN - SCASE = 'M3' - CALL CALCM3 ! CaSO4, NH4CL, MGSO4, NA2SO4, K2SO4, NACL -! - ELSEIF (DRNACL.LE.RH .AND. RH.LT.DRNH4Cl) THEN - SCASE = 'M4' - CALL CALCM4 ! CaSO4, NH4CL, MGSO4, NA2SO4, K2SO4 -! - ELSEIF (DRNH4Cl.LE.RH .AND. RH.LT.DRMGSO4) THEN - SCASE = 'M5' - CALL CALCM5 ! CaSO4, MGSO4, NA2SO4, K2SO4 -! - ELSEIF (DRMGSO4.LE.RH .AND. RH.LT.DRNA2SO4) THEN - SCASE = 'M6' - CALL CALCM6 ! CaSO4, NA2SO4, K2SO4 -! - ELSEIF (DRNA2SO4.LE.RH .AND. RH.LT.DRK2SO4) THEN - SCASE = 'M7' - CALL CALCM7 ! CaSO4, K2SO4 -! - ELSEIF (DRK2SO4.LE.RH) THEN - SCASE = 'M8' - CALL CALCM8 ! CaSO4 - ENDIF - ENDIF -! CALL CALCHCO3 -! -! *** SULFATE POOR: Rso4>2; (DUST + SODIUM) RICH: R(Cr+Na)>2; DUST POOR: Rcr<2. -! - ELSEIF (CRRAT.GT.2.0) THEN -! - IF(METSTBL.EQ.1) THEN - SCASE = 'P13' - CALL CALCP13 ! Only liquid (metastable) - ELSE -! - IF (RH.LT.DRCACL2) THEN - SCASE = 'P1' - CALL CALCP1 ! CaSO4, CA(NO3)2, CACL2, K2SO4, KNO3, KCL, MGSO4, -! ! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! - ELSEIF (DRCACL2.LE.RH .AND. RH.LT.DRMGCL2) THEN - SCASE = 'P2' - CALL CALCP2 ! CaSO4, CA(NO3)2, K2SO4, KNO3, KCL, MGSO4, -! ! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! - ELSEIF (DRMGCL2.LE.RH .AND. RH.LT.DRCANO32) THEN - SCASE = 'P3' - CALL CALCP3 ! CaSO4, CA(NO3)2, K2SO4, KNO3, KCL, MGSO4, -! ! MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL -! - ELSEIF (DRCANO32.LE.RH .AND. RH.LT.DRMGNO32) THEN - SCASE = 'P4' - CALL CALCP4 ! CaSO4, K2SO4, KNO3, KCL, MGSO4, -! ! MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL -! - ELSEIF (DRMGNO32.LE.RH .AND. RH.LT.DRNH4NO3) THEN - SCASE = 'P5' - CALL CALCP5 ! CaSO4, K2SO4, KNO3, KCL, MGSO4, -! ! NANO3, NACL, NH4NO3, NH4CL -! - ELSEIF (DRNH4NO3.LE.RH .AND. RH.LT.DRNANO3) THEN - SCASE = 'P6' - CALL CALCP6 ! CaSO4, K2SO4, KNO3, KCL, MGSO4, NANO3, NACL, NH4CL -! - ELSEIF (DRNANO3.LE.RH .AND. RH.LT.DRNACL) THEN - SCASE = 'P7' - CALL CALCP7 ! CaSO4, K2SO4, KNO3, KCL, MGSO4, NACL, NH4CL -! - ELSEIF (DRNACL.LE.RH .AND. RH.LT.DRNH4CL) THEN - SCASE = 'P8' - CALL CALCP8 ! CaSO4, K2SO4, KNO3, KCL, MGSO4, NH4CL -! - ELSEIF (DRNH4CL.LE.RH .AND. RH.LT.DRKCL) THEN - SCASE = 'P9' - CALL CALCP9 ! CaSO4, K2SO4, KNO3, KCL, MGSO4 -! - ELSEIF (DRKCL.LE.RH .AND. RH.LT.DRMGSO4) THEN - SCASE = 'P10' - CALL CALCP10 ! CaSO4, K2SO4, KNO3, MGSO4 -! - ELSEIF (DRMGSO4.LE.RH .AND. RH.LT.DRKNO3) THEN - SCASE = 'P11' - CALL CALCP11 ! CaSO4, K2SO4, KNO3 -! - ELSEIF (DRKNO3.LE.RH .AND. RH.LT.DRK2SO4) THEN - SCASE = 'P12' - CALL CALCP12 ! CaSO4, K2SO4 -! - ELSEIF (DRK2SO4.LE.RH) THEN - SCASE = 'P13' - CALL CALCP13 ! CaSO4 - ENDIF - ENDIF -! CALL CALCHCO3 - ENDIF -! -! *** SULFATE RICH (NO ACID): 1 2.0) -! 2. LIQUID AEROSOL PHASE ONLY POSSIBLE -! -! FOR CALCULATIONS, A BISECTION IS PERFORMED TOWARDS X, THE -! AMOUNT OF HYDROGEN IONS (H+) FOUND IN THE LIQUID PHASE. -! FOR EACH ESTIMATION OF H+, FUNCTION FUNCB2A CALCULATES THE -! CONCENTRATION OF IONS FROM THE NH3(GAS) - NH4+(LIQ) EQUILIBRIUM. -! ELECTRONEUTRALITY IS USED AS THE OBJECTIVE FUNCTION. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -! Algorithm revised to attain a more accuracte solution -! SLC 2012-03-21 -! -!======================================================================= -! - SUBROUTINE CALCA2() - Real(kind=fp) :: OMELO, OMEHI, X1, Y1, DX, X2, Y2, X3, Y3 - Integer :: I -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU =.TRUE. ! Outer loop activity calculation flag - OMELO = TINY ! Low limit: SOLUTION IS VERY BASIC - OMEHI = 2.0D0*W(2) ! High limit: FROM NH4+ -> NH3(g) + H+(aq) -! -! *** CALCULATE WATER CONTENT ***************************************** -! - MOLAL(5) = W(2) - MOLAL(6) = ZERO - CALL CALCMR -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = OMEHI - Y1 = FUNCA2 (X1) - IF (ABS(Y1).LE.EPS) RETURN -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (OMEHI-OMELO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = MAX(X1-DX, OMELO) - Y2 = FUNCA2 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE - IF (ABS(Y2).LE.EPS) THEN - RETURN - ELSE - CALL PUSHERR (0001, 'CALCA2') ! WARNING ERROR: NO SOLUTION - RETURN - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCA2 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCA2') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCA2 (X3) - RETURN -! -! *** END OF SUBROUTINE CALCA2 **************************************** -! - END SUBROUTINE CALCA2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** FUNCTION FUNCA2 -! *** CASE A2 -! FUNCTION THAT SOLVES THE SYSTEM OF EQUATIONS FOR CASE A2 ; -! AND RETURNS THE VALUE OF THE ZEROED FUNCTION IN FUNCA2. -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCA2 (OMEGI) - Real(kind=fp) :: LAMDA - Real(kind=fp) :: OMEGI, PSI, A1, A2, A3, ZETA, DENOM - Integer :: I -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. - PSI = W(2) ! INITIAL AMOUNT OF (NH4)2SO4 IN SOLUTION -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP - A1 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. - A2 = XK2*R*TEMP/XKW*(GAMA(8)/GAMA(9))**2. - A3 = XKW*RH*WATER*WATER -! - LAMDA = PSI/(A1/OMEGI+ONE) - ZETA = A3/OMEGI -! -! *** SPECIATION & WATER CONTENT *************************************** -! -#if defined( ISORROPIA_V22 ) - MOLAL (1) = OMEGI ! HI - MOLAL (5) = MAX(PSI-LAMDA,TINY) ! SO4I - MOLAL (3) = MAX(W(3)/(ONE/A2/OMEGI + ONE), 2.*MOLAL(5)) ! NH4I - MOLAL (6) = LAMDA ! HSO4I - GNH3 = MAX (W(3)-MOLAL(3), TINY) ! NH3GI - COH = ZETA ! OHI -#else - MOLAL (1) = OMEGI ! HI - MOLAL (3) = W(3)/(ONE/A2/OMEGI + ONE) ! NH4I - MOLAL (5) = MAX(PSI-LAMDA,TINY) ! SO4I - MOLAL (6) = LAMDA ! HSO4I - GNH3 = MAX (W(3)-MOLAL(3), TINY) ! NH3GI - COH = ZETA ! OHI -#endif -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 DENOM = (2.0*MOLAL(5)+MOLAL(6)) - FUNCA2= (MOLAL(3)/DENOM - ONE) + MOLAL(1)/DENOM - RETURN -! -! *** END OF FUNCTION FUNCA2 ******************************************** -! - END FUNCTION FUNCA2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCA1 -! *** CASE A1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : (NH4)2SO4 -! -! A SIMPLE MATERIAL BALANCE IS PERFORMED, AND THE SOLID (NH4)2SO4 -! IS CALCULATED FROM THE SULFATES. THE EXCESS AMMONIA REMAINS IN -! THE GAS PHASE. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCA1() -! - CNH42S4 = W(2) - GNH3 = MAX (W(3)-2.0*CNH42S4, ZERO) - RETURN -! -! *** END OF SUBROUTINE CALCA1 ****************************************** -! - END SUBROUTINE CALCA1 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCB4 -! *** CASE B4 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. LIQUID AEROSOL PHASE ONLY POSSIBLE -! -! FOR CALCULATIONS, A BISECTION IS PERFORMED WITH RESPECT TO H+. -! THE OBJECTIVE FUNCTION IS THE DIFFERENCE BETWEEN THE ESTIMATED H+ -! AND THAT CALCULATED FROM ELECTRONEUTRALITY. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCB4() - Integer :: I - Real(kind=fp) :: AK1, BET, GAM, BB, CC, DD -! -! *** SOLVE EQUATIONS ************************************************** -! - FRST = .TRUE. - CALAIN = .TRUE. - CALAOU = .TRUE. -! -! *** CALCULATE WATER CONTENT ****************************************** -! - CALL CALCB1A ! GET DRY SALT CONTENT, AND USE FOR WATER. - MOLALR(13) = CLC - MOLALR(9) = CNH4HS4 - MOLALR(4) = CNH42S4 - CLC = ZERO - CNH4HS4 = ZERO - CNH42S4 = ZERO - WATER = MOLALR(13)/M0(13)+MOLALR(9)/M0(9)+MOLALR(4)/M0(4) -! - MOLAL(3) = W(3) ! NH4I -! - DO 20 I=1,NSWEEP - AK1 = XK1*((GAMA(8)/GAMA(7))**2.)*(WATER/GAMA(7)) - BET = W(2) - GAM = MOLAL(3) -! - BB = BET + AK1 - GAM - CC =-AK1*BET - DD = BB*BB - 4.0*CC -! -! *** SPECIATION & WATER CONTENT *************************************** -! - MOLAL (5) = MAX(TINY,MIN(0.5*(-BB + SQRT(DD)), W(2))) ! SO4I - MOLAL (6) = MAX(TINY,MIN(W(2)-MOLAL(5),W(2))) ! HSO4I - MOLAL (1) = MAX(TINY,MIN(AK1*MOLAL(6)/MOLAL(5),W(2))) ! HI - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (.NOT.CALAIN) GOTO 30 - CALL CALCACT -20 CONTINUE -! -30 RETURN -! -! *** END OF SUBROUTINE CALCB4 ****************************************** -! - END SUBROUTINE CALCB4 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCB3 -! *** CASE B3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. BOTH LIQUID & SOLID PHASE IS POSSIBLE -! 3. SOLIDS POSSIBLE: (NH4)2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCB3 - Real(kind=fp) :: X, Y, TLC, TNH42S4, TNH4HS4 -! -! *** CALCULATE EQUIVALENT AMOUNT OF HSO4 AND SO4 *********************** -! - X = MAX(2*W(2)-W(3), ZERO) ! Equivalent NH4HSO4 - Y = MAX(W(3) -W(2), ZERO) ! Equivalent NH42SO4 -! -! *** CALCULATE SPECIES ACCORDING TO RELATIVE ABUNDANCE OF HSO4 ********* -! - IF (X.LT.Y) THEN ! LC is the MIN (x,y) - SCASE = 'B3 ; SUBCASE 1' - TLC = X - TNH42S4 = Y-X - CALL CALCB3A (TLC,TNH42S4) ! LC + (NH4)2SO4 - ELSE - SCASE = 'B3 ; SUBCASE 2' - TLC = Y - TNH4HS4 = X-Y - CALL CALCB3B (TLC,TNH4HS4) ! LC + NH4HSO4 - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCB3 ****************************************** -! - END SUBROUTINE CALCB3 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCB3A -! *** CASE B3 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH (1.0 < SULRAT < 2.0) -! 2. BOTH LIQUID & SOLID PHASE IS POSSIBLE -! 3. SOLIDS POSSIBLE: (NH4)2SO4 -! -! FOR CALCULATIONS, A BISECTION IS PERFORMED TOWARDS ZETA, THE -! AMOUNT OF SOLID (NH4)2SO4 DISSOLVED IN THE LIQUID PHASE. -! FOR EACH ESTIMATION OF ZETA, FUNCTION FUNCB3A CALCULATES THE -! AMOUNT OF H+ PRODUCED (BASED ON THE SO4 RELEASED INTO THE -! SOLUTION). THE SOLUBILITY PRODUCT OF (NH4)2SO4 IS USED AS THE -! OBJECTIVE FUNCTION. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -! Algorithm revised to attain a more accuracte solution -! SLC 2012-03-21 -! -!======================================================================= -! - SUBROUTINE CALCB3A (TLC, TNH42S4) - Real(kind=fp) :: TLC, TNH42S4 - Integer :: I - Real(kind=fp) :: ZLO, ZHI, YLO, YHI - Real(kind=fp) :: Y1, Z1, Y2, Z2, Y3, Z3 - Real(kind=fp) :: DZ, ZK -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - ZLO = ZERO ! MIN DISSOLVED (NH4)2SO4 - ZHI = TNH42S4 ! MAX DISSOLVED (NH4)2SO4 -! -! *** INITIAL VALUES FOR BISECTION (DISSOLVED (NH4)2SO4 **************** -! - Z1 = ZLO - Y1 = FUNCB3A (Z1, TLC, TNH42S4) - IF (ABS(Y1).LE.EPS) RETURN - YLO= Y1 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO *********************** -! - DZ = (ZHI-ZLO)/REAL(NDIV) - DO 10 I=1,NDIV - Z2 = Z1+DZ - Y2 = FUNCB3A (Z2, TLC, TNH42S4) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - Z1 = Z2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION FOUND -! - YHI= Y1 ! Save Y-value at HI position - IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - RETURN -! -! *** { YLO, YHI } < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH LC -! - ELSE IF (YLO.LT.ZERO .AND. YHI.LT.ZERO) THEN - Z1 = ZHI - Z2 = ZHI - GOTO 40 -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH LC -! - ELSE IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - Z1 = ZLO - Z2 = ZLO - GOTO 40 - ELSE - CALL PUSHERR (0001, 'CALCB3A') ! WARNING ERROR: NO SOLUTION - RETURN - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - Z3 = 0.5*(Z1+Z2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCB3A (Z3, TLC, TNH42S4) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - Z2 = Z3 - ELSE - Y1 = Y3 - Z1 = Z3 - ENDIF - IF (ABS(Z2-Z1) .LE. EPS*Z1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCB3A') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ************************************************ -! -40 ZK = 0.5*(Z1+Z2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCB3A (ZK, TLC, TNH42S4) -! - RETURN -! -! *** END OF SUBROUTINE CALCB3A ****************************************** -! - END SUBROUTINE CALCB3A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** FUNCTION FUNCB3A -! *** CASE B3 ; SUBCASE 1 -! FUNCTION THAT SOLVES THE SYSTEM OF EQUATIONS FOR CASE B3 -! AND RETURNS THE VALUE OF THE ZEROED FUNCTION IN FUNCA3. -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCB3A (ZK, Y, X) - Real(kind=fp) :: KK - Real(kind=fp) :: ZK, Y, X - Real(kind=fp) :: GRAT1, DD - Integer :: I -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - FRST = .TRUE. - CALAIN = .TRUE. - DO 20 I=1,NSWEEP - GRAT1 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. - DD = SQRT( (ZK+GRAT1+Y)**2. + 4.0*Y*GRAT1) - KK = 0.5*(-(ZK+GRAT1+Y) + DD ) -! -! *** SPECIATION & WATER CONTENT *************************************** -! - MOLAL (1) = KK ! HI - MOLAL (5) = KK+ZK+Y ! SO4I - MOLAL (6) = MAX (Y-KK, TINY) ! HSO4I - MOLAL (3) = 3.0*Y+2*ZK ! NH4I - CNH42S4 = X-ZK ! Solid (NH4)2SO4 - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 30 - ENDIF -20 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -!CC30 FUNCB3A= ( SO4I*NH4I**2.0 )/( XK7*(WATER/GAMA(4))**3.0 ) -30 FUNCB3A= MOLAL(5)*MOLAL(3)**2.0 - FUNCB3A= FUNCB3A/(XK7*(WATER/GAMA(4))**3.0) - ONE - RETURN -! -! *** END OF FUNCTION FUNCB3A ******************************************** -! - END FUNCTION FUNCB3A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCB3B -! *** CASE B3 ; SUBCASE 2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH (1.0 < SULRAT < 2.0) -! 2. LIQUID PHASE ONLY IS POSSIBLE -! -! SPECIATION CALCULATIONS IS BASED ON THE HSO4 <--> SO4 EQUILIBRIUM. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCB3B (Y, X) - Real(kind=fp) :: Y, X - Real(kind=fp) :: KK - Integer :: I - Real(kind=fp) :: DD, GRAT1 -! - CALAOU = .FALSE. ! Outer loop activity calculation flag - FRST = .FALSE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 20 I=1,NSWEEP - GRAT1 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. - DD = SQRT( (GRAT1+Y)**2. + 4.0*(X+Y)*GRAT1) - KK = 0.5*(-(GRAT1+Y) + DD ) -! -! *** SPECIATION & WATER CONTENT *************************************** -! - MOLAL (1) = KK ! HI - MOLAL (5) = Y+KK ! SO4I - MOLAL (6) = MAX (X+Y-KK, TINY) ! HSO4I - MOLAL (3) = 3.0*Y+X ! NH4I - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (.NOT.CALAIN) GOTO 30 - CALL CALCACT -20 CONTINUE -! -30 RETURN -! -! *** END OF SUBROUTINE CALCB3B ****************************************** -! - END SUBROUTINE CALCB3B - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCB2 -! *** CASE B2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : LC, (NH4)2SO4 -! -! THERE ARE TWO POSSIBLE REGIMES HERE, DEPENDING ON THE SULFATE RATIO: -! 1. WHEN BOTH LC AND (NH4)2SO4 ARE POSSIBLE (SUBROUTINE CALCB2A) -! 2. WHEN ONLY LC IS POSSIBLE (SUBROUTINE CALCB2B). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCB2() - Real(kind=fp) :: X, Y -! -! *** CALCULATE EQUIVALENT AMOUNT OF HSO4 AND SO4 *********************** -! - X = MAX(2*W(2)-W(3), TINY) ! Equivalent NH4HSO4 - Y = MAX(W(3) -W(2), TINY) ! Equivalent NH42SO4 -! -! *** CALCULATE SPECIES ACCORDING TO RELATIVE ABUNDANCE OF HSO4 ********* -! - IF (X.LE.Y) THEN ! LC is the MIN (x,y) - SCASE = 'B2 ; SUBCASE 1' - CALL CALCB2A (X,Y-X) ! LC + (NH4)2SO4 POSSIBLE - ELSE - SCASE = 'B2 ; SUBCASE 2' - CALL CALCB2B (Y,X-Y) ! LC ONLY POSSIBLE - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCB2 ****************************************** -! - END SUBROUTINE CALCB2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCB2 -! *** CASE B2 ; SUBCASE A. -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH (1.0 < SULRAT < 2.0) -! 2. SOLID PHASE ONLY POSSIBLE -! 3. SOLIDS POSSIBLE: LC, (NH4)2SO4 -! -! THERE ARE TWO POSSIBLE REGIMES HERE, DEPENDING ON RELATIVE HUMIDITY: -! 1. WHEN RH >= MDRH ; LIQUID PHASE POSSIBLE (MDRH REGION) -! 2. WHEN RH < MDRH ; ONLY SOLID PHASE POSSIBLE -! -! FOR SOLID CALCULATIONS, A MATERIAL BALANCE BASED ON THE STOICHIMETRIC -! PROPORTION OF AMMONIUM AND SULFATE IS DONE TO CALCULATE THE AMOUNT -! OF LC AND (NH4)2SO4 IN THE SOLID PHASE. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCB2A (TLC, TNH42S4) - Real(kind=fp) :: TLC, TNH42S4 -! -! *** REGIME DEPENDS UPON THE AMBIENT RELATIVE HUMIDITY ***************** -! - IF (RH.LT.DRMLCAS) THEN - SCASE = 'B2 ; SUBCASE A1' ! SOLIDS POSSIBLE ONLY - CLC = TLC - CNH42S4 = TNH42S4 - SCASE = 'B2 ; SUBCASE A1' - ELSE - SCASE = 'B2 ; SUBCASE A2' - CALL CALCB2A2 (TLC, TNH42S4) ! LIQUID & SOLID PHASE POSSIBLE - SCASE = 'B2 ; SUBCASE A2' - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCB2A ***************************************** -! - END SUBROUTINE CALCB2A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCB2A2 -! *** CASE B2 ; SUBCASE A2. -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH (1.0 < SULRAT < 2.0) -! 2. SOLID PHASE ONLY POSSIBLE -! 3. SOLIDS POSSIBLE: LC, (NH4)2SO4 -! -! THIS IS THE CASE WHERE THE RELATIVE HUMIDITY IS IN THE MUTUAL -! DRH REGION. THE SOLUTION IS ASSUMED TO BE THE SUM OF TWO WEIGHTED -! SOLUTIONS ; THE SOLID PHASE ONLY (SUBROUTINE CALCB2A1) AND THE -! THE SOLID WITH LIQUID PHASE (SUBROUTINE CALCB3). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCB2A2 (TLC, TNH42S4) - Real(kind=fp) :: TLC, TNH42S4 - Real(kind=fp) :: WF, ONEMWF, CLCO, CNH42SO -! -! *** FIND WEIGHT FACTOR ********************************************** -! - IF (WFTYP.EQ.0) THEN - WF = ZERO - ELSEIF (WFTYP.EQ.1) THEN - WF = 0.5D0 - ELSE - WF = (DRLC-RH)/(DRLC-DRMLCAS) - ENDIF - ONEMWF = ONE - WF -! -! *** FIND FIRST SECTION ; DRY ONE ************************************ -! - CLCO = TLC ! FIRST (DRY) SOLUTION - CNH42SO = TNH42S4 -! -! *** FIND SECOND SECTION ; DRY & LIQUID ****************************** -! - CLC = ZERO - CNH42S4 = ZERO - CALL CALCB3 ! SECOND (LIQUID) SOLUTION -! -! *** FIND SOLUTION AT MDRH BY WEIGHTING DRY & LIQUID SOLUTIONS. -! - MOLAL(1)= ONEMWF*MOLAL(1) ! H+ - MOLAL(3)= ONEMWF*(2.0*(CNH42SO-CNH42S4) + 3.0*(CLCO-CLC)) ! NH4+ - MOLAL(5)= ONEMWF*(CNH42SO-CNH42S4 + CLCO-CLC) ! SO4-- - MOLAL(6)= ONEMWF*(CLCO-CLC) ! HSO4- -! - WATER = ONEMWF*WATER -! - CLC = WF*CLCO + ONEMWF*CLC - CNH42S4 = WF*CNH42SO + ONEMWF*CNH42S4 -! - RETURN -! -! *** END OF SUBROUTINE CALCB2A2 **************************************** -! - END SUBROUTINE CALCB2A2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCB2 -! *** CASE B2 ; SUBCASE B -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH (1.0 < SULRAT < 2.0) -! 2. BOTH LIQUID & SOLID PHASE IS POSSIBLE -! 3. SOLIDS POSSIBLE: LC -! -! FOR CALCULATIONS, A BISECTION IS PERFORMED TOWARDS ZETA, THE -! AMOUNT OF SOLID LC DISSOLVED IN THE LIQUID PHASE. -! FOR EACH ESTIMATION OF ZETA, FUNCTION FUNCB2A CALCULATES THE -! AMOUNT OF H+ PRODUCED (BASED ON THE HSO4, SO4 RELEASED INTO THE -! SOLUTION). THE SOLUBILITY PRODUCT OF LC IS USED AS THE OBJECTIVE -! FUNCTION. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCB2B (TLC,TNH4HS4) - Real(kind=fp) :: TLC, TNH4HS4 - Real(kind=fp) :: YLO, YHI, ZLO, ZHI, DX - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Integer :: I -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - ZLO = ZERO - ZHI = TLC ! High limit: all of it in liquid phase -! -! *** INITIAL VALUES FOR BISECTION ************************************** -! - X1 = ZHI - Y1 = FUNCB2B (X1,TNH4HS4,TLC) - IF (ABS(Y1).LE.EPS) RETURN - YHI= Y1 ! Save Y-value at Hi position -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ************************ -! - DX = (ZHI-ZLO)/NDIV - DO 10 I=1,NDIV - X2 = X1-DX - Y2 = FUNCB2B (X2,TNH4HS4,TLC) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION FOUND -! - YLO= Y1 ! Save Y-value at LO position - IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - RETURN -! -! *** { YLO, YHI } < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH LC -! - ELSE IF (YLO.LT.ZERO .AND. YHI.LT.ZERO) THEN - X1 = ZHI - X2 = ZHI - GOTO 40 -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH LC -! - ELSE IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - X1 = ZLO - X2 = ZLO - GOTO 40 - ELSE - CALL PUSHERR (0001, 'CALCB2B') ! WARNING ERROR: NO SOLUTION - RETURN - ENDIF -! -! *** PERFORM BISECTION ************************************************* -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCB2B (X3,TNH4HS4,TLC) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCB2B') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ************************************************ -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCB2B (X3,TNH4HS4,TLC) -! - RETURN -! -! *** END OF SUBROUTINE CALCB2B ***************************************** -! - END SUBROUTINE CALCB2B - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** FUNCTION FUNCB2B -! *** CASE B2 ; -! FUNCTION THAT SOLVES THE SYSTEM OF EQUATIONS FOR CASE B2 ; SUBCASE 2 -! AND RETURNS THE VALUE OF THE ZEROED FUNCTION IN FUNCB2B. -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCB2B (X,TNH4HS4,TLC) - Real(kind=fp) :: TLC, TNH4HS4, X - Real(kind=fp) :: GRAT2, PARM, DELTA, OMEGA - Integer :: I -! -! *** SOLVE EQUATIONS ************************************************** -! - FRST = .TRUE. - CALAIN = .TRUE. - DO 20 I=1,NSWEEP - GRAT2 = XK1*WATER*(GAMA(8)/GAMA(7))**2./GAMA(7) - PARM = X+GRAT2 - DELTA = PARM*PARM + 4.0*(X+TNH4HS4)*GRAT2 ! Diakrinousa - OMEGA = 0.5*(-PARM + SQRT(DELTA)) ! Thetiki riza (ie:H+>0) -! -! *** SPECIATION & WATER CONTENT *************************************** -! - MOLAL (1) = OMEGA ! HI - MOLAL (3) = 3.0*X+TNH4HS4 ! NH4I - MOLAL (5) = X+OMEGA ! SO4I - MOLAL (6) = MAX (X+TNH4HS4-OMEGA, TINY) ! HSO4I - CLC = MAX(TLC-X,ZERO) ! Solid LC - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ****************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 30 - ENDIF -20 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************** -! -!CC30 FUNCB2B= ( NH4I**3.*SO4I*HSO4I )/( XK13*(WATER/GAMA(13))**5. ) -30 FUNCB2B= (MOLAL(3)**3.)*MOLAL(5)*MOLAL(6) - FUNCB2B= FUNCB2B/(XK13*(WATER/GAMA(13))**5.) - ONE - RETURN -! -! *** END OF FUNCTION FUNCB2B ******************************************* -! - END FUNCTION FUNCB2B - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCB1 -! *** CASE B1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : LC, (NH4)2SO4, NH4HSO4 -! -! THERE ARE TWO POSSIBLE REGIMES HERE, DEPENDING ON RELATIVE HUMIDITY: -! 1. WHEN RH >= MDRH ; LIQUID PHASE POSSIBLE (MDRH REGION) -! 2. WHEN RH < MDRH ; ONLY SOLID PHASE POSSIBLE (SUBROUTINE CALCB1A) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCB1() -! -! *** REGIME DEPENDS UPON THE AMBIENT RELATIVE HUMIDITY ***************** -! - IF (RH.LT.DRMLCAB) THEN - SCASE = 'B1 ; SUBCASE 1' - CALL CALCB1A ! SOLID PHASE ONLY POSSIBLE - SCASE = 'B1 ; SUBCASE 1' - ELSE - SCASE = 'B1 ; SUBCASE 2' - CALL CALCB1B ! LIQUID & SOLID PHASE POSSIBLE - SCASE = 'B1 ; SUBCASE 2' - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCB1 ****************************************** -! - END SUBROUTINE CALCB1 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCB1A -! *** CASE B1 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH -! 2. THERE IS NO LIQUID PHASE -! 3. SOLIDS POSSIBLE: LC, { (NH4)2SO4 XOR NH4HSO4 } (ONE OF TWO -! BUT NOT BOTH) -! -! A SIMPLE MATERIAL BALANCE IS PERFORMED, AND THE AMOUNT OF LC -! IS CALCULATED FROM THE (NH4)2SO4 AND NH4HSO4 WHICH IS LEAST -! ABUNDANT (STOICHIMETRICALLY). THE REMAINING EXCESS OF SALT -! IS MIXED WITH THE LC. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCB1A() - Real(kind=fp) :: X,Y -! -! *** SETUP PARAMETERS ************************************************ -! - X = 2*W(2)-W(3) ! Equivalent NH4HSO4 - Y = W(3)-W(2) ! Equivalent (NH4)2SO4 -! -! *** CALCULATE COMPOSITION ******************************************* -! - IF (X.LE.Y) THEN ! LC is the MIN (x,y) - CLC = X ! NH4HSO4 >= (NH4)2S04 - CNH4HS4 = ZERO - CNH42S4 = Y-X - ELSE - CLC = Y ! NH4HSO4 < (NH4)2S04 - CNH4HS4 = X-Y - CNH42S4 = ZERO - ENDIF - RETURN -! -! *** END OF SUBROUTINE CALCB1A ****************************************** -! - END SUBROUTINE CALCB1A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCB1B -! *** CASE B1 ; SUBCASE 2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE: LC, { (NH4)2SO4 XOR NH4HSO4 } (ONE OF TWO -! BUT NOT BOTH) -! -! THIS IS THE CASE WHERE THE RELATIVE HUMIDITY IS IN THE MUTUAL -! DRH REGION. THE SOLUTION IS ASSUMED TO BE THE SUM OF TWO WEIGHTED -! SOLUTIONS ; THE SOLID PHASE ONLY (SUBROUTINE CALCB1A) AND THE -! THE SOLID WITH LIQUID PHASE (SUBROUTINE CALCB2). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCB1B() - Real(kind=fp) :: WF, ONEMWF, CLCO, CNH42SO, CNH4HSO -! -! *** FIND WEIGHT FACTOR ********************************************** -! - IF (WFTYP.EQ.0) THEN - WF = ZERO - ELSEIF (WFTYP.EQ.1) THEN - WF = 0.5D0 - ELSE - WF = (DRNH4HS4-RH)/(DRNH4HS4-DRMLCAB) - ENDIF - ONEMWF = ONE - WF -! -! *** FIND FIRST SECTION ; DRY ONE ************************************ -! - CALL CALCB1A - CLCO = CLC ! FIRST (DRY) SOLUTION - CNH42SO = CNH42S4 - CNH4HSO = CNH4HS4 -! -! *** FIND SECOND SECTION ; DRY & LIQUID ****************************** -! - CLC = ZERO - CNH42S4 = ZERO - CNH4HS4 = ZERO - CALL CALCB2 ! SECOND (LIQUID) SOLUTION -! -! *** FIND SOLUTION AT MDRH BY WEIGHTING DRY & LIQUID SOLUTIONS. -! - MOLAL(1)= ONEMWF*MOLAL(1) ! H+ - MOLAL(3)= ONEMWF*(2.0*(CNH42SO-CNH42S4) + (CNH4HSO-CNH4HS4) - & + 3.0*(CLCO-CLC)) ! NH4+ - MOLAL(5)= ONEMWF*(CNH42SO-CNH42S4 + CLCO-CLC) ! SO4-- - MOLAL(6)= ONEMWF*(CNH4HSO-CNH4HS4 + CLCO-CLC) ! HSO4- -! - WATER = ONEMWF*WATER -! - CLC = WF*CLCO + ONEMWF*CLC - CNH42S4 = WF*CNH42SO + ONEMWF*CNH42S4 - CNH4HS4 = WF*CNH4HSO + ONEMWF*CNH4HS4 -! - RETURN -! -! *** END OF SUBROUTINE CALCB1B ***************************************** -! - END SUBROUTINE CALCB1B - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCC2 -! *** CASE C2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, FREE ACID (SULRAT < 1.0) -! 2. THERE IS ONLY A LIQUID PHASE -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCC2() - Real(kind=fp) :: LAMDA, KAPA - Real(kind=fp) :: PSI, PARM, BB, CC - Integer :: I -! - CALAOU =.TRUE. ! Outer loop activity calculation flag - FRST =.TRUE. - CALAIN =.TRUE. -! -! *** SOLVE EQUATIONS ************************************************** -! - LAMDA = W(3) ! NH4HSO4 INITIALLY IN SOLUTION - PSI = W(2)-W(3) ! H2SO4 IN SOLUTION - DO 20 I=1,NSWEEP - PARM = WATER*XK1/GAMA(7)*(GAMA(8)/GAMA(7))**2. - BB = PSI+PARM - CC =-PARM*(LAMDA+PSI) - KAPA = 0.5*(-BB+SQRT(BB*BB-4.0*CC)) -! -! *** SPECIATION & WATER CONTENT *************************************** -! - MOLAL(1) = PSI+KAPA ! HI - MOLAL(3) = LAMDA ! NH4I - MOLAL(5) = KAPA ! SO4I - MOLAL(6) = MAX(LAMDA+PSI-KAPA, TINY) ! HSO4I - CH2SO4 = MAX(MOLAL(5)+MOLAL(6)-MOLAL(3), ZERO) ! Free H2SO4 - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (.NOT.CALAIN) GOTO 30 - CALL CALCACT -20 CONTINUE -! -30 RETURN -! -! *** END OF SUBROUTINE CALCC2 ***************************************** -! - END SUBROUTINE CALCC2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCC1 -! *** CASE C1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, FREE ACID (SULRAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE: NH4HSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCC1() - Real(kind=fp) :: KLO, KHI - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Real(kind=fp) :: XLO, XHI, YLO, YHI, DX - Integer :: I -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - KLO = TINY - KHI = W(3) -! -! *** INITIAL VALUES FOR BISECTION ************************************* -! - X1 = KLO - Y1 = FUNCC1 (X1) - IF (ABS(Y1).LE.EPS) GOTO 50 - YLO= Y1 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO *********************** -! - DX = (KHI-KLO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCC1 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2) .LT. ZERO) GOTO 20 ! (Y1*Y2 .LT. ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION FOUND -! - YHI= Y2 ! Save Y-value at HI position - IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 -! -! *** { YLO, YHI } < 0.0 SOLUTION IS ALWAYS UNDERSATURATED WITH NH4HS04 -! - ELSE IF (YLO.LT.ZERO .AND. YHI.LT.ZERO) THEN - GOTO 50 -! -! *** { YLO, YHI } > 0.0 SOLUTION IS ALWAYS SUPERSATURATED WITH NH4HS04 -! - ELSE IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - X1 = KLO - X2 = KLO - GOTO 40 - ELSE - CALL PUSHERR (0001, 'CALCC1') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! -! *** PERFORM BISECTION OF DISSOLVED NH4HSO4 ************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCC1 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCC1') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN *********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCC1 (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCC1 ***************************************** -! - END SUBROUTINE CALCC1 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** FUNCTION FUNCC1 -! *** CASE C1 ; -! FUNCTION THAT SOLVES THE SYSTEM OF EQUATIONS FOR CASE C1 -! AND RETURNS THE VALUE OF THE ZEROED FUNCTION IN FUNCC1. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCC1 (KAPA) - Real(kind=fp) :: KAPA, LAMDA - Integer :: I - Real(kind=fp) :: PSI, PAR1, PAR2, BB, CC -! -! *** SOLVE EQUATIONS ************************************************** -! - FRST = .TRUE. - CALAIN = .TRUE. -! - PSI = W(2)-W(3) - DO 20 I=1,NSWEEP - PAR1 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2.0 - PAR2 = XK12*(WATER/GAMA(9))**2.0 - BB = PSI + PAR1 - CC =-PAR1*(PSI+KAPA) - LAMDA = 0.5*(-BB+SQRT(BB*BB-4*CC)) -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ******************************* -! - MOLAL(1) = PSI+LAMDA ! HI - MOLAL(3) = KAPA ! NH4I - MOLAL(5) = LAMDA ! SO4I - MOLAL(6) = MAX (ZERO, PSI+KAPA-LAMDA) ! HSO4I - CNH4HS4 = MAX(W(3)-MOLAL(3), ZERO) ! Solid NH4HSO4 - CH2SO4 = MAX(PSI, ZERO) ! Free H2SO4 - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 30 - ENDIF -20 CONTINUE -! -! *** CALCULATE ZERO FUNCTION ******************************************* -! -!CC30 FUNCC1= (NH4I*HSO4I/PAR2) - ONE -30 FUNCC1= (MOLAL(3)*MOLAL(6)/PAR2) - ONE - RETURN -! -! *** END OF FUNCTION FUNCC1 ******************************************** -! - END FUNCTION FUNCC1 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCD3 -! *** CASE D3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) -! 2. THERE IS OLNY A LIQUID PHASE -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCD3() - Real(kind=fp) ::PSI4LO, PSI4HI - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Real(kind=fp) :: DX, YY, P4, YLO, YHI, DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCD1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4NO3 ! Save from CALCD1 run - CHI2 = CNH42S4 - CHI3 = GHNO3 - CHI4 = GNH3 -! - PSI1 = CNH4NO3 ! ASSIGN INITIAL PSI's - PSI2 = CHI2 - PSI3 = ZERO - PSI4 = ZERO -! -#if defined( ISORROPIA_V22 ) - MOLAL(5) = PSI2 -#else - MOLAL(5) = ZERO -#endif - MOLAL(6) = ZERO - MOLAL(3) = PSI1 - MOLAL(7) = PSI1 - CALL CALCMR ! Initial water -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI4LO = TINY ! Low limit - PSI4HI = CHI4 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! -60 X1 = PSI4LO - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y1 = FUNCD3 (X1) - IF (ABS(Y1).LE.EPS) RETURN - YLO= Y1 ! Save Y-value at HI position -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI4HI-PSI4LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y2 = FUNCD3 (X2) -#if defined( ISORROPIA_V22 ) - IF ((Y1.lt.ZERO).and.(Y2.gt.ZERO)) GOTO 20 ! SLC 2012-01-01 -#else - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) -#endif - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION FOUND -! - YHI= Y1 ! Save Y-value at Hi position - IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - RETURN -! -! *** { YLO, YHI } < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH NH3 -! Physically I dont know when this might happen, but I have put this -! branch in for completeness. I assume there is no solution; all NO3 goes to the -! gas phase. -! - ELSE IF (YLO.LT.ZERO .AND. YHI.LT.ZERO) THEN - P4 = TINY ! PSI4LO ! CHI4 - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - YY = FUNCD3(P4) - GOTO 50 -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH NH3 -! This happens when Sul.Rat. = 2.0, so some NH4+ from sulfate evaporates -! and goes to the gas phase ; so I redefine the LO and HI limits of PSI4 -! and proceed again with root tracking. -! - ELSE IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - PSI4HI = PSI4LO - PSI4LO = PSI4LO - 0.1*(PSI1+PSI2) ! No solution; some NH3 evaporates - IF (PSI4LO.LT.-(PSI1+PSI2)) THEN - CALL PUSHERR (0001, 'CALCD3') ! WARNING ERROR: NO SOLUTION - RETURN - ELSE -#if defined( ISORROPIA_V22 ) - MOLAL(5) = PSI2 -#else - MOLAL(5) = ZERO -#endif - MOLAL(6) = ZERO - MOLAL(3) = PSI1 - MOLAL(7) = PSI1 - CALL CALCMR ! Initial water - GOTO 60 ! Redo root tracking - ENDIF - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCD3 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*ABS(X1)) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCD3') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCD3 (X3) -! -! *** CALCULATE HSO4 SPECIATION AND RETURN ******************************* -! -50 CONTINUE - IF (MOLAL(1).GT.TINY) THEN - CALL CALCHS4 (MOLAL(1), MOLAL(5), ZERO, DELTA) - MOLAL(1) = MOLAL(1) - DELTA ! H+ EFFECT - MOLAL(5) = MOLAL(5) - DELTA ! SO4 EFFECT - MOLAL(6) = DELTA ! HSO4 EFFECT - ENDIF - RETURN -! -! *** END OF SUBROUTINE CALCD3 ****************************************** -! - END SUBROUTINE CALCD3 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** FUNCTION FUNCD3 -! *** CASE D3 -! FUNCTION THAT SOLVES THE SYSTEM OF EQUATIONS FOR CASE D3 ; -! AND RETURNS THE VALUE OF THE ZEROED FUNCTION IN FUNCD3. -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCD3 (P4) - Real(kind=fp) :: P4 - Integer :: I - Real(kind=fp) A2, A3, A4, A7, BB, DENM, ABB, AHI -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. - PSI4 = P4 -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP - A2 = XK7*(WATER/GAMA(4))**3.0 - A3 = XK4*R*TEMP*(WATER/GAMA(10))**2.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A7 = XKW *RH*WATER*WATER -! - PSI3 = A3*A4*CHI3*(CHI4-PSI4) - PSI1*(2.0*PSI2+PSI1+PSI4) - PSI3 = PSI3/(A3*A4*(CHI4-PSI4) + 2.0*PSI2+PSI1+PSI4) - PSI3 = MIN(MAX(PSI3, ZERO), CHI3) -! - BB = PSI4 - PSI3 -!CCOLD AHI = 0.5*(-BB + SQRT(BB*BB + 4.d0*A7)) ! This is correct also -!CC AHI =2.0*A7/(BB+SQRT(BB*BB + 4.d0*A7)) ! Avoid overflow when HI->0 - DENM = BB+SQRT(BB*BB + 4.d0*A7) - IF (DENM.LE.TINY) THEN ! Avoid overflow when HI->0 - ABB = ABS(BB) - DENM = (BB+ABB) + 2.0*A7/ABB ! Taylor expansion of SQRT - ENDIF - AHI = 2.0*A7/DENM -! -! *** SPECIATION & WATER CONTENT *************************************** -! - MOLAL (1) = AHI ! HI - MOLAL (3) = PSI1 + PSI4 + 2.0*PSI2 ! NH4I - MOLAL (5) = PSI2 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI3 + PSI1 ! NO3I - CNH42S4 = CHI2 - PSI2 ! Solid (NH4)2SO4 - CNH4NO3 = ZERO ! Solid NH4NO3 - GHNO3 = CHI3 - PSI3 ! Gas HNO3 - GNH3 = CHI4 - PSI4 ! Gas NH3 - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 CONTINUE -!CC FUNCD3= NH4I/HI/MAX(GNH3,TINY)/A4 - ONE - FUNCD3= MOLAL(3)/MOLAL(1)/MAX(GNH3,TINY)/A4 - ONE - RETURN -! -! *** END OF FUNCTION FUNCD3 ******************************************** -! - END FUNCTION FUNCD3 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCD2 -! *** CASE D2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -! Algorithm revised to attain a more accuracte solution -! SLC 2012-03-21 -! -!======================================================================= -! - SUBROUTINE CALCD2() - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Real(kind=fp) :: PSI4LO, PSI4HI, YLO, YHI - Real(kind=fp) :: YY, P4, DX, DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCD1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4NO3 ! Save from CALCD1 run - CHI2 = CNH42S4 - CHI3 = GHNO3 - CHI4 = GNH3 -! - PSI1 = CNH4NO3 ! ASSIGN INITIAL PSI's - PSI2 = CNH42S4 - PSI3 = ZERO - PSI4 = ZERO -! -#if defined( ISORROPIA_V22 ) - MOLAL(5) = PSI2 ! Include initial amount in water calc (SLC 2012-03-21 -#else - MOLAL(5) = ZERO -#endif - MOLAL(6) = ZERO - MOLAL(3) = PSI1 - MOLAL(7) = PSI1 - CALL CALCMR ! Initial water -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI4LO = TINY ! Low limit - PSI4HI = CHI4 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! -60 X1 = PSI4LO - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y1 = FUNCD2 (X1) - IF (ABS(Y1).LE.EPS) RETURN - YLO= Y1 ! Save Y-value at HI position -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI4HI-PSI4LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y2 = FUNCD2 (X2) -#if defined( ISORROPIA_V22 ) - IF ((Y1.lt.ZERO).and.(Y2.gt.ZERO)) GOTO 20 ! SLC 2012-01-01 -#else -! This is done, in case if Y(PSI4LO)>0, but Y(PSI4LO+DX) < 0 (i.e.undersat) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) THEN - IF (Y1 .LE. Y2) GOTO 20 ! (Y1*Y2.LT.ZERO) - ENDIF -#endif - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION FOUND -! - YHI= Y1 ! Save Y-value at Hi position - IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - RETURN -! -! *** { YLO, YHI } < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH NH3 -! Physically I dont know when this might happen, but I have put this -! branch in for completeness. I assume there is no solution; all NO3 goes to the -! gas phase. -! - ELSE IF (YLO.LT.ZERO .AND. YHI.LT.ZERO) THEN - P4 = TINY ! PSI4LO ! CHI4 - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - YY = FUNCD2(P4) - GOTO 50 -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH NH3 -! This happens when Sul.Rat. = 2.0, so some NH4+ from sulfate evaporates -! and goes to the gas phase ; so I redefine the LO and HI limits of PSI4 -! and proceed again with root tracking. -! - ELSE IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - PSI4HI = PSI4LO - PSI4LO = PSI4LO - 0.1*(PSI1+PSI2) ! No solution; some NH3 evaporates - IF (PSI4LO.LT.-(PSI1+PSI2)) THEN - CALL PUSHERR (0001, 'CALCD2') ! WARNING ERROR: NO SOLUTION - RETURN - ELSE -#if defined( ISORROPIA_V22 ) - MOLAL(5) = PSI2 ! Include initial amount in water calc -#else - MOLAL(5) = ZERO -#endif - MOLAL(6) = ZERO - MOLAL(3) = PSI1 - MOLAL(7) = PSI1 - CALL CALCMR ! Initial water - GOTO 60 ! Redo root tracking - ENDIF - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCD2 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*ABS(X1)) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCD2') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = MIN(X1,X2) ! 0.5*(X1+X2) ! Get "low" side, it's acidic soln. - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCD2 (X3) -! -! *** CALCULATE HSO4 SPECIATION AND RETURN ******************************* -! -50 CONTINUE - IF (MOLAL(1).GT.TINY) THEN - CALL CALCHS4 (MOLAL(1), MOLAL(5), ZERO, DELTA) - MOLAL(1) = MOLAL(1) - DELTA ! H+ EFFECT - MOLAL(5) = MOLAL(5) - DELTA ! SO4 EFFECT - MOLAL(6) = DELTA ! HSO4 EFFECT - ENDIF - RETURN -! -! *** END OF SUBROUTINE CALCD2 ****************************************** -! - END SUBROUTINE CALCD2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** FUNCTION FUNCD2 -! *** CASE D2 -! FUNCTION THAT SOLVES THE SYSTEM OF EQUATIONS FOR CASE D2 ; -! AND RETURNS THE VALUE OF THE ZEROED FUNCTION IN FUNCD2. -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCD2 (P4) - Real(kind=fp) :: P4 - Real(kind=fp) :: A2, A3, A4, A7 - Real(kind=fp) :: BB, DENM, AHI, ABB - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -! -! *** SETUP PARAMETERS ************************************************ -! - CALL RSTGAM ! Reset activity coefficients to 0.1 - FRST = .TRUE. - CALAIN = .TRUE. - PSI4 = P4 - PSI2 = CHI2 -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP - A2 = XK7*(WATER/GAMA(4))**3.0 - A3 = XK4*R*TEMP*(WATER/GAMA(10))**2.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A7 = XKW *RH*WATER*WATER -! - IF (CHI2.GT.TINY .AND. WATER.GT.TINY) THEN - PSI14 = PSI1+PSI4 - CALL POLY3 (PSI14,0.25*PSI14**2.,-A2/4.0, PSI2, ISLV) ! PSI2 - IF (ISLV.EQ.0) THEN - PSI2 = MIN (PSI2, CHI2) - ELSE -#if defined( ISORROPIA_V22 ) - PSI2 = TINY -#else - PSI2 = ZERO -#endif - ENDIF - ENDIF -! - PSI3 = A3*A4*CHI3*(CHI4-PSI4) - PSI1*(2.0*PSI2+PSI1+PSI4) - PSI3 = PSI3/(A3*A4*(CHI4-PSI4) + 2.0*PSI2+PSI1+PSI4) -!cc PSI3 = MIN(MAX(PSI3, ZERO), CHI3) -! - BB = PSI4-PSI3 ! (BB > 0, acidic solution, <0 alkaline) -! -! Do not change computation scheme for H+, all others did not work well. -! - DENM = BB+SQRT(BB*BB + 4.d0*A7) - IF (DENM.LE.TINY) THEN ! Avoid overflow when HI->0 - ABB = ABS(BB) - DENM = (BB+ABB) + 2.d0*A7/ABB ! Taylor expansion of SQRT - ENDIF - AHI = 2.d0*A7/DENM -! -! *** SPECIATION & WATER CONTENT *************************************** -! - MOLAL (1) = AHI ! HI - MOLAL (3) = PSI1 + PSI4 + 2.0*PSI2 ! NH4 - MOLAL (5) = PSI2 ! SO4 - MOLAL (6) = ZERO ! HSO4 - MOLAL (7) = PSI3 + PSI1 ! NO3 - CNH42S4 = CHI2 - PSI2 ! Solid (NH4)2SO4 - CNH4NO3 = ZERO ! Solid NH4NO3 - GHNO3 = CHI3 - PSI3 ! Gas HNO3 - GNH3 = CHI4 - PSI4 ! Gas NH3 - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 CONTINUE -!CC FUNCD2= NH4I/HI/MAX(GNH3,TINY)/A4 - ONE - FUNCD2= MOLAL(3)/MOLAL(1)/MAX(GNH3,TINY)/A4 - ONE - RETURN -! -! *** END OF FUNCTION FUNCD2 ******************************************** -! - END FUNCTION FUNCD2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCD1 -! *** CASE D1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4NO3 -! -! THERE ARE TWO REGIMES DEFINED BY RELATIVE HUMIDITY: -! 1. RH < MDRH ; ONLY SOLID PHASE POSSIBLE (SUBROUTINE CALCD1A) -! 2. RH >= MDRH ; LIQUID PHASE POSSIBLE (MDRH REGION) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCD1() - !EXTERNAL CALCD1A, CALCD2 -! -! *** REGIME DEPENDS UPON THE AMBIENT RELATIVE HUMIDITY ***************** -! - IF (RH.LT.DRMASAN) THEN - SCASE = 'D1 ; SUBCASE 1' ! SOLID PHASE ONLY POSSIBLE - CALL CALCD1A - SCASE = 'D1 ; SUBCASE 1' - ELSE - SCASE = 'D1 ; SUBCASE 2' ! LIQUID & SOLID PHASE POSSIBLE - CALL CALCMDRH (RH, DRMASAN, DRNH4NO3, CALCD1A, CALCD2) - SCASE = 'D1 ; SUBCASE 2' - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCD1 ****************************************** -! - END SUBROUTINE CALCD1 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCD1A -! *** CASE D1 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4NO3 -! -! THE SOLID (NH4)2SO4 IS CALCULATED FROM THE SULFATES, WHILE NH4NO3 -! IS CALCULATED FROM NH3-HNO3 EQUILIBRIUM. 'ZE' IS THE AMOUNT OF -! NH4NO3 THAT VOLATIZES WHEN ALL POSSILBE NH4NO3 IS INITIALLY IN -! THE SOLID PHASE. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCD1A() - Real(kind=fp) :: PARM, X, PS, OM, OMPS, DIAK, ZE -! -! *** SETUP PARAMETERS ************************************************ -! - PARM = XK10/(R*TEMP)/(R*TEMP) -! -! *** CALCULATE NH4NO3 THAT VOLATIZES ********************************* -! - CNH42S4 = W(2) - X = MAX(ZERO, MIN(W(3)-2.0*CNH42S4, W(4))) ! MAX NH4NO3 - PS = MAX(W(3) - X - 2.0*CNH42S4, ZERO) - OM = MAX(W(4) - X, ZERO) -! - OMPS = OM+PS - DIAK = SQRT(OMPS*OMPS + 4.0*PARM) ! DIAKRINOUSA - ZE = MIN(X, 0.5*(-OMPS + DIAK)) ! THETIKI RIZA -! -! *** SPECIATION ******************************************************* -! - CNH4NO3 = X - ZE ! Solid NH4NO3 - GNH3 = PS + ZE ! Gas NH3 - GHNO3 = OM + ZE ! Gas HNO3 -! - RETURN -! -! *** END OF SUBROUTINE CALCD1A ***************************************** -! - END SUBROUTINE CALCD1A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCG5 -! *** CASE G5 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCG5() - Real(kind=fp) :: PSI6LO, PSI6HI, DX, DELTA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Integer :: I -! - !Real(kind=fp) :: LAMDA - ! changes implemented by hotp 8/2/07 - ! explicitly declare all variables in CASEG - ! make CASEG THREADPRIVATE for parallelization - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI1 = 0.5*W(1) - CHI2 = MAX (W(2)-CHI1, ZERO) - CHI3 = ZERO - CHI4 = MAX (W(3)-2.0*CHI2, ZERO) - CHI5 = W(4) - CHI6 = W(5) -! - PSI1 = CHI1 - PSI2 = CHI2 - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! - WATER = CHI2/M0(4) + CHI1/M0(2) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCG5A (X1) - IF (CHI6.LE.TINY) GOTO 50 -!cc IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -!cc IF (WATER .LE. TINY) RETURN ! No water -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCG5A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCG5A (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A4, A5, A6, AKK - Real(kind=fp) :: SMIN, BB, CC, DD, HI, OHI - Integer :: I -! - !Real(kind=fp) :: LAMDA - ! changes implemented by hotp 8/2/07 - ! explicitly declare all variables in CASEG - ! make CASEG THREADPRIVATE for parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA -!=====! Real(kind=fp) :: PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7 -!=====! Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7 -!=====! COMMON /CASEG/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA, -!=====! & PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7, -!=====! & A1, A2, A3, A4, A5, A6, A7 -!=====!!$OMP THREADPRIVATE( /CASEG/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A2 = XK7 *(WATER/GAMA(4))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - AKK = A4*A6 -! -! CALCULATE DISSOCIATION QUANTITIES -! - IF (CHI5.GE.TINY) THEN - PSI5 = PSI6*CHI5/(A6/A5*(CHI6-PSI6) + PSI6) - ELSE - PSI5 = TINY - ENDIF -! -!CC IF(CHI4.GT.TINY) THEN - IF(W(2).GT.TINY) THEN ! Accounts for NH3 evaporation - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - 2.d0*PSI2/A4 - DD = MAX(BB*BB-4.d0*CC,ZERO) ! Patch proposed by Uma Shankar, 19/11/01 - PSI4 =0.5d0*(-BB - SQRT(DD)) - ELSE - PSI4 = TINY - ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = 2.0D0*PSI1 ! NAI - MOLAL (3) = 2.0*PSI2 + PSI4 ! NH4I - MOLAL (4) = PSI6 ! CLI - MOLAL (5) = PSI2 + PSI1 ! SO4I - MOLAL (6) = ZERO - MOLAL (7) = PSI5 ! NO3I -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) ! Gas NH3 - GHNO3 = MAX(CHI5 - PSI5, TINY) ! Gas HNO3 - GHCL = MAX(CHI6 - PSI6, TINY) ! Gas HCl -! - CNH42S4 = ZERO ! Solid (NH4)2SO4 - CNH4NO3 = ZERO ! Solid NH4NO3 - CNH4CL = ZERO ! Solid NH4Cl -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCG5A = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -!CC FUNCG5A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCG5A ******************************************* -! - END FUNCTION FUNCG5A - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCG4 -! *** CASE G4 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCG4() - Real(kind=fp) :: PSI6LO, PSI6HI - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Real(kind=fp) :: DX, DELTA - Integer :: I -! - !Real(kind=fp) :: LAMDA - ! changes implemented by hotp 8/2/07 - ! explicitly declare all variables in CASEG - ! make CASEG THREADPRIVATE for parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA -!=====! Real(kind=fp) :: PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7 -!=====! Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7 -!=====! COMMON /CASEG/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA, -!=====! & PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7, -!=====! & A1, A2, A3, A4, A5, A6, A7 -!=====!!$OMP THREADPRIVATE( /CASEG/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI1 = 0.5*W(1) - CHI2 = MAX (W(2)-CHI1, ZERO) - CHI3 = ZERO - CHI4 = MAX (W(3)-2.0*CHI2, ZERO) - CHI5 = W(4) - CHI6 = W(5) -! - PSI2 = CHI2 - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! - WATER = CHI2/M0(4) + CHI1/M0(2) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCG4A (X1) - IF (CHI6.LE.TINY) GOTO 50 -!CC IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY .OR. WATER .LE. TINY) GOTO 50 -!CC IF (WATER .LE. TINY) RETURN ! No water -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCG4A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCG4A (X) -! - !Real(kind=fp) :: NAI, NH4I, NO3I - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A4, A5, A6 - Real(kind=fp) :: BB, CC, DD, NH4I, CLI, SO4I, NO3I, NAI - Real(kind=fp) :: HI, OHI - Integer :: I, ISLV - !Real(kind=fp) :: LAMDA - ! changes implemented by hotp 8/2/07 - ! explicitly declare all variables in CASEG - ! make CASEG THREADPRIVATE for parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA -!=====! Real(kind=fp) :: PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7 -!=====! Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7 -!=====! COMMON /CASEG/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA, -!=====! & PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7, -!=====! & A1, A2, A3, A4, A5, A6, A7 -!=====!!$OMP THREADPRIVATE( /CASEG/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A2 = XK7 *(WATER/GAMA(4))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - IF (CHI5.GE.TINY) THEN - PSI5 = PSI6*CHI5/(A6/A5*(CHI6-PSI6) + PSI6) - ELSE - PSI5 = TINY - ENDIF -! -!CC IF(CHI4.GT.TINY) THEN - IF(W(2).GT.TINY) THEN ! Accounts for NH3 evaporation - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - 2.d0*PSI2/A4 - DD = MAX(BB*BB-4.d0*CC,ZERO) ! Patch proposed by Uma shankar, 19/11/2001 - PSI4 =0.5d0*(-BB - SQRT(DD)) - ELSE - PSI4 = TINY - ENDIF -! -! CALCULATE CONCENTRATIONS -! - NH4I = 2.0*PSI2 + PSI4 - CLI = PSI6 - SO4I = PSI2 + PSI1 - NO3I = PSI5 - NAI = 2.0D0*PSI1 -! - CALL CALCPH(2.0*SO4I+NO3I+CLI-NAI-NH4I, HI, OHI) -! -! *** Na2SO4 DISSOLUTION -! - IF (CHI1.GT.TINY .AND. WATER.GT.TINY) THEN ! PSI1 - CALL POLY3 (PSI2, ZERO, -A1/4.0, PSI1, ISLV) - IF (ISLV.EQ.0) THEN - PSI1 = MIN (PSI1, CHI1) - ELSE - PSI1 = ZERO - ENDIF - ELSE - PSI1 = ZERO - ENDIF -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! - MOLAL (1) = HI - MOLAL (2) = NAI - MOLAL (3) = NH4I - MOLAL (4) = CLI - MOLAL (5) = SO4I - MOLAL (6) = ZERO - MOLAL (7) = NO3I -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNH4CL = ZERO - CNA2SO4 = MAX(CHI1-PSI1,ZERO) -! -! *** CALCULATE MOLALR ARRAY, WATER AND ACTIVITIES ********************** -! - CALL CALCMR -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCG4A = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -!CC FUNCG4A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCG4A ******************************************* -! - END FUNCTION FUNCG4A - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCG3 -! *** CASE G3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. LIQUID & SOLID PHASE ARE BOTH POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCG3() - !EXTERNAL CALCG1A, CALCG4 - Integer :: I -! -! *** REGIME DEPENDS ON THE EXISTANCE OF WATER AND OF THE RH ************ -! - IF (W(4).GT.TINY .AND. W(5).GT.TINY) THEN ! NO3,CL EXIST, WATER POSSIBLE - SCASE = 'G3 ; SUBCASE 1' - CALL CALCG3A - SCASE = 'G3 ; SUBCASE 1' - ELSE ! NO3, CL NON EXISTANT - SCASE = 'G1 ; SUBCASE 1' - CALL CALCG1A - SCASE = 'G1 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRMG3) THEN ! ONLY SOLIDS - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCG1A - SCASE = 'G3 ; SUBCASE 2' - RETURN - ELSE - SCASE = 'G3 ; SUBCASE 3' ! MDRH REGION (NA2SO4, NH42S4) - CALL CALCMDRH (RH, DRMG3, DRNH42S4, CALCG1A, CALCG4) - SCASE = 'G3 ; SUBCASE 3' - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCG3 ****************************************** -! - END SUBROUTINE CALCG3 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCG3A -! *** CASE G3 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCG3A - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Real(kind=fp) :: DX, PSI6LO, PSI6HI, A1, DELTA - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! changes implemented by hotp 8/2/07 - ! explicitly declare all variables in CASEG - ! make CASEG THREADPRIVATE for parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA -!=====! Real(kind=fp) :: PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7 -!=====! Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7 -!=====! COMMON /CASEG/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA, -!=====! & PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7, -!=====! & A1, A2, A3, A4, A5, A6, A7 -!=====!!$OMP THREADPRIVATE( /CASEG/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI1 = 0.5*W(1) - CHI2 = MAX (W(2)-CHI1, ZERO) - CHI3 = ZERO - CHI4 = MAX (W(3)-2.0*CHI2, ZERO) - CHI5 = W(4) - CHI6 = W(5) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! - WATER = TINY -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCG3A (X1) - IF (CHI6.LE.TINY) GOTO 50 -!CC IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY .OR. WATER .LE. TINY) GOTO 50 -!CC IF (WATER .LE. TINY) RETURN ! No water -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCG3A (X2) -! - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCG3A (X) - Real(kind=fp) :: X - Integer :: I, ISLV - Real(kind=fp) :: A1, A2, A4, A5, A6, BB, CC, DD, PSI20 - Real(kind=fp) :: SMIN, OHI, HI -! - !Real(kind=fp) :: LAMDA - ! changes implemented by hotp 8/2/07 - ! explicitly declare all variables in CASEG - ! make CASEG THREADPRIVATE for parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA -!=====! Real(kind=fp) :: PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7 -!=====! Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7 -!=====! COMMON /CASEG/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA, -!=====! & PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7, -!=====! & A1, A2, A3, A4, A5, A6, A7 -!=====!!$OMP THREADPRIVATE( /CASEG/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI2 = CHI2 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A2 = XK7 *(WATER/GAMA(4))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - IF (CHI5.GE.TINY) THEN - PSI5 = PSI6*CHI5/(A6/A5*(CHI6-PSI6) + PSI6) - ELSE - PSI5 = TINY - ENDIF -! -!CC IF(CHI4.GT.TINY) THEN - IF(W(2).GT.TINY) THEN ! Accounts for NH3 evaporation - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - 2.d0*PSI2/A4 - DD = MAX(BB*BB-4.d0*CC,ZERO) ! Patch proposed by Uma Shankar, 19/11/01 - PSI4 =0.5d0*(-BB - SQRT(DD)) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI2.GT.TINY .AND. WATER.GT.TINY) THEN - CALL POLY3 (PSI4, PSI4*PSI4/4.0, -A2/4.0, PSI20, ISLV) - IF (ISLV.EQ.0) PSI2 = MIN (PSI20, CHI2) - ENDIF -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - MOLAL (2) = ZERO ! Na - MOLAL (3) = 2.0*PSI2 + PSI4 ! NH4I - MOLAL (4) = PSI6 ! CLI - MOLAL (5) = PSI2 ! SO4I - MOLAL (6) = ZERO ! HSO4 - MOLAL (7) = PSI5 ! NO3I -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) ! Gas NH3 - GHNO3 = MAX(CHI5 - PSI5, TINY) ! Gas HNO3 - GHCL = MAX(CHI6 - PSI6, TINY) ! Gas HCl -! - CNH42S4 = CHI2 - PSI2 ! Solid (NH4)2SO4 - CNH4NO3 = ZERO ! Solid NH4NO3 - CNH4CL = ZERO ! Solid NH4Cl -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCG3A = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -!CC FUNCG3A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCG3A ******************************************* -! - END FUNCTION FUNCG3A - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCG2 -! *** CASE G2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. LIQUID & SOLID PHASE ARE BOTH POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCG2 - !EXTERNAL CALCG1A, CALCG3A, CALCG4 - Integer :: I -! -! *** REGIME DEPENDS ON THE EXISTANCE OF NITRATES *********************** -! - IF (W(4).GT.TINY) THEN ! NO3 EXISTS, WATER POSSIBLE - SCASE = 'G2 ; SUBCASE 1' - CALL CALCG2A - SCASE = 'G2 ; SUBCASE 1' - ELSE ! NO3 NON EXISTANT, WATER NOT POSSIBLE - SCASE = 'G1 ; SUBCASE 1' - CALL CALCG1A - SCASE = 'G1 ; SUBCASE 1' - ENDIF -! -! *** REGIME DEPENDS ON THE EXISTANCE OF WATER AND OF THE RH ************ -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRMG2) THEN ! ONLY SOLIDS - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCG1A - SCASE = 'G2 ; SUBCASE 2' - ELSE - IF (W(5).GT. TINY) THEN - SCASE = 'G2 ; SUBCASE 3' ! MDRH (NH4CL, NA2SO4, NH42S4) - CALL CALCMDRH (RH, DRMG2, DRNH4CL, CALCG1A, CALCG3A) - SCASE = 'G2 ; SUBCASE 3' - ENDIF - IF (WATER.LE.TINY .AND. RH.GE.DRMG3) THEN - SCASE = 'G2 ; SUBCASE 4' ! MDRH (NA2SO4, NH42S4) - CALL CALCMDRH (RH, DRMG3, DRNH42S4, CALCG1A, CALCG4) - SCASE = 'G2 ; SUBCASE 4' - ELSE - WATER = TINY - DO 20 I=1,NIONS - MOLAL(I) = ZERO -20 CONTINUE - CALL CALCG1A - SCASE = 'G2 ; SUBCASE 2' - ENDIF - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCG2 ****************************************** -! - END SUBROUTINE CALCG2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCG2A -! *** CASE G2 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCG2A() - Real(kind=fp) :: PSI6LO, PSI6HI, DX, A1, DELTA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! changes implemented by hotp 8/2/07 - ! explicitly declare all variables in CASEG - ! make CASEG THREADPRIVATE for parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA -!=====! Real(kind=fp) :: PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7 -!=====! Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7 -!=====! COMMON /CASEG/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA, -!=====! & PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7, -!=====! & A1, A2, A3, A4, A5, A6, A7 -!=====!!$OMP THREADPRIVATE( /CASEG/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI1 = 0.5*W(1) - CHI2 = MAX (W(2)-CHI1, ZERO) - CHI3 = ZERO - CHI4 = MAX (W(3)-2.0*CHI2, ZERO) - CHI5 = W(4) - CHI6 = W(5) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY -! - WATER = TINY -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCG2A (X1) - IF (CHI6.LE.TINY) GOTO 50 -!CC IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -!CC IF (WATER .LE. TINY) GOTO 50 ! No water -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCG2A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCG2A (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, DENO, PSI31, PSI32 - Real(kind=fp) :: BB, CC, DD, SMIN, HI, OHI, PSI20, DELT - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! changes implemented by hotp 8/2/07 - ! explicitly declare all variables in CASEG - ! make CASEG THREADPRIVATE for parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA -!=====! Real(kind=fp) :: PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7 -!=====! Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7 -!=====! COMMON /CASEG/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, LAMDA, -!=====! & PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, PSI7, -!=====! & A1, A2, A3, A4, A5, A6, A7 -!=====!!$OMP THREADPRIVATE( /CASEG/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI2 = CHI2 - PSI3 = ZERO - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A2 = XK7 *(WATER/GAMA(4))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 -! - DENO = MAX(CHI6-PSI6-PSI3, ZERO) - PSI5 = CHI5/((A6/A5)*(DENO/PSI6) + ONE) -! - -!------------------------------------------------------------------------------ -! Prior to 1/31/18: -! Shaojie Song wrote: -! We have identified and fixed coding errors in ISORROPIA which significantly -! affect aerosol water pH calculations when the stable state for aerosol phase -! is applied. These errors exist in source codes for the cases G2 and O2, and -! also affect the pH results for the cases G1 and O1. The standard ISORROPIA -! codes fail to account for the partitioning of ammonia between the gas and -! aqueous phases. More information can be seen in our recent ACPD paper: -! https://www.atmos-chem-phys-discuss.net/acp-2018-6/. -! PSI4 = MIN(PSI5+PSI6,CHI4) -!------------------------------------------------------------------------------ - IF(W(2).GT.TINY) THEN ! Accounts for NH3 evaporation - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - 2.d0*PSI2/A4 - DD = MAX(BB*BB-4.d0*CC,ZERO) ! Patch proposed by Uma Shankar, 19/11/01 - PSI4 =0.5d0*(-BB - SQRT(DD)) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI2.GT.TINY .AND. WATER.GT.TINY) THEN - CALL POLY3 (PSI4, PSI4*PSI4/4.0, -A2/4.0, PSI20, ISLV) - IF (ISLV.EQ.0) PSI2 = MIN (PSI20, CHI2) - ENDIF -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! - MOLAL (2) = ZERO ! NA - MOLAL (3) = 2.0*PSI2 + PSI4 ! NH4I - MOLAL (4) = PSI6 ! CLI - MOLAL (5) = PSI2 ! SO4I - MOLAL (6) = ZERO ! HSO4 - MOLAL (7) = PSI5 ! NO3I -! -!CC MOLAL (1) = MAX(CHI5 - PSI5, TINY)*A5/PSI5 ! HI - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = MAX(CHI2 - PSI2, ZERO) - CNH4NO3 = ZERO -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! -! *** CALCULATE MOLALR ARRAY, WATER AND ACTIVITIES ********************** -! - CALL CALCMR -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 IF (CHI4.LE.TINY) THEN - FUNCG2A = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE - ELSE - FUNCG2A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE - ENDIF -! - RETURN -! -! *** END OF FUNCTION FUNCG2A ******************************************* -! - END FUNCTION FUNCG2A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCG1 -! *** CASE G1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4NO3, NH4CL, NA2SO4 -! -! THERE ARE TWO POSSIBLE REGIMES HERE, DEPENDING ON RELATIVE HUMIDITY: -! 1. WHEN RH >= MDRH ; LIQUID PHASE POSSIBLE (MDRH REGION) -! 2. WHEN RH < MDRH ; ONLY SOLID PHASE POSSIBLE (SUBROUTINE CALCG1A) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCG1() - !EXTERNAL CALCG1A, CALCG2A -! -! *** REGIME DEPENDS UPON THE AMBIENT RELATIVE HUMIDITY ***************** -! - IF (RH.LT.DRMG1) THEN - SCASE = 'G1 ; SUBCASE 1' - CALL CALCG1A ! SOLID PHASE ONLY POSSIBLE - SCASE = 'G1 ; SUBCASE 1' - ELSE - SCASE = 'G1 ; SUBCASE 2' ! LIQUID & SOLID PHASE POSSIBLE - CALL CALCMDRH (RH, DRMG1, DRNH4NO3, CALCG1A, CALCG2A) - SCASE = 'G1 ; SUBCASE 2' - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCG1 ****************************************** -! - END SUBROUTINE CALCG1 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCG1A -! *** CASE G1 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4NO3 -! -! SOLID (NH4)2SO4 IS CALCULATED FROM THE SULFATES, WHILE NH4NO3 -! IS CALCULATED FROM NH3-HNO3 EQUILIBRIUM. 'ZE' IS THE AMOUNT OF -! NH4NO3 THAT VOLATIZES WHEN ALL POSSILBE NH4NO3 IS INITIALLY IN -! THE SOLID PHASE. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCG1A() - Real(kind=fp) :: LAMDA, LAMDA1, LAMDA2, KAPA, KAPA1, KAPA2 - Real(kind=fp) :: FRNA, SO4FR, ALF, BET, GAM, RTSQ, A1, A2 - Real(kind=fp) :: THETA1, THETA2, BB, CC - Real(kind=fp) :: DD, SQDD, DD1, SQDD1, DD2, SQDD2 - Integer :: I -! -! *** CALCULATE NON VOLATILE SOLIDS *********************************** -! - CNA2SO4 = MIN (0.5*W(1), W(2)) - FRNA = MAX(W(1) - 2.0*CNA2SO4, ZERO) - SO4FR = MAX(W(2) - CNA2SO4, ZERO) -! CNH42S4 = W(2) - CNA2SO4 - CNH42S4 = MAX (SO4FR , ZERO) ! CNH42S4 -! -! *** CALCULATE VOLATILE SPECIES ************************************** -! - ALF = W(3) - 2.0*CNH42S4 - BET = W(5) - GAM = W(4) -! - RTSQ = R*TEMP*R*TEMP - A1 = XK6/RTSQ - A2 = XK10/RTSQ -! - THETA1 = GAM - BET*(A2/A1) - THETA2 = A2/A1 -! -! QUADRATIC EQUATION SOLUTION -! - BB = (THETA1-ALF-BET*(ONE+THETA2))/(ONE+THETA2) - CC = (ALF*BET-A1-BET*THETA1)/(ONE+THETA2) - DD = BB*BB - 4.0D0*CC - IF (DD.LT.ZERO) GOTO 100 ! Solve each reaction seperately -! -! TWO ROOTS FOR KAPA, CHECK AND SEE IF ANY VALID -! - SQDD = SQRT(DD) - KAPA1 = 0.5D0*(-BB+SQDD) - KAPA2 = 0.5D0*(-BB-SQDD) - LAMDA1 = THETA1 + THETA2*KAPA1 - LAMDA2 = THETA1 + THETA2*KAPA2 -! - IF (KAPA1.GE.ZERO .AND. LAMDA1.GE.ZERO) THEN - IF (ALF-KAPA1-LAMDA1.GE.ZERO .AND. - & BET-KAPA1.GE.ZERO .AND. GAM-LAMDA1.GE.ZERO) THEN - KAPA = KAPA1 - LAMDA= LAMDA1 - GOTO 200 - ENDIF - ENDIF -! - IF (KAPA2.GE.ZERO .AND. LAMDA2.GE.ZERO) THEN - IF (ALF-KAPA2-LAMDA2.GE.ZERO .AND. - & BET-KAPA2.GE.ZERO .AND. GAM-LAMDA2.GE.ZERO) THEN - KAPA = KAPA2 - LAMDA= LAMDA2 - GOTO 200 - ENDIF - ENDIF -! -! SEPERATE SOLUTION OF NH4CL & NH4NO3 EQUILIBRIA -! -100 KAPA = ZERO - LAMDA = ZERO - DD1 = (ALF+BET)*(ALF+BET) - 4.0D0*(ALF*BET-A1) - DD2 = (ALF+GAM)*(ALF+GAM) - 4.0D0*(ALF*GAM-A2) -! -! NH4CL EQUILIBRIUM -! - IF (DD1.GE.ZERO) THEN - SQDD1 = SQRT(DD1) - KAPA1 = 0.5D0*(ALF+BET + SQDD1) - KAPA2 = 0.5D0*(ALF+BET - SQDD1) -! - IF (KAPA1.GE.ZERO .AND. KAPA1.LE.MIN(ALF,BET)) THEN - KAPA = KAPA1 - ELSE IF (KAPA2.GE.ZERO .AND. KAPA2.LE.MIN(ALF,BET)) THEN - KAPA = KAPA2 - ELSE - KAPA = ZERO - ENDIF - ENDIF -! -! NH4NO3 EQUILIBRIUM -! - IF (DD2.GE.ZERO) THEN - SQDD2 = SQRT(DD2) - LAMDA1= 0.5D0*(ALF+GAM + SQDD2) - LAMDA2= 0.5D0*(ALF+GAM - SQDD2) -! - IF (LAMDA1.GE.ZERO .AND. LAMDA1.LE.MIN(ALF,GAM)) THEN - LAMDA = LAMDA1 - ELSE IF (LAMDA2.GE.ZERO .AND. LAMDA2.LE.MIN(ALF,GAM)) THEN - LAMDA = LAMDA2 - ELSE - LAMDA = ZERO - ENDIF - ENDIF -! -! IF BOTH KAPA, LAMDA ARE > 0, THEN APPLY EXISTANCE CRITERION -! - IF (KAPA.GT.ZERO .AND. LAMDA.GT.ZERO) THEN - IF (BET .LT. LAMDA/THETA1) THEN - KAPA = ZERO - ELSE - LAMDA= ZERO - ENDIF - ENDIF -! -! *** CALCULATE COMPOSITION OF VOLATILE SPECIES *********************** -! -200 CONTINUE - CNH4NO3 = LAMDA - CNH4CL = KAPA -! - GNH3 = MAX(ALF - KAPA - LAMDA, ZERO) - GHNO3 = MAX(GAM - LAMDA, ZERO) - GHCL = MAX(BET - KAPA, ZERO) -! - RETURN -! -! *** END OF SUBROUTINE CALCG1A ***************************************** -! - END SUBROUTINE CALCG1A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCH6 -! *** CASE H6 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCH6() - Real(kind=fp) :: PSI6LO, PSI6HI, DX, DELTA, FRNA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI1 = W(2) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCH6A (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCH6A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCH6A (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A3, A4, A5, A6, A7, A8, A9, A64 - Real(kind=fp) :: AA, BB, CC, DD, DIAK, PSI31, PSI32, DELT - Real(kind=fp) :: SMIN, OHI, HI, FRNA - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A8 = XK9 *(WATER/GAMA(3))**2.0 - A9 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MAX(PSI5, TINY) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) ! Patch proposed by Uma Shankar, 19/11/01 - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(PSI4,CHI4) - ELSE - PSI4 = TINY - ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 ! NO3I -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = MAX(CHI7 - PSI7, ZERO) - CNANO3 = MAX(CHI8 - PSI8, ZERO) - CNA2SO4 = MAX(CHI1 - PSI1, ZERO) -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCH6A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCH6A ******************************************* -! - END FUNCTION FUNCH6A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCH5 -! *** CASE H5 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCH5() - Real(kind=fp) :: PSI6LO, PSI6HI, FRNA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** REGIME DEPENDS ON THE EXISTANCE OF NITRATES *********************** -! - IF (W(4).LE.TINY .AND. W(5).LE.TINY) THEN - SCASE = 'H5' - CALL CALCH1A - SCASE = 'H5' - RETURN - ENDIF -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI1 = W(2) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCH5A (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCH5A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : NONE -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCH5A (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A3, A4, A5, A6, A7, A8, A9, A64 - Real(kind=fp) :: AA, BB, CC, DD, DIAK, PSI31, PSI32, DELT - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A8 = XK9 *(WATER/GAMA(3))**2.0 - A9 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MAX(PSI5, TINY) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = BB*BB-4.d0*CC - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(PSI4,CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI1.GT.TINY .AND. WATER.GT.TINY) THEN ! NA2SO4 DISSOLUTION - AA = PSI7+PSI8 - BB = AA*AA - CC =-A1/4.0 - CALL POLY3 (AA, BB, CC, PSI1, ISLV) - IF (ISLV.EQ.0) THEN - PSI1 = MIN (PSI1, CHI1) - ELSE - PSI1 = ZERO - ENDIF - ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 ! SO4I - MOLAL (6) = ZERO - MOLAL (7) = PSI5 + PSI8 ! NO3I -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = MAX(CHI7 - PSI7, ZERO) - CNANO3 = MAX(CHI8 - PSI8, ZERO) - CNA2SO4 = MAX(CHI1 - PSI1, ZERO) -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCH5A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCH5A ******************************************* -! - END FUNCTION FUNCH5A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCH4 -! *** CASE H4 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCH4() - Real(kind=fp) :: PSI6LO, PSI6HI, FRNA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** REGIME DEPENDS ON THE EXISTANCE OF NITRATES *********************** -! - IF (W(4).LE.TINY .AND. W(5).LE.TINY) THEN - SCASE = 'H4' - CALL CALCH1A - SCASE = 'H4' - RETURN - ENDIF -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI1 = W(2) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCH4A (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCH4A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCH4A (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A3, A4, A5, A6, A7, A8, A9, A64 - Real(kind=fp) :: AA, BB, CC, DD, DIAK, PSI31, PSI32, DELT - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A8 = XK9 *(WATER/GAMA(3))**2.0 - A9 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MAX(PSI5, TINY) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = BB*BB-4.d0*CC - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(PSI4,CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI1.GT.TINY .AND. WATER.GT.TINY) THEN ! NA2SO4 DISSOLUTION - AA = PSI7+PSI8 - BB = AA*AA - CC =-A1/4.0 - CALL POLY3 (AA, BB, CC, PSI1, ISLV) - IF (ISLV.EQ.0) THEN - PSI1 = MIN (PSI1, CHI1) - ELSE - PSI1 = ZERO - ENDIF - ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 ! SO4I - MOLAL (6) = ZERO - MOLAL (7) = PSI5 + PSI8 ! NO3I -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = MAX(CHI7 - PSI7, ZERO) - CNANO3 = MAX(CHI8 - PSI8, ZERO) - CNA2SO4 = MAX(CHI1 - PSI1, ZERO) -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCH4A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCH4A ******************************************* -! - END FUNCTION FUNCH4A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCH3 -! *** CASE H3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCH3() - Real(kind=fp) :: PSI6LO, PSI6HI, FRNA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** REGIME DEPENDS ON THE EXISTANCE OF NITRATES *********************** -! - IF (W(4).LE.TINY) THEN ! NO3 NOT EXIST, WATER NOT POSSIBLE - SCASE = 'H3' - CALL CALCH1A - SCASE = 'H3' - RETURN - ENDIF -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI1 = W(2) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCH3A (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCH3A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCH3A (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A3, A4, A5, A6, A7, A8, A9, A64 - Real(kind=fp) :: AA, BB, CC, DD, DIAK, PSI31, PSI32, DELT - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A8 = XK9 *(WATER/GAMA(3))**2.0 - A9 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MAX(PSI5, TINY) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = BB*BB-4.d0*CC - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(PSI4,CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION - DIAK = (PSI8-PSI6)**2.0 + 4.0*A7 - PSI7 = 0.5D0*( -(PSI8+PSI6) + SQRT(DIAK) ) - PSI7 = MAX(MIN(PSI7, CHI7), ZERO) - ENDIF -! - IF (CHI1.GT.TINY .AND. WATER.GT.TINY) THEN ! NA2SO4 DISSOLUTION - AA = PSI7+PSI8 - BB = AA*AA - CC =-A1/4.0 - CALL POLY3 (AA, BB, CC, PSI1, ISLV) - IF (ISLV.EQ.0) THEN - PSI1 = MIN (PSI1, CHI1) - ELSE - PSI1 = ZERO - ENDIF - ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 ! SO4I - MOLAL (6) = ZERO - MOLAL (7) = PSI5 + PSI8 ! NO3I -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = MAX(CHI7 - PSI7, ZERO) - CNANO3 = MAX(CHI8 - PSI8, ZERO) - CNA2SO4 = MAX(CHI1 - PSI1, ZERO) -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCH3A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCH3A ******************************************* -! - END FUNCTION FUNCH3A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCH2 -! *** CASE H2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : NH4Cl, NA2SO4, NANO3, NACL -! -! THERE ARE THREE REGIMES IN THIS CASE: -! 1. NH4NO3(s) POSSIBLE. LIQUID & SOLID AEROSOL (SUBROUTINE CALCH2A) -! 2. NH4NO3(s) NOT POSSIBLE, AND RH < MDRH. SOLID AEROSOL ONLY -! 3. NH4NO3(s) NOT POSSIBLE, AND RH >= MDRH. (MDRH REGION) -! -! REGIMES 2. AND 3. ARE CONSIDERED TO BE THE SAME AS CASES H1A, H2B -! RESPECTIVELY (BECAUSE MDRH POINTS COINCIDE). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCH2() - !EXTERNAL CALCH1A, CALCH3 -! -! *** REGIME DEPENDS ON THE EXISTANCE OF NITRATES *********************** -! - IF (W(4).GT.TINY) THEN ! NO3 EXISTS, WATER POSSIBLE - SCASE = 'H2 ; SUBCASE 1' - CALL CALCH2A - SCASE = 'H2 ; SUBCASE 1' - ELSE ! NO3 NON EXISTANT, WATER NOT POSSIBLE - SCASE = 'H2 ; SUBCASE 1' - CALL CALCH1A - SCASE = 'H2 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY .AND. RH.LT.DRMH2) THEN ! DRY AEROSOL - SCASE = 'H2 ; SUBCASE 2' -! - ELSEIF (WATER.LE.TINY .AND. RH.GE.DRMH2) THEN ! MDRH OF H2 - SCASE = 'H2 ; SUBCASE 3' - CALL CALCMDRH (RH, DRMH2, DRNANO3, CALCH1A, CALCH3) - SCASE = 'H2 ; SUBCASE 3' - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCH2 ****************************************** -! - END SUBROUTINE CALCH2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCH2A -! *** CASE H2 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCH2A() - Real(kind=fp) :: FRNA, PSI6LO, PSI6HI, DELTA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI1 = W(2) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCH2A (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCH2A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCH2A (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A3, A4, A5, A6, A7, A8, A9, A64 - Real(kind=fp) :: AA, BB, CC, DD, DIAK, PSI31, PSI32, DELT - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A8 = XK9 *(WATER/GAMA(3))**2.0 - A64 = (XK3*XK2/XKW)*(GAMA(10)/GAMA(5)/GAMA(11))**2.0 - A64 = A64*(R*TEMP*WATER)**2.0 - A9 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MAX(PSI5, TINY) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = BB*BB-4.d0*CC - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(PSI4,CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION - DIAK = (PSI8-PSI6)**2.0 + 4.0*A7 - PSI7 = 0.5D0*( -(PSI8+PSI6) + SQRT(DIAK) ) - PSI7 = MAX(MIN(PSI7, CHI7), ZERO) - ENDIF -! - IF (CHI8.GT.TINY .AND. WATER.GT.TINY) THEN ! NANO3 DISSOLUTION - DIAK = (PSI7-PSI5)**2.0 + 4.0*A8 - PSI8 = 0.5D0*( -(PSI7+PSI5) + SQRT(DIAK) ) - PSI8 = MAX(MIN(PSI8, CHI8), ZERO) - ENDIF -! - IF (CHI1.GT.TINY .AND. WATER.GT.TINY) THEN ! NA2SO4 DISSOLUTION - AA = PSI7+PSI8 - BB = AA*AA - CC =-A1/4.0 - CALL POLY3 (AA, BB, CC, PSI1, ISLV) - IF (ISLV.EQ.0) THEN - PSI1 = MIN (PSI1, CHI1) - ELSE - PSI1 = ZERO - ENDIF - ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 ! NO3I -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = MAX(CHI7 - PSI7, ZERO) - CNANO3 = MAX(CHI8 - PSI8, ZERO) - CNA2SO4 = MAX(CHI1 - PSI1, ZERO) -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCH2A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A64 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCH2A ******************************************* -! - END FUNCTION FUNCH2A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCH1 -! *** CASE H1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : NH4NO3, NH4CL, NA2SO4 -! -! THERE ARE TWO POSSIBLE REGIMES HERE, DEPENDING ON RELATIVE HUMIDITY: -! 1. WHEN RH >= MDRH ; LIQUID PHASE POSSIBLE (MDRH REGION) -! 2. WHEN RH < MDRH ; ONLY SOLID PHASE POSSIBLE (SUBROUTINE CALCH1A) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCH1() - !EXTERNAL CALCH1A, CALCH2A -! -! *** REGIME DEPENDS UPON THE AMBIENT RELATIVE HUMIDITY ***************** -! - IF (RH.LT.DRMH1) THEN - SCASE = 'H1 ; SUBCASE 1' - CALL CALCH1A ! SOLID PHASE ONLY POSSIBLE - SCASE = 'H1 ; SUBCASE 1' - ELSE - SCASE = 'H1 ; SUBCASE 2' ! LIQUID & SOLID PHASE POSSIBLE - CALL CALCMDRH (RH, DRMH1, DRNH4NO3, CALCH1A, CALCH2A) - SCASE = 'H1 ; SUBCASE 2' - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCH1 ****************************************** -! - END SUBROUTINE CALCH1 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCH1A -! *** CASE H1 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; SODIUM RICH (SODRAT >= 2.0) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : NH4NO3, NH4CL, NANO3, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCH1A() - Real(kind=fp) :: NAFR, NO3FR, CLFR, KAPA2 - Real(kind=fp) :: ALF, BET, GAM, RTSQ, A1, A2, THETA1, THETA2 - Real(kind=fp) :: AA, BB, CC, LAMDA, KAPA, LAMDA1, KAPA1, LAMDA2 - Real(kind=fp) :: DD, SQDD, DD1, SQDD1, DD2, SQDD2 - Integer :: I -! -! *** CALCULATE NON VOLATILE SOLIDS *********************************** -! - CNA2SO4 = W(2) - CNH42S4 = ZERO - NAFR = MAX (W(1)-2*CNA2SO4, ZERO) - CNANO3 = MIN (NAFR, W(4)) - NO3FR = MAX (W(4)-CNANO3, ZERO) - CNACL = MIN (MAX(NAFR-CNANO3, ZERO), W(5)) - CLFR = MAX (W(5)-CNACL, ZERO) -! -! *** CALCULATE VOLATILE SPECIES ************************************** -! - ALF = W(3) ! FREE NH3 - BET = CLFR ! FREE CL - GAM = NO3FR ! FREE NO3 -! - RTSQ = R*TEMP*R*TEMP - A1 = XK6/RTSQ - A2 = XK10/RTSQ -! - THETA1 = GAM - BET*(A2/A1) - THETA2 = A2/A1 -! -! QUADRATIC EQUATION SOLUTION -! - BB = (THETA1-ALF-BET*(ONE+THETA2))/(ONE+THETA2) - CC = (ALF*BET-A1-BET*THETA1)/(ONE+THETA2) - DD = BB*BB - 4.0D0*CC - IF (DD.LT.ZERO) GOTO 100 ! Solve each reaction seperately -! -! TWO ROOTS FOR KAPA, CHECK AND SEE IF ANY VALID -! - SQDD = SQRT(DD) - KAPA1 = 0.5D0*(-BB+SQDD) - KAPA2 = 0.5D0*(-BB-SQDD) - LAMDA1 = THETA1 + THETA2*KAPA1 - LAMDA2 = THETA1 + THETA2*KAPA2 -! - IF (KAPA1.GE.ZERO .AND. LAMDA1.GE.ZERO) THEN - IF (ALF-KAPA1-LAMDA1.GE.ZERO .AND. - & BET-KAPA1.GE.ZERO .AND. GAM-LAMDA1.GE.ZERO) THEN - KAPA = KAPA1 - LAMDA= LAMDA1 - GOTO 200 - ENDIF - ENDIF -! - IF (KAPA2.GE.ZERO .AND. LAMDA2.GE.ZERO) THEN - IF (ALF-KAPA2-LAMDA2.GE.ZERO .AND. - & BET-KAPA2.GE.ZERO .AND. GAM-LAMDA2.GE.ZERO) THEN - KAPA = KAPA2 - LAMDA= LAMDA2 - GOTO 200 - ENDIF - ENDIF -! -! SEPERATE SOLUTION OF NH4CL & NH4NO3 EQUILIBRIA -! -100 KAPA = ZERO - LAMDA = ZERO - DD1 = (ALF+BET)*(ALF+BET) - 4.0D0*(ALF*BET-A1) - DD2 = (ALF+GAM)*(ALF+GAM) - 4.0D0*(ALF*GAM-A2) -! -! NH4CL EQUILIBRIUM -! - IF (DD1.GE.ZERO) THEN - SQDD1 = SQRT(DD1) - KAPA1 = 0.5D0*(ALF+BET + SQDD1) - KAPA2 = 0.5D0*(ALF+BET - SQDD1) -! - IF (KAPA1.GE.ZERO .AND. KAPA1.LE.MIN(ALF,BET)) THEN - KAPA = KAPA1 - ELSE IF (KAPA2.GE.ZERO .AND. KAPA2.LE.MIN(ALF,BET)) THEN - KAPA = KAPA2 - ELSE - KAPA = ZERO - ENDIF - ENDIF -! -! NH4NO3 EQUILIBRIUM -! - IF (DD2.GE.ZERO) THEN - SQDD2 = SQRT(DD2) - LAMDA1= 0.5D0*(ALF+GAM + SQDD2) - LAMDA2= 0.5D0*(ALF+GAM - SQDD2) -! - IF (LAMDA1.GE.ZERO .AND. LAMDA1.LE.MIN(ALF,GAM)) THEN - LAMDA = LAMDA1 - ELSE IF (LAMDA2.GE.ZERO .AND. LAMDA2.LE.MIN(ALF,GAM)) THEN - LAMDA = LAMDA2 - ELSE - LAMDA = ZERO - ENDIF - ENDIF -! -! IF BOTH KAPA, LAMDA ARE > 0, THEN APPLY EXISTANCE CRITERION -! - IF (KAPA.GT.ZERO .AND. LAMDA.GT.ZERO) THEN - IF (BET .LT. LAMDA/THETA1) THEN - KAPA = ZERO - ELSE - LAMDA= ZERO - ENDIF - ENDIF -! -! *** CALCULATE COMPOSITION OF VOLATILE SPECIES *********************** -! -200 CONTINUE - CNH4NO3 = LAMDA - CNH4CL = KAPA -! - GNH3 = ALF - KAPA - LAMDA - GHNO3 = GAM - LAMDA - GHCL = BET - KAPA -! - RETURN -! -! *** END OF SUBROUTINE CALCH1A ***************************************** -! - END SUBROUTINE CALCH1A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCI6 -! *** CASE I6 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCI6() - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: A6, BB, CC, DD - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCI1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCI1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = CLC - PSI3 = CNAHSO4 - PSI4 = CNA2SO4 - PSI5 = CNH42S4 -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A6 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - BB = PSI2 + PSI4 + PSI5 + A6 ! PSI6 - CC =-A6*(PSI2 + PSI3 + PSI1) - DD = BB*BB - 4.0*CC - PSI6 = 0.5D0*(-BB + SQRT(DD)) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (1) = PSI6 ! HI - MOLAL (2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL (3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL (5) = PSI2 + PSI4 + PSI5 + PSI6 ! SO4I - MOLAL (6) = PSI2 + PSI3 + PSI1 - PSI6 ! HSO4I - CLC = ZERO - CNAHSO4 = ZERO - CNA2SO4 = CHI4 - PSI4 - CNH42S4 = ZERO - CNH4HS4 = ZERO - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -20 RETURN -! -! *** END OF SUBROUTINE CALCI6 ***************************************** -! - END SUBROUTINE CALCI6 - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCI5 -! *** CASE I5 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCI5() - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI4LO, PSI4HI - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCI1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCI1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = CLC - PSI3 = CNAHSO4 - PSI4 = ZERO - PSI5 = CNH42S4 -! - CALAOU =.TRUE. ! Outer loop activity calculation flag - PSI4LO = ZERO ! Low limit - PSI4HI = CHI4 ! High limit -! -! *** IF NA2SO4(S) =0, CALL FUNCI5B FOR Y4=0 *************************** -! - IF (CHI4.LE.TINY) THEN - Y1 = FUNCI5A (ZERO) - GOTO 50 - ENDIF -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI4HI - Y1 = FUNCI5A (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH NA2SO4 ** -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI4HI-PSI4LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1-DX - Y2 = FUNCI5A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH NH4CL -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI5A (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCI5') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI5A (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCI5') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI5A (X3) -! -50 RETURN - -! *** END OF SUBROUTINE CALCI5 ***************************************** -! - END SUBROUTINE CALCI5 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE FUNCI5A -! *** CASE I5 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCI5A (P4) - Real(kind=fp) :: P4 - Real(kind=fp) :: A4, A5, A6 - Real(kind=fp) :: BB, CC, DD - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI4 = P4 ! PSI3 already assigned in FUNCI5A - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = XK5 *(WATER/GAMA(2))**3.0 - A5 = XK7 *(WATER/GAMA(4))**3.0 - A6 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - BB = PSI2 + PSI4 + PSI5 + A6 ! PSI6 - CC =-A6*(PSI2 + PSI3 + PSI1) - DD = BB*BB - 4.0*CC - PSI6 = 0.5D0*(-BB + SQRT(DD)) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (1) = PSI6 ! HI - MOLAL (2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL (3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL (5) = PSI2 + PSI4 + PSI5 + PSI6 ! SO4I - MOLAL (6) = PSI2 + PSI3 + PSI1 - PSI6 ! HSO4I - CLC = ZERO - CNAHSO4 = ZERO - CNA2SO4 = CHI4 - PSI4 - CNH42S4 = ZERO - CNH4HS4 = ZERO - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 A4 = XK5 *(WATER/GAMA(2))**3.0 - FUNCI5A= MOLAL(5)*MOLAL(2)*MOLAL(2)/A4 - ONE - RETURN -! -! *** END OF FUNCTION FUNCI5A ******************************************** -! - END FUNCTION FUNCI5A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCI4 -! *** CASE I4 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCI4() - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI4LO, PSI4HI - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCI1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCI1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = CLC - PSI3 = CNAHSO4 - PSI4 = ZERO - PSI5 = ZERO -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI4LO = ZERO ! Low limit - PSI4HI = CHI4 ! High limit -! -! *** IF NA2SO4(S) =0, CALL FUNCI4B FOR Y4=0 *************************** -! - IF (CHI4.LE.TINY) THEN - Y1 = FUNCI4A (ZERO) - GOTO 50 - ENDIF -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI4HI - Y1 = FUNCI4A (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH NA2SO4 ** -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI4HI-PSI4LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1-DX - Y2 = FUNCI4A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH NH4CL -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI4A (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCI4') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI4A (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCI4') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI4A (X3) -! -50 RETURN - -! *** END OF SUBROUTINE CALCI4 ***************************************** -! - END SUBROUTINE CALCI4 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE FUNCI4A -! *** CASE I4 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCI4A (P4) - Real(kind=fp) :: P4 - Real(kind=fp) :: A4, A5, A6, A7 - Real(kind=fp) :: BB, CC, DD - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI4 = P4 ! PSI3 already assigned in FUNCI4A - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = XK5 *(WATER/GAMA(2))**3.0 - A5 = XK7 *(WATER/GAMA(4))**3.0 - A6 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. - A7 = SQRT(A4/A5) -! -! CALCULATE DISSOCIATION QUANTITIES -! - BB = PSI2 + PSI4 + PSI5 + A6 ! PSI6 - CC =-A6*(PSI2 + PSI3 + PSI1) - DD = BB*BB - 4.0*CC - PSI6 = 0.5D0*(-BB + SQRT(DD)) -! - PSI5 = (PSI3 + 2.0*PSI4 - A7*(3.0*PSI2 + PSI1))/2.0/A7 - PSI5 = MIN (PSI5, CHI5) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (1) = PSI6 ! HI - MOLAL (2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL (3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL (5) = PSI2 + PSI4 + PSI5 + PSI6 ! SO4I - MOLAL (6) = PSI2 + PSI3 + PSI1 - PSI6 ! HSO4I - CLC = ZERO - CNAHSO4 = ZERO - CNA2SO4 = CHI4 - PSI4 - CNH42S4 = CHI5 - PSI5 - CNH4HS4 = ZERO - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 A4 = XK5 *(WATER/GAMA(2))**3.0 - FUNCI4A= MOLAL(5)*MOLAL(2)*MOLAL(2)/A4 - ONE - RETURN -! -! *** END OF FUNCTION FUNCI4A ******************************************** -! - END FUNCTION FUNCI4A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCI3 -! *** CASE I3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4, NAHSO4, LC -! -! THERE ARE THREE REGIMES IN THIS CASE: -! 1.(NA,NH4)HSO4(s) POSSIBLE. LIQUID & SOLID AEROSOL (SUBROUTINE CALCI3A) -! 2.(NA,NH4)HSO4(s) NOT POSSIBLE, AND RH < MDRH. SOLID AEROSOL ONLY -! 3.(NA,NH4)HSO4(s) NOT POSSIBLE, AND RH >= MDRH. SOLID & LIQUID AEROSOL -! -! REGIMES 2. AND 3. ARE CONSIDERED TO BE THE SAME AS CASES I1A, I2B -! RESPECTIVELY -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCI3() - !EXTERNAL CALCI1A, CALCI4 - Integer :: I -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCI1A -! -! *** REGIME DEPENDS UPON THE POSSIBLE SOLIDS & RH ********************** -! - IF (CNH4HS4.GT.TINY .OR. CNAHSO4.GT.TINY) THEN - SCASE = 'I3 ; SUBCASE 1' - CALL CALCI3A ! FULL SOLUTION - SCASE = 'I3 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRMI3) THEN ! SOLID SOLUTION - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCI1A - SCASE = 'I3 ; SUBCASE 2' -! - ELSEIF (RH.GE.DRMI3) THEN ! MDRH OF I3 - SCASE = 'I3 ; SUBCASE 3' - CALL CALCMDRH (RH, DRMI3, DRLC, CALCI1A, CALCI4) - SCASE = 'I3 ; SUBCASE 3' - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCI3 ****************************************** -! - END SUBROUTINE CALCI3 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCI3A -! *** CASE I3 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4, LC -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCI3A() - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI2LO, PSI2HI - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCI1A ! Needed when called from CALCMDRH -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCI1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = ZERO - PSI3 = CNAHSO4 - PSI4 = ZERO - PSI5 = ZERO -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI2LO = ZERO ! Low limit - PSI2HI = CHI2 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI2HI - Y1 = FUNCI3A (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH LC ********* -! - IF (YHI.LT.EPS) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI2HI-PSI2LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = MAX(X1-DX, PSI2LO) - Y2 = FUNCI3A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH LC -! - IF (Y2.GT.EPS) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC 2012-01-01) - Y2 = FUNCI3A (ZERO) - ENDIF - GOTO 50 -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI3A (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCI3A') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI3A (X3) -! -50 RETURN - -! *** END OF SUBROUTINE CALCI3A ***************************************** -! - END SUBROUTINE CALCI3A - -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE FUNCI3A -! *** CASE I3 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4, LC -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCI3A (P2) - Real(kind=fp) :: P2 - Real(kind=fp) :: A2 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI4LO, PSI4HI - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI2 = P2 ! Save PSI2 in COMMON BLOCK - PSI4LO = ZERO ! Low limit for PSI4 - PSI4HI = CHI4 ! High limit for PSI4 -! -! *** IF NH3 =0, CALL FUNCI3B FOR Y4=0 ******************************** -! - IF (CHI4.LE.TINY) THEN - FUNCI3A = FUNCI3B (ZERO) - GOTO 50 - ENDIF -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI4HI - Y1 = FUNCI3B (X1) - IF (ABS(Y1).LE.EPS) GOTO 50 - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH NA2SO4 ***** -! - IF (YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI4HI-PSI4LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = MAX(X1-DX, PSI4LO) - Y2 = FUNCI3B (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH NA2SO4 -! - IF (Y2.GT.EPS) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC 2012-01-01) - Y2 = FUNCI3B (PSI4LO) - ENDIF - GOTO 50 -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI3B (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0004, 'FUNCI3A') ! WARNING ERROR: NO CONVERGENCE -! -! *** INNER LOOP CONVERGED ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI3B (X3) -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -50 A2 = XK13*(WATER/GAMA(13))**5.0 - FUNCI3A = MOLAL(5)*MOLAL(6)*MOLAL(3)**3.0/A2 - ONE - RETURN -! -! *** END OF FUNCTION FUNCI3A ******************************************* -! - END FUNCTION FUNCI3A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** FUNCTION FUNCI3B -! *** CASE I3 ; SUBCASE 2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4, LC -! -! SOLUTION IS SAVED IN COMMON BLOCK /CASE/ -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCI3B (P4) - Real(kind=fp) :: P4 - Real(kind=fp) :: A4, A5, A6, A7 - Real(kind=fp) :: BB, CC, DD - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI4 = P4 -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = XK5*(WATER/GAMA(2))**3.0 - A5 = XK7*(WATER/GAMA(4))**3.0 - A6 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. - A7 = SQRT(A4/A5) -! -! CALCULATE DISSOCIATION QUANTITIES -! - BB = PSI2 + PSI4 + PSI5 + A6 ! PSI6 - CC =-A6*(PSI2 + PSI3 + PSI1) - DD = BB*BB - 4.0*CC - PSI6 = 0.5D0*(-BB + SQRT(DD)) -! - PSI5 = (PSI3 + 2.0*PSI4 - A7*(3.0*PSI2 + PSI1))/2.0/A7 - PSI5 = MAX( MIN (PSI5, CHI5), ZERO ) ! Ensure PSI5 is positive (SLC 2012-03-21) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL(1) = PSI6 ! HI - MOLAL(2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL(3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL(5) = PSI2 + PSI4 + PSI5 + PSI6 ! SO4I - MOLAL(6) = MAX(PSI2 + PSI3 + PSI1 - PSI6, TINY) ! HSO4I - CLC = MAX(CHI2 - PSI2, ZERO) - CNAHSO4 = ZERO - CNA2SO4 = MAX(CHI4 - PSI4, ZERO) - CNH42S4 = MAX(CHI5 - PSI5, ZERO) - CNH4HS4 = ZERO - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 A4 = XK5 *(WATER/GAMA(2))**3.0 - FUNCI3B= MOLAL(5)*MOLAL(2)*MOLAL(2)/A4 - ONE - RETURN -! -! *** END OF FUNCTION FUNCI3B ******************************************** -! - END FUNCTION FUNCI3B - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCI2 -! *** CASE I2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4, NAHSO4, LC -! -! THERE ARE THREE REGIMES IN THIS CASE: -! 1. NH4HSO4(s) POSSIBLE. LIQUID & SOLID AEROSOL (SUBROUTINE CALCI2A) -! 2. NH4HSO4(s) NOT POSSIBLE, AND RH < MDRH. SOLID AEROSOL ONLY -! 3. NH4HSO4(s) NOT POSSIBLE, AND RH >= MDRH. SOLID & LIQUID AEROSOL -! -! REGIMES 2. AND 3. ARE CONSIDERED TO BE THE SAME AS CASES I1A, I2B -! RESPECTIVELY -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCI2() - !EXTERNAL CALCI1A, CALCI3A - Integer :: I -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCI1A -! -! *** REGIME DEPENDS UPON THE POSSIBLE SOLIDS & RH ********************** -! - IF (CNH4HS4.GT.TINY) THEN - SCASE = 'I2 ; SUBCASE 1' - CALL CALCI2A - SCASE = 'I2 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRMI2) THEN ! SOLID SOLUTION ONLY - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCI1A - SCASE = 'I2 ; SUBCASE 2' -! - ELSEIF (RH.GE.DRMI2) THEN ! MDRH OF I2 - SCASE = 'I2 ; SUBCASE 3' - CALL CALCMDRH (RH, DRMI2, DRNAHSO4, CALCI1A, CALCI3A) - SCASE = 'I2 ; SUBCASE 3' - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCI2 ****************************************** -! - END SUBROUTINE CALCI2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCI2A -! *** CASE I2 ; SUBCASE A -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4, NAHSO4, LC -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCI2A() - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI2LO, PSI2HI - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCI1A ! Needed when called from CALCMDRH -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCI1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = ZERO - PSI3 = ZERO - PSI4 = ZERO - PSI5 = ZERO -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI2LO = ZERO ! Low limit - PSI2HI = CHI2 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI2HI - Y1 = FUNCI2A (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH LC ********* -! - IF (YHI.LT.EPS) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI2HI-PSI2LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = MAX(X1-DX, PSI2LO) - Y2 = FUNCI2A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH LC -! - IF (Y2.GT.EPS) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC 2012-01-01) - Y2 = FUNCI3A (ZERO) - ENDIF - GOTO 50 -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI2A (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCI2A') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCI2A (X3) -! -50 RETURN - -! *** END OF SUBROUTINE CALCI2A ***************************************** -! - END SUBROUTINE CALCI2A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE FUNCI2A -! *** CASE I2 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4, NAHSO4, LC -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCI2A (P2) - Real(kind=fp) :: P2 - Real(kind=fp) :: A2, A3, A4, A5, A6, A7 - Real(kind=fp) :: AA, BB, CC, DD - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=====! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=====! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=====! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=====! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=====! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=====! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=====! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=====! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=====! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=====! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=====! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=====!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. - PSI2 = P2 ! Save PSI2 in COMMON BLOCK - PSI3 = CHI3 - PSI4 = CHI4 - PSI5 = CHI5 - PSI6 = ZERO -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A3 = XK11*(WATER/GAMA(12))**2.0 - A4 = XK5 *(WATER/GAMA(2))**3.0 - A5 = XK7 *(WATER/GAMA(4))**3.0 - A6 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. - A7 = SQRT(A4/A5) -! -! CALCULATE DISSOCIATION QUANTITIES -! - IF (CHI5.GT.TINY .AND. WATER.GT.TINY) THEN - PSI5 = (PSI3 + 2.0*PSI4 - A7*(3.0*PSI2 + PSI1))/2.0/A7 - PSI5 = MAX(MIN (PSI5, CHI5), TINY) - ENDIF -! - IF (CHI4.GT.TINY .AND. WATER.GT.TINY) THEN - AA = PSI2+PSI5+PSI6+PSI3 - BB = PSI3*AA - CC = 0.25D0*(PSI3*PSI3*(PSI2+PSI5+PSI6)-A4) - CALL POLY3 (AA, BB, CC, PSI4, ISLV) - IF (ISLV.EQ.0) THEN - PSI4 = MIN (PSI4, CHI4) - ELSE - PSI4 = ZERO - ENDIF - ENDIF -! - IF (CHI3.GT.TINY .AND. WATER.GT.TINY) THEN - AA = 2.0*PSI4 + PSI2 + PSI1 - PSI6 - BB = 2.0*PSI4*(PSI2 + PSI1 - PSI6) - A3 - CC = ZERO - CALL POLY3 (AA, BB, CC, PSI3, ISLV) - IF (ISLV.EQ.0) THEN - PSI3 = MIN (PSI3, CHI3) - ELSE - PSI3 = ZERO - ENDIF - ENDIF -! - BB = PSI2 + PSI4 + PSI5 + A6 ! PSI6 - CC =-A6*(PSI2 + PSI3 + PSI1) - DD = BB*BB - 4.0*CC - PSI6 = 0.5D0*(-BB + SQRT(DD)) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (1) = PSI6 ! HI - MOLAL (2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL (3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL (5) = PSI2 + PSI4 + PSI5 + PSI6 ! SO4I - MOLAL (6) = PSI2 + PSI3 + PSI1 - PSI6 ! HSO4I - CLC = CHI2 - PSI2 - CNAHSO4 = CHI3 - PSI3 - CNA2SO4 = CHI4 - PSI4 - CNH42S4 = CHI5 - PSI5 - CNH4HS4 = ZERO - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 A2 = XK13*(WATER/GAMA(13))**5.0 - FUNCI2A = MOLAL(5)*MOLAL(6)*MOLAL(3)**3.0/A2 - ONE - RETURN -! -! *** END OF FUNCTION FUNCI2A ******************************************* -! - END FUNCTION FUNCI2A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCI1 -! *** CASE I1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : NH4NO3, NH4CL, NA2SO4 -! -! THERE ARE TWO POSSIBLE REGIMES HERE, DEPENDING ON RELATIVE HUMIDITY: -! 1. WHEN RH >= MDRH ; LIQUID PHASE POSSIBLE (MDRH REGION) -! 2. WHEN RH < MDRH ; ONLY SOLID PHASE POSSIBLE (SUBROUTINE CALCI1A) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCI1() - !EXTERNAL CALCI1A, CALCI2A -! -! *** REGIME DEPENDS UPON THE AMBIENT RELATIVE HUMIDITY ***************** -! - IF (RH.LT.DRMI1) THEN - SCASE = 'I1 ; SUBCASE 1' - CALL CALCI1A ! SOLID PHASE ONLY POSSIBLE - SCASE = 'I1 ; SUBCASE 1' - ELSE - SCASE = 'I1 ; SUBCASE 2' ! LIQUID & SOLID PHASE POSSIBLE - CALL CALCMDRH (RH, DRMI1, DRNH4HS4, CALCI1A, CALCI2A) - SCASE = 'I1 ; SUBCASE 2' - ENDIF -! -! *** AMMONIA IN GAS PHASE ********************************************** -! -! CALL CALCNH3 -! - RETURN -! -! *** END OF SUBROUTINE CALCI1 ****************************************** -! - END SUBROUTINE CALCI1 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCI1A -! *** CASE I1 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : NH4HSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCI1A() - Real(kind=fp) :: FRSO4, FRNH4 -! -! *** CALCULATE NON VOLATILE SOLIDS *********************************** -! - CNA2SO4 = 0.5D0*W(1) - CNH4HS4 = ZERO - CNAHSO4 = ZERO - CNH42S4 = ZERO - FRSO4 = MAX(W(2)-CNA2SO4, ZERO) -! - CLC = MIN(W(3)/3.0, FRSO4/2.0) - FRSO4 = MAX(FRSO4-2.0*CLC, ZERO) - FRNH4 = MAX(W(3)-3.0*CLC, ZERO) -! - IF (FRSO4.LE.TINY) THEN - CLC = MAX(CLC - FRNH4, ZERO) - CNH42S4 = 2.0*FRNH4 - - ELSEIF (FRNH4.LE.TINY) THEN - CNH4HS4 = 3.0*MIN(FRSO4, CLC) - CLC = MAX(CLC-FRSO4, ZERO) - IF (CNA2SO4.GT.TINY) THEN - FRSO4 = MAX(FRSO4-CNH4HS4/3.0, ZERO) - CNAHSO4 = 2.0*FRSO4 - CNA2SO4 = MAX(CNA2SO4-FRSO4, ZERO) - ENDIF - ENDIF -! -! *** CALCULATE GAS SPECIES ********************************************* -! - GHNO3 = W(4) - GHCL = W(5) - GNH3 = ZERO -! - RETURN -! -! *** END OF SUBROUTINE CALCI1A ***************************************** -! - END SUBROUTINE CALCI1A - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCJ3 -! *** CASE J3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, FREE ACID (SULRAT < 1.0) -! 2. THERE IS ONLY A LIQUID PHASE -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCJ3() - Real(kind=fp) :: LAMDA, KAPA - Real(kind=fp) :: A3, BB, CC, DD - Integer :: I -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - FRST = .TRUE. - CALAIN = .TRUE. -! - LAMDA = MAX(W(2) - W(3) - W(1), TINY) ! FREE H2SO4 - CHI1 = W(1) ! NA TOTAL as NaHSO4 - CHI2 = W(3) ! NH4 TOTAL as NH4HSO4 - PSI1 = CHI1 - PSI2 = CHI2 ! ALL NH4HSO4 DELIQUESCED -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A3 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - BB = A3+LAMDA ! KAPA - CC =-A3*(LAMDA + PSI1 + PSI2) - DD = BB*BB-4.0*CC - KAPA = 0.5D0*(-BB+SQRT(DD)) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (1) = LAMDA + KAPA ! HI - MOLAL (2) = PSI1 ! NAI - MOLAL (3) = PSI2 ! NH4I - MOLAL (4) = ZERO ! CLI - MOLAL (5) = KAPA ! SO4I - MOLAL (6) = LAMDA + PSI1 + PSI2 - KAPA ! HSO4I - MOLAL (7) = ZERO ! NO3I -! - CNAHSO4 = ZERO - CNH4HS4 = ZERO -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 50 - ENDIF -10 CONTINUE -! -50 RETURN -! -! *** END OF SUBROUTINE CALCJ3 ****************************************** -! - END SUBROUTINE CALCJ3 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCJ2 -! *** CASE J2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, FREE ACID (SULRAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : NAHSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCJ2() - Real(kind=fp) :: PSI1LO, PSI1HI - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Integer :: I -! - !Real(kind=fp) :: LAMDA, KAPA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEJ - ! made CASEJ THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3 -!=======! Real(kind=fp) :: A1, A2, A3 -!=======! COMMON /CASEJ/ CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3, -!=======! & A1, A2, A3 -!=======!!$OMP THREADPRIVATE( /CASEJ/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - CHI1 = W(1) ! NA TOTAL - CHI2 = W(3) ! NH4 TOTAL - PSI1LO = TINY ! Low limit - PSI1HI = CHI1 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI1HI - Y1 = FUNCJ2 (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH NH42SO4 **** -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI1HI-PSI1LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1-DX - Y2 = FUNCJ2 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH NH42SO4 -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCJ2 (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCJ2') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCJ2 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCJ2') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCJ2 (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCJ2 ****************************************** -! - END SUBROUTINE CALCJ2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE FUNCJ2 -! *** CASE J2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, FREE ACID (SULRAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCJ2 (P1) - Real(kind=fp) :: P1 - Real(kind=fp) :: A1, A2, A3 - Real(kind=fp) :: LAMDA, BB, CC, DD, KAPA - Integer :: I -! - !Real(kind=fp) :: LAMDA, KAPA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEJ - ! made CASEJ THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3 -!=======! Real(kind=fp) :: A1, A2, A3 -!=======! COMMON /CASEJ/ CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3, -!=======! & A1, A2, A3 -!=======!!$OMP THREADPRIVATE( /CASEJ/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. -! - LAMDA = MAX(W(2) - W(3) - W(1), TINY) ! FREE H2SO4 - PSI1 = P1 - PSI2 = CHI2 ! ALL NH4HSO4 DELIQUESCED -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK11 *(WATER/GAMA(12))**2.0 - A3 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - BB = A3+LAMDA ! KAPA - CC =-A3*(LAMDA + PSI1 + PSI2) - DD = BB*BB-4.0*CC - KAPA = 0.5D0*(-BB+SQRT(DD)) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (1) = LAMDA + KAPA ! HI - MOLAL (2) = PSI1 ! NAI - MOLAL (3) = PSI2 ! NH4I - MOLAL (4) = ZERO ! CLI - MOLAL (5) = KAPA ! SO4I - MOLAL (6) = LAMDA + PSI1 + PSI2 - KAPA ! HSO4I - MOLAL (7) = ZERO ! NO3I -! - CNAHSO4 = MAX(CHI1-PSI1,ZERO) - CNH4HS4 = ZERO -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 FUNCJ2 = MOLAL(2)*MOLAL(6)/A1 - ONE -! -! *** END OF FUNCTION FUNCJ2 ******************************************* -! - END FUNCTION FUNCJ2 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCJ1 -! *** CASE J1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, FREE ACID (SULRAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : NH4HSO4, NAHSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - SUBROUTINE CALCJ1() - Real(kind=fp) :: PSI1LO, PSI1HI - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Integer :: I -! - !Real(kind=fp) :: LAMDA, KAPA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEJ - ! made CASEJ THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3 -!=======! Real(kind=fp) :: A1, A2, A3 -!=======! COMMON /CASEJ/ CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3, -!=======! & A1, A2, A3 -!=======!!$OMP THREADPRIVATE( /CASEJ/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU =.TRUE. ! Outer loop activity calculation flag - CHI1 = W(1) ! Total NA initially as NaHSO4 - CHI2 = W(3) ! Total NH4 initially as NH4HSO4 -! - PSI1LO = TINY ! Low limit - PSI1HI = CHI1 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI1HI - Y1 = FUNCJ1 (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH NH42SO4 **** -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI1HI-PSI1LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1-DX - Y2 = FUNCJ1 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH NH42SO4 -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCJ1 (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCJ1') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCJ1 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCJ1') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCJ1 (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCJ1 ****************************************** -! - END SUBROUTINE CALCJ1 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE FUNCJ1 -! *** CASE J1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, FREE ACID (SULRAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY ATHANASIOS NENES -! *** UPDATED BY CHRISTOS FOUNTOUKIS -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCJ1 (P1) - Real(kind=fp) :: P1 - Real(kind=fp) :: A1, A2, A3, LAMDA, KAPA - Real(kind=fp) :: BB, CC, DD - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV - !Real(kind=fp) :: LAMDA, KAPA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEJ - ! made CASEJ THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3 -!=======! Real(kind=fp) :: A1, A2, A3 -!=======! COMMON /CASEJ/ CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3, -!=======! & A1, A2, A3 -!=======!!$OMP THREADPRIVATE( /CASEJ/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. -! - LAMDA = MAX(W(2) - W(3) - W(1), TINY) ! FREE H2SO4 - PSI1 = P1 -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK11 *(WATER/GAMA(12))**2.0 - A2 = XK12 *(WATER/GAMA(09))**2.0 - A3 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2.0 -! - PSI2 = 0.5*(-(LAMDA+PSI1) + SQRT((LAMDA+PSI1)**2.0+4.0*A2)) ! PSI2 - PSI2 = MIN (PSI2, CHI2) -! - BB = A3+LAMDA ! KAPA - CC =-A3*(LAMDA + PSI2 + PSI1) - DD = BB*BB-4.0*CC - KAPA = 0.5D0*(-BB+SQRT(DD)) -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! - MOLAL (1) = LAMDA + KAPA ! HI - MOLAL (2) = PSI1 ! NAI - MOLAL (3) = PSI2 ! NH4I - MOLAL (4) = ZERO - MOLAL (5) = KAPA ! SO4I - MOLAL (6) = LAMDA + PSI1 + PSI2 - KAPA ! HSO4I - MOLAL (7) = ZERO -! - CNAHSO4 = MAX(CHI1-PSI1,ZERO) - CNH4HS4 = MAX(CHI2-PSI2,ZERO) -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 FUNCJ1 = MOLAL(2)*MOLAL(6)/A1 - ONE -! -! *** END OF FUNCTION FUNCJ1 ******************************************* -! - END FUNCTION FUNCJ1 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCO7 -! *** CASE O7 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. (Rsulfate > 2.0 ; R(Cr+Na) < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4 -! 4. Completely dissolved: NH4NO3, NH4CL, (NH4)2SO4, MgSO4, NA2SO4, K2SO4 -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCO7() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: ALF, BET, GAM, RTSQ, A1, A2, THETA1, THETA2 - Real(kind=fp) :: BB, CC, LAMDA, LAMDA1, LAMDA2, KAPA, KAPA1 - Real(kind=fp) :: DD, SQDD, DD1, SQDD1, DD2, SQDD2 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: CAFR, NAFR, SO4FR, KAPA2, DELTA - Real(kind=fp) :: PSI6LO, PSI6HI - Integer :: I -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) -! -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI9 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX (W(2)-CHI9, ZERO) - CAFR = MAX (W(6)-CHI9, ZERO) - CHI7 = MIN (0.5D0*W(7), SO4FR) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI7, ZERO) - SO4FR = MAX (SO4FR - CHI7, ZERO) - CHI1 = MIN (0.5D0*W(1), SO4FR) ! NA2SO4 - NAFR = MAX (W(1) - 2.0*CHI1, ZERO) - SO4FR = MAX (SO4FR - CHI1, ZERO) - CHI8 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8) - CHI8, ZERO) - SO4FR = MAX(SO4FR - CHI8, ZERO) - CHI3 = ZERO - CHI5 = W(4) - CHI6 = W(5) - CHI2 = MAX (SO4FR, ZERO) - CHI4 = MAX (W(3)-2.0*CHI2, ZERO) -! - PSI1 = CHI1 - PSI2 = CHI2 - PSI3 = ZERO - PSI4 = ZERO - PSI5 = ZERO - PSI6 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! - WATER = CHI2/M0(4) + CHI1/M0(2) + CHI7/M0(17) + CHI8/M0(21) - WATER = MAX (WATER , TINY) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCO7 (X1) - IF (CHI6.LE.TINY) GOTO 50 -!cc IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -!cc IF (WATER .LE. TINY) RETURN ! No water -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCO7 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0 ; R(Cr+Na) < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4 -! 4. Completely dissolved: NH4NO3, NH4CL, (NH4)2SO4, MgSO4, NA2SO4, K2SO4 -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCO7 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A4, A5, A6 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 -! -! - IF (CHI5.GE.TINY) THEN - PSI5 = PSI6*CHI5/(A6/A5*(CHI6-PSI6) + PSI6) - PSI5 = MIN (PSI5,CHI5) - ELSE - PSI5 = TINY - ENDIF -! -!CC IF(CHI4.GT.TINY) THEN - IF(W(2).GT.TINY) THEN ! Accounts for NH3 evaporation - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - 2.d0*PSI2/A4 - DD = MAX(BB*BB-4.d0*CC,ZERO) ! Patch proposed by Uma Shankar, 19/11/01 - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MAX (MIN (PSI4,CHI4), ZERO) - ELSE - PSI4 = TINY - ENDIF -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! - MOLAL (2) = 2.0D0*PSI1 ! Na+ - MOLAL (3) = 2.0D0*PSI2 + PSI4 ! NH4I - MOLAL (4) = PSI6 ! CLI - MOLAL (5) = PSI1+PSI2+PSI7+PSI8 ! SO4I - MOLAL (6) = ZERO ! HSO4 - MOLAL (7) = PSI5 ! NO3I - MOLAL (8) = ZERO ! CaI - MOLAL (9) = 2.0D0*PSI7 ! KI - MOLAL (10)= PSI8 ! Mg -! -! *** CALCULATE HSO4 SPECIATION AND RETURN ******************************* -! -!CC MOLAL (1) = MAX(CHI5 - PSI5, TINY)*A5/PSI5 ! HI - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & -MOLAL(9)-2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNA2SO4 = ZERO - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNH4Cl = ZERO - CK2SO4 = ZERO - CMGSO4 = ZERO - CCASO4 = CHI9 -! -! *** CALCULATE MOLALR ARRAY, WATER AND ACTIVITIES ********************** -! - CALL CALCMR -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCO7 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -!CC FUNCG5A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCO7 ******************************************* -! - END FUNCTION FUNCO7 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCO6 -! *** CASE O6 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. (Rsulfate > 2.0 ; R(Cr+Na) < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4 -! 4. Completely dissolved: NH4NO3, NH4CL, (NH4)2SO4, MGSO4, NA2SO4 -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCO6() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: ALF, BET, GAM, RTSQ, A1, A2, THETA1, THETA2 - Real(kind=fp) :: BB, CC, LAMDA, LAMDA1, LAMDA2, KAPA, KAPA1 - Real(kind=fp) :: DD, SQDD, DD1, SQDD1, DD2, SQDD2 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: CAFR, NAFR, SO4FR, KAPA2, DELTA - Real(kind=fp) :: PSI6LO, PSI6HI - Integer :: I -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI9 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX (W(2)-CHI9, ZERO) - CAFR = MAX (W(6)-CHI9, ZERO) - CHI7 = MIN (0.5D0*W(7), SO4FR) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI7, ZERO) - SO4FR = MAX (SO4FR - CHI7, ZERO) - CHI1 = MIN (0.5D0*W(1), SO4FR) ! NA2SO4 - NAFR = MAX (W(1) - 2.0*CHI1, ZERO) - SO4FR = MAX (SO4FR - CHI1, ZERO) - CHI8 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8) - CHI8, ZERO) - SO4FR = MAX(SO4FR - CHI8, ZERO) - CHI3 = ZERO - CHI5 = W(4) - CHI6 = W(5) - CHI2 = MAX (SO4FR, ZERO) - CHI4 = MAX (W(3)-2.0*CHI2, ZERO) -! -! - PSI1 = CHI1 - PSI2 = CHI2 - PSI3 = ZERO - PSI7 = ZERO - PSI8 = CHI8 - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! - WATER = CHI2/M0(4) + CHI1/M0(2) + CHI7/M0(17) + CHI8/M0(21) - WATER = MAX (WATER , TINY) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCO6 (X1) - IF (CHI6.LE.TINY) GOTO 50 -!cc IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -!cc IF (WATER .LE. TINY) RETURN ! No water -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCO6 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0 ; R(Cr+Na) < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4 , K2SO4 -! 4. Completely dissolved: NH4NO3, NH4CL, (NH4)2SO4, MgSO4, NA2SO4 -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCO6 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A65 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD, RIZ - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP, DENO - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A7 = XK17 *(WATER/GAMA(17))**3.0 -! -! - IF (CHI5.GE.TINY) THEN - PSI5 = PSI6*CHI5/(A6/A5*(CHI6-PSI6) + PSI6) - PSI5 = MIN (PSI5,CHI5) - ELSE - PSI5 = TINY - ENDIF -! -!CC IF(CHI4.GT.TINY) THEN - IF(W(2).GT.TINY) THEN ! Accounts for NH3 evaporation - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - 2.d0*PSI2/A4 - DD = MAX(BB*BB-4.d0*CC,ZERO) ! Patch proposed by Uma Shankar, 19/11/01 - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MAX (MIN (PSI4,CHI4), ZERO) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! PSI7 - CALL POLY3 (PSI1+PSI2+PSI8, ZERO, -A7/4.0, PSI7, ISLV) - IF (ISLV.EQ.0) THEN - PSI7 = MAX (MIN (PSI7, CHI7), ZERO) - ELSE - PSI7 = ZERO - ENDIF - ELSE - PSI7 = ZERO - ENDIF -! -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! - MOLAL (2) = 2.0D0*PSI1 ! Na+ - MOLAL (3) = 2.0D0*PSI2 + PSI4 ! NH4I - MOLAL (4) = PSI6 ! CLI - MOLAL (5) = PSI1+PSI2+PSI7+PSI8 ! SO4I - MOLAL (6) = ZERO ! HSO4 - MOLAL (7) = PSI5 ! NO3I - MOLAL (8) = ZERO ! CaI - MOLAL (9) = 2.0D0*PSI7 ! KI - MOLAL (10)= PSI8 ! Mg - -! -! *** CALCULATE HSO4 SPECIATION AND RETURN ******************************* - -! -!CC MOLAL (1) = MAX(CHI5 - PSI5, TINY)*A5/PSI5 ! HI - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & -MOLAL(9)-2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNA2SO4 = ZERO - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNH4Cl = ZERO - CK2SO4 = MAX(CHI7 - PSI7, TINY) - CMGSO4 = ZERO - CCASO4 = CHI9 -! -! *** CALCULATE MOLALR ARRAY, WATER AND ACTIVITIES ********************** -! - CALL CALCMR -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCO6 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -!CC FUNCG5A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCO6 ******************************************* -! - END FUNCTION FUNCO6 -! -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCO5 -! *** CASE O5 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. (Rsulfate > 2.0 ; R(Cr+Na) < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, NA2SO4 -! 4. Completely dissolved: NH4NO3, NH4CL, (NH4)2SO4, MGSO4 -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCO5() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: ALF, BET, GAM, RTSQ, A1, A2, THETA1, THETA2 - Real(kind=fp) :: BB, CC, LAMDA, LAMDA1, LAMDA2, KAPA, KAPA1 - Real(kind=fp) :: DD, SQDD, DD1, SQDD1, DD2, SQDD2 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: CAFR, NAFR, SO4FR, KAPA2, DELTA - Real(kind=fp) :: PSI6LO, PSI6HI - Integer :: I -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI9 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX (W(2)-CHI9, ZERO) - CAFR = MAX (W(6)-CHI9, ZERO) - CHI7 = MIN (0.5D0*W(7), SO4FR) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI7, ZERO) - SO4FR = MAX (SO4FR - CHI7, ZERO) - CHI1 = MIN (0.5D0*W(1), SO4FR) ! NA2SO4 - NAFR = MAX (W(1) - 2.0*CHI1, ZERO) - SO4FR = MAX (SO4FR - CHI1, ZERO) - CHI8 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8) - CHI8, ZERO) - SO4FR = MAX(SO4FR - CHI8, ZERO) - CHI3 = ZERO - CHI5 = W(4) - CHI6 = W(5) - CHI2 = MAX (SO4FR, ZERO) - CHI4 = MAX (W(3)-2.0*CHI2, ZERO) -! - PSI1 = ZERO - PSI2 = CHI2 - PSI3 = ZERO - PSI7 = ZERO - PSI8 = CHI8 - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! - WATER = CHI2/M0(4) + CHI1/M0(2) + CHI7/M0(17) + CHI8/M0(21) - WATER = MAX (WATER , TINY) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCO5 (X1) - IF (CHI6.LE.TINY) GOTO 50 -!cc IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -!cc IF (WATER .LE. TINY) RETURN ! No water -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCO5 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0 ; R(Cr+Na) < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, NA2SO4 -! 4. Completely dissolved: NH4NO3, NH4CL, (NH4)2SO4, MGSO4 -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCO5 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A65 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD, RIZ - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP, DENO - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A7 = XK17 *(WATER/GAMA(17))**3.0 -! -! - IF (CHI5.GE.TINY) THEN - PSI5 = PSI6*CHI5/(A6/A5*(CHI6-PSI6) + PSI6) - PSI5 = MIN (PSI5,CHI5) - ELSE - PSI5 = TINY - ENDIF -! -!CC IF(CHI4.GT.TINY) THEN - IF(W(2).GT.TINY) THEN ! Accounts for NH3 evaporation - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - 2.d0*PSI2/A4 - DD = MAX(BB*BB-4.d0*CC,ZERO) ! Patch proposed by Uma Shankar, 19/11/01 - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MAX (MIN (PSI4,CHI4), ZERO) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! PSI7 - CALL POLY3 ((PSI2+PSI8)/(SQRT(A1/A7)+ONE), ZERO, - & -A7/4.0_fp/(SQRT(A1/A7)+ONE), PSI7, ISLV) - IF (ISLV.EQ.0) THEN - PSI7 = MAX (MIN (PSI7, CHI7), ZERO) - ELSE - PSI7 = ZERO - ENDIF - ELSE - PSI7 = ZERO - ENDIF -! - IF (CHI1.GE.TINY) THEN ! PSI1 - PSI1 = SQRT(A1/A7)*PSI7 - PSI1 = MIN(PSI1,CHI1) - ELSE - PSI1 = ZERO - ENDIF -! -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! - MOLAL (2) = 2.0D0*PSI1 ! NaI - MOLAL (3) = 2.0D0*PSI2 + PSI4 ! NH4I - MOLAL (4) = PSI6 ! CLI - MOLAL (5) = PSI1+PSI2+PSI7+PSI8 ! SO4I - MOLAL (6) = ZERO ! HSO4 - MOLAL (7) = PSI5 ! NO3I - MOLAL (8) = ZERO ! CaI - MOLAL (9) = 2.0D0*PSI7 ! KI - MOLAL (10)= PSI8 ! Mg - -! -! *** CALCULATE HSO4 SPECIATION AND RETURN ******************************* - -! -!CC MOLAL (1) = MAX(CHI5 - PSI5, TINY)*A5/PSI5 ! HI - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & -MOLAL(9)-2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNA2SO4 = MAX(CHI1 - PSI1, TINY) - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNH4Cl = ZERO - CK2SO4 = MAX(CHI7 - PSI7, TINY) - CMGSO4 = ZERO - CCASO4 = CHI9 -! -! *** CALCULATE MOLALR ARRAY, WATER AND ACTIVITIES ********************** -! - CALL CALCMR -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCO5 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -!CC FUNCG5A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCO5 ******************************************* -! - END FUNCTION FUNCO5 -! -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCO4 -! *** CASE O4 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. (Rsulfate > 2.0 ; R(Cr+Na) < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : NA2SO4, K2SO4, MGSO4, CASO4 -! 4. Completely dissolved: NH4NO3, NH4CL, (NH4)2SO4 -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCO4() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: ALF, BET, GAM, RTSQ, A1, A2, THETA1, THETA2 - Real(kind=fp) :: BB, CC, LAMDA, LAMDA1, LAMDA2, KAPA, KAPA1 - Real(kind=fp) :: DD, SQDD, DD1, SQDD1, DD2, SQDD2 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: CAFR, NAFR, SO4FR, KAPA2, DELTA - Real(kind=fp) :: PSI6LO, PSI6HI - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI9 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX (W(2)-CHI9, ZERO) - CAFR = MAX (W(6)-CHI9, ZERO) - CHI7 = MIN (0.5D0*W(7), SO4FR) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI7, ZERO) - SO4FR = MAX (SO4FR - CHI7, ZERO) - CHI1 = MIN (0.5D0*W(1), SO4FR) ! NA2SO4 - NAFR = MAX (W(1) - 2.0*CHI1, ZERO) - SO4FR = MAX (SO4FR - CHI1, ZERO) - CHI8 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8) - CHI8, ZERO) - SO4FR = MAX(SO4FR - CHI8, ZERO) - CHI3 = ZERO - CHI5 = W(4) - CHI6 = W(5) - CHI2 = MAX (SO4FR, ZERO) - CHI4 = MAX (W(3)-2.0*CHI2, ZERO) -! - PSI2 = CHI2 - PSI3 = ZERO - PSI7 = ZERO - PSI8 = CHI8 - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! - WATER = CHI2/M0(4) + CHI1/M0(2) + CHI7/M0(17) + CHI8/M0(21) - WATER = MAX (WATER , TINY) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCO4 (X1) - IF (CHI6.LE.TINY) GOTO 50 -!CC IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -!CC IF (WATER .LE. TINY) GOTO 50 ! No water -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCO4 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; SODIUM POOR (SODRAT < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCO4 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A65 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD, RIZ - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP, DENO - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI2 = CHI2 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A7 = XK17 *(WATER/GAMA(17))**3.0 -! A8 = XK23 *(WATER/GAMA(21))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - IF (CHI5.GE.TINY) THEN - PSI5 = PSI6*CHI5/(A6/A5*(CHI6-PSI6) + PSI6) - PSI5 = MIN (PSI5,CHI5) - ELSE - PSI5 = TINY - ENDIF -! -!CC IF(CHI4.GT.TINY) THEN - IF(W(2).GT.TINY) THEN ! Accounts for NH3 evaporation - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - 2.d0*PSI2/A4 - DD = MAX(BB*BB-4.d0*CC,ZERO) ! Patch proposed by Uma Shankar, 19/11/01 - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MAX (MIN (PSI4,CHI4), ZERO) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! PSI7 - CALL POLY3 (PSI2+PSI8, ZERO, -A7/4.0, PSI7, ISLV) - IF (ISLV.EQ.0) THEN - PSI7 = MAX (MIN (PSI7, CHI7), ZERO) - ELSE - PSI7 = ZERO - ENDIF - ELSE - PSI7 = ZERO - ENDIF -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - MOLAL (2) = ZERO ! NAI - MOLAL (3) = 2.0D0*PSI2 + PSI4 ! NH4I - MOLAL (4) = PSI6 ! CLI - MOLAL (5) = PSI2+PSI7+PSI8 ! SO4I - MOLAL (6) = ZERO ! HSO4 - MOLAL (7) = PSI5 ! NO3I - MOLAL (8) = ZERO ! CAI - MOLAL (9) = 2.0D0*PSI7 ! KI - MOLAL (10)= PSI8 ! MGI - -! -! *** CALCULATE HSO4 SPECIATION AND RETURN ******************************* - -! -!CC MOLAL (1) = MAX(CHI5 - PSI5, TINY)*A5/PSI5 ! HI - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & -MOLAL(9)-2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNH4Cl = ZERO - CK2SO4 = MAX(CHI7 - PSI7, TINY) - CMGSO4 = ZERO - CCASO4 = CHI9 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCO4 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -!CC FUNCO4 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCO4 ******************************************* -! - END FUNCTION FUNCO4 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCO3 -! *** CASE O3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SO4RAT > 2.0), Cr+NA poor (CRNARAT < 2) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4NO3, NH4Cl, NA2SO4, K2SO4, MGSO4, CASO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCO3() - !EXTERNAL CALCO1A, CALCO4 - Integer :: I -! -! *** REGIME DEPENDS ON THE EXISTANCE OF WATER AND OF THE RH ************ -! - IF (W(4).GT.TINY .AND. W(5).GT.TINY) THEN ! NO3,CL EXIST, WATER POSSIBLE - SCASE = 'O3 ; SUBCASE 1' - CALL CALCO3A - SCASE = 'O3 ; SUBCASE 1' - ELSE ! NO3, CL NON EXISTANT - SCASE = 'O1 ; SUBCASE 1' - CALL CALCO1A - SCASE = 'O1 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRMO3) THEN ! ONLY SOLIDS - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCO1A - SCASE = 'O3 ; SUBCASE 2' - RETURN - ELSE - SCASE = 'O3 ; SUBCASE 3' ! MDRH REGION (NA2SO4, NH42S4, K2SO4, MGSO4, CASO4) - CALL CALCMDRH2 (RH, DRMO3, DRNH42S4, CALCO1A, CALCO4) - SCASE = 'O3 ; SUBCASE 3' - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCO3 ****************************************** -! - END SUBROUTINE CALCO3 -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCO3A -! *** CASE O3 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. (Rsulfate > 2.0 ; R(Cr+Na) < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4, K2SO4, MGSO4, CASO4 -! 4. Completely dissolved: NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCO3A() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: ALF, BET, GAM, RTSQ, A1, A2, THETA1, THETA2 - Real(kind=fp) :: BB, CC, LAMDA, LAMDA1, LAMDA2, KAPA, KAPA1 - Real(kind=fp) :: DD, SQDD, DD1, SQDD1, DD2, SQDD2 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: CAFR, NAFR, SO4FR, KAPA2, DELTA - Real(kind=fp) :: PSI6LO, PSI6HI - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI9 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX (W(2)-CHI9, ZERO) - CAFR = MAX (W(6)-CHI9, ZERO) - CHI7 = MIN (0.5D0*W(7), SO4FR) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI7, ZERO) - SO4FR = MAX (SO4FR - CHI7, ZERO) - CHI1 = MIN (0.5D0*W(1), SO4FR) ! NA2SO4 - NAFR = MAX (W(1) - 2.0*CHI1, ZERO) - SO4FR = MAX (SO4FR - CHI1, ZERO) - CHI8 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8) - CHI8, ZERO) - SO4FR = MAX(SO4FR - CHI8, ZERO) - CHI3 = ZERO - CHI5 = W(4) - CHI6 = W(5) - CHI2 = MAX (SO4FR, ZERO) - CHI4 = MAX (W(3)-2.0*CHI2, ZERO) -! - PSI8 = CHI8 - PSI6LO = TINY - PSI6HI = CHI6-TINY -! - WATER = TINY -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCO3A (X1) - IF (CHI6.LE.TINY) GOTO 50 -!CC IF (ABS(Y1).LE.EPS .OR. CHI7.LE.TINY) GOTO 50 -!CC IF (WATER .LE. TINY) GOTO 50 ! No water -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCO3A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0 ; R(Cr+Na) < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NA2SO4, K2SO4, MgSO4, CaSO4 -! 4. Completely dissolved: NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCO3A (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A65 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD, RIZ - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP, DENO - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32, PSI20 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - PSI2 = CHI2 - PSI8 = CHI8 - PSI3 = ZERO - PSI6 = X -! - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0D0 - A2 = XK7 *(WATER/GAMA(4))**3.0D0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0D0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0D0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0D0 - A7 = XK17 *(WATER/GAMA(17))**3.0D0 -! A8 = XK23 *(WATER/GAMA(21))**2.0D0 - A65 = A6/A5 -! -! CALCULATE DISSOCIATION QUANTITIES -! - DENO = MAX(CHI6-PSI6-PSI3, ZERO) - PSI5 = PSI6*CHI5/(A6/A5*DENO + PSI6) - PSI5 = MIN(MAX(PSI5,ZERO),CHI5) -! -!CC IF(CHI4.GT.TINY) THEN ! PSI4 - IF(W(2).GT.TINY) THEN ! Accounts for NH3 evaporation - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - 2.d0*PSI2/A4 - DD = MAX(BB*BB-4.d0*CC,ZERO) ! Patch proposed by Uma Shankar, 19/11/01 - PSI4 =0.5d0*(-BB - SQRT(DD)) - ELSE - PSI4 = TINY - ENDIF - PSI4 = MIN (MAX (PSI4,ZERO), CHI4) -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! PSI7 - CALL POLY3 (PSI2+PSI8, ZERO, -A7/4.0, PSI7, ISLV) - IF (ISLV.EQ.0) THEN - PSI7 = MAX (MIN (PSI7, CHI7), ZERO) - ELSE - PSI7 = ZERO - ENDIF - ELSE - PSI7 = ZERO - ENDIF -! - IF (CHI2.GT.TINY .AND. WATER.GT.TINY) THEN - CALL POLY3 (PSI7+PSI8+PSI4, PSI4*(PSI7+PSI8)+ - & PSI4*PSI4/4.0, (PSI4*PSI4*(PSI7+PSI8)-A2) - & /4.0,PSI20, ISLV) - IF (ISLV.EQ.0) PSI2 = MIN (MAX(PSI20,ZERO), CHI2) - ENDIF -! PSI2 = 0.5D0*(2.0D0*SQRT(A2/A7)*PSI7 - PSI4) -! PSI2 = MIN (MAX(PSI2, ZERO), CHI2) -! ENDIF -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! - MOLAL (2) = ZERO ! NaI - MOLAL (3) = 2.0D0*PSI2 + PSI4 ! NH4I - MOLAL (4) = PSI6 ! CLI - MOLAL (5) = PSI2+PSI7+PSI8 ! SO4I - MOLAL (6) = ZERO ! HSO4 - MOLAL (7) = PSI5 ! NO3I - MOLAL (8) = ZERO ! CAI - MOLAL (9) = 2.0D0*PSI7 ! KI - MOLAL (10)= PSI8 ! MGI -! -!CC MOLAL (1) = MAX(CHI5 - PSI5, TINY)*A5/PSI5 ! HI - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & -MOLAL(9)-2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! -! CNA2SO4 = MAX(CHI1 - PSI1, ZERO) - CNH42S4 = MAX(CHI2 - PSI2, ZERO) - CNH4NO3 = ZERO - CNH4Cl = ZERO - CK2SO4 = MAX(CHI7 - PSI7, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI9 -! -! *** CALCULATE MOLALR ARRAY, WATER AND ACTIVITIES ********************** -! - CALL CALCMR -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -20 FUNCO3A = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! -! - RETURN -! -! *** END OF FUNCTION FUNCO3A ******************************************* -! - END FUNCTION FUNCO3A - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCO2 -! *** CASE O2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SO4RAT > 2.0), Cr+NA poor (CRNARAT < 2) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4NO3, NH4Cl, NA2SO4, K2SO4, MGSO4, CASO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCO2() - !EXTERNAL CALCO1A, CALCO3A, CALCO4 - Integer :: I -! -! *** REGIME DEPENDS ON THE EXISTANCE OF NITRATES *********************** -! - IF (W(4).GT.TINY) THEN ! NO3 EXISTS, WATER POSSIBLE - SCASE = 'O2 ; SUBCASE 1' - CALL CALCO2A - SCASE = 'O2 ; SUBCASE 1' - ELSE ! NO3 NON EXISTANT, WATER NOT POSSIBLE - SCASE = 'O1 ; SUBCASE 1' - CALL CALCO1A - SCASE = 'O1 ; SUBCASE 1' - ENDIF -! -! *** REGIME DEPENDS ON THE EXISTANCE OF WATER AND OF THE RH ************ -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRMO2) THEN ! ONLY SOLIDS - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCO1A - SCASE = 'O2 ; SUBCASE 2' - ELSE - IF (W(5).GT. TINY) THEN - SCASE = 'O2 ; SUBCASE 3' ! MDRH (NH4CL, NA2SO4, NH42S4, K2SO4, MGSO4, CASO4) - CALL CALCMDRH2 (RH, DRMO2, DRNH4CL, CALCO1A, CALCO3A) - SCASE = 'O2 ; SUBCASE 3' - ENDIF - IF (WATER.LE.TINY .AND. RH.GE.DRMO3) THEN - SCASE = 'O2 ; SUBCASE 4' ! MDRH (NA2SO4, NH42S4, K2SO4, MGSO4, CASO4) - CALL CALCMDRH2 (RH, DRMO3, DRNH42S4, CALCO1A, CALCO4) - SCASE = 'O2 ; SUBCASE 4' - ELSE - WATER = TINY - DO 20 I=1,NIONS - MOLAL(I) = ZERO -20 CONTINUE - CALL CALCO1A - SCASE = 'O2 ; SUBCASE 2' - ENDIF - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCO2 ****************************************** -! - END SUBROUTINE CALCO2 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCO2A -! *** CASE O2 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. (Rsulfate > 2.0 ; R(Cr+Na) < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4, K2SO4, MgSO4, CaSO4 -! 4. Completely dissolved: NH4NO3 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCO2A() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: ALF, BET, GAM, RTSQ, A1, A2, THETA1, THETA2 - Real(kind=fp) :: BB, CC, LAMDA, LAMDA1, LAMDA2, KAPA, KAPA1 - Real(kind=fp) :: DD, SQDD, DD1, SQDD1, DD2, SQDD2 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: CAFR, NAFR, SO4FR, KAPA2, DELTA - Real(kind=fp) :: PSI6LO, PSI6HI - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) - -! -! *** SETUP PARAMETERS ************************************************* -! - CALAOU = .TRUE. - CHI9 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX (W(2)-CHI9, ZERO) - CAFR = MAX (W(6)-CHI9, ZERO) - CHI7 = MIN (0.5D0*W(7), SO4FR) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI7, ZERO) - SO4FR = MAX (SO4FR - CHI7, ZERO) - CHI1 = MIN (0.5D0*W(1), SO4FR) ! NA2SO4 - NAFR = MAX (W(1) - 2.0*CHI1, ZERO) - SO4FR = MAX (SO4FR - CHI1, ZERO) - CHI8 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8) - CHI8, ZERO) - SO4FR = MAX(SO4FR - CHI8, ZERO) - CHI3 = ZERO - CHI5 = W(4) - CHI6 = W(5) - CHI2 = MAX (SO4FR, ZERO) - CHI4 = MAX (W(3)-2.0*CHI2, ZERO) -! - PSI8 = CHI8 - PSI6LO = TINY - PSI6HI = CHI6-TINY -! - WATER = TINY -! -! *** INITIAL VALUES FOR BISECTION ************************************* -! - X1 = PSI6LO - Y1 = FUNCO2A (X1) - IF (CHI6.LE.TINY) GOTO 50 -!CC IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -!CC IF (WATER .LE. TINY) GOTO 50 ! No water -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO *********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCO2A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0 ; R(Cr+Na) < 2.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4CL, NA2SO4, K2SO4, MgSO4, CaSO4 -! 4. Completely dissolved: NH4NO3 -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCO2A (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A65 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD, RIZ - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP, DENO - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32, PSI20 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - !Real(kind=fp) :: LAMDA - ! hotp modified 8/2/07 - ! explicitly declared all variables in CASEO - ! made CASEO THREADPRIVATE for parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5 -!=======! Real(kind=fp) :: PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4 -!=======! Real(kind=fp) :: A5, A6, A7, A8, A9 -!=======! COMMON /CASEO/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, LAMDA, PSI1, PSI2, PSI3, PSI4, PSI5, -!=======! & PSI6, PSI7, PSI8, PSI9, A1, A2, A3, A4, -!=======! & A5, A6, A7, A8, A9 -!=======!!$OMP THREADPRIVATE( /CASEO/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI2 = CHI2 - PSI3 = ZERO -! - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0D0 - A2 = XK7 *(WATER/GAMA(4))**3.0D0 - A3 = XK6 /(R*TEMP*R*TEMP) - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0D0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0D0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0D0 - A65 = A6/A5 - A7 = XK17 *(WATER/GAMA(17))**3.0D0 -! A8 = XK23 *(WATER/GAMA(21))**2.0D0 -! - DENO = MAX(CHI6-PSI6-PSI3, ZERO) - PSI5 = PSI6*CHI5/(A6/A5*DENO + PSI6) - PSI5 = MIN(PSI5,CHI5) -! -!------------------------------------------------------------------------------ -! Prior to 1/31/18: -! Shaojie Song wrote: -! We have identified and fixed coding errors in ISORROPIA which significantly -! affect aerosol water pH calculations when the stable state for aerosol phase -! is applied. These errors exist in source codes for the cases G2 and O2, and -! also affect the pH results for the cases G1 and O1. The standard ISORROPIA -! codes fail to account for the partitioning of ammonia between the gas and -! aqueous phases. More information can be seen in our recent ACPD paper: -! https://www.atmos-chem-phys-discuss.net/acp-2018-6/. -! PSI4 = MIN(PSI5+PSI6,CHI4) -!------------------------------------------------------------------------------ - IF(W(2).GT.TINY) THEN ! Accounts for NH3 evaporation - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - 2.d0*PSI2/A4 - DD = MAX(BB*BB-4.d0*CC,ZERO) ! Patch proposed by Uma Shankar, 19/11/01 - PSI4 =0.5d0*(-BB - SQRT(DD)) - ELSE - PSI4 = TINY - ENDIF -! -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! PSI7 - CALL POLY3 (PSI2+PSI8, ZERO, -A7/4.0, PSI7, ISLV) - IF (ISLV.EQ.0) THEN - PSI7 = MAX (MIN (PSI7, CHI7), ZERO) - ELSE - PSI7 = ZERO - ENDIF - ELSE - PSI7 = ZERO - ENDIF -! - IF (CHI2.GT.TINY .AND. WATER.GT.TINY) THEN - CALL POLY3 (PSI7+PSI8+PSI4, PSI4*(PSI7+PSI8)+ - & PSI4*PSI4/4.0, (PSI4*PSI4*(PSI7+PSI8)-A2) - & /4.0,PSI20, ISLV) - IF (ISLV.EQ.0) PSI2 = MIN (MAX(PSI20,ZERO), CHI2) - ENDIF -! PSI2 = 0.5D0*(2.0D0*SQRT(A2/A7)*PSI7 - PSI4) -! PSI2 = MIN (PSI2, CHI2) -! ENDIF -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! - MOLAL (2) = ZERO ! NaI - MOLAL (3) = 2.0D0*PSI2 + PSI4 ! NH4I - MOLAL (4) = PSI6 ! CLI - MOLAL (5) = PSI2+PSI7+PSI8 ! SO4I - MOLAL (6) = ZERO ! HSO4 - MOLAL (7) = PSI5 ! NO3I - MOLAL (8) = ZERO ! CAI - MOLAL (9) = 2.0D0*PSI7 ! KI - MOLAL (10)= PSI8 ! MGI -! -!CC MOLAL (1) = MAX(CHI5 - PSI5, TINY)*A5/PSI5 ! HI - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & -MOLAL(9)-2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! -! CNA2SO4 = MAX(CHI1 - PSI1, ZERO) - CNH42S4 = MAX(CHI2 - PSI2, ZERO) - CNH4NO3 = ZERO - CK2SO4 = MAX(CHI7 - PSI7, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI9 - -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF - PSI3 = MIN(MIN(PSI3,CHI4-PSI4),CHI6-PSI6) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! -! *** CALCULATE MOLALR ARRAY, WATER AND ACTIVITIES ********************* -! - CALL CALCMR -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP ************************** -! - -!20 IF (CHI4.LE.TINY) THEN -! FUNCO2A = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! ELSE -20 FUNCO2A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -! ENDIF -! - RETURN -! -! *** END OF FUNCTION FUNCO2A **************************************** -! - END FUNCTION FUNCO2A - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCO1 -! *** CASE O1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SO4RAT > 2.0), Cr+NA poor (CRNARAT < 2) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4NO3, NH4Cl, NA2SO4, K2SO4, MGSO4, CASO4 -! -! THERE ARE TWO POSSIBLE REGIMES HERE, DEPENDING ON RELATIVE HUMIDITY: -! 1. WHEN RH >= MDRH ; LIQUID PHASE POSSIBLE (MDRH REGION) -! 2. WHEN RH < MDRH ; ONLY SOLID PHASE POSSIBLE (SUBROUTINE CALCO1A) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCO1() - !EXTERNAL CALCO1A, CALCO2A -! -! *** REGIME DEPENDS UPON THE AMBIENT RELATIVE HUMIDITY ***************** -! - IF (RH.LT.DRMO1) THEN - SCASE = 'O1 ; SUBCASE 1' - CALL CALCO1A ! SOLID PHASE ONLY POSSIBLE - SCASE = 'O1 ; SUBCASE 1' - ELSE - SCASE = 'O1 ; SUBCASE 2' ! LIQUID & SOLID PHASE POSSIBLE - CALL CALCMDRH2 (RH, DRMO1, DRNH4NO3, CALCO1A, CALCO2A) - SCASE = 'O1 ; SUBCASE 2' - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCO1 ****************************************** -! - END SUBROUTINE CALCO1 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCO1A -! *** CASE O1A -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SO4RAT > 2.0), Cr+NA poor (CRNARAT < 2) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : (NH4)2SO4, NH4NO3, NH4Cl, NA2SO4, K2SO4, MGSO4, CASO4 -! -! SOLID (NH4)2SO4 IS CALCULATED FROM THE SULFATES, WHILE NH4NO3 -! IS CALCULATED FROM NH3-HNO3 EQUILIBRIUM. 'ZE' IS THE AMOUNT OF -! NH4NO3 THAT VOLATIZES WHEN ALL POSSILBE NH4NO3 IS INITIALLY IN -! THE SOLID PHASE. -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCO1A() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: ALF, BET, GAM, RTSQ, A1, A2, THETA1, THETA2 - Real(kind=fp) :: BB, CC, LAMDA, LAMDA1, LAMDA2, KAPA, KAPA1 - Real(kind=fp) :: DD, SQDD, DD1, SQDD1, DD2, SQDD2 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: CAFR, SO4FR, KAPA2 - Integer :: I -! -! *** CALCULATE NON VOLATILE SOLIDS *********************************** -! - CCASO4 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX(W(2) - CCASO4, ZERO) - CAFR = MAX(W(6) - CCASO4, ZERO) - CK2SO4 = MIN (0.5D0*W(7), SO4FR) ! CK2S04 - FRK = MAX(W(7) - 2.0*CK2SO4, ZERO) - SO4FR = MAX(SO4FR - CK2SO4, ZERO) - CNA2SO4 = MIN (0.5D0*W(1), SO4FR) ! CNA2SO4 - FRNA = MAX(W(1) - 2.0*CNA2SO4, ZERO) - SO4FR = MAX(SO4FR - CNA2SO4, ZERO) - CMGSO4 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8) - CMGSO4, ZERO) - SO4FR = MAX(SO4FR - CMGSO4, ZERO) -! - CNH42S4 = MAX (SO4FR , ZERO) ! CNH42S4 -! -! *** CALCULATE VOLATILE SPECIES ************************************** -! - ALF = W(3) - 2.0D0*CNH42S4 - BET = W(5) - GAM = W(4) -! - RTSQ = R*TEMP*R*TEMP - A1 = XK6/RTSQ - A2 = XK10/RTSQ - !print *, A2 -! - THETA1 = GAM - BET*(A2/A1) - THETA2 = A2/A1 -! -! QUADRATIC EQUATION SOLUTION -! - BB = (THETA1-ALF-BET*(ONE+THETA2))/(ONE+THETA2) - CC = (ALF*BET-A1-BET*THETA1)/(ONE+THETA2) - DD = BB*BB - 4.0D0*CC - IF (DD.LT.ZERO) GOTO 100 ! Solve each reaction seperately -! -! TWO ROOTS FOR KAPA, CHECK AND SEE IF ANY VALID -! - SQDD = SQRT(DD) - KAPA1 = 0.5D0*(-BB+SQDD) - KAPA2 = 0.5D0*(-BB-SQDD) - LAMDA1 = THETA1 + THETA2*KAPA1 - LAMDA2 = THETA1 + THETA2*KAPA2 -! - IF (KAPA1.GE.ZERO .AND. LAMDA1.GE.ZERO) THEN - IF (ALF-KAPA1-LAMDA1.GE.ZERO .AND. - & BET-KAPA1.GE.ZERO .AND. GAM-LAMDA1.GE.ZERO) THEN - KAPA = KAPA1 - LAMDA= LAMDA1 - GOTO 200 - ENDIF - ENDIF -! - IF (KAPA2.GE.ZERO .AND. LAMDA2.GE.ZERO) THEN - IF (ALF-KAPA2-LAMDA2.GE.ZERO .AND. - & BET-KAPA2.GE.ZERO .AND. GAM-LAMDA2.GE.ZERO) THEN - KAPA = KAPA2 - LAMDA= LAMDA2 - GOTO 200 - ENDIF - ENDIF -! -! SEPERATE SOLUTION OF NH4CL & NH4NO3 EQUILIBRIA -! -100 KAPA = ZERO - LAMDA = ZERO - DD1 = (ALF+BET)*(ALF+BET) - 4.0D0*(ALF*BET-A1) - DD2 = (ALF+GAM)*(ALF+GAM) - 4.0D0*(ALF*GAM-A2) -! -! NH4CL EQUILIBRIUM -! - IF (DD1.GE.ZERO) THEN - SQDD1 = SQRT(DD1) - KAPA1 = 0.5D0*(ALF+BET + SQDD1) - KAPA2 = 0.5D0*(ALF+BET - SQDD1) -! - IF (KAPA1.GE.ZERO .AND. KAPA1.LE.MIN(ALF,BET)) THEN - KAPA = KAPA1 - ELSE IF (KAPA2.GE.ZERO .AND. KAPA2.LE.MIN(ALF,BET)) THEN - KAPA = KAPA2 - ELSE - KAPA = ZERO - ENDIF - ENDIF -! -! NH4NO3 EQUILIBRIUM -! - IF (DD2.GE.ZERO) THEN - SQDD2 = SQRT(DD2) - LAMDA1= 0.5D0*(ALF+GAM + SQDD2) - LAMDA2= 0.5D0*(ALF+GAM - SQDD2) -! - IF (LAMDA1.GE.ZERO .AND. LAMDA1.LE.MIN(ALF,GAM)) THEN - LAMDA = LAMDA1 - ELSE IF (LAMDA2.GE.ZERO .AND. LAMDA2.LE.MIN(ALF,GAM)) THEN - LAMDA = LAMDA2 - ELSE - LAMDA = ZERO - ENDIF - ENDIF -! -! IF BOTH KAPA, LAMDA ARE > 0, THEN APPLY EXISTANCE CRITERION -! - IF (KAPA.GT.ZERO .AND. LAMDA.GT.ZERO) THEN - IF (BET .LT. LAMDA/THETA1) THEN - KAPA = ZERO - ELSE - LAMDA= ZERO - ENDIF - ENDIF -! -! *** CALCULATE COMPOSITION OF VOLATILE SPECIES ************************ -! -200 CONTINUE - CNH4NO3 = LAMDA - CNH4CL = KAPA -! - GNH3 = MAX(ALF - KAPA - LAMDA, ZERO) - GHNO3 = MAX(GAM - LAMDA, ZERO) - GHCL = MAX(BET - KAPA, ZERO) -! - RETURN -! -! *** END OF SUBROUTINE CALCO1A ***************************************** -! - END SUBROUTINE CALCO1A - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCM8 -! *** CASE M8 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4 -! 4. Completely dissolved: NH4NO3, NH4CL, NANO3, NACL, MgSO4, NA2SO4, K2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCM8() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: PSI6LO, PSI6HI, SO4FR, CAFR, DELTA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX(W(2)-CHI11, ZERO) - CAFR = MAX(W(6)-CHI11, ZERO) - CHI9 = MIN (0.5D0*W(7), SO4FR) ! CK2S04 - FRK = MAX(W(7)-2.0*CHI9, ZERO) - SO4FR = MAX(SO4FR-CHI9, ZERO) - CHI10 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8)-CHI10, ZERO) - SO4FR = MAX(SO4FR-CHI10, ZERO) - CHI1 = MAX (SO4FR,ZERO) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCM8 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCM8 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4 -! 4. Completely dissolved: NH4NO3, NH4CL, NANO3, NACL, MgSO4, NA2SO4, K2SO4 -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCM8 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A64 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD, RIZ - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = CHI9 - PSI10 = CHI10 - PSI11 = ZERO - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! -! A1 = XK5 *(WATER/GAMA(2))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 -! A7 = XK8 *(WATER/GAMA(1))**2.0 -! A8 = XK9 *(WATER/GAMA(3))**2.0 -! A11 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MIN(MAX(PSI5, TINY),CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 + PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 ! NO3I - MOLAL (8) = PSI11 ! CAI - MOLAL (9) = 2.0*PSI9 ! KI - MOLAL (10)= PSI10 ! MGI -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = ZERO - CNANO3 = ZERO - CNA2SO4 = ZERO - CK2SO4 = ZERO - CMGSO4 = ZERO - CCASO4 = CHI11 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCM8 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCM8 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCM8 ******************************************* -! - END FUNCTION FUNCM8 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCM7 -! *** CASE M7 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4 -! 4. Completely dissolved: NH4NO3, NH4CL, NANO3, NACL, MgSO4, NA2SO4 -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCM7() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: SO4FR, CAFR - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX(W(2)-CHI11, ZERO) - CAFR = MAX(W(6)-CHI11, ZERO) - CHI9 = MIN (0.5D0*W(7), SO4FR) ! CK2S04 - FRK = MAX(W(7)-2.0*CHI9, ZERO) - SO4FR = MAX(SO4FR-CHI9, ZERO) - CHI10 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8)-CHI10, ZERO) - SO4FR = MAX(SO4FR-CHI10, ZERO) - CHI1 = MAX (SO4FR,ZERO) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCM7 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCM7 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4 -! 4. Completely dissolved: NH4NO3, NH4CL, NANO3, NACL, MgSO4, NA2SO4 -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCM7 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A64 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD, RIZ - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! -! A1 = XK5 *(WATER/GAMA(2))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 -! A7 = XK8 *(WATER/GAMA(1))**2.0 -! A8 = XK9 *(WATER/GAMA(3))**2.0 -! A11 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MIN(MAX(PSI5, TINY),CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - CALL POLY3 (PSI1+PSI10,ZERO,-A9/4.0, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MAX (MIN (PSI9,CHI9), ZERO) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 + PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 ! NO3I - MOLAL (8) = PSI11 ! CAI - MOLAL (9) = 2.0*PSI9 ! KI - MOLAL (10)= PSI10 ! MGI -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = ZERO - CNANO3 = ZERO - CNA2SO4 = ZERO - CK2SO4 = MAX(CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCM7 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCM7 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCM7 ******************************************* -! - END FUNCTION FUNCM7 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCM6 -! *** CASE M6 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4 -! 4. Completely dissolved: NH4NO3, NH4CL, NANO3, NACL, MgSO4 -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCM6 - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: PSI6LO, PSI6HI, SO4FR, CAFR, DELTA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX(W(2)-CHI11, ZERO) - CAFR = MAX(W(6)-CHI11, ZERO) - CHI9 = MIN (0.5D0*W(7), SO4FR) ! CK2S04 - FRK = MAX(W(7)-2.0*CHI9, ZERO) - SO4FR = MAX(SO4FR-CHI9, ZERO) - CHI10 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8)-CHI10, ZERO) - SO4FR = MAX(SO4FR-CHI10, ZERO) - CHI1 = MAX (SO4FR,ZERO) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCM6 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCM6 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4 -! 4. Completely dissolved: NH4NO3, NH4CL, NANO3, NACL, MgSO4 -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCM6 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A64 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD, RIZ - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP, AA - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 -! A7 = XK8 *(WATER/GAMA(1))**2.0 -! A8 = XK9 *(WATER/GAMA(3))**2.0 -! A11 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MIN(MAX(PSI5, TINY),CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI1.GT.TINY .AND. WATER.GT.TINY) THEN !NA2SO4 - RIZ = SQRT(A9/A1) - AA = (0.5D0*RIZ*(PSI7+PSI8)+PSI10+(1.0+RIZ)*(PSI7+PSI8)) - & /(1.0+RIZ) - BB = ((PSI7+PSI8)*(0.5D0*RIZ*(PSI7+PSI8)+PSI10)+0.25D0* - & (PSI7+PSI8)**2.0*(1.0+RIZ))/(1.0+RIZ) - CC = (0.25D0*(PSI7+PSI8)**2.0*(0.5D0*RIZ*(PSI7+PSI8)+PSI10) - & -A1/4.0)/(1.0+RIZ) -! AA = PSI7+PSI8+PSI9+PSI10 -! BB = (PSI7+PSI8)*(PSI9+PSI10)+0.25D0*(PSI7+PSI8)**2. -! CC = ((PSI7+PSI8)**2.*(PSI9+PSI10)-A1)/4.0D0 -! - CALL POLY3 (AA,BB,CC,PSI1,ISLV) - IF (ISLV.EQ.0) THEN - PSI1 = MIN (PSI1,CHI1) - ELSE - PSI1 = ZERO - ENDIF - ENDIF -! -! IF (CHI9.GE.TINY .AND. WATER.GT.TINY) THEN -! PSI9 = 0.5D0*SQRT(A9/A1)*(2.0D0*PSI1+PSI7+PSI8) -! PSI9 = MAX (MIN (PSI9,CHI9), ZERO) -! ELSE -! PSI9 = ZERO -! ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - CALL POLY3 (PSI1+PSI10,ZERO,-A9/4.0, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (PSI9,CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 + PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 ! NO3I - MOLAL (8) = PSI11 ! CAI - MOLAL (9) = 2.0*PSI9 ! KI - MOLAL (10)= PSI10 ! MGI -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = ZERO - CNANO3 = ZERO - CNA2SO4 = MAX(CHI1 - PSI1, ZERO) - CK2SO4 = MAX(CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCM6 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCM6 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCM6 ******************************************* -! - END FUNCTION FUNCM6 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCM5 -! *** CASE M5 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4, MGSO4 -! 4. Completely dissolved: NH4NO3, NH4CL, NANO3, NACL -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCM5() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: PSI6LO, PSI6HI, SO4FR, CAFR, DELTA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX(W(2)-CHI11, ZERO) - CAFR = MAX(W(6)-CHI11, ZERO) - CHI9 = MIN (0.5D0*W(7), SO4FR) ! CK2S04 - FRK = MAX(W(7)-2.0*CHI9, ZERO) - SO4FR = MAX(SO4FR-CHI9, ZERO) - CHI10 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8)-CHI10, ZERO) - SO4FR = MAX(SO4FR-CHI10, ZERO) - CHI1 = MAX (SO4FR,ZERO) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCM5 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCM5 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4, MGSO4 -! 4. Completely dissolved: NH4NO3, NH4CL, NANO3, NACL -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCM5 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A64 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD, RIZ - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP, AA - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 -! A7 = XK8 *(WATER/GAMA(1))**2.0 -! A8 = XK9 *(WATER/GAMA(3))**2.0 -! A11 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MIN(MAX(PSI5, TINY),CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI1.GT.TINY .AND. WATER.GT.TINY) THEN !NA2SO4 - RIZ = SQRT(A9/A1) - AA = (0.5D0*RIZ*(PSI7+PSI8)+PSI10+(1.0+RIZ)*(PSI7+PSI8)) - & /(1.0+RIZ) - BB = ((PSI7+PSI8)*(0.5D0*RIZ*(PSI7+PSI8)+PSI10)+0.25D0* - & (PSI7+PSI8)**2.0*(1.0+RIZ))/(1.0+RIZ) - CC = (0.25D0*(PSI7+PSI8)**2.0*(0.5D0*RIZ*(PSI7+PSI8)+PSI10) - & -A1/4.0)/(1.0+RIZ) -! AA = PSI7+PSI8+PSI9+PSI10 -! BB = (PSI7+PSI8)*(PSI9+PSI10)+0.25D0*(PSI7+PSI8)**2. -! CC = ((PSI7+PSI8)**2.*(PSI9+PSI10)-A1)/4.0D0 -! - CALL POLY3 (AA,BB,CC,PSI1,ISLV) - IF (ISLV.EQ.0) THEN - PSI1 = MIN (PSI1,CHI1) - ELSE - PSI1 = ZERO - ENDIF - ENDIF -! - IF (CHI9.GE.TINY .AND. WATER.GT.TINY) THEN - PSI9 = 0.5D0*SQRT(A9/A1)*(2.0D0*PSI1+PSI7+PSI8) - PSI9 = MAX (MIN (PSI9,CHI9), ZERO) - ELSE - PSI9 = ZERO - ENDIF -! -! IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 -! CALL POLY3 (PSI1+PSI10,ZERO,-A9/4.0, PSI9, ISLV) -! IF (ISLV.EQ.0) THEN -! PSI9 = MIN (PSI9,CHI9) -! ELSE -! PSI9 = ZERO -! ENDIF -! ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 + PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 ! NO3I - MOLAL (8) = PSI11 ! CAI - MOLAL (9) = 2.0*PSI9 ! KI - MOLAL (10)= PSI10 ! MGI -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = ZERO - CNANO3 = ZERO - CNA2SO4 = MAX(CHI1 - PSI1, ZERO) - CK2SO4 = MAX(CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCM5 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCM5 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCM5 ******************************************* -! - END FUNCTION FUNCM5 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCM4 -! *** CASE M4 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4, MGSO4, NH4CL -! 4. Completely dissolved: NH4NO3, NANO3, NACL -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCM4() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: PSI6LO, PSI6HI, SO4FR, CAFR, DELTA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** REGIME DEPENDS ON THE EXISTANCE OF NITRATES *********************** -! - IF (W(4).LE.TINY .AND. W(5).LE.TINY) THEN - SCASE = 'M4 ; SUBCASE 1' - CALL CALCM1A - SCASE = 'M4 ; SUBCASE 1' - RETURN - ENDIF -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX(W(2)-CHI11, ZERO) - CAFR = MAX(W(6)-CHI11, ZERO) - CHI9 = MIN (0.5D0*W(7), SO4FR) ! CK2S04 - FRK = MAX(W(7)-2.0*CHI9, ZERO) - SO4FR = MAX(SO4FR-CHI9, ZERO) - CHI10 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8)-CHI10, ZERO) - SO4FR = MAX(SO4FR-CHI10, ZERO) - CHI1 = MAX (SO4FR,ZERO) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCM4 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCM4 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4, MGSO4, NH4CL -! 4. Completely dissolved: NH4NO3, NANO3, NACL -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCM4 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A64 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD, RIZ - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP, AA - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A3 = XK6 /(R*TEMP*R*TEMP) - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 -! A7 = XK8 *(WATER/GAMA(1))**2.0 -! A8 = XK9 *(WATER/GAMA(3))**2.0 -! A11 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MIN(MAX(PSI5, TINY),CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,TINY),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI1.GT.TINY .AND. WATER.GT.TINY) THEN !NA2SO4 - RIZ = SQRT(A9/A1) - AA = (0.5D0*RIZ*(PSI7+PSI8)+PSI10+(1.0+RIZ)*(PSI7+PSI8)) - & /(1.0+RIZ) - BB = ((PSI7+PSI8)*(0.5D0*RIZ*(PSI7+PSI8)+PSI10)+0.25D0* - & (PSI7+PSI8)**2.0*(1.0+RIZ))/(1.0+RIZ) - CC = (0.25D0*(PSI7+PSI8)**2.0*(0.5D0*RIZ*(PSI7+PSI8)+PSI10) - & -A1/4.0)/(1.0+RIZ) -! AA = PSI7+PSI8+PSI9+PSI10 -! BB = (PSI7+PSI8)*(PSI9+PSI10)+0.25D0*(PSI7+PSI8)**2. -! CC = ((PSI7+PSI8)**2.*(PSI9+PSI10)-A1)/4.0D0 -! - CALL POLY3 (AA,BB,CC,PSI1,ISLV) - IF (ISLV.EQ.0) THEN - PSI1 = MIN (PSI1,CHI1) - ELSE - PSI1 = ZERO - ENDIF - ENDIF -! - IF (CHI9.GE.TINY .AND. WATER.GT.TINY) THEN - PSI9 = 0.5D0*SQRT(A9/A1)*(2.0D0*PSI1+PSI7+PSI8) - PSI9 = MAX (MIN (PSI9,CHI9), ZERO) - ELSE - PSI9 = ZERO - ENDIF -! -! IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 -! CALL POLY3 (PSI1+PSI10,ZERO,-A9/4.0, PSI9, ISLV) -! IF (ISLV.EQ.0) THEN -! PSI9 = MIN (PSI9,CHI9) -! ELSE -! PSI9 = ZERO -! ENDIF -! ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 + PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 ! NO3I - MOLAL (8) = PSI11 ! CAI - MOLAL (9) = 2.0*PSI9 ! KI - MOLAL (10)= PSI10 ! MGI -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = ZERO - CNANO3 = ZERO - CNA2SO4 = MAX(CHI1 - PSI1, ZERO) - CK2SO4 = MAX(CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF - PSI3 = MAX (MIN(MIN(PSI3,CHI4-PSI4),CHI6-PSI6), ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCM4 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCM4 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCM4 ******************************************* -! - END FUNCTION FUNCM4 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCM3 -! *** CASE M3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4, MGSO4, NH4CL, NACL -! 4. Completely dissolved: NH4NO3, NANO3 -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCM3() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA - Real(kind=fp) :: SO4FR, CAFR - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** REGIME DEPENDS ON THE EXISTANCE OF NITRATES *********************** -! - IF (W(4).LE.TINY) THEN ! NO3 NOT EXIST, WATER NOT POSSIBLE - SCASE = 'M3 ; SUBCASE 1' - CALL CALCM1A - SCASE = 'M3 ; SUBCASE 1' - RETURN - ENDIF -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX(W(2)-CHI11, ZERO) - CAFR = MAX(W(6)-CHI11, ZERO) - CHI9 = MIN (0.5D0*W(7), SO4FR) ! CK2S04 - FRK = MAX(W(7)-2.0*CHI9, ZERO) - SO4FR = MAX(SO4FR-CHI9, ZERO) - CHI10 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8)-CHI10, ZERO) - SO4FR = MAX(SO4FR-CHI10, ZERO) - CHI1 = MAX (SO4FR,ZERO) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCM3 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCM3 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4, MGSO4, NH4CL, NACL -! 4. Completely dissolved: NH4NO3, NANO3 -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCM3 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A10 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD, RIZ - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP, AA - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A3 = XK6 /(R*TEMP*R*TEMP) - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A10 = XK23 *(WATER/GAMA(21))**2.0 -! A8 = XK9 *(WATER/GAMA(3))**2.0 -! A11 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MIN(MAX(PSI5, TINY),CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,TINY),CHI4) - ELSE - PSI4 = TINY - ENDIF -! -! IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION -! VITA = 2.0*PSI1+PSI8+PSI6 ! AN DE DOULEPSEI KALA VGALE PSI1 APO DW -! GKAMA= PSI6*(2.0*PSI1+PSI8)-A7 -! DIAK = MAX(VITA**2.0 - 4.0D0*GKAMA,ZERO) -! PSI7 = 0.5D0*( -VITA + SQRT(DIAK) ) -! PSI7 = MAX(MIN(PSI7, CHI7), ZERO) -! ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION - DIAK = (PSI8-PSI6)**2.0 + 4.0*A7 - PSI7 = 0.5D0*( -(PSI8+PSI6) + SQRT(DIAK) ) - PSI7 = MAX(MIN(PSI7, CHI7), ZERO) - ENDIF -!C -! - IF (CHI1.GT.TINY .AND. WATER.GT.TINY) THEN !NA2SO4 - RIZ = SQRT(A9/A1) - AA = (0.5D0*RIZ*(PSI7+PSI8)+PSI10+(1.0+RIZ)*(PSI7+PSI8)) - & /(1.0+RIZ) - BB = ((PSI7+PSI8)*(0.5D0*RIZ*(PSI7+PSI8)+PSI10)+0.25D0* - & (PSI7+PSI8)**2.0*(1.0+RIZ))/(1.0+RIZ) - CC = (0.25D0*(PSI7+PSI8)**2.0*(0.5D0*RIZ*(PSI7+PSI8)+PSI10) - & -A1/4.0)/(1.0+RIZ) -! AA = PSI7+PSI8+PSI9+PSI10 -! BB = (PSI7+PSI8)*(PSI9+PSI10)+0.25D0*(PSI7+PSI8)**2. -! CC = ((PSI7+PSI8)**2.*(PSI9+PSI10)-A1)/4.0D0 -! - CALL POLY3 (AA,BB,CC,PSI1,ISLV) - IF (ISLV.EQ.0) THEN - PSI1 = MIN (PSI1,CHI1) - ELSE - PSI1 = ZERO - ENDIF - ENDIF -! - IF (CHI9.GE.TINY) THEN - PSI9 = 0.5D0*SQRT(A9/A1)*(2.0D0*PSI1+PSI7+PSI8) - PSI9 = MAX (MIN (PSI9,CHI9), ZERO) - ELSE - PSI9 = ZERO - ENDIF -! -! IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 -! CALL POLY3 (PSI1+PSI10,ZERO,-A9/4.0, PSI9, ISLV) -! IF (ISLV.EQ.0) THEN -! PSI9 = MIN (PSI9,CHI9) -! ELSE -! PSI9 = ZERO -! ENDIF -! ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 + PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 ! NO3I - MOLAL (8) = PSI11 ! CAI - MOLAL (9) = 2.0*PSI9 ! KI - MOLAL (10)= PSI10 ! MGI -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = MAX(CHI7 - PSI7, ZERO) - CNANO3 = ZERO - CNA2SO4 = MAX(CHI1 - PSI1, ZERO) - CK2SO4 = MAX(CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF - PSI3 = MAX (MIN(MIN(PSI3,CHI4-PSI4),CHI6-PSI6), ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCM3 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCM3 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCM3 ******************************************* -! - END FUNCTION FUNCM3 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCM2 -! *** CASE M2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4, MGSO4, NH4CL, NACL, NANO3 -! -! THERE ARE THREE REGIMES IN THIS CASE: -! 1. NH4NO3(s) POSSIBLE. LIQUID & SOLID AEROSOL (SUBROUTINE CALCH2A) -! 2. NH4NO3(s) NOT POSSIBLE, AND RH < MDRH. SOLID AEROSOL ONLY -! 3. NH4NO3(s) NOT POSSIBLE, AND RH >= MDRH. (MDRH REGION) -! -! REGIMES 2. AND 3. ARE CONSIDERED TO BE THE SAME AS CASES M1A, M2B -! RESPECTIVELY (BECAUSE MDRH POINTS COINCIDE). -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCM2() - !EXTERNAL CALCM1A, CALCM3 -! -! *** REGIME DEPENDS ON THE EXISTANCE OF NITRATES *********************** -! - CALL CALCM1A -! - IF (CNH4NO3.GT.TINY) THEN ! NO3 EXISTS, WATER POSSIBLE - SCASE = 'M2 ; SUBCASE 1' - CALL CALCM2A - SCASE = 'M2 ; SUBCASE 1' - ELSE ! NO3 NON EXISTANT, WATER NOT POSSIBLE - SCASE = 'M2 ; SUBCASE 1' - CALL CALCM1A - SCASE = 'M2 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY .AND. RH.LT.DRMM2) THEN ! DRY AEROSOL - SCASE = 'M2 ; SUBCASE 2' -! - ELSEIF (WATER.LE.TINY .AND. RH.GE.DRMM2) THEN ! MDRH OF M2 - SCASE = 'M2 ; SUBCASE 3' - CALL CALCMDRH2 (RH, DRMM2, DRNANO3, CALCM1A, CALCM3) - SCASE = 'M2 ; SUBCASE 3' - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCM2 ****************************************** -! - END SUBROUTINE CALCM2 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCM2A -! *** CASE M2A -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4, MGSO4, NH4CL, NACL, NANO3 -! 4. Completely dissolved: NH4NO3 -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCM2A() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: PSI6HI, PSI6LO - Real(kind=fp) :: SO4FR, CAFR, DELTA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX(W(2)-CHI11, ZERO) - CAFR = MAX(W(6)-CHI11, ZERO) - CHI9 = MIN (0.5D0*W(7), SO4FR) ! CK2S04 - FRK = MAX(W(7)-2.0*CHI9, ZERO) - SO4FR = MAX(SO4FR-CHI9, ZERO) - CHI10 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8)-CHI10, ZERO) - SO4FR = MAX(SO4FR-CHI10, ZERO) - CHI1 = MAX (SO4FR,ZERO) ! CNA2SO4 - CHI2 = ZERO ! CNH42S4 - CHI3 = ZERO ! CNH4CL - FRNA = MAX (W(1)-2.0*CHI1, ZERO) - CHI8 = MIN (FRNA, W(4)) ! CNANO3 - CHI4 = W(3) ! NH3(g) - CHI5 = MAX (W(4)-CHI8, ZERO) ! HNO3(g) - CHI7 = MIN (MAX(FRNA-CHI8, ZERO), W(5)) ! CNACL - CHI6 = MAX (W(5)-CHI7, ZERO) ! HCL(g) -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCM2A (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCM2A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4, MGSO4, NH4CL, NACL, NANO3 -! 4. Completely dissolved: NH4NO3 -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCM2A (X) - Real(kind=fp) :: X - Real(kind=fp) :: A1, A2, A3, A4, A5, A6, A7, A8, A9, A64 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP, AA - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32, RIZ - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = CHI1 - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK5 *(WATER/GAMA(2))**3.0 - A3 = XK6 /(R*TEMP*R*TEMP) - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A8 = XK9 *(WATER/GAMA(3))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A64 = (XK3*XK2/XKW)*(GAMA(10)/GAMA(5)/GAMA(11))**2.0 - A64 = A64*(R*TEMP*WATER)**2.0 -! A11 = XK1*WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6+PSI7) - A6/A5*PSI8*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7) - PSI5 = MIN(MAX(PSI5, TINY),CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,TINY),CHI4) - ELSE - PSI4 = TINY - ENDIF -! -! IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION -! VITA = 2.0*PSI1+PSI8+PSI6 -! GKAMA= PSI6*(2.0*PSI1+PSI8)-A7 -! DIAK = MAX(VITA**2.0 - 4.0D0*GKAMA,ZERO) -! PSI7 = 0.5D0*( -VITA + SQRT(DIAK) ) -! PSI7 = MAX(MIN(PSI7, CHI7), ZERO) -! ENDIF -!C -! IF (CHI8.GT.TINY .AND. WATER.GT.TINY) THEN ! NANO3 DISSOLUTION -! BIT = 2.0*PSI1+PSI7+PSI5 -! GKAM = PSI5*(2.0*PSI1+PSI8)-A8 -! DIA = BIT**2.0 - 4.0D0*GKAM -! PSI8 = 0.5D0*( -BIT + SQRT(DIA) ) -! PSI8 = MAX(MIN(PSI8, CHI8), ZERO) -! ENDIF -!C - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION - DIAK = (PSI8-PSI6)**2.0 + 4.0*A7 - PSI7 = 0.5D0*( -(PSI8+PSI6) + SQRT(DIAK) ) - PSI7 = MAX(MIN(PSI7, CHI7), ZERO) - ENDIF -! - IF (CHI8.GT.TINY .AND. WATER.GT.TINY) THEN ! NANO3 DISSOLUTION - DIAK = (PSI7-PSI5)**2.0 + 4.0*A8 - PSI8 = 0.5D0*( -(PSI7+PSI5) + SQRT(DIAK) ) - PSI8 = MAX(MIN(PSI8, CHI8), ZERO) - ENDIF -! - IF (CHI1.GT.TINY .AND. WATER.GT.TINY) THEN !NA2SO4 - RIZ = SQRT(A9/A1) - AA = (0.5D0*RIZ*(PSI7+PSI8)+PSI10+(1.0+RIZ)*(PSI7+PSI8)) - & /(1.0+RIZ) - BB = ((PSI7+PSI8)*(0.5D0*RIZ*(PSI7+PSI8)+PSI10)+0.25D0* - & (PSI7+PSI8)**2.0*(1.0+RIZ))/(1.0+RIZ) - CC = (0.25D0*(PSI7+PSI8)**2.0*(0.5D0*RIZ*(PSI7+PSI8)+PSI10) - & -A1/4.0)/(1.0+RIZ) -! -! AA = PSI7+PSI8+PSI9+PSI10 -! BB = (PSI7+PSI8)*(PSI9+PSI10)+0.25D0*(PSI7+PSI8)**2. -! CC = ((PSI7+PSI8)**2.*(PSI9+PSI10)-A1)/4.0D0 -!C - CALL POLY3 (AA,BB,CC,PSI1,ISLV) - IF (ISLV.EQ.0) THEN - PSI1 = MIN (PSI1,CHI1) - ELSE - PSI1 = ZERO - ENDIF - ENDIF -! - IF (CHI9.GE.TINY .AND. WATER.GT.TINY) THEN -! PSI9 = 0.5D0*SQRT(A9/A1)*(2.0D0*PSI1+PSI7+PSI8) - PSI9 = 0.5D0*SQRT(A9/A1)*(2.0D0*PSI1+PSI7+PSI8) - PSI9 = MAX (MIN (PSI9,CHI9), ZERO) - ELSE - PSI9 = ZERO - ENDIF -! -! IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 -! CALL POLY3 (PSI1+PSI10,ZERO,-A9/4.0, PSI9, ISLV) -! IF (ISLV.EQ.0) THEN -! PSI9 = MAX (MIN (PSI9,CHI9), ZERO) -! ELSE -! PSI9 = ZERO -! ENDIF -! ENDIF -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 + 2.0*PSI1 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 ! CLI - MOLAL (5) = PSI2 + PSI1 + PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 ! NO3I - MOLAL (8) = PSI11 ! CAI - MOLAL (9) = 2.0*PSI9 ! KI - MOLAL (10)= PSI10 ! MGI -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH42S4 = ZERO - CNH4NO3 = ZERO - CNACL = MAX(CHI7 - PSI7, ZERO) - CNANO3 = MAX(CHI8 - PSI8, ZERO) - CNA2SO4 = MAX(CHI1 - PSI1, ZERO) - CK2SO4 = MAX(CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF - PSI3 = MAX(MIN(MIN(PSI3,CHI4-PSI4),CHI6-PSI6), ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCM2A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A64 - ONE -20 FUNCM2A = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCM2A ******************************************* -! - END FUNCTION FUNCM2A - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCM1 -! *** CASE M1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4, MGSO4, NH4CL, NACL, NANO3, NH4NO3 -! -! THERE ARE TWO POSSIBLE REGIMES HERE, DEPENDING ON RELATIVE HUMIDITY: -! 1. WHEN RH >= MDRH ; LIQUID PHASE POSSIBLE (MDRH REGION) -! 2. WHEN RH < MDRH ; ONLY SOLID PHASE POSSIBLE (SUBROUTINE CALCH1A) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCM1() - !EXTERNAL CALCM1A, CALCM2A -! -! *** REGIME DEPENDS UPON THE AMBIENT RELATIVE HUMIDITY ***************** -! - IF (RH.LT.DRMM1) THEN - SCASE = 'M1 ; SUBCASE 1' - CALL CALCM1A ! SOLID PHASE ONLY POSSIBLE - SCASE = 'M1 ; SUBCASE 1' - ELSE - SCASE = 'M1 ; SUBCASE 2' ! LIQUID & SOLID PHASE POSSIBLE - CALL CALCMDRH2 (RH, DRMM1, DRNH4NO3, CALCM1A, CALCM2A) - SCASE = 'M1 ; SUBCASE 2' - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCM1 ****************************************** -! - END SUBROUTINE CALCM1 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCM1A -! *** CASE M1A -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr < 2) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, NA2SO4, MGSO4, NH4CL, NACL, NANO3, NH4NO3 -! -! *** COPYRIGHT 1996-2000, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= - - SUBROUTINE CALCM1A() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI6LO, PSI6HI - Real(kind=fp) :: ALF, BET, GAM, NO3FR, RTSQ, A1, A2, THETA1 - Real(kind=fp) :: BB, CC, LAMDA, LAMDA1, LAMDA2, KAPA, KAPA1 - Real(kind=fp) :: DD, SQDD, DD1, SQDD1, DD2, SQDD2 - Real(kind=fp) :: SO4FR, CAFR, NAFR, CLFR - Real(kind=fp) :: THETA2, KAPA2 - Integer :: I -! -! *** CALCULATE NON VOLATILE SOLIDS *********************************** -! - CCASO4 = MIN (W(6), W(2)) ! CCASO4 - SO4FR = MAX(W(2) - CCASO4, ZERO) - CAFR = MAX(W(6) - CCASO4, ZERO) - CK2SO4 = MIN (0.5D0*W(7), SO4FR) ! CK2S04 - FRK = MAX(W(7) - 2.0*CK2SO4, ZERO) - SO4FR = MAX(SO4FR - CK2SO4, ZERO) - CMGSO4 = MIN (W(8), SO4FR) ! CMGSO4 - FRMG = MAX(W(8) - CMGSO4, ZERO) - SO4FR = MAX(SO4FR - CMGSO4, ZERO) - CNA2SO4 = MAX (SO4FR,ZERO) ! CNA2SO4 - NAFR = MAX (W(1)-2.0*CNA2SO4, ZERO) - CNANO3 = MIN (NAFR, W(4)) ! CNANO3 - NO3FR = MAX (W(4)-CNANO3, ZERO) - CNACL = MIN (MAX(NAFR-CNANO3, ZERO), W(5)) ! CNACL - CLFR = MAX (W(5)-CNACL, ZERO) -! -! *** CALCULATE VOLATILE SPECIES ************************************** -! - ALF = W(3) ! FREE NH3 - BET = CLFR ! FREE CL - GAM = NO3FR ! FREE NO3 -! - RTSQ = R*TEMP*R*TEMP - A1 = XK6/RTSQ - A2 = XK10/RTSQ -! - THETA1 = GAM - BET*(A2/A1) - THETA2 = A2/A1 -! -! QUADRATIC EQUATION SOLUTION -! - BB = (THETA1-ALF-BET*(ONE+THETA2))/(ONE+THETA2) - CC = (ALF*BET-A1-BET*THETA1)/(ONE+THETA2) - DD = BB*BB - 4.0D0*CC - IF (DD.LT.ZERO) GOTO 100 ! Solve each reaction seperately -! -! TWO ROOTS FOR KAPA, CHECK AND SEE IF ANY VALID -! - SQDD = SQRT(DD) - KAPA1 = 0.5D0*(-BB+SQDD) - KAPA2 = 0.5D0*(-BB-SQDD) - LAMDA1 = THETA1 + THETA2*KAPA1 - LAMDA2 = THETA1 + THETA2*KAPA2 -! - IF (KAPA1.GE.ZERO .AND. LAMDA1.GE.ZERO) THEN - IF (ALF-KAPA1-LAMDA1.GE.ZERO .AND. - & BET-KAPA1.GE.ZERO .AND. GAM-LAMDA1.GE.ZERO) THEN - KAPA = KAPA1 - LAMDA= LAMDA1 - GOTO 200 - ENDIF - ENDIF -! - IF (KAPA2.GE.ZERO .AND. LAMDA2.GE.ZERO) THEN - IF (ALF-KAPA2-LAMDA2.GE.ZERO .AND. - & BET-KAPA2.GE.ZERO .AND. GAM-LAMDA2.GE.ZERO) THEN - KAPA = KAPA2 - LAMDA= LAMDA2 - GOTO 200 - ENDIF - ENDIF -! -! SEPERATE SOLUTION OF NH4CL & NH4NO3 EQUILIBRIA -! -100 KAPA = ZERO - LAMDA = ZERO - DD1 = (ALF+BET)*(ALF+BET) - 4.0D0*(ALF*BET-A1) - DD2 = (ALF+GAM)*(ALF+GAM) - 4.0D0*(ALF*GAM-A2) -! -! NH4CL EQUILIBRIUM -! - IF (DD1.GE.ZERO) THEN - SQDD1 = SQRT(DD1) - KAPA1 = 0.5D0*(ALF+BET + SQDD1) - KAPA2 = 0.5D0*(ALF+BET - SQDD1) -! - IF (KAPA1.GE.ZERO .AND. KAPA1.LE.MIN(ALF,BET)) THEN - KAPA = KAPA1 - ELSE IF (KAPA2.GE.ZERO .AND. KAPA2.LE.MIN(ALF,BET)) THEN - KAPA = KAPA2 - ELSE - KAPA = ZERO - ENDIF - ENDIF -! -! NH4NO3 EQUILIBRIUM -! - IF (DD2.GE.ZERO) THEN - SQDD2 = SQRT(DD2) - LAMDA1= 0.5D0*(ALF+GAM + SQDD2) - LAMDA2= 0.5D0*(ALF+GAM - SQDD2) -! - IF (LAMDA1.GE.ZERO .AND. LAMDA1.LE.MIN(ALF,GAM)) THEN - LAMDA = LAMDA1 - ELSE IF (LAMDA2.GE.ZERO .AND. LAMDA2.LE.MIN(ALF,GAM)) THEN - LAMDA = LAMDA2 - ELSE - LAMDA = ZERO - ENDIF - ENDIF -! -! IF BOTH KAPA, LAMDA ARE > 0, THEN APPLY EXISTANCE CRITERION -! - IF (KAPA.GT.ZERO .AND. LAMDA.GT.ZERO) THEN - IF (BET .LT. LAMDA/THETA1) THEN - KAPA = ZERO - ELSE - LAMDA= ZERO - ENDIF - ENDIF -! -! *** CALCULATE COMPOSITION OF VOLATILE SPECIES *********************** -! -200 CONTINUE - CNH4NO3 = LAMDA - CNH4CL = KAPA -! - GNH3 = ALF - KAPA - LAMDA - GHNO3 = GAM - LAMDA - GHCL = BET - KAPA -! - RETURN -! -! *** END OF SUBROUTINE CALCM1A ***************************************** -! - END SUBROUTINE CALCM1A - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP13 -! *** CASE P13 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4 -! 4. Completely dissolved: CA(NO3)2, CACL2, K2SO4, KNO3, KCL, MGSO4, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP13() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP13 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP13 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4 -! 4. Completely dissolved: CA(NO3)2, CACL2, K2SO4, KNO3, KCL, MGSO4, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP13 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A4, A5, A6, BB, CC, DD - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI4 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = CHI9 - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = CHI13 - PSI14 = CHI14 - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - - & A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN(MAX(PSI5, TINY),CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! -! *** CALCULATE SPECIATION ********************************************* -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -! -! *** CALCULATE H+ ***************************************************** -! -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -! -! *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -! - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH4NO3 = ZERO - CNH4CL = ZERO - CNACL = ZERO - CNANO3 = ZERO - CK2SO4 = ZERO - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = ZERO - CKCL = ZERO - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP13 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP13 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP13 ******************************************* -! - END FUNCTION FUNCP13 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP12 -! *** CASE P12 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4 -! 4. Completely dissolved: CA(NO3)2, CACL2, KNO3, KCL, MGSO4, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP12 - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP12 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP12 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4 -! 4. Completely dissolved: CA(NO3)2, CACL2, KNO3, KCL, MGSO4, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP12 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A2, A3, A4, A5, A6, A7, A9, A13, A14 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI4 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = CHI13 - PSI14 = CHI14 - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - - & A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN(MAX(PSI5, TINY),CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - BBP = PSI10+PSI13+PSI14 - CCP = (PSI13+PSI14)*(0.25D0*(PSI13+PSI14)+PSI10) - DDP = 0.25D0*(PSI13+PSI14)**2.0*PSI10-A9/4.0 - CALL POLY3 (BBP, CCP, DDP, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (MAX(PSI9,ZERO) , CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -! -! *** CALCULATE H+ ***************************************************** -! -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -!C -!C *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -!C - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH4NO3 = ZERO - CNH4CL = ZERO - CNACL = ZERO - CNANO3 = ZERO - CK2SO4 = MAX (CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = ZERO - CKCL = ZERO - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP12 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP12 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP12 ******************************************* -! - END FUNCTION FUNCP12 - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP11 -! *** CASE P11 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3 -! 4. Completely dissolved: CA(NO3)2, CACL2, KCL, MGSO4, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP11() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP11 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP11 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3 -! 4. Completely dissolved: CA(NO3)2, CACL2, KCL, MGSO4, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP11 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A2, A3, A4, A5, A6, A7, A9, A13, A14 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = ZERO - PSI14 = CHI14 - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A13 = XK19 *(WATER/GAMA(19))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - - & A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN (MAX (PSI5, TINY) , CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI13.GT.TINY .AND. WATER.GT.TINY) THEN !KNO3 - VHTA = PSI5+PSI8+2.0*PSI12+2.0*PSI15+PSI14+2.0*PSI9 - GKAMA = (PSI5+PSI8+2.0*PSI12+2.0*PSI15)*(2.0*PSI9+PSI14)-A13 - DELTA = MAX(VHTA*VHTA-4.d0*GKAMA,ZERO) - PSI13 =0.5d0*(-VHTA + SQRT(DELTA)) - PSI13 = MIN(MAX(PSI13,ZERO),CHI13) - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - BBP = PSI10+PSI13+PSI14 - CCP = (PSI13+PSI14)*(0.25D0*(PSI13+PSI14)+PSI10) - DDP = 0.25D0*(PSI13+PSI14)**2.0*PSI10-A9/4.0 - CALL POLY3 (BBP, CCP, DDP, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (MAX(PSI9,ZERO) , CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -! -! *** CALCULATE H+ ***************************************************** -! -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -!C -!C *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -!C - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH4NO3 = ZERO - CNH4CL = ZERO - CNACL = ZERO - CNANO3 = ZERO - CK2SO4 = MAX (CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = MAX (CHI13 - PSI13, ZERO) - CKCL = ZERO - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP11 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP11 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP11 ******************************************* -! - END FUNCTION FUNCP11 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP10 -! *** CASE P10 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4 -! 4. Completely dissolved: CA(NO3)2, CACL2, KCL, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP10() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP10 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP10 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4 -! 4. Completely dissolved: CA(NO3)2, CACL2, KCL, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP10 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A2, A3, A4, A5, A6, A7, A9, A13, A14 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = ZERO - PSI14 = CHI14 - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A13 = XK19 *(WATER/GAMA(19))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - - & A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN (MAX (PSI5, TINY) , CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI13.GT.TINY .AND. WATER.GT.TINY) THEN !KNO3 - VHTA = PSI5+PSI8+2.0*PSI12+2.0*PSI15+PSI14+2.0*PSI9 - GKAMA = (PSI5+PSI8+2.0*PSI12+2.0*PSI15)*(2.0*PSI9+PSI14)-A13 - DELTA = MAX(VHTA*VHTA-4.d0*GKAMA,ZERO) - PSI13 =0.5d0*(-VHTA + SQRT(DELTA)) - PSI13 = MIN(MAX(PSI13,ZERO),CHI13) - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - BBP = PSI10+PSI13+PSI14 - CCP = (PSI13+PSI14)*(0.25D0*(PSI13+PSI14)+PSI10) - DDP = 0.25D0*(PSI13+PSI14)**2.0*PSI10-A9/4.0 - CALL POLY3 (BBP, CCP, DDP, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (MAX(PSI9,ZERO) , CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -! -! *** CALCULATE H+ ***************************************************** -! -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -!C -!C *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -!C - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH4NO3 = ZERO - CNH4CL = ZERO - CNACL = ZERO - CNANO3 = ZERO - CK2SO4 = MAX (CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = MAX (CHI13 - PSI13, ZERO) - CKCL = ZERO - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP10 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP10 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP10 ******************************************* -! - END FUNCTION FUNCP10 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP9 -! *** CASE P9 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL -! 4. Completely dissolved: CA(NO3)2, CACL2, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP9() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP9 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP9 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL -! 4. Completely dissolved: CA(NO3)2, CACL2, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP9 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A2, A3, A4, A5, A6, A7, A9, A13, A14 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = ZERO - PSI14 = ZERO - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A13 = XK19 *(WATER/GAMA(19))**2.0 - A14 = XK20 *(WATER/GAMA(20))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - - & A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN (MAX (PSI5, TINY) , CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI13.GT.TINY .AND. WATER.GT.TINY) THEN !KNO3 - VHTA = PSI5+PSI8+2.0*PSI12+2.0*PSI15+PSI14+2.0*PSI9 - GKAMA = (PSI5+PSI8+2.0*PSI12+2.0*PSI15)*(2.0*PSI9+PSI14)-A13 - DELTA = MAX(VHTA*VHTA-4.d0*GKAMA,ZERO) - PSI13 = 0.5d0*(-VHTA + SQRT(DELTA)) - PSI13 = MIN(MAX(PSI13,ZERO),CHI13) - ENDIF -! - IF (CHI14.GT.TINY .AND. WATER.GT.TINY) THEN !KCL - PSI14 = A14/A13*(PSI5+PSI8+2.0*PSI12+PSI13+2.0*PSI15) - - & PSI6-PSI7-2.0*PSI16-2.0*PSI17 - PSI14 = MIN (MAX (PSI14, ZERO), CHI14) - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - BBP = PSI10+PSI13+PSI14 - CCP = (PSI13+PSI14)*(0.25D0*(PSI13+PSI14)+PSI10) - DDP = 0.25D0*(PSI13+PSI14)**2.0*PSI10-A9/4.0 - CALL POLY3 (BBP, CCP, DDP, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (MAX(PSI9,ZERO) , CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -! -! *** CALCULATE H+ ***************************************************** -! -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -!C -!C *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -!C - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH4NO3 = ZERO - CNH4CL = ZERO - CNACL = ZERO - CNANO3 = ZERO - CK2SO4 = MAX (CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = MAX (CHI13 - PSI13, ZERO) - CKCL = MAX (CHI14 - PSI14, ZERO) - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP9 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP9 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP9 ******************************************* -! - END FUNCTION FUNCP9 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP8 -! *** CASE P8 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL -! 4. Completely dissolved: CA(NO3)2, CACL2, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP8() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP8 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP8 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL -! 4. Completely dissolved: CA(NO3)2, CACL2, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP8 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A2, A3, A4, A5, A6, A7, A9, A13, A14 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI7 = CHI7 - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = ZERO - PSI14 = ZERO - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A13 = XK19 *(WATER/GAMA(19))**2.0 - A14 = XK20 *(WATER/GAMA(20))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - - & A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN (MAX (PSI5, TINY) , CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI13.GT.TINY .AND. WATER.GT.TINY) THEN !KNO3 - VHTA = PSI5+PSI8+2.0*PSI12+2.0*PSI15+PSI14+2.0*PSI9 - GKAMA = (PSI5+PSI8+2.0*PSI12+2.0*PSI15)*(2.0*PSI9+PSI14)-A13 - DELTA = MAX(VHTA*VHTA-4.d0*GKAMA,ZERO) - PSI13 = 0.5d0*(-VHTA + SQRT(DELTA)) - PSI13 = MIN(MAX(PSI13,ZERO),CHI13) - ENDIF -! - IF (CHI14.GT.TINY .AND. WATER.GT.TINY) THEN !KCL - PSI14 = A14/A13*(PSI5+PSI8+2.0*PSI12+PSI13+2.0*PSI15) - - & PSI6-PSI7-2.0*PSI16-2.0*PSI17 - PSI14 = MIN (MAX (PSI14, ZERO), CHI14) - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - BBP = PSI10+PSI13+PSI14 - CCP = (PSI13+PSI14)*(0.25D0*(PSI13+PSI14)+PSI10) - DDP = 0.25D0*(PSI13+PSI14)**2.0*PSI10-A9/4.0 - CALL POLY3 (BBP, CCP, DDP, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (MAX(PSI9,ZERO) , CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -! -! *** CALCULATE H+ ***************************************************** -! -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -! -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -!C -!C *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -!C - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH4NO3 = ZERO -! CNH4CL = ZERO - CNACL = ZERO - CNANO3 = ZERO - CK2SO4 = MAX (CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = MAX (CHI13 - PSI13, ZERO) - CKCL = MAX (CHI14 - PSI14, ZERO) - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF - PSI3 = MAX(MIN(MIN(PSI3,CHI4-PSI4),CHI6-PSI6),ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP8 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP8 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP8 ******************************************* -! - END FUNCTION FUNCP8 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP7 -! *** CASE P7 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL -! 4. Completely dissolved: CA(NO3)2, CACL2, -! MG(NO3)2, MGCL2, NANO3, NH4NO3 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP7() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: A1, A6 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP7 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP7 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL -! 4. Completely dissolved: CA(NO3)2, CACL2, -! MG(NO3)2, MGCL2, NANO3, NH4NO3 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP7 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A2, A3, A4, A5, A6, A7, A9, A13, A14 - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA, BB, CC, DD - Real(kind=fp) :: VHTA, GKAMA, BBP, CCP, DDP - Real(kind=fp) :: VITA, DIAK, DELT, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI7 = ZERO - PSI8 = CHI8 - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = ZERO - PSI14 = ZERO - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A13 = XK19 *(WATER/GAMA(19))**2.0 - A14 = XK20 *(WATER/GAMA(20))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - - & A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN (MAX (PSI5, TINY) , CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI13.GT.TINY .AND. WATER.GT.TINY) THEN !KNO3 - VHTA = PSI5+PSI8+2.0*PSI12+2.0*PSI15+PSI14+2.0*PSI9 - GKAMA = (PSI5+PSI8+2.0*PSI12+2.0*PSI15)*(2.0*PSI9+PSI14)-A13 - DELTA = MAX(VHTA*VHTA-4.d0*GKAMA,ZERO) - PSI13 = 0.5d0*(-VHTA + SQRT(DELTA)) - PSI13 = MIN(MAX(PSI13,ZERO),CHI13) - ENDIF -! - IF (CHI14.GT.TINY .AND. WATER.GT.TINY) THEN !KCL - PSI14 = A14/A13*(PSI5+PSI8+2.0*PSI12+PSI13+2.0*PSI15) - - & PSI6-PSI7-2.0*PSI16-2.0*PSI17 - PSI14 = MIN (MAX (PSI14, ZERO), CHI14) - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - BBP = PSI10+PSI13+PSI14 - CCP = (PSI13+PSI14)*(0.25D0*(PSI13+PSI14)+PSI10) - DDP = 0.25D0*(PSI13+PSI14)**2.0*PSI10-A9/4.0 - CALL POLY3 (BBP, CCP, DDP, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (MAX(PSI9,ZERO) , CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION - VITA = PSI6+PSI14+PSI8+2.0*PSI16+2.0*PSI17 - GKAMA= PSI8*(2.0*PSI16+PSI6+PSI14+2.0*PSI17)-A7 - DIAK = MAX(VITA*VITA - 4.0D0*GKAMA,ZERO) - PSI7 = 0.5D0*( -VITA + SQRT(DIAK) ) - PSI7 = MAX(MIN(PSI7, CHI7), ZERO) - ENDIF -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -! -! *** CALCULATE H+ ***************************************************** -! -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -!C -!C *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -!C - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH4NO3 = ZERO -! CNH4CL = ZERO - CNACL = MAX (CHI7 - PSI7, ZERO) - CNANO3 = ZERO - CK2SO4 = MAX (CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = MAX (CHI13 - PSI13, ZERO) - CKCL = MAX (CHI14 - PSI14, ZERO) - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF - PSI3 = MAX(MIN(MIN(PSI3,CHI4-PSI4),CHI6-PSI6),ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP7 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP7 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP7 ******************************************* -! - END FUNCTION FUNCP7 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP6 -! *** CASE P6 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL, NANO3 -! 4. Completely dissolved: CA(NO3)2, CACL2, -! MG(NO3)2, MGCL2, NH4NO3 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP6() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX, DELTA - Real(kind=fp) :: PSI6LO, PSI6HI - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP6 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP6 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL, NANO3 -! 4. Completely dissolved: CA(NO3)2, CACL2, -! MG(NO3)2, MGCL2, NH4NO3 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP6 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A2, A3, A4, A5, A6, A7, A8, A9, A13, A14 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: BB, CC, DD, VHTA, GKAMA, DELTA, BBP, CCP - Real(kind=fp) :: DDP, VITA, DIAK, PSI31, PSI32, DELT - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI7 = ZERO - PSI8 = ZERO - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = ZERO - PSI14 = ZERO - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A13 = XK19 *(WATER/GAMA(19))**2.0 - A14 = XK20 *(WATER/GAMA(20))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A8 = XK9 *(WATER/GAMA(3))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = CHI5*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - - & A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN (MAX (PSI5, TINY) , CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI13.GT.TINY .AND. WATER.GT.TINY) THEN !KNO3 - VHTA = PSI5+PSI8+2.0*PSI12+2.0*PSI15+PSI14+2.0*PSI9 - GKAMA = (PSI5+PSI8+2.0*PSI12+2.0*PSI15)*(2.0*PSI9+PSI14)-A13 - DELTA = MAX(VHTA*VHTA-4.d0*GKAMA,ZERO) - PSI13 = 0.5d0*(-VHTA + SQRT(DELTA)) - PSI13 = MIN(MAX(PSI13,ZERO),CHI13) - ENDIF -! - IF (CHI14.GT.TINY .AND. WATER.GT.TINY) THEN !KCL - PSI14 = A14/A13*(PSI5+PSI8+2.0*PSI12+PSI13+2.0*PSI15) - - & PSI6-PSI7-2.0*PSI16-2.0*PSI17 - PSI14 = MIN (MAX (PSI14, ZERO), CHI14) - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - BBP = PSI10+PSI13+PSI14 - CCP = (PSI13+PSI14)*(0.25D0*(PSI13+PSI14)+PSI10) - DDP = 0.25D0*(PSI13+PSI14)**2.0*PSI10-A9/4.0 - CALL POLY3 (BBP, CCP, DDP, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (MAX(PSI9,ZERO) , CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION - VITA = PSI6+PSI14+PSI8+2.0*PSI16+2.0*PSI17 - GKAMA= PSI8*(2.0*PSI16+PSI6+PSI14+2.0*PSI17)-A7 - DIAK = MAX(VITA*VITA - 4.0D0*GKAMA,ZERO) - PSI7 = 0.5D0*( -VITA + SQRT(DIAK) ) - PSI7 = MAX(MIN(PSI7, CHI7), ZERO) - ENDIF -! - IF (CHI8.GT.TINY .AND. WATER.GT.TINY) THEN ! NANO3 DISSOLUTION -! VIT = PSI5+PSI13+PSI7+2.0*PSI12+2.0*PSI15 -! GKAM = PSI7*(2.0*PSI12+PSI5+PSI13+2.0*PSI15)-A8 -! DIA = MAX(VIT*VIT - 4.0D0*GKAM,ZERO) -! PSI8 = 0.5D0*( -VIT + SQRT(DIA) ) - PSI8 = A8/A7*(PSI6+PSI7+PSI14+2.0*PSI16+2.0*PSI17)- - & PSI5-2.0*PSI12-PSI13-2.0*PSI15 - PSI8 = MAX(MIN(PSI8, CHI8), ZERO) - ENDIF -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -! -! *** CALCULATE H+ ***************************************************** -! -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -! -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -!C -!C *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -!C - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! - CNH4NO3 = ZERO -! CNH4CL = ZERO - CNACL = MAX (CHI7 - PSI7, ZERO) - CNANO3 = MAX (CHI8 - PSI8, ZERO) - CK2SO4 = MAX (CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = MAX (CHI13 - PSI13, ZERO) - CKCL = MAX (CHI14 - PSI14, ZERO) - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF - PSI3 = MAX(MIN(MIN(PSI3,CHI4-PSI4),CHI6-PSI6),ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP6 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP6 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP6 ******************************************* -! - END FUNCTION FUNCP6 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP5 -! *** CASE P5 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, KCL, MGSO4, -! NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP5() - !EXTERNAL CALCP1A, CALCP6 - Integer :: I -! -! *** REGIME DEPENDS ON THE EXISTANCE OF WATER AND OF THE RH ************ -! - IF (W(4).GT.TINY) THEN ! NO3 EXIST, WATER POSSIBLE - SCASE = 'P5 ; SUBCASE 1' - CALL CALCP5A - SCASE = 'P5 ; SUBCASE 1' - ELSE ! NO3, CL NON EXISTANT - SCASE = 'P1 ; SUBCASE 1' - CALL CALCP1A - SCASE = 'P1 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRMP5) THEN ! ONLY SOLIDS - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCP1A - SCASE = 'P5 ; SUBCASE 2' - RETURN - ELSE - SCASE = 'P5 ; SUBCASE 3' ! MDRH REGION (CaSO4, K2SO4, KNO3, KCL, MGSO4, -! NANO3, NACL, NH4NO3, NH4CL) - CALL CALCMDRH2 (RH, DRMP5, DRNH4NO3, CALCP1A, CALCP6) - SCASE = 'P5 ; SUBCASE 3' - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCP5 ****************************************** -! - END SUBROUTINE CALCP5 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP5A -! *** CASE P5A -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL, NANO3, NH4NO3 -! 4. Completely dissolved: CA(NO3)2, CACL2, -! MG(NO3)2, MGCL2 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP5A() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: PSI6LO, PSI6HI, DELTA - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP5 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP5 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL, NANO3, NH4NO3 -! 4. Completely dissolved: CA(NO3)2, CACL2, -! MG(NO3)2, MGCL2 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP5 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A2, A3, A4, A5, A6, A7, A8, A9, A13, A14 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: BB, CC, DD, VHTA, GKAMA, DELTA, BBP, CCP, DDP - Real(kind=fp) :: VITA, DIAK, DELT, PSI21, PSI22, PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI7 = ZERO - PSI8 = ZERO - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = ZERO - PSI14 = ZERO - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A13 = XK19 *(WATER/GAMA(19))**2.0 - A14 = XK20 *(WATER/GAMA(20))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A8 = XK9 *(WATER/GAMA(3))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = (CHI5-PSI2)*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - & - A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN (MAX (PSI5, TINY) , CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI13.GT.TINY .AND. WATER.GT.TINY) THEN !KNO3 - VHTA = PSI5+PSI8+2.0*PSI12+2.0*PSI15+PSI14+2.0*PSI9 - GKAMA = (PSI5+PSI8+2.0*PSI12+2.0*PSI15)*(2.0*PSI9+PSI14)-A13 - DELTA = MAX(VHTA*VHTA-4.d0*GKAMA,ZERO) - PSI13 = 0.5d0*(-VHTA + SQRT(DELTA)) - PSI13 = MIN(MAX(PSI13,ZERO),CHI13) - ENDIF -! - IF (CHI14.GT.TINY .AND. WATER.GT.TINY) THEN !KCL - PSI14 = A14/A13*(PSI5+PSI8+2.0*PSI12+PSI13+2.0*PSI15) - - & PSI6-PSI7-2.0*PSI16-2.0*PSI17 - PSI14 = MIN (MAX (PSI14, ZERO), CHI14) - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - BBP = PSI10+PSI13+PSI14 - CCP = (PSI13+PSI14)*(0.25D0*(PSI13+PSI14)+PSI10) - DDP = 0.25D0*(PSI13+PSI14)**2.0*PSI10-A9/4.0 - CALL POLY3 (BBP, CCP, DDP, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (MAX(PSI9,ZERO) , CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION - VITA = PSI6+PSI14+PSI8+2.0*PSI16+2.0*PSI17 - GKAMA= PSI8*(2.0*PSI16+PSI6+PSI14+2.0*PSI17)-A7 - DIAK = MAX(VITA*VITA - 4.0D0*GKAMA,ZERO) - PSI7 = 0.5D0*( -VITA + SQRT(DIAK) ) - PSI7 = MAX(MIN(PSI7, CHI7), ZERO) - ENDIF -! - IF (CHI8.GT.TINY .AND. WATER.GT.TINY) THEN ! NANO3 DISSOLUTION -! VIT = PSI5+PSI13+PSI7+2.0*PSI12+2.0*PSI15 -! GKAM = PSI7*(2.0*PSI12+PSI5+PSI13+2.0*PSI15)-A8 -! DIA = MAX(VIT*VIT - 4.0D0*GKAM,ZERO) -! PSI8 = 0.5D0*( -VIT + SQRT(DIA) ) - PSI8 = A8/A7*(PSI6+PSI7+PSI14+2.0*PSI16+2.0*PSI17)- - & PSI5-2.0*PSI12-PSI13-2.0*PSI15 - PSI8 = MAX(MIN(PSI8, CHI8), ZERO) - ENDIF -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -!C -!C *** CALCULATE H+ ***************************************************** -!C -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -!C -!C *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -!C - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! -! CNH4NO3 = ZERO -! CNH4CL = ZERO - CNACL = MAX (CHI7 - PSI7, ZERO) - CNANO3 = MAX (CHI8 - PSI8, ZERO) - CK2SO4 = MAX (CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = MAX (CHI13 - PSI13, ZERO) - CKCL = MAX (CHI14 - PSI14, ZERO) - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF - PSI3 = MAX(MIN(MIN(PSI3,CHI4-PSI4),CHI6-PSI6),ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! -! *** NH4NO3(s) calculations -! - A2 = XK10 /(R*TEMP*R*TEMP) - IF (GNH3*GHNO3.GT.A2) THEN - DELT = MIN(GNH3, GHNO3) - BB = -(GNH3+GHNO3) - CC = GNH3*GHNO3-A2 - DD = BB*BB - 4.0*CC - PSI21 = 0.5D0*(-BB + SQRT(DD)) - PSI22 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI21.GT.ZERO .AND. PSI21.GT.ZERO) THEN - PSI2 = PSI21 - ELSEIF (DELT-PSI22.GT.ZERO .AND. PSI22.GT.ZERO) THEN - PSI2 = PSI22 - ELSE - PSI2 = ZERO - ENDIF - ELSE - PSI2 = ZERO - ENDIF - PSI2 = MAX(MIN(MIN(PSI2,CHI4-PSI4-PSI3),CHI5-PSI5), ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI2, TINY) - GHCL = MAX(GHNO3 - PSI2, TINY) - CNH4NO3 = PSI2 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP5 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP5 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP5 ******************************************* -! - END FUNCTION FUNCP5 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP4 -! *** CASE P4 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, KCL, MGSO4, -! MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP4() - !EXTERNAL CALCP1A, CALCP5A - Integer :: I -! -! *** REGIME DEPENDS ON THE EXISTANCE OF WATER AND OF THE RH ************ -! - IF (W(4).GT.TINY) THEN ! NO3 EXIST, WATER POSSIBLE - SCASE = 'P4 ; SUBCASE 1' - CALL CALCP4A - SCASE = 'P4 ; SUBCASE 1' - ELSE ! NO3, CL NON EXISTANT - SCASE = 'P1 ; SUBCASE 1' - CALL CALCP1A - SCASE = 'P1 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRMP4) THEN ! ONLY SOLIDS - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCP1A - SCASE = 'P4 ; SUBCASE 2' - RETURN - ELSE - SCASE = 'P4 ; SUBCASE 3' ! MDRH REGION (CaSO4, K2SO4, KNO3, KCL, MGSO4, -! MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL) - CALL CALCMDRH2 (RH, DRMP4, DRMGNO32, CALCP1A, CALCP5A) - SCASE = 'P4 ; SUBCASE 3' - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCP4 ****************************************** -! - END SUBROUTINE CALCP4 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP4A -! *** CASE P4A -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL, NANO3, NH4NO3, MG(NO3)2 -! 4. Completely dissolved: CA(NO3)2, CACL2, MGCL2 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP4A - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Real(kind=fp) :: DELTA - Real(kind=fp) :: PSI6LO, PSI6HI - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP4 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP4 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL, NANO3, NH4NO3, MG(NO3)2 -! 4. Completely dissolved: CA(NO3)2, CACL2, MGCL2 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP4 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A2, A3, A4, A5, A6, A7, A8, A9, A13, A14 - Real(kind=fp) :: BB, CC, DD, VHTA, GKAMA, DELTA, BBP, CCP, DDP - Real(kind=fp) :: DIAK, DELT, PSI21, PSI22, PSI2LO, PSI2HI, VITA - Real(kind=fp) :: PSI31, PSI32 - Real(kind=fp) :: SMIN, OHI, HI - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI7 = ZERO - PSI8 = ZERO - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = ZERO - PSI14 = ZERO - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A13 = XK19 *(WATER/GAMA(19))**2.0 - A14 = XK20 *(WATER/GAMA(20))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A8 = XK9 *(WATER/GAMA(3))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = (CHI5-PSI2)*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - & - A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN (MAX (PSI5, TINY) , CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI13.GT.TINY .AND. WATER.GT.TINY) THEN !KNO3 - VHTA = PSI5+PSI8+2.0*PSI12+2.0*PSI15+PSI14+2.0*PSI9 - GKAMA = (PSI5+PSI8+2.0*PSI12+2.0*PSI15)*(2.0*PSI9+PSI14)-A13 - DELTA = MAX(VHTA*VHTA-4.d0*GKAMA,ZERO) - PSI13 = 0.5d0*(-VHTA + SQRT(DELTA)) - PSI13 = MIN(MAX(PSI13,ZERO),CHI13) - ENDIF -! - IF (CHI14.GT.TINY .AND. WATER.GT.TINY) THEN !KCL - PSI14 = A14/A13*(PSI5+PSI8+2.0*PSI12+PSI13+2.0*PSI15) - - & PSI6-PSI7-2.0*PSI16-2.0*PSI17 - PSI14 = MIN (MAX (PSI14, ZERO), CHI14) - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - BBP = PSI10+PSI13+PSI14 - CCP = (PSI13+PSI14)*(0.25D0*(PSI13+PSI14)+PSI10) - DDP = 0.25D0*(PSI13+PSI14)**2.0*PSI10-A9/4.0 - CALL POLY3 (BBP, CCP, DDP, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (MAX(PSI9,ZERO) , CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION - VITA = PSI6+PSI14+PSI8+2.0*PSI16+2.0*PSI17 - GKAMA= PSI8*(2.0*PSI16+PSI6+PSI14+2.0*PSI17)-A7 - DIAK = MAX(VITA*VITA - 4.0D0*GKAMA,ZERO) - PSI7 = 0.5D0*( -VITA + SQRT(DIAK) ) - PSI7 = MAX(MIN(PSI7, CHI7), ZERO) - ENDIF -! - IF (CHI8.GT.TINY .AND. WATER.GT.TINY) THEN ! NANO3 DISSOLUTION -! VIT = PSI5+PSI13+PSI7+2.0*PSI12+2.0*PSI15 -! GKAM = PSI7*(2.0*PSI12+PSI5+PSI13+2.0*PSI15)-A8 -! DIA = MAX(VIT*VIT - 4.0D0*GKAM,ZERO) -! PSI8 = 0.5D0*( -VIT + SQRT(DIA) ) - PSI8 = A8/A7*(PSI6+PSI7+PSI14+2.0*PSI16+2.0*PSI17)- - & PSI5-2.0*PSI12-PSI13-2.0*PSI15 - PSI8 = MAX(MIN(PSI8, CHI8), ZERO) - ENDIF -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -! -! *** CALCULATE H+ ***************************************************** -! -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -!C -!C *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -!C - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! -! CNH4CL = ZERO -! CNH4NO3 = ZERO - CNACL = MAX (CHI7 - PSI7, ZERO) - CNANO3 = MAX (CHI8 - PSI8, ZERO) - CK2SO4 = MAX (CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = MAX (CHI13 - PSI13, ZERO) - CKCL = MAX (CHI14 - PSI14, ZERO) - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF - PSI3 = MAX(MIN(MIN(PSI3,CHI4-PSI4),CHI6-PSI6),ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! -! *** NH4NO3(s) calculations -! - A2 = XK10 /(R*TEMP*R*TEMP) - IF (GNH3*GHNO3.GT.A2) THEN - DELT = MIN(GNH3, GHNO3) - BB = -(GNH3+GHNO3) - CC = GNH3*GHNO3-A2 - DD = BB*BB - 4.0*CC - PSI21 = 0.5D0*(-BB + SQRT(DD)) - PSI22 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI21.GT.ZERO .AND. PSI21.GT.ZERO) THEN - PSI2 = PSI21 - ELSEIF (DELT-PSI22.GT.ZERO .AND. PSI22.GT.ZERO) THEN - PSI2 = PSI22 - ELSE - PSI2 = ZERO - ENDIF - ELSE - PSI2 = ZERO - ENDIF - PSI2 = MAX(MIN(MIN(PSI2,CHI4-PSI4-PSI3),CHI5-PSI5), ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI2, TINY) - GHCL = MAX(GHNO3 - PSI2, TINY) - CNH4NO3 = PSI2 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP4 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP4 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP4 ******************************************* -! - END FUNCTION FUNCP4 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP3 -! *** CASE P3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : CaSO4, CA(NO3)2, K2SO4, KNO3, KCL, MGSO4, -! MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP3() - !EXTERNAL CALCP1A, CALCP4A - Integer :: I -! -! *** REGIME DEPENDS ON THE EXISTANCE OF WATER AND OF THE RH ************ -! - IF (W(4).GT.TINY .AND. W(5).GT.TINY) THEN ! NO3,CL EXIST, WATER POSSIBLE - SCASE = 'P3 ; SUBCASE 1' - CALL CALCP3A - SCASE = 'P3 ; SUBCASE 1' - ELSE ! NO3, CL NON EXISTANT - SCASE = 'P1 ; SUBCASE 1' - CALL CALCP1A - SCASE = 'P1 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRMP3) THEN ! ONLY SOLIDS - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCP1A - SCASE = 'P3 ; SUBCASE 2' - RETURN - ELSE - SCASE = 'P3 ; SUBCASE 3' ! MDRH REGION (CaSO4, CA(NO3)2, K2SO4, KNO3, KCL, MGSO4, -! MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL) - CALL CALCMDRH2 (RH, DRMP3, DRCANO32, CALCP1A, CALCP4A) - SCASE = 'P3 ; SUBCASE 3' - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCP3 ****************************************** -! - END SUBROUTINE CALCP3 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP3A -! *** CASE P3A -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL, -! NANO3, NH4NO3, MG(NO3)2, CA(NO3)2 -! 4. Completely dissolved: CACL2, MGCL2 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP3A() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: PSI6LO, PSI6HI - Real(kind=fp) :: DELTA - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, YLO, YHI, DX - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP3 (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP3 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL, -! NANO3, NH4NO3, MG(NO3)2, CA(NO3)2 -! 4. Completely dissolved: CACL2, MGCL2 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP3 (X) - Real(kind=fp) :: X - Real(kind=fp) :: A2, A3, A4, A5, A6, A7, A8, A9, A13, A14 - Real(kind=fp) :: PSI21, PSI22, DELT, BB, CC, DD, PSI31, PSI32 - Real(kind=fp) :: SMIN, HI, OHI, GKAMA, DIAK, BBP, CCP, DDP - Real(kind=fp) :: VHTA, DELTA, VITA - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI7 = ZERO - PSI8 = ZERO - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = ZERO - PSI14 = ZERO - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A13 = XK19 *(WATER/GAMA(19))**2.0 - A14 = XK20 *(WATER/GAMA(20))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A8 = XK9 *(WATER/GAMA(3))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = (CHI5-PSI2)*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - & - A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN (MAX (PSI5, TINY) , CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI13.GT.TINY .AND. WATER.GT.TINY) THEN !KNO3 - VHTA = PSI5+PSI8+2.0*PSI12+2.0*PSI15+PSI14+2.0*PSI9 - GKAMA = (PSI5+PSI8+2.0*PSI12+2.0*PSI15)*(2.0*PSI9+PSI14)-A13 - DELTA = MAX(VHTA*VHTA-4.d0*GKAMA,ZERO) - PSI13 = 0.5d0*(-VHTA + SQRT(DELTA)) - PSI13 = MIN(MAX(PSI13,ZERO),CHI13) - ENDIF -! - IF (CHI14.GT.TINY .AND. WATER.GT.TINY) THEN !KCL - PSI14 = A14/A13*(PSI5+PSI8+2.0*PSI12+PSI13+2.0*PSI15) - - & PSI6-PSI7-2.0*PSI16-2.0*PSI17 - PSI14 = MIN (MAX (PSI14, ZERO), CHI14) - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - BBP = PSI10+PSI13+PSI14 - CCP = (PSI13+PSI14)*(0.25D0*(PSI13+PSI14)+PSI10) - DDP = 0.25D0*(PSI13+PSI14)**2.0*PSI10-A9/4.0 - CALL POLY3 (BBP, CCP, DDP, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (MAX(PSI9,ZERO) , CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION - VITA = PSI6+PSI14+PSI8+2.0*PSI16+2.0*PSI17 - GKAMA= PSI8*(2.0*PSI16+PSI6+PSI14+2.0*PSI17)-A7 - DIAK = MAX(VITA*VITA - 4.0D0*GKAMA,ZERO) - PSI7 = 0.5D0*( -VITA + SQRT(DIAK) ) - PSI7 = MAX(MIN(PSI7, CHI7), ZERO) - ENDIF -! - IF (CHI8.GT.TINY .AND. WATER.GT.TINY) THEN ! NANO3 DISSOLUTION -! VIT = PSI5+PSI13+PSI7+2.0*PSI12+2.0*PSI15 -! GKAM = PSI7*(2.0*PSI12+PSI5+PSI13+2.0*PSI15)-A8 -! DIA = MAX(VIT*VIT - 4.0D0*GKAM,ZERO) -! PSI8 = 0.5D0*( -VIT + SQRT(DIA) ) - PSI8 = A8/A7*(PSI6+PSI7+PSI14+2.0*PSI16+2.0*PSI17)- - & PSI5-2.0*PSI12-PSI13-2.0*PSI15 - PSI8 = MAX(MIN(PSI8, CHI8), ZERO) - ENDIF -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -! -! *** CALCULATE H+ ***************************************************** -! -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -!C -!C *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -!C - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! -! CNH4CL = ZERO -! CNH4NO3 = ZERO - CNACL = MAX (CHI7 - PSI7, ZERO) - CNANO3 = MAX (CHI8 - PSI8, ZERO) - CK2SO4 = MAX (CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = MAX (CHI13 - PSI13, ZERO) - CKCL = MAX (CHI14 - PSI14, ZERO) - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF - PSI3 = MAX(MIN(MIN(PSI3,CHI4-PSI4),CHI6-PSI6), ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! -! *** NH4NO3(s) calculations -! - A2 = XK10 /(R*TEMP*R*TEMP) - IF (GNH3*GHNO3.GT.A2) THEN - DELT = MIN(GNH3, GHNO3) - BB = -(GNH3+GHNO3) - CC = GNH3*GHNO3-A2 - DD = BB*BB - 4.0*CC - PSI21 = 0.5D0*(-BB + SQRT(DD)) - PSI22 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI21.GT.ZERO .AND. PSI21.GT.ZERO) THEN - PSI2 = PSI21 - ELSEIF (DELT-PSI22.GT.ZERO .AND. PSI22.GT.ZERO) THEN - PSI2 = PSI22 - ELSE - PSI2 = ZERO - ENDIF - ELSE - PSI2 = ZERO - ENDIF - PSI2 = MAX(MIN(MIN(PSI2,CHI4-PSI4-PSI3),CHI5-PSI5),ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI2, TINY) - GHCL = MAX(GHNO3 - PSI2, TINY) - CNH4NO3 = PSI2 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP3 = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP3 = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP3 ******************************************* -! - END FUNCTION FUNCP3 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP2 -! *** CASE P2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : CaSO4, CA(NO3)2, K2SO4, KNO3, KCL, MGSO4, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! THERE ARE THREE REGIMES IN THIS CASE: -! 1. CACL2(s) POSSIBLE. LIQUID & SOLID AEROSOL (SUBROUTINE CALCL2A) -! 2. CACL2(s) NOT POSSIBLE, AND RH < MDRH. SOLID AEROSOL ONLY -! 3. CACL2(s) NOT POSSIBLE, AND RH >= MDRH. SOLID & LIQUID AEROSOL -! -! REGIMES 2. AND 3. ARE CONSIDERED TO BE THE SAME AS CASES P1A, P2B -! RESPECTIVELY -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! -! - SUBROUTINE CALCP2() - !EXTERNAL CALCP1A, CALCP3A, CALCP4A, CALCP5A, CALCP6 - Integer :: I -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCP1A -! -! *** REGIME DEPENDS UPON THE POSSIBLE SOLIDS & RH ********************** -! - IF (CCACL2.GT.TINY) THEN - SCASE = 'P2 ; SUBCASE 1' - CALL CALCP2A - SCASE = 'P2 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRMP2) THEN ! ONLY SOLIDS - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCP1A - SCASE = 'P2 ; SUBCASE 2' - ELSE - IF (CMGCL2.GT. TINY) THEN - SCASE = 'P2 ; SUBCASE 3' ! MDRH (CaSO4, CA(NO3)2, K2SO4, KNO3, KCL, MGSO4, MGCL2, -! MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL) - CALL CALCMDRH2 (RH, DRMP2, DRMGCL2, CALCP1A, CALCP3A) - SCASE = 'P2 ; SUBCASE 3' - ENDIF - IF (WATER.LE.TINY .AND. RH.GE.DRMP3 .AND. RH.LT.DRMP4) THEN - SCASE = 'P2 ; SUBCASE 4' ! MDRH (CaSO4, K2SO4, KNO3, KCL, MGSO4, CANO32, -! MG(NO3)2, NANO3, NACL, NH4NO3, NH4CL) - CALL CALCMDRH2 (RH, DRMP3, DRCANO32, CALCP1A, CALCP4A) - SCASE = 'P2 ; SUBCASE 4' - ENDIF - IF (WATER.LE.TINY .AND. RH.GE.DRMP4 .AND. RH.LT.DRMP5) THEN - SCASE = 'P2 ; SUBCASE 5' ! MDRH (CaSO4, K2SO4, KNO3, KCL, MGSO4, -! MGNO32, NANO3, NACL, NH4NO3, NH4CL) - CALL CALCMDRH2 (RH, DRMP4, DRMGNO32, CALCP1A, CALCP5A) - SCASE = 'P2 ; SUBCASE 5' - ENDIF - IF (WATER.LE.TINY .AND. RH.GE.DRMP5) THEN - SCASE = 'P2 ; SUBCASE 6' ! MDRH (CaSO4, K2SO4, KNO3, KCL, MGSO4, -! NANO3, NACL, NH4NO3, NH4CL) - CALL CALCMDRH2 (RH, DRMP5, DRNH4NO3, CALCP1A, CALCP6) - SCASE = 'P2 ; SUBCASE 6' - ELSE - WATER = TINY - DO 20 I=1,NIONS - MOLAL(I) = ZERO -20 CONTINUE - CALL CALCP1A - SCASE = 'P2 ; SUBCASE 2' - ENDIF - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCP2 ****************************************** -! - END SUBROUTINE CALCP2 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP2A -! *** CASE P2A -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL, -! NANO3, NH4NO3, MG(NO3)2, CA(NO3)2 -! 4. Completely dissolved: CACL2 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP2A() - Real(kind=fp) :: FRCA, FRSO4, FRK, FRMG, FRNA, FRCL, FRNO3 - Real(kind=fp) :: DELTA, YLO, YHI, DX - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, PSI6LO, PSI6HI - Integer :: I -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU = .TRUE. - CHI11 = MIN (W(2), W(6)) ! CCASO4 - FRCA = MAX (W(6) - CHI11, ZERO) - FRSO4 = MAX (W(2) - CHI11, ZERO) - CHI9 = MIN (FRSO4, 0.5D0*W(7)) ! CK2SO4 - FRK = MAX (W(7) - 2.0*CHI9, ZERO) - FRSO4 = MAX (FRSO4 - CHI9, ZERO) - CHI10 = FRSO4 ! CMGSO4 - FRMG = MAX (W(8) - CHI10, ZERO) - CHI7 = MIN (W(1), W(5)) ! CNACL - FRNA = MAX (W(1) - CHI7, ZERO) - FRCL = MAX (W(5) - CHI7, ZERO) - CHI12 = MIN (FRCA, 0.5D0*W(4)) ! CCANO32 - FRCA = MAX (FRCA - CHI12, ZERO) - FRNO3 = MAX (W(4) - 2.0*CHI12, ZERO) - CHI17 = MIN (FRCA, 0.5D0*FRCL) ! CCACL2 - FRCA = MAX (FRCA - CHI17, ZERO) - FRCL = MAX (FRCL - 2.0*CHI17, ZERO) - CHI15 = MIN (FRMG, 0.5D0*FRNO3) ! CMGNO32 - FRMG = MAX (FRMG - CHI15, ZERO) - FRNO3 = MAX (FRNO3 - 2.0*CHI15, ZERO) - CHI16 = MIN (FRMG, 0.5D0*FRCL) ! CMGCL2 - FRMG = MAX (FRMG - CHI16, ZERO) - FRCL = MAX (FRCL - 2.0*CHI16, ZERO) - CHI8 = MIN (FRNA, FRNO3) ! CNANO3 - FRNA = MAX (FRNA - CHI8, ZERO) - FRNO3 = MAX (FRNO3 - CHI8, ZERO) - CHI14 = MIN (FRK, FRCL) ! CKCL - FRK = MAX (FRK - CHI14, ZERO) - FRCL = MAX (FRCL - CHI14, ZERO) - CHI13 = MIN (FRK, FRNO3) ! CKNO3 - FRK = MAX (FRK - CHI13, ZERO) - FRNO3 = MAX (FRNO3 - CHI13, ZERO) -! - CHI5 = FRNO3 ! HNO3(g) - CHI6 = FRCL ! HCL(g) - CHI4 = W(3) ! NH3(g) -! - CHI3 = ZERO ! CNH4CL - CHI1 = ZERO - CHI2 = ZERO -! - PSI6LO = TINY - PSI6HI = CHI6-TINY ! MIN(CHI6-TINY, CHI4) -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI6LO - Y1 = FUNCP2A (X1) - IF (ABS(Y1).LE.EPS .OR. CHI6.LE.TINY) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1+DX - Y2 = FUNCP2A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** NO SUBDIVISION WITH SOLUTION; IF ABS(Y2) 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CaSO4, K2SO4, KNO3, MGSO4, KCL, NH4CL, NACL, -! NANO3, NH4NO3, MG(NO3)2, CA(NO3)2, MGCL2 -! 4. Completely dissolved: CACL2 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCP2A (X) - Real(kind=fp) :: X - Real(kind=fp) :: VHTA, DELTA, A4, A5, A6, A9, A13, A14, A7, A8 - Real(kind=fp) :: A2, A3, SMIN, OHI, HI, BBP, CCP, DDP, VITA - Real(kind=fp) :: BB, CC, DD, DELT, PSI21, PSI22, PSI31, PSI32 - Real(kind=fp) :: GKAMA, DIAK - Integer :: I, ISLV -! - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = X - PSI1 = ZERO - PSI2 = ZERO - PSI3 = ZERO - PSI7 = ZERO - PSI8 = ZERO - PSI9 = ZERO - PSI10 = CHI10 - PSI11 = ZERO - PSI12 = CHI12 - PSI13 = ZERO - PSI14 = ZERO - PSI15 = CHI15 - PSI16 = CHI16 - PSI17 = CHI17 - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = (XK2/XKW)*R*TEMP*(GAMA(10)/GAMA(5))**2.0 - A5 = XK4 *R*TEMP*(WATER/GAMA(10))**2.0 - A6 = XK3 *R*TEMP*(WATER/GAMA(11))**2.0 - A9 = XK17 *(WATER/GAMA(17))**3.0 - A13 = XK19 *(WATER/GAMA(19))**2.0 - A14 = XK20 *(WATER/GAMA(20))**2.0 - A7 = XK8 *(WATER/GAMA(1))**2.0 - A8 = XK9 *(WATER/GAMA(3))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = (CHI5-PSI2)*(PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17) - & - A6/A5*(PSI8+2.0*PSI12+PSI13+2.0*PSI15)*(CHI6-PSI6-PSI3) - PSI5 = PSI5/(A6/A5*(CHI6-PSI6-PSI3) + PSI6 + PSI7 + PSI14 + - & 2.0*PSI16 + 2.0*PSI17) - PSI5 = MIN (MAX (PSI5, TINY) , CHI5) -! - IF (W(3).GT.TINY .AND. WATER.GT.TINY) THEN ! First try 3rd order soln - BB =-(CHI4 + PSI6 + PSI5 + 1.d0/A4) - CC = CHI4*(PSI5+PSI6) - DD = MAX(BB*BB-4.d0*CC,ZERO) - PSI4 =0.5d0*(-BB - SQRT(DD)) - PSI4 = MIN(MAX(PSI4,ZERO),CHI4) - ELSE - PSI4 = TINY - ENDIF -! - IF (CHI13.GT.TINY .AND. WATER.GT.TINY) THEN !KNO3 - VHTA = PSI5+PSI8+2.0*PSI12+2.0*PSI15+PSI14+2.0*PSI9 - GKAMA = (PSI5+PSI8+2.0*PSI12+2.0*PSI15)*(2.0*PSI9+PSI14)-A13 - DELTA = MAX(VHTA*VHTA-4.d0*GKAMA,ZERO) - PSI13 = 0.5d0*(-VHTA + SQRT(DELTA)) - PSI13 = MIN(MAX(PSI13,ZERO),CHI13) - ENDIF -! - IF (CHI14.GT.TINY .AND. WATER.GT.TINY) THEN !KCL - PSI14 = A14/A13*(PSI5+PSI8+2.0*PSI12+PSI13+2.0*PSI15) - - & PSI6-PSI7-2.0*PSI16-2.0*PSI17 - PSI14 = MIN (MAX (PSI14, ZERO), CHI14) - ENDIF -! - IF (CHI9.GT.TINY .AND. WATER.GT.TINY) THEN !K2SO4 - BBP = PSI10+PSI13+PSI14 - CCP = (PSI13+PSI14)*(0.25D0*(PSI13+PSI14)+PSI10) - DDP = 0.25D0*(PSI13+PSI14)**2.0*PSI10-A9/4.0 - CALL POLY3 (BBP, CCP, DDP, PSI9, ISLV) - IF (ISLV.EQ.0) THEN - PSI9 = MIN (MAX(PSI9,ZERO) , CHI9) - ELSE - PSI9 = ZERO - ENDIF - ENDIF -! - IF (CHI7.GT.TINY .AND. WATER.GT.TINY) THEN ! NACL DISSOLUTION - VITA = PSI6+PSI14+PSI8+2.0*PSI16+2.0*PSI17 - GKAMA= PSI8*(2.0*PSI16+PSI6+PSI14+2.0*PSI17)-A7 - DIAK = MAX(VITA*VITA - 4.0D0*GKAMA,ZERO) - PSI7 = 0.5D0*( -VITA + SQRT(DIAK) ) - PSI7 = MAX(MIN(PSI7, CHI7), ZERO) - ENDIF -! - IF (CHI8.GT.TINY .AND. WATER.GT.TINY) THEN ! NANO3 DISSOLUTION -! VIT = PSI5+PSI13+PSI7+2.0*PSI12+2.0*PSI15 -! GKAM = PSI7*(2.0*PSI12+PSI5+PSI13+2.0*PSI15)-A8 -! DIA = MAX(VIT*VIT - 4.0D0*GKAM,ZERO) -! PSI8 = 0.5D0*( -VIT + SQRT(DIA) ) - PSI8 = A8/A7*(PSI6+PSI7+PSI14+2.0*PSI16+2.0*PSI17)- - & PSI5-2.0*PSI12-PSI13-2.0*PSI15 - PSI8 = MAX(MIN(PSI8, CHI8), ZERO) - ENDIF -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL (2) = PSI8 + PSI7 ! NAI - MOLAL (3) = PSI4 ! NH4I - MOLAL (4) = PSI6 + PSI7 + PSI14 + 2.0*PSI16 + 2.0*PSI17 ! CLI - MOLAL (5) = PSI9 + PSI10 ! SO4I - MOLAL (6) = ZERO ! HSO4I - MOLAL (7) = PSI5 + PSI8 + 2.0*PSI12 + PSI13 + 2.0*PSI15 ! NO3I - MOLAL (8) = PSI11 + PSI12 + PSI17 ! CAI - MOLAL (9) = 2.0*PSI9 + PSI13 + PSI14 ! KI - MOLAL (10)= PSI10 + PSI15 + PSI16 ! MGI -! -! *** CALCULATE H+ ***************************************************** -! -! REST = 2.0*W(2) + W(4) + W(5) -!C -! DELT1 = 0.0d0 -! DELT2 = 0.0d0 -! IF (W(1)+W(6)+W(7)+W(8).GT.REST) THEN -!C -!C *** CALCULATE EQUILIBRIUM CONSTANTS ********************************** -!C -! ALFA1 = XK26*RH*(WATER/1.0) ! CO2(aq) + H2O -! ALFA2 = XK27*(WATER/1.0) ! HCO3- -!C -! X = W(1)+W(6)+W(7)+W(8) - REST ! EXCESS OF CRUSTALS EQUALS CO2(aq) -!C -! DIAK = SQRT( (ALFA1)**2.0 + 4.0D0*ALFA1*X) -! DELT1 = 0.5*(-ALFA1 + DIAK) -! DELT1 = MIN ( MAX (DELT1, ZERO), X) -! DELT2 = ALFA2 -! DELT2 = MIN ( DELT2, DELT1) -! MOLAL(1) = DELT1 + DELT2 ! H+ -! ELSE -!C -!C *** NO EXCESS OF CRUSTALS CALCULATE H+ ******************************* -!C - SMIN = 2.d0*MOLAL(5)+MOLAL(7)+MOLAL(4)-MOLAL(2)-MOLAL(3) - & - MOLAL(9) - 2.0*MOLAL(10) - 2.0*MOLAL(8) - CALL CALCPH (SMIN, HI, OHI) - MOLAL (1) = HI -! ENDIF -! - GNH3 = MAX(CHI4 - PSI4, TINY) - GHNO3 = MAX(CHI5 - PSI5, TINY) - GHCL = MAX(CHI6 - PSI6, TINY) -! -! CNH4CL = ZERO -! CNH4NO3 = ZERO - CNACL = MAX (CHI7 - PSI7, ZERO) - CNANO3 = MAX (CHI8 - PSI8, ZERO) - CK2SO4 = MAX (CHI9 - PSI9, ZERO) - CMGSO4 = ZERO - CCASO4 = CHI11 - CCANO32 = ZERO - CKNO3 = MAX (CHI13 - PSI13, ZERO) - CKCL = MAX (CHI14 - PSI14, ZERO) - CMGNO32 = ZERO - CMGCL2 = ZERO - CCACL2 = ZERO -! -! *** NH4Cl(s) calculations -! - A3 = XK6 /(R*TEMP*R*TEMP) - IF (GNH3*GHCL.GT.A3) THEN - DELT = MIN(GNH3, GHCL) - BB = -(GNH3+GHCL) - CC = GNH3*GHCL-A3 - DD = BB*BB - 4.0*CC - PSI31 = 0.5D0*(-BB + SQRT(DD)) - PSI32 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI31.GT.ZERO .AND. PSI31.GT.ZERO) THEN - PSI3 = PSI31 - ELSEIF (DELT-PSI32.GT.ZERO .AND. PSI32.GT.ZERO) THEN - PSI3 = PSI32 - ELSE - PSI3 = ZERO - ENDIF - ELSE - PSI3 = ZERO - ENDIF - PSI3 = MAX(MIN(MIN(PSI3,CHI4-PSI4),CHI6-PSI6),ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX(GNH3 - PSI3, TINY) - GHCL = MAX(GHCL - PSI3, TINY) - CNH4CL = PSI3 -! -! *** NH4NO3(s) calculations -! - A2 = XK10 /(R*TEMP*R*TEMP) - IF (GNH3*GHNO3.GT.A2) THEN - DELT = MIN(GNH3, GHNO3) - BB = -(GNH3+GHNO3) - CC = GNH3*GHNO3-A2 - DD = BB*BB - 4.0*CC - PSI21 = 0.5D0*(-BB + SQRT(DD)) - PSI22 = 0.5D0*(-BB - SQRT(DD)) - IF (DELT-PSI21.GT.ZERO .AND. PSI21.GT.ZERO) THEN - PSI2 = PSI21 - ELSEIF (DELT-PSI22.GT.ZERO .AND. PSI22.GT.ZERO) THEN - PSI2 = PSI22 - ELSE - PSI2 = ZERO - ENDIF - ELSE - PSI2 = ZERO - ENDIF - PSI2 = MAX(MIN(MIN(PSI2,CHI4-PSI4-PSI3),CHI5-PSI5),ZERO) -! -! *** CALCULATE GAS / SOLID SPECIES (LIQUID IN MOLAL ALREADY) ********* -! - GNH3 = MAX (GNH3 - PSI2, TINY) - GHCL = MAX (GHNO3 - PSI2, TINY) - CNH4NO3 = PSI2 -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -!20 FUNCP2A = MOLAL(3)*MOLAL(4)/GHCL/GNH3/A6/A4 - ONE -20 FUNCP2A = MOLAL(1)*MOLAL(4)/GHCL/A6 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCP2A ******************************************* -! - END FUNCTION FUNCP2A - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP1 -! *** CASE P1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : CaSO4, CA(NO3)2, CACL2, K2SO4, KNO3, KCL, MGSO4, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! THERE ARE TWO POSSIBLE REGIMES HERE, DEPENDING ON RELATIVE HUMIDITY: -! 1. WHEN RH >= MDRH ; LIQUID PHASE POSSIBLE (MDRH REGION) -! 2. WHEN RH < MDRH ; ONLY SOLID PHASE POSSIBLE (SUBROUTINE CALCP1A) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCP1() - !EXTERNAL CALCP1A, CALCP2A -! -! *** REGIME DEPENDS UPON THE AMBIENT RELATIVE HUMIDITY ***************** -! - IF (RH.LT.DRMP1) THEN - SCASE = 'P1 ; SUBCASE 1' - CALL CALCP1A ! SOLID PHASE ONLY POSSIBLE - SCASE = 'P1 ; SUBCASE 1' - ELSE - SCASE = 'P1 ; SUBCASE 2' ! LIQUID & SOLID PHASE POSSIBLE - CALL CALCMDRH2 (RH, DRMP1, DRCACL2, CALCP1A, CALCP2A) - SCASE = 'P1 ; SUBCASE 2' - ENDIF -! -! - RETURN -! -! *** END OF SUBROUTINE CALCP1 ****************************************** -! - END SUBROUTINE CALCP1 -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCP1A -! *** CASE P1A -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE POOR (SULRAT > 2.0) ; Rcr+Na >= 2.0 ; Rcr > 2) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : CaSO4, CA(NO3)2, CACL2, K2SO4, KNO3, KCL, MGSO4, -! MG(NO3)2, MGCL2, NANO3, NACL, NH4NO3, NH4CL -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= - - SUBROUTINE CALCP1A() - Real(kind=fp) :: LAMDA, LAMDA1, LAMDA2, KAPA, KAPA1, KAPA2 - Real(kind=fp) :: CAFR, SO4FR, FRK, FRMG, NAFR, CLFR, NO3FR - Real(kind=fp) :: ALF, BET, GAM, RTSQ, A1, A2, THETA1, THETA2 - Real(kind=fp) :: BB, CC - Real(kind=fp) :: DD, SQDD, DD1, SQDD1, DD2, SQDD2 -! -! *** CALCULATE NON VOLATILE SOLIDS *********************************** -! - CCASO4 = MIN (W(2), W(6)) !SOLID CASO4 - CAFR = MAX (W(6) - CCASO4, ZERO) - SO4FR = MAX (W(2) - CCASO4, ZERO) - CK2SO4 = MIN (SO4FR, 0.5D0*W(7)) !SOLID K2SO4 - FRK = MAX (W(7) - 2.0*CK2SO4, ZERO) - SO4FR = MAX (SO4FR - CK2SO4, ZERO) - CMGSO4 = SO4FR !SOLID MGSO4 - FRMG = MAX (W(8) - CMGSO4, ZERO) - CNACL = MIN (W(1), W(5)) !SOLID NACL - NAFR = MAX (W(1) - CNACL, ZERO) - CLFR = MAX (W(5) - CNACL, ZERO) - CCANO32 = MIN (CAFR, 0.5D0*W(4)) !SOLID CA(NO3)2 - CAFR = MAX (CAFR - CCANO32, ZERO) - NO3FR = MAX (W(4) - 2.0*CCANO32, ZERO) - CCACL2 = MIN (CAFR, 0.5D0*CLFR) !SOLID CACL2 - CAFR = MAX (CAFR - CCACL2, ZERO) - CLFR = MAX (CLFR - 2.0*CCACL2, ZERO) - CMGNO32 = MIN (FRMG, 0.5D0*NO3FR) !SOLID MG(NO3)2 - FRMG = MAX (FRMG - CMGNO32, ZERO) - NO3FR = MAX (NO3FR - 2.0*CMGNO32, ZERO) - CMGCL2 = MIN (FRMG, 0.5D0*CLFR) !SOLID MGCL2 - FRMG = MAX (FRMG - CMGCL2, ZERO) - CLFR = MAX (CLFR - 2.0*CMGCL2, ZERO) - CNANO3 = MIN (NAFR, NO3FR) !SOLID NANO3 - NAFR = MAX (NAFR - CNANO3, ZERO) - NO3FR = MAX (NO3FR - CNANO3, ZERO) - CKCL = MIN (FRK, CLFR) !SOLID KCL - FRK = MAX (FRK - CKCL, ZERO) - CLFR = MAX (CLFR - CKCL, ZERO) - CKNO3 = MIN (FRK, NO3FR) !SOLID KNO3 - FRK = MAX (FRK - CKNO3, ZERO) - NO3FR = MAX (NO3FR - CKNO3, ZERO) -! -! *** CALCULATE VOLATILE SPECIES ************************************** -! - ALF = W(3) ! FREE NH3 - BET = CLFR ! FREE CL - GAM = NO3FR ! FREE NO3 -! - RTSQ = R*TEMP*R*TEMP - A1 = XK6/RTSQ - A2 = XK10/RTSQ -! - THETA1 = GAM - BET*(A2/A1) - THETA2 = A2/A1 -! -! QUADRATIC EQUATION SOLUTION -! - BB = (THETA1-ALF-BET*(ONE+THETA2))/(ONE+THETA2) - CC = (ALF*BET-A1-BET*THETA1)/(ONE+THETA2) - DD = BB*BB - 4.0D0*CC - IF (DD.LT.ZERO) GOTO 100 ! Solve each reaction seperately -! -! TWO ROOTS FOR KAPA, CHECK AND SEE IF ANY VALID -! - SQDD = SQRT(DD) - KAPA1 = 0.5D0*(-BB+SQDD) - KAPA2 = 0.5D0*(-BB-SQDD) - LAMDA1 = THETA1 + THETA2*KAPA1 - LAMDA2 = THETA1 + THETA2*KAPA2 -! - IF (KAPA1.GE.ZERO .AND. LAMDA1.GE.ZERO) THEN - IF (ALF-KAPA1-LAMDA1.GE.ZERO .AND. - & BET-KAPA1.GE.ZERO .AND. GAM-LAMDA1.GE.ZERO) THEN - KAPA = KAPA1 - LAMDA= LAMDA1 - GOTO 200 - ENDIF - ENDIF -! - IF (KAPA2.GE.ZERO .AND. LAMDA2.GE.ZERO) THEN - IF (ALF-KAPA2-LAMDA2.GE.ZERO .AND. - & BET-KAPA2.GE.ZERO .AND. GAM-LAMDA2.GE.ZERO) THEN - KAPA = KAPA2 - LAMDA= LAMDA2 - GOTO 200 - ENDIF - ENDIF -! -! SEPERATE SOLUTION OF NH4CL & NH4NO3 EQUILIBRIA -! -100 KAPA = ZERO - LAMDA = ZERO - DD1 = (ALF+BET)*(ALF+BET) - 4.0D0*(ALF*BET-A1) - DD2 = (ALF+GAM)*(ALF+GAM) - 4.0D0*(ALF*GAM-A2) -! -! NH4CL EQUILIBRIUM -! - IF (DD1.GE.ZERO) THEN - SQDD1 = SQRT(DD1) - KAPA1 = 0.5D0*(ALF+BET + SQDD1) - KAPA2 = 0.5D0*(ALF+BET - SQDD1) -! - IF (KAPA1.GE.ZERO .AND. KAPA1.LE.MIN(ALF,BET)) THEN - KAPA = KAPA1 - ELSE IF (KAPA2.GE.ZERO .AND. KAPA2.LE.MIN(ALF,BET)) THEN - KAPA = KAPA2 - ELSE - KAPA = ZERO - ENDIF - ENDIF -! -! NH4NO3 EQUILIBRIUM -! - IF (DD2.GE.ZERO) THEN - SQDD2 = SQRT(DD2) - LAMDA1= 0.5D0*(ALF+GAM + SQDD2) - LAMDA2= 0.5D0*(ALF+GAM - SQDD2) -! - IF (LAMDA1.GE.ZERO .AND. LAMDA1.LE.MIN(ALF,GAM)) THEN - LAMDA = LAMDA1 - ELSE IF (LAMDA2.GE.ZERO .AND. LAMDA2.LE.MIN(ALF,GAM)) THEN - LAMDA = LAMDA2 - ELSE - LAMDA = ZERO - ENDIF - ENDIF -! -! IF BOTH KAPA, LAMDA ARE > 0, THEN APPLY EXISTANCE CRITERION -! - IF (KAPA.GT.ZERO .AND. LAMDA.GT.ZERO) THEN - IF (BET .LT. LAMDA/THETA1) THEN - KAPA = ZERO - ELSE - LAMDA= ZERO - ENDIF - ENDIF -! -! *** CALCULATE COMPOSITION OF VOLATILE SPECIES *********************** -! -200 CONTINUE - CNH4NO3 = LAMDA - CNH4CL = KAPA -! - GNH3 = ALF - KAPA - LAMDA - GHNO3 = GAM - LAMDA - GHCL = BET - KAPA -! - RETURN -! -! *** END OF SUBROUTINE CALCP1A ***************************************** -! - END SUBROUTINE CALCP1A - -! -!====================================================================== -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCL9 -! *** CASE L9 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : CASO4 -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4, LC, (NH4)2SO4, KHSO4, MGSO4, NA2SO4, K2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL9() - Real(kind=fp) :: BB, CC, DD, LAMDA, A9 - Integer :: I - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCL1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCL1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 - CHI6 = CK2SO4 - CHI7 = CMGSO4 - CHI8 = CKHSO4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = CLC - PSI3 = CNAHSO4 - PSI4 = CNA2SO4 - PSI5 = CNH42S4 - PSI6 = CK2SO4 - PSI7 = CMGSO4 - PSI8 = CKHSO4 -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A9 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2. -! -! CALCULATE DISSOCIATION QUANTITIES -! - BB = PSI7 + PSI6 + PSI5 + PSI4 + PSI2 + A9 ! LAMDA - CC = -A9*(PSI8 + PSI1 + PSI2 + PSI3) - DD = MAX(BB*BB - 4.0*CC, ZERO) - LAMDA= 0.5D0*(-BB + SQRT(DD)) - LAMDA= MIN(MAX (LAMDA, TINY), PSI8+PSI3+PSI2+PSI1) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL(1) = LAMDA ! HI - MOLAL(2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL(3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL(5) = PSI2 + PSI4 + PSI5 + PSI6 + PSI7 + LAMDA ! SO4I - MOLAL(6) = PSI2 + PSI3 + PSI1 + PSI8 - LAMDA ! HSO4I - MOLAL(9) = PSI8 + 2.0D0*PSI6 ! KI - MOLAL(10)= PSI7 ! MGI -! - CLC = ZERO - CNAHSO4 = ZERO - CNA2SO4 = ZERO - CNH42S4 = ZERO - CNH4HS4 = ZERO - CK2SO4 = ZERO - CMGSO4 = ZERO - CKHSO4 = ZERO -! - CALL CALCMR ! Water content - -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -20 RETURN -! -! *** END OF SUBROUTINE CALCL9 ***************************************** -! - END SUBROUTINE CALCL9 - - -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE CALCL8 -! *** CASE L8 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4 -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4, LC, (NH4)2SO4, KHSO4, MGSO4, NA2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL8() - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, PSI6LO, PSI6HI - Real(kind=fp) :: YLO, YHI, DX - Integer :: I - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCL1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCL1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 - CHI6 = CK2SO4 - CHI7 = CMGSO4 - CHI8 = CKHSO4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = CLC - PSI3 = CNAHSO4 - PSI4 = CNA2SO4 - PSI5 = CNH42S4 - PSI6 = ZERO - PSI7 = CMGSO4 - PSI8 = CKHSO4 -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI6LO = ZERO ! Low limit - PSI6HI = CHI6 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - IF (CHI6.LE.TINY) THEN - Y1 = FUNCL8 (ZERO) - GOTO 50 - ENDIF -! - X1 = PSI6HI - Y1 = FUNCL8 (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH K2SO4 ********* -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI6HI-PSI6LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1-DX - Y2 = FUNCL8 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH K2SO4 -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL8 (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCL8') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL8 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCL8') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL8 (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCL8 ***************************************** -! - END SUBROUTINE CALCL8 -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** FUNCTION FUNCL8 -! *** CASE L8 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4 -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4, LC, (NH4)2SO4, KHSO4, MGSO4, NA2SO4 -! -! SOLUTION IS SAVED IN COMMON BLOCK /CASE/ -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCL8 (P6) - Real(kind=fp) :: P6 - Real(kind=fp) :: A6, A9, BB, CC, DD, LAMDA - Integer :: I - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI6 = P6 -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A9 = XK1*(WATER)*(GAMA(8)**2.0)/(GAMA(7)**3.0) -! -! CALCULATE DISSOCIATION QUANTITIES -! - BB = PSI7 + PSI6 + PSI5 + PSI4 + PSI2 + A9 ! LAMDA - CC = -A9*(PSI8 + PSI1 + PSI2 + PSI3) - DD = BB*BB - 4.0*CC - LAMDA= 0.5D0*(-BB + SQRT(DD)) - LAMDA= MIN(MAX (LAMDA, TINY), PSI8+PSI3+PSI2+PSI1) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL(1) = LAMDA ! HI - MOLAL(2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL(3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL(5) = PSI2 + PSI4 + PSI5 + PSI6 + PSI7 + LAMDA ! SO4I - MOLAL(6) = MAX(PSI2 + PSI3 + PSI1 + PSI8 - LAMDA, TINY) ! HSO4I - MOLAL(9) = PSI8 + 2.0*PSI6 ! KI - MOLAL(10)= PSI7 ! MGI -! - CLC = ZERO - CNAHSO4 = ZERO - CNA2SO4 = ZERO - CNH42S4 = ZERO - CNH4HS4 = ZERO - CK2SO4 = MAX(CHI6 - PSI6, ZERO) - CMGSO4 = ZERO - CKHSO4 = ZERO - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 A6 = XK17*(WATER/GAMA(17))**3.0 - FUNCL8 = MOLAL(9)*MOLAL(9)*MOLAL(5)/A6 - ONE - RETURN -! -! *** END OF FUNCTION FUNCL8 **************************************** -! - END FUNCTION FUNCL8 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCL7 -! *** CASE L7 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, NA2SO4 -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4, LC, (NH4)2SO4, KHSO4, MGSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL7() - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, PSI4LO, PSI4HI - Real(kind=fp) :: YLO, YHI, DX - Integer :: I - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCL1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCL1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 - CHI6 = CK2SO4 - CHI7 = CMGSO4 - CHI8 = CKHSO4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = CLC - PSI3 = CNAHSO4 - PSI4 = ZERO - PSI5 = CNH42S4 - PSI6 = ZERO - PSI7 = CMGSO4 - PSI8 = CKHSO4 -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI4LO = ZERO ! Low limit - PSI4HI = CHI4 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - IF (CHI4.LE.TINY) THEN - Y1 = FUNCL7 (ZERO) - GOTO 50 - ENDIF -! - X1 = PSI4HI - Y1 = FUNCL7 (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH K2SO4 ********* -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI4HI-PSI4LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1-DX - Y2 = FUNCL7 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH K2SO4 -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL7 (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCL7') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL7 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCL7') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL7 (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCL7 ***************************************** -! - END SUBROUTINE CALCL7 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** FUNCTION FUNCL7 -! *** CASE L7 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, NA2SO4 -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4, LC, (NH4)2SO4, KHSO4, MGSO4 -! -! SOLUTION IS SAVED IN COMMON BLOCK /CASE/ -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCL7 (P4) - Real(kind=fp) :: P4 - Real(kind=fp) :: A4, A6, A9 - Real(kind=fp) :: AA, BB, CC, DD, LAMDA - Integer :: I, ISLV - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI4 = P4 -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = XK5 *(WATER/GAMA(2))**3.0 - A6 = XK17*(WATER/GAMA(17))**3.0 - A9 = XK1*(WATER)*(GAMA(8)**2.0)/(GAMA(7)**3.0) -! -! CALCULATE DISSOCIATION QUANTITIES -! -! PSI6 = 0.5*(SQRT(A6/A4)*(2.0*PSI4+PSI3)-PSI8) ! PSI6 -! PSI6 = MIN (MAX (PSI6, ZERO), CHI6) -! - IF (CHI6.GT.TINY .AND. WATER.GT.TINY) THEN - AA = PSI5+PSI4+PSI2+PSI7+PSI8+LAMDA - BB = PSI8*(PSI5+PSI4+PSI2+PSI7+0.25D0*PSI8+LAMDA) - CC = 0.25D0*(PSI8*PSI8*(PSI5+PSI4+PSI2+PSI7+LAMDA)-A6) - CALL POLY3 (AA, BB, CC, PSI6, ISLV) - IF (ISLV.EQ.0) THEN - PSI6 = MIN (PSI6, CHI6) - ELSE - PSI6 = ZERO - ENDIF - ENDIF -! - BB = PSI7 + PSI6 + PSI5 + PSI4 + PSI2 + A9 ! LAMDA - CC = -A9*(PSI8 + PSI1 + PSI2 + PSI3) - DD = BB*BB - 4.0*CC - LAMDA= 0.5D0*(-BB + SQRT(DD)) - LAMDA= MIN(MAX (LAMDA, TINY), PSI8+PSI3+PSI2+PSI1) -! -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL(1) = LAMDA ! HI - MOLAL(2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL(3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL(5) = PSI2 + PSI4 + PSI5 + PSI6 + PSI7 + LAMDA ! SO4I - MOLAL(6) = MAX(PSI2 + PSI3 + PSI1 + PSI8 - LAMDA, TINY) ! HSO4I - MOLAL(9) = PSI8 + 2.0*PSI6 ! KI - MOLAL(10)= PSI7 ! MGI -! - CLC = ZERO - CNAHSO4 = ZERO - CNA2SO4 = MAX(CHI4 - PSI4, ZERO) - CNH42S4 = ZERO - CNH4HS4 = ZERO - CK2SO4 = MAX(CHI6 - PSI6, ZERO) - CMGSO4 = ZERO - CKHSO4 = ZERO - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 A4 = XK5 *(WATER/GAMA(2))**3.0 - FUNCL7 = MOLAL(5)*MOLAL(2)*MOLAL(2)/A4 - ONE - RETURN -! -! *** END OF FUNCTION FUNCL7 **************************************** -! - END FUNCTION FUNCL7 -! -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCL6 -! *** CASE L6 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, NA2SO4 -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4, LC, (NH4)2SO4, KHSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL6() - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, PSI4LO, PSI4HI - Real(kind=fp) :: YLO, YHI, DX - Integer :: I - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCL1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCL1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 - CHI6 = CK2SO4 - CHI7 = CMGSO4 - CHI8 = CKHSO4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = CLC - PSI3 = CNAHSO4 - PSI4 = ZERO - PSI5 = CNH42S4 - PSI6 = ZERO - PSI7 = ZERO - PSI8 = CKHSO4 -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI4LO = ZERO ! Low limit - PSI4HI = CHI4 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - IF (CHI4.LE.TINY) THEN - Y1 = FUNCL6 (ZERO) - GOTO 50 - ENDIF -! - X1 = PSI4HI - Y1 = FUNCL6 (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH K2SO4 ********* -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI4HI-PSI4LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1-DX - Y2 = FUNCL6 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH K2SO4 -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL6 (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCL6') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL6 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCL6') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL6 (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCL6 ***************************************** -! - END SUBROUTINE CALCL6 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** FUNCTION FUNCL6 -! *** CASE L6 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, NA2SO4 -! -! SOLUTION IS SAVED IN COMMON BLOCK /CASE/ -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCL6 (P4) - Real(kind=fp) :: P4 - Real(kind=fp) :: A4, A6, A9 - Real(kind=fp) :: AA, BB, CC, DD, LAMDA - Integer :: I, ISLV - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI4 = P4 -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = XK5*(WATER/GAMA(2))**3.0 - A6 = XK17*(WATER/GAMA(17))**3.0 - A9 = XK1*(WATER)*(GAMA(8)**2.0)/(GAMA(7)**3.0) -! -! CALCULATE DISSOCIATION QUANTITIES -! -! PSI6 = 0.5*(SQRT(A6/A4)*(2.0*PSI4+PSI3)-PSI8) ! PSI6 -! PSI6 = MIN (MAX (PSI6, ZERO), CHI6) -! - IF (CHI6.GT.TINY .AND. WATER.GT.TINY) THEN - AA = PSI5+PSI4+PSI2+PSI7+PSI8+LAMDA - BB = PSI8*(PSI5+PSI4+PSI2+PSI7+0.25D0*PSI8+LAMDA) - CC = 0.25D0*(PSI8*PSI8*(PSI5+PSI4+PSI2+PSI7+LAMDA)-A6) - CALL POLY3 (AA, BB, CC, PSI6, ISLV) - IF (ISLV.EQ.0) THEN - PSI6 = MIN (PSI6, CHI6) - ELSE - PSI6 = ZERO - ENDIF - ENDIF -! - PSI7 = CHI7 -! - BB = PSI7 + PSI6 + PSI5 + PSI4 + PSI2 + A9 ! LAMDA - CC = -A9*(PSI8 + PSI1 + PSI2 + PSI3) - DD = BB*BB - 4.0*CC - LAMDA= 0.5D0*(-BB + SQRT(DD)) - LAMDA= MIN(MAX (LAMDA, TINY), PSI8+PSI3+PSI2+PSI1) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL(1) = LAMDA ! HI - MOLAL(2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL(3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL(5) = PSI2 + PSI4 + PSI5 + PSI6 + PSI7 + LAMDA ! SO4I - MOLAL(6) = MAX(PSI2 + PSI3 + PSI1 + PSI8 - LAMDA, TINY) ! HSO4I - MOLAL(9) = PSI8 + 2.0*PSI6 ! KI - MOLAL(10)= PSI7 ! MGI -! - CLC = ZERO - CNAHSO4 = ZERO - CNA2SO4 = MAX(CHI4 - PSI4, ZERO) - CNH42S4 = ZERO - CNH4HS4 = ZERO - CK2SO4 = MAX(CHI6 - PSI6, ZERO) - CMGSO4 = ZERO - CKHSO4 = ZERO - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 A4 = XK5 *(WATER/GAMA(2))**3.0 - FUNCL6 = MOLAL(5)*MOLAL(2)*MOLAL(2)/A4 - ONE - RETURN -! -! *** END OF FUNCTION FUNCL6 **************************************** -! - END FUNCTION FUNCL6 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCL5 -! *** CASE L5 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, NA2SO4 -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4, LC, (NH4)2SO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL5() - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, PSI4LO, PSI4HI - Real(kind=fp) :: YLO, YHI, DX - Integer :: I - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCL1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCL1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 - CHI6 = CK2SO4 - CHI7 = CMGSO4 - CHI8 = CKHSO4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = CLC - PSI3 = CNAHSO4 - PSI4 = ZERO - PSI5 = CNH42S4 - PSI6 = ZERO - PSI7 = ZERO - PSI8 = ZERO -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI4LO = ZERO ! Low limit - PSI4HI = CHI4 ! High limit - -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - IF (CHI4.LE.TINY) THEN - Y1 = FUNCL5 (ZERO) - GOTO 50 - ENDIF -! - X1 = PSI4HI - Y1 = FUNCL5 (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH NA2SO4 ********* -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - - DX = (PSI4HI-PSI4LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = MAX(X1-DX, PSI4LO) - Y2 = FUNCL5 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH NA2SO4 -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL5 (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCL5') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL5 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCL5') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL5 (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCL5 ***************************************** -! - END SUBROUTINE CALCL5 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** FUNCTION FUNCL5 -! *** CASE L5 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, NA2SO4 -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4, LC, (NH4)2SO4 -! -! SOLUTION IS SAVED IN COMMON BLOCK /CASE/ -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCL5 (P4) - Real(kind=fp) :: P4 - Real(kind=fp) :: A4, A6, A8, A9 - Real(kind=fp) :: BITA, CAMA, DELT, AA, BB, CC, DD, LAMDA - Integer :: I, ISLV - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI4 = P4 -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = XK5*(WATER/GAMA(2))**3.0 - A6 = XK17*(WATER/GAMA(17))**3.0 - A8 = XK18*(WATER/GAMA(18))**2.0 - A9 = XK1*(WATER)*(GAMA(8)**2.0)/(GAMA(7)**3.0) -! -! CALCULATE DISSOCIATION QUANTITIES -! -! PSI6 = 0.5*(SQRT(A6/A4)*(2.0*PSI4+PSI3)-PSI8) ! PSI6 -! PSI6 = MIN (MAX (PSI6, ZERO), CHI6) -! - IF (CHI6.GT.TINY .AND. WATER.GT.TINY) THEN - AA = PSI5+PSI4+PSI2+PSI7+PSI8+LAMDA - BB = PSI8*(PSI5+PSI4+PSI2+PSI7+0.25D0*PSI8+LAMDA) - CC = 0.25D0*(PSI8*PSI8*(PSI5+PSI4+PSI2+PSI7+LAMDA)-A6) - CALL POLY3 (AA, BB, CC, PSI6, ISLV) - IF (ISLV.EQ.0) THEN - PSI6 = MIN (PSI6, CHI6) - ELSE - PSI6 = ZERO - ENDIF - ENDIF -! - PSI7 = CHI7 -! - BB = PSI7 + PSI6 + PSI5 + PSI4 + PSI2 + A9 ! LAMDA - CC = -A9*(PSI8 + PSI1 + PSI2 + PSI3) - DD = MAX(BB*BB - 4.0*CC, ZERO) - LAMDA= 0.5D0*(-BB + SQRT(DD)) - LAMDA= MIN(MAX (LAMDA, TINY), PSI8+PSI3+PSI2+PSI1) -! - BITA = PSI3 + PSI2 + PSI1 + 2.0*PSI6 - LAMDA - CAMA = 2.0*PSI6*(PSI3 + PSI2 + PSI1 - LAMDA) - A8 - DELT = MAX(BITA*BITA - 4.0*CAMA, ZERO) - PSI8 = 0.5D0*(-BITA + SQRT(DELT)) - PSI8 = MIN(MAX (PSI8, ZERO), CHI8) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL(1) = LAMDA ! HI - MOLAL(2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL(3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL(5) = PSI2 + PSI4 + PSI5 + PSI6 + PSI7 + LAMDA ! SO4I - MOLAL(6) = MAX(PSI2 + PSI3 + PSI1 + PSI8 - LAMDA, TINY) ! HSO4I - MOLAL(9) = PSI8 + 2.0D0*PSI6 ! KI - MOLAL(10)= PSI7 ! MGI -! - CLC = ZERO - CNAHSO4 = ZERO - CNA2SO4 = MAX(CHI4 - PSI4, ZERO) - CNH42S4 = ZERO - CNH4HS4 = ZERO - CK2SO4 = MAX(CHI6 - PSI6, ZERO) - CMGSO4 = ZERO - CKHSO4 = MAX(CHI8 - PSI8, ZERO) -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 A4 = XK5 *(WATER/GAMA(2))**3.0 - FUNCL5 = MOLAL(5)*MOLAL(2)*MOLAL(2)/A4 - ONE -! - RETURN -! -! *** END OF FUNCTION FUNCL5 **************************************** -! - END FUNCTION FUNCL5 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCL4 -! *** CASE L4 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, (NH4)2SO4, NA2SO4 -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4, LC -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL4() - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, PSI4LO, PSI4HI - Real(kind=fp) :: YLO, YHI, DX - Integer :: I - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCL1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCL1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 - CHI6 = CK2SO4 - CHI7 = CMGSO4 - CHI8 = CKHSO4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = CLC - PSI3 = CNAHSO4 - PSI4 = ZERO - PSI5 = ZERO - PSI6 = ZERO - PSI7 = ZERO - PSI8 = ZERO -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI4LO = ZERO ! Low limit - PSI4HI = CHI4 ! High limit -! - IF (CHI4.LE.TINY) THEN - Y1 = FUNCL4 (ZERO) - GOTO 50 - ENDIF -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI4HI - Y1 = FUNCL4 (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH NA2SO4 ********* -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI4HI-PSI4LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1-DX - Y2 = FUNCL4 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH NA2SO4 ** -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL4 (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCL4') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL4 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCL4') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL4 (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCL4 ***************************************** -! - END SUBROUTINE CALCL4 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** FUNCTION FUNCL4 -! *** CASE L4 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, (NH4)2SO4, NA2SO4 -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4, LC -! -! SOLUTION IS SAVED IN COMMON BLOCK /CASE/ -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCL4 (P4) - Real(kind=fp) :: P4 - Real(kind=fp) :: A4, A5, A6, A8, A9 - Real(kind=fp) :: AA, BB, CC, DD, BITA, CAMA, DELT, LAMDA - Integer :: I, ISLV - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI4 = P4 -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = XK5*(WATER/GAMA(2))**3.0 - A5 = XK7*(WATER/GAMA(4))**3.0 - A6 = XK17*(WATER/GAMA(17))**3.0 - A8 = XK18*(WATER/GAMA(18))**2.0 - A9 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2.0 -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = (PSI3 + 2.0*PSI4 - SQRT(A4/A5)*(3.0*PSI2 + PSI1)) ! psi5 - & /2.0/SQRT(A4/A5) - PSI5 = MAX (MIN (PSI5, CHI5), ZERO) -! - PSI7 = CHI7 -! - BB = PSI7 + PSI6 + PSI5 + PSI4 + PSI2 + A9 ! LAMDA - CC = -A9*(PSI8 + PSI1 + PSI2 + PSI3) - DD = MAX(BB*BB - 4.0*CC, ZERO) - LAMDA= 0.5D0*(-BB + SQRT(DD)) - LAMDA= MIN(MAX (LAMDA, TINY), PSI8+PSI3+PSI2+PSI1) -! -! PSI6 = 0.5*(SQRT(A6/A4)*(2.0*PSI4+PSI3)-PSI8) ! PSI6 -! PSI6 = MIN (MAX (PSI6, ZERO), CHI6) -! - IF (CHI6.GT.TINY .AND. WATER.GT.TINY) THEN - AA = PSI5+PSI4+PSI2+PSI7+PSI8+LAMDA - BB = PSI8*(PSI5+PSI4+PSI2+PSI7+0.25D0*PSI8+LAMDA) - CC = 0.25D0*(PSI8*PSI8*(PSI5+PSI4+PSI2+PSI7+LAMDA)-A6) - CALL POLY3 (AA, BB, CC, PSI6, ISLV) - IF (ISLV.EQ.0) THEN - PSI6 = MIN (PSI6, CHI6) - ELSE - PSI6 = ZERO - ENDIF - ENDIF -! - BITA = PSI3 + PSI2 + PSI1 + 2.0*PSI6 - LAMDA - CAMA = 2.0*PSI6*(PSI3 + PSI2 + PSI1 - LAMDA) - A8 - DELT = MAX(BITA*BITA - 4.0*CAMA, ZERO) - PSI8 = 0.5D0*(-BITA + SQRT(DELT)) - PSI8 = MIN(MAX (PSI8, ZERO), CHI8) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL(1) = LAMDA ! HI - MOLAL(2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL(3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL(5) = PSI2 + PSI4 + PSI5 + PSI6 + PSI7 + LAMDA ! SO4I - MOLAL(6) = MAX(PSI2 + PSI3 + PSI1 + PSI8 - LAMDA, TINY) ! HSO4I - MOLAL(9) = PSI8 + 2.0D0*PSI6 ! KI - MOLAL(10)= PSI7 ! MGI -! - CLC = ZERO - CNAHSO4 = ZERO - CNA2SO4 = MAX(CHI4 - PSI4, ZERO) - CNH42S4 = MAX(CHI5 - PSI5, ZERO) - CNH4HS4 = ZERO - CK2SO4 = MAX(CHI6 - PSI6, ZERO) - CMGSO4 = ZERO - CKHSO4 = MAX(CHI8 - PSI8, ZERO) - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 A4 = XK5 *(WATER/GAMA(2))**3.0 - FUNCL4 = MOLAL(5)*MOLAL(2)*MOLAL(2)/A4 - ONE - RETURN -! -! *** END OF FUNCTION FUNCL4 **************************************** -! - END FUNCTION FUNCL4 - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCL3 -! *** CASE L3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, NH4HSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC -! -! THERE ARE THREE REGIMES IN THIS CASE: -! 1.(NA,NH4)HSO4(s) POSSIBLE. LIQUID & SOLID AEROSOL (SUBROUTINE CALCI3A) -! 2.(NA,NH4)HSO4(s) NOT POSSIBLE, AND RH < MDRH. SOLID AEROSOL ONLY -! 3.(NA,NH4)HSO4(s) NOT POSSIBLE, AND RH >= MDRH. SOLID & LIQUID AEROSOL -! -! REGIMES 2. AND 3. ARE CONSIDERED TO BE THE SAME AS CASES I1A, I2B -! RESPECTIVELY -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL3() - !EXTERNAL CALCL1A, CALCL4 - Integer :: I -! -! *** FIND DRY COMPOSITION ********************************************* -! - CALL CALCL1A -! -! *** REGIME DEPENDS UPON THE POSSIBLE SOLIDS & RH ********************* -! - IF (CNH4HS4.GT.TINY .OR. CNAHSO4.GT.TINY) THEN - SCASE = 'L3 ; SUBCASE 1' - CALL CALCL3A ! FULL SOLUTION - SCASE = 'L3 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRML3) THEN ! SOLID SOLUTION - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCL1A - SCASE = 'L3 ; SUBCASE 2' -! - ELSEIF (RH.GE.DRML3) THEN ! MDRH OF L3 - SCASE = 'L3 ; SUBCASE 3' - CALL CALCMDRH2 (RH, DRML3, DRLC, CALCL1A, CALCL4) - SCASE = 'L3 ; SUBCASE 3' - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCL3 ***************************************** -! - END SUBROUTINE CALCL3 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCL3A -! *** CASE L3 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, (NH4)2SO4, NA2SO4, LC -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL3A() - Real(kind=fp) :: PSI2LO, PSI2HI - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, PSI4LO, PSI4HI - Real(kind=fp) :: YLO, YHI, DX - Integer :: I - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCL1A -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCL1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 - CHI6 = CK2SO4 - CHI7 = CMGSO4 - CHI8 = CKHSO4 -! - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = ZERO - PSI3 = CNAHSO4 - PSI4 = ZERO - PSI5 = ZERO - PSI6 = ZERO - PSI7 = ZERO - PSI8 = ZERO -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI2LO = ZERO ! Low limit - PSI2HI = CHI2 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI2HI - Y1 = FUNCL3A (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH LC ********* -! - IF (YHI.LT.EPS) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI2HI-PSI2LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = MAX(X1-DX, PSI2LO) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y2 = FUNCL3A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH LC -! - IF (Y2.GT.EPS) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC 2012-01-01) - Y2 = FUNCL3A (ZERO) - ENDIF - GOTO 50 -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL3A (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCL3A') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL3A (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCL3A ***************************************** -! - END SUBROUTINE CALCL3A - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE FUNCL3A -! *** CASE L3 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, (NH4)2SO4, NA2SO4, LC -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCL3A (P2) - Real(kind=fp) :: P2 - Real(kind=fp) :: A2 - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3, PSI4LO, PSI4HI - Real(kind=fp) :: YLO, YHI, DX - Integer :: I - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - - PSI2 = P2 ! Save PSI2 in COMMON BLOCK - PSI4LO = ZERO ! Low limit for PSI4 - PSI4HI = CHI4 ! High limit for PSI4 -! -! *** IF NH3 =0, CALL FUNCL3B FOR Y4=0 ******************************** -! - IF (CHI4.LE.TINY) THEN - FUNCL3A = FUNCL3B (ZERO) - GOTO 50 - ENDIF -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI4HI - Y1 = FUNCL3B (X1) - IF (ABS(Y1).LE.EPS) GOTO 50 - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH NA2SO4 ********* -! - IF (YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI4HI-PSI4LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = MAX(X1-DX, PSI4LO) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y2 = FUNCL3B (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH NA2SO4 -! - IF (Y2.GT.EPS) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC 2012-01-01) - Y2 = FUNCL3B (PSI4LO) - ENDIF - GOTO 50 -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL3B (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0004, 'FUNCL3A') ! WARNING ERROR: NO CONVERGENCE -! -! *** INNER LOOP CONVERGED ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL3B (X3) -! -! *** CALCULATE FUNCTION VALUE FOR INTERNAL LOOP *************************** -! -50 A2 = XK13*(WATER/GAMA(13))**5.0 - FUNCL3A = MOLAL(5)*MOLAL(6)*MOLAL(3)**3.0/A2 - ONE - RETURN -! -! *** END OF FUNCTION FUNCL3A ******************************************* -! - END FUNCTION FUNCL3A - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** FUNCTION FUNCL3B -! *** CASE L3 ; SUBCASE 2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SULRAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, (NH4)2SO4, NA2SO4, LC -! 4. COMPLETELY DISSOLVED: NH4HSO4, NAHSO4 -! -! SOLUTION IS SAVED IN COMMON BLOCK /CASE/ -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCL3B (P4) - Real(kind=fp) :: P4 - Real(kind=fp) :: AA, BB, CC, DD, LAMDA, BITA, CAMA, DELT - Real(kind=fp) :: A4, A5, A6, A8, A9 - Integer :: I, ISLV - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI4 = P4 -! - FRST = .TRUE. - CALAIN = .TRUE. -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = XK5*(WATER/GAMA(2))**3.0 - A5 = XK7*(WATER/GAMA(4))**3.0 - A6 = XK17*(WATER/GAMA(17))**3.0 - A8 = XK18*(WATER/GAMA(18))**2.0 - A9 = XK1*(WATER)*(GAMA(8)**2.0)/(GAMA(7)**3.0) -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = (PSI3 + 2.0*PSI4 - SQRT(A4/A5)*(3.0*PSI2 + PSI1)) ! psi5 - & /2.0/SQRT(A4/A5) - PSI5 = MAX (MIN (PSI5, CHI5), ZERO) -! - PSI7 = CHI7 -! - BB = PSI7 + PSI6 + PSI5 + PSI4 + PSI2 + A9 ! LAMDA - CC = -A9*(PSI8 + PSI1 + PSI2 + PSI3) - DD = MAX(BB*BB - 4.0*CC, ZERO) - LAMDA= 0.5D0*(-BB + SQRT(DD)) - LAMDA= MIN(MAX (LAMDA, TINY), PSI8+PSI3+PSI2+PSI1) -! -! PSI6 = 0.5*(SQRT(A6/A4)*(2.0*PSI4+PSI3)-PSI8) ! PSI6 -! PSI6 = MIN (MAX (PSI6, ZERO), CHI6) -! - IF (CHI6.GT.TINY .AND. WATER.GT.TINY) THEN - AA = PSI5+PSI4+PSI2+PSI7+PSI8+LAMDA - BB = PSI8*(PSI5+PSI4+PSI2+PSI7+0.25D0*PSI8+LAMDA) - CC = 0.25D0*(PSI8*PSI8*(PSI5+PSI4+PSI2+PSI7+LAMDA)-A6) - CALL POLY3 (AA, BB, CC, PSI6, ISLV) - IF (ISLV.EQ.0) THEN - PSI6 = MIN (PSI6, CHI6) - ELSE - PSI6 = ZERO - ENDIF - ENDIF -! - BITA = PSI3 + PSI2 + PSI1 + 2.0*PSI6 - LAMDA - CAMA = 2.0*PSI6*(PSI3 + PSI2 + PSI1 - LAMDA) - A8 - DELT = MAX(BITA*BITA - 4.0*CAMA, ZERO) - PSI8 = 0.5D0*(-BITA + SQRT(DELT)) - PSI8 = MIN(MAX (PSI8, ZERO), CHI8) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL(1) = LAMDA ! HI - MOLAL(2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL(3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL(5) = PSI2 + PSI4 + PSI5 + PSI6 + PSI7 + LAMDA ! SO4I - MOLAL(6) = MAX(PSI2 + PSI3 + PSI1 + PSI8 - LAMDA, TINY) ! HSO4I - MOLAL(9) = PSI8 + 2.0D0*PSI6 ! KI - MOLAL(10)= PSI7 ! MGI -! - CLC = MAX(CHI2 - PSI2, ZERO) - CNAHSO4 = ZERO - CNA2SO4 = MAX(CHI4 - PSI4, ZERO) - CNH42S4 = MAX(CHI5 - PSI5, ZERO) - CNH4HS4 = ZERO - CK2SO4 = MAX(CHI6 - PSI6, ZERO) - CMGSO4 = MAX(CHI7 - PSI7, ZERO) - CKHSO4 = MAX(CHI8 - PSI8, ZERO) - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 A4 = XK5 *(WATER/GAMA(2))**3.0 - FUNCL3B = MOLAL(5)*MOLAL(2)*MOLAL(2)/A4 - ONE - RETURN -! -! *** END OF FUNCTION FUNCL3B **************************************** -! - END FUNCTION FUNCL3B - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCL2 -! *** CASE L2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, NH4HSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC -! -! THERE ARE THREE REGIMES IN THIS CASE: -! 1. NH4HSO4(s) POSSIBLE. LIQUID & SOLID AEROSOL (SUBROUTINE CALCL2A) -! 2. NH4HSO4(s) NOT POSSIBLE, AND RH < MDRH. SOLID AEROSOL ONLY -! 3. NH4HSO4(s) NOT POSSIBLE, AND RH >= MDRH. SOLID & LIQUID AEROSOL -! -! REGIMES 2. AND 3. ARE CONSIDERED TO BE THE SAME AS CASES L1A, L2B -! RESPECTIVELY -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL2() - !EXTERNAL CALCL1A, CALCL3A - Integer :: I -! -! *** FIND DRY COMPOSITION ********************************************** -! - CALL CALCL1A -! -! *** REGIME DEPENDS UPON THE POSSIBLE SOLIDS & RH ********************** -! - IF (CNH4HS4.GT.TINY) THEN - SCASE = 'L2 ; SUBCASE 1' - CALL CALCL2A - SCASE = 'L2 ; SUBCASE 1' - ENDIF -! - IF (WATER.LE.TINY) THEN - IF (RH.LT.DRML2) THEN ! SOLID SOLUTION ONLY - WATER = TINY - DO 10 I=1,NIONS - MOLAL(I) = ZERO -10 CONTINUE - CALL CALCL1A - SCASE = 'L2 ; SUBCASE 2' -! - ELSEIF (RH.GE.DRML2) THEN ! MDRH OF L2 - SCASE = 'L2 ; SUBCASE 3' - CALL CALCMDRH2 (RH, DRML2, DRNAHSO4, CALCL1A, CALCL3A) - SCASE = 'L2 ; SUBCASE 3' - ENDIF - ENDIF -! - RETURN -! -! *** END OF SUBROUTINE CALCL2 ****************************************** -! - END SUBROUTINE CALCL2 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCL2A -! *** CASE L2 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC -! 4. COMPLETELY DISSOLVED: NH4HSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL2A() - Real(kind=fp) :: PSI2LO, PSI2HI - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Real(kind=fp) :: DX, YLO, YHI - Integer :: I - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - CHI1 = CNH4HS4 ! Save from CALCL1 run - CHI2 = CLC - CHI3 = CNAHSO4 - CHI4 = CNA2SO4 - CHI5 = CNH42S4 - CHI6 = CK2SO4 - CHI7 = CMGSO4 - CHI8 = CKHSO4 -! - - PSI1 = CNH4HS4 ! ASSIGN INITIAL PSI's - PSI2 = ZERO - PSI3 = ZERO - PSI4 = ZERO - PSI5 = ZERO - PSI6 = ZERO - PSI7 = ZERO - PSI8 = ZERO -! - CALAOU = .TRUE. ! Outer loop activity calculation flag - PSI2LO = ZERO ! Low limit - PSI2HI = CHI2 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI2HI - Y1 = FUNCL2A (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH NA2SO4 ********* -! - IF (YHI.LT.EPS) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI2HI-PSI2LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = MAX(X1-DX, PSI2LO) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y2 = FUNCL2A (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH NA2SO4 -! - IF (Y2.GT.EPS) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC 2012-01-01) - Y2 = FUNCL2A (ZERO) - ENDIF - GOTO 50 -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL2A (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCL2A') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL2A (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCL2A ***************************************** -! - END SUBROUTINE CALCL2A - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE FUNCL2A -! *** CASE L2 ; SUBCASE 1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC -! 4. COMPLETELY DISSOLVED: NH4HSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCL2A (P2) - Real(kind=fp) :: P2 - Real(kind=fp) :: A1, X1, Y1, X2, Y2, X3, Y3, PSI4LO, PSI4HI, DX - Real(kind=fp) :: YHI, A2 - Integer :: I - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - - PSI2 = P2 ! Save PSI3 in COMMON BLOCK - PSI4LO = ZERO ! Low limit for PSI4 - PSI4HI = CHI4 ! High limit for PSI4 -! -! *** IF NH3 =0, CALL FUNCL3B FOR Y4=0 ******************************** -! - - IF (CHI4.LE.TINY) THEN - FUNCL2A = FUNCL2B (ZERO) - GOTO 50 - ENDIF -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - - X1 = PSI4HI - Y1 = FUNCL2B (X1) - - IF (ABS(Y1).LE.EPS) GOTO 50 - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH LC ********* -! - IF (YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI4HI-PSI4LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = MAX(X1-DX, PSI4LO) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y2 = FUNCL2B (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH LC -! - IF (Y2.GT.EPS) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC 2012-01-01) - Y2 = FUNCL2B (PSI4LO) - ENDIF - GOTO 50 -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL2B (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0004, 'FUNCL2A') ! WARNING ERROR: NO CONVERGENCE -! -! *** INNER LOOP CONVERGED ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCL2B (X3) -! -! *** CALCULATE FUNCTION VALUE FOR OUTER LOOP *************************** -! -50 A2 = XK13*(WATER/GAMA(13))**5.0 - FUNCL2A = MOLAL(5)*MOLAL(6)*MOLAL(3)**3.0/A2 - ONE - RETURN -! -! *** END OF FUNCTION FUNCL2A ******************************************* -! - END FUNCTION FUNCL2A - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE FUNCL2B -! *** CASE L2 ; SUBCASE 2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC -! 4. COMPLETELY DISSOLVED: NH4HSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCL2B (P4) - Real(kind=fp) :: P4 - Real(kind=fp) :: A1, A3, A4, A5, A6, A8, A9 - Real(kind=fp) :: AA, BB, CC, BITA, CAMA, DELT, LAMDA, KAPA, DD - Integer :: I, ISLV - ! changes made by hotp 8/2/07 - ! explicitly declared all variables in SOLUT - ! made SOLUT THREADPRIVATE for OPENMP parallelization -!=======! Real(kind=fp) :: CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8 -!=======! Real(kind=fp) :: CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15 -!=======! Real(kind=fp) :: CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6 -!=======! Real(kind=fp) :: PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13 -!=======! Real(kind=fp) :: PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6 -!=======! Real(kind=fp) :: A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======! COMMON /SOLUT/ CHI1, CHI2, CHI3, CHI4, CHI5, CHI6, CHI7, CHI8, -!=======! & CHI9, CHI10, CHI11, CHI12, CHI13, CHI14, CHI15, -!=======! & CHI16, CHI17, PSI1, PSI2, PSI3, PSI4, PSI5, PSI6, -!=======! & PSI7, PSI8, PSI9, PSI10, PSI11, PSI12, PSI13, -!=======! & PSI14, PSI15, PSI16, PSI17, A1, A2, A3, A4, A5, A6, -!=======! & A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17 -!=======!!$OMP THREADPRIVATE( /SOLUT/ ) -! -! *** SETUP PARAMETERS ************************************************ -! - PSI4 = P4 ! Save PSI4 in COMMON BLOCK -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. - PSI3 = CHI3 - PSI5 = CHI5 - LAMDA = ZERO - PSI6 = CHI6 - PSI8 = CHI8 -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A3 = XK11*(WATER/GAMA(12))**2.0 - A4 = XK5*(WATER/GAMA(2))**3.0 - A5 = XK7*(WATER/GAMA(4))**3.0 - A6 = XK17*(WATER/GAMA(17))**3.0 - A8 = XK18*(WATER/GAMA(18))**2.0 - A9 = XK1*(WATER)*(GAMA(8)**2.0)/(GAMA(7)**3.0) -! -! CALCULATE DISSOCIATION QUANTITIES -! - PSI5 = (PSI3 + 2.0*PSI4 - SQRT(A4/A5)*(3.0*PSI2 + PSI1)) ! psi5 - & /2.0/SQRT(A4/A5) - PSI5 = MAX (MIN (PSI5, CHI5), ZERO) -! - IF (CHI3.GT.TINY .AND. WATER.GT.TINY) THEN - AA = 2.0*PSI4 + PSI2 + PSI1 + PSI8 - LAMDA - BB = 2.0*PSI4*(PSI2 + PSI1 + PSI8 - LAMDA) - A3 - CC = ZERO - CALL POLY3 (AA, BB, CC, PSI3, ISLV) - IF (ISLV.EQ.0) THEN - PSI3 = MIN (PSI3, CHI3) - ELSE - PSI3 = ZERO - ENDIF - ENDIF -! - PSI7 = CHI7 -! - BB = PSI7 + PSI6 + PSI5 + PSI4 + PSI2 + A9 ! LAMDA - CC = -A9*(PSI8 + PSI1 + PSI2 + PSI3) - DD = MAX(BB*BB - 4.0*CC, ZERO) - LAMDA= 0.5D0*(-BB + SQRT(DD)) - LAMDA= MIN(MAX (LAMDA, TINY), PSI8+PSI3+PSI2+PSI1) -! -! PSI6 = 0.5*(SQRT(A6/A4)*(2.0*PSI4+PSI3)-PSI8) ! PSI6 -! PSI6 = MIN (MAX (PSI6, ZERO), CHI6) -! - IF (CHI6.GT.TINY .AND. WATER.GT.TINY) THEN - AA = PSI5+PSI4+PSI2+PSI7+PSI8+LAMDA - BB = PSI8*(PSI5+PSI4+PSI2+PSI7+0.25D0*PSI8+LAMDA) - CC = 0.25D0*(PSI8*PSI8*(PSI5+PSI4+PSI2+PSI7+LAMDA)-A6) - CALL POLY3 (AA, BB, CC, PSI6, ISLV) - IF (ISLV.EQ.0) THEN - PSI6 = MIN (PSI6, CHI6) - ELSE - PSI6 = ZERO - ENDIF - ENDIF -! - BITA = PSI3 + PSI2 + PSI1 + 2.0*PSI6 - LAMDA ! PSI8 - CAMA = 2.0*PSI6*(PSI3 + PSI2 + PSI1 - LAMDA) - A8 - DELT = MAX(BITA*BITA - 4.0*CAMA, ZERO) - PSI8 = 0.5D0*(-BITA + SQRT(DELT)) - PSI8 = MIN(MAX (PSI8, ZERO), CHI8) -! -! *** CALCULATE SPECIATION ******************************************** -! - MOLAL(1) = LAMDA ! HI - MOLAL(2) = 2.0*PSI4 + PSI3 ! NAI - MOLAL(3) = 3.0*PSI2 + 2.0*PSI5 + PSI1 ! NH4I - MOLAL(5) = PSI2 + PSI4 + PSI5 + PSI6 + PSI7 + LAMDA ! SO4I - MOLAL(6) = MAX(PSI2 + PSI3 + PSI1 + PSI8 - LAMDA, TINY) ! HSO4I - MOLAL(9) = PSI8 + 2.0D0*PSI6 ! KI - MOLAL(10)= PSI7 ! MGI -! - CLC = MAX(CHI2 - PSI2, ZERO) - CNAHSO4 = MAX(CHI3 - PSI3, ZERO) - CNA2SO4 = MAX(CHI4 - PSI4, ZERO) - CNH42S4 = MAX(CHI5 - PSI5, ZERO) - CNH4HS4 = ZERO - CK2SO4 = MAX(CHI6 - PSI6, ZERO) - CMGSO4 = MAX(CHI7 - PSI7, ZERO) - CKHSO4 = MAX(CHI8 - PSI8, ZERO) - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 A4 = XK5 *(WATER/GAMA(2))**3.0 - FUNCL2B = MOLAL(5)*MOLAL(2)*MOLAL(2)/A4 - ONE - RETURN -! -! *** END OF FUNCTION FUNCL2B **************************************** -! - END FUNCTION FUNCL2B - - -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCL1 -! *** CASE L1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID & LIQUID AEROSOL POSSIBLE -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, NH4HSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC -! -! THERE ARE TWO POSSIBLE REGIMES HERE, DEPENDING ON RELATIVE HUMIDITY: -! 1. WHEN RH >= MDRH ; LIQUID PHASE POSSIBLE (MDRH REGION) -! 2. WHEN RH < MDRH ; ONLY SOLID PHASE POSSIBLE (SUBROUTINE CALCI1A) -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS & ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL1() - !EXTERNAL CALCL1A, CALCL2A -! -! *** REGIME DEPENDS UPON THE AMBIENT RELATIVE HUMIDITY ***************** -! - IF (RH.LT.DRML1) THEN - SCASE = 'L1 ; SUBCASE 1' - CALL CALCL1A ! SOLID PHASE ONLY POSSIBLE - SCASE = 'L1 ; SUBCASE 1' - ELSE - SCASE = 'L1 ; SUBCASE 2' ! LIQUID & SOLID PHASE POSSIBLE - CALL CALCMDRH2 (RH, DRML1, DRNH4HS4, CALCL1A, CALCL2A) - SCASE = 'L1 ; SUBCASE 2' - ENDIF -! -! *** AMMONIA IN GAS PHASE ********************************************** -! -! CALL CALCNH3 -! - RETURN -! -! *** END OF SUBROUTINE CALCL1 ****************************************** -! - END SUBROUTINE CALCL1 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCL1A -! *** CASE L1A -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE RICH, NO FREE ACID (1.0 <= SO4RAT < 2.0) -! 2. SOLID AEROSOL ONLY -! 3. SOLIDS POSSIBLE : K2SO4, CASO4, MGSO4, KHSO4, NH4HSO4, NAHSO4, (NH4)2SO4, NA2SO4, LC -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCL1A() - Real(kind=fp) :: FRSO4, CAFR, FRK, FRNA, FRNH4, FRMG -! -! *** CALCULATE NON VOLATILE SOLIDS *********************************** -! - CCASO4 = MIN (W(6), W(2)) ! CCASO4 - FRSO4 = MAX(W(2) - CCASO4, ZERO) - CAFR = MAX(W(6) - CCASO4, ZERO) - CK2SO4 = MIN (0.5D0*W(7), FRSO4) ! CK2SO4 - FRK = MAX(W(7) - 2.0*CK2SO4, ZERO) - FRSO4 = MAX(FRSO4 - CK2SO4, ZERO) - CNA2SO4 = MIN (0.5D0*W(1), FRSO4) ! CNA2SO4 - FRNA = MAX(W(1) - 2.0*CNA2SO4, ZERO) - FRSO4 = MAX(FRSO4 - CNA2SO4, ZERO) - CMGSO4 = MIN (W(8), FRSO4) ! CMGSO4 - FRMG = MAX(W(8) - CMGSO4, ZERO) - FRSO4 = MAX(FRSO4 - CMGSO4, ZERO) -! - CNH4HS4 = ZERO - CNAHSO4 = ZERO - CNH42S4 = ZERO - CKHSO4 = ZERO -! - CLC = MIN(W(3)/3.0, FRSO4/2.0) - FRSO4 = MAX(FRSO4-2.0*CLC, ZERO) - FRNH4 = MAX(W(3)-3.0*CLC, ZERO) -! - IF (FRSO4.LE.TINY) THEN - CLC = MAX(CLC - FRNH4, ZERO) - CNH42S4 = 2.0*FRNH4 - - ELSEIF (FRNH4.LE.TINY) THEN - CNH4HS4 = 3.0*MIN(FRSO4, CLC) - CLC = MAX(CLC-FRSO4, ZERO) -! IF (CK2SO4.GT.TINY) THEN -! FRSO4 = MAX(FRSO4-CNH4HS4/3.0, ZERO) -! CKHSO4 = 2.0*FRSO4 -! CK2SO4 = MAX(CK2SO4-FRSO4, ZERO) -! ENDIF -! IF (CNA2SO4.GT.TINY) THEN -! FRSO4 = MAX(FRSO4-CKHSO4/2.0, ZERO) -! CNAHSO4 = 2.0*FRSO4 -! CNA2SO4 = MAX(CNA2SO4-FRSO4, ZERO) -! ENDIF -! - IF (CNA2SO4.GT.TINY) THEN - FRSO4 = MAX(FRSO4-CNH4HS4/3.0, ZERO) - CNAHSO4 = 2.0*FRSO4 - CNA2SO4 = MAX(CNA2SO4-FRSO4, ZERO) - ENDIF - IF (CK2SO4.GT.TINY) THEN - FRSO4 = MAX(FRSO4-CNH4HS4/3.0, ZERO) - CKHSO4 = 2.0*FRSO4 - CK2SO4 = MAX(CK2SO4-FRSO4, ZERO) - ENDIF - ENDIF -! -! *** CALCULATE GAS SPECIES ******************************************** -! - GHNO3 = W(4) - GHCL = W(5) - GNH3 = ZERO -! - RETURN -! -! *** END OF SUBROUTINE CALCL1A ***************************************** -! - END SUBROUTINE CALCL1A -! -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCK4 -! *** CASE K4 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE SUPER RICH, FREE ACID (SO4RAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : CASO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCK4() - Real(kind=fp) :: A4, BB, CC, DD, LAMDA, KAPA - Integer :: I -! - !Real(kind=fp) :: LAMDA, KAPA - ! modified by hotp 8/2/07 - ! explicitly declared all variables in CASEK - ! made CASEK THREADPRIVATE for parallelization -!========! Real(kind=fp) :: CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3 -!========! Real(kind=fp) :: A1, A2, A3, A4 -!========! COMMON /CASEK/ CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3, -!========! & A1, A2, A3, A4 -!========!!$OMP THREADPRIVATE( /CASEK/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU =.TRUE. ! Outer loop activity calculation flag - FRST = .TRUE. - CALAIN = .TRUE. -! - CHI1 = W(3) ! Total NH4 initially as NH4HSO4 - CHI2 = W(1) ! Total NA initially as NaHSO4 - CHI3 = W(7) ! Total K initially as KHSO4 -#if defined( ISORROPIA_V22 ) - CHI4 = W(8) ! Total Mg initially as MgSO4 -! - LAMDA = MAX(W(2) - W(3) - W(1) - W(6) - W(7) - W(8), TINY) ! FREE H2SO4 -#else - LAMDA = MAX(W(2) - W(3) - W(1) - W(6) - W(7), TINY) ! FREE H2SO4 -#endif - PSI1 = CHI1 ! ALL NH4HSO4 DELIQUESCED - PSI2 = CHI2 ! ALL NaHSO4 DELIQUESCED - PSI3 = CHI3 ! ALL KHSO4 DELIQUESCED -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A4 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2.0 -! -#if defined( ISORROPIA_V22 ) - BB = A4+LAMDA+PSI4 ! KAPA - CC =-A4*(LAMDA + PSI3 + PSI2 + PSI1) + LAMDA*PSI4 - DD = MAX(BB*BB-4.D0*CC, ZERO) -#else - BB = A4+LAMDA ! KAPA - CC =-A4*(LAMDA + PSI3 + PSI2 + PSI1) - DD = BB*BB-4.D0*CC -#endif - KAPA = 0.5D0*(-BB+SQRT(DD)) -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! -#if defined( ISORROPIA_V22 ) - MOLAL (1) = MAX(LAMDA + KAPA, TINY) ! HI - MOLAL (2) = PSI2 ! NAI - MOLAL (3) = PSI1 ! NH4I - MOLAL (5) = MAX(KAPA + PSI4, ZERO) ! SO4I - MOLAL (6) = MAX(LAMDA + PSI1 + PSI2 + PSI3 - KAPA, ZERO) ! HSO4I - MOLAL (9) = PSI3 ! KI - MOLAL (10)= PSI4 ! MGI -#else - MOLAL (1) = LAMDA + KAPA ! HI - MOLAL (2) = PSI2 ! NAI - MOLAL (3) = PSI1 ! NH4I - MOLAL (5) = KAPA ! SO4I - MOLAL (6) = LAMDA + PSI1 + PSI2 + PSI3 - KAPA ! HSO4I - MOLAL (9) = PSI3 ! KI -#endif -! - CNH4HS4 = ZERO - CNAHSO4 = ZERO - CKHSO4 = ZERO - CCASO4 = W(6) -#if defined( ISORROPIA_V22 ) - CMGSO4 = ZERO -#endif -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -20 RETURN -! -! *** END OF SUBROUTINE CALCK4 -! - END SUBROUTINE CALCK4 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCK3 -! *** CASE K3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE SUPER RICH, FREE ACID (SO4RAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : KHSO4, CASO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCK3() - Real(kind=fp) :: PSI3LO, PSI3HI - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Real(kind=fp) :: DX, YLO, YHI - Integer :: I -! - !Real(kind=fp) :: LAMDA, KAPA - ! modified by hotp 8/2/07 - ! explicitly declared all variables in CASEK - ! made CASEK THREADPRIVATE for parallelization -!========! Real(kind=fp) :: CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3 -!========! Real(kind=fp) :: A1, A2, A3, A4 -!========! COMMON /CASEK/ CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3, -!========! & A1, A2, A3, A4 -!========!!$OMP THREADPRIVATE( /CASEK/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU =.TRUE. ! Outer loop activity calculation flag - CHI1 = W(3) ! Total NH4 initially as NH4HSO4 - CHI2 = W(1) ! Total NA initially as NaHSO4 - CHI3 = W(7) ! Total K initially as KHSO4 -#if defined( ISORROPIA_V22 ) - CHI4 = W(8) ! Total K initially as KHSO4 -#endif -! - PSI3LO = TINY ! Low limit - PSI3HI = CHI3 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI3HI - Y1 = FUNCK3 (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH KHSO4 **** -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI3HI-PSI3LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1-DX - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y2 = FUNCK3 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH KHSO4 -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCK3 (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCK3') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCK3 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCK3') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCK3 (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCK3 ****************************************** -! - END SUBROUTINE CALCK3 -! -!======================================================================= -! -! *** ISORROPIA CODE -! *** SUBROUTINE FUNCK3 -! *** CASE K3 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE SUPER RICH, FREE ACID (SO4RAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : KHSO4, CaSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCK3 (P1) - Real(kind=fp) :: P1 - Real(kind=fp) :: A1, A3, A4, BB, CC, DD, LAMDA, KAPA - Integer :: I - !Real(kind=fp) :: LAMDA, KAPA - ! modified by hotp 8/2/07 - ! explicitly declared all variables in CASEK - ! made CASEK THREADPRIVATE for parallelization -!========! Real(kind=fp) :: CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3 -!========! Real(kind=fp) :: A1, A2, A3, A4 -!========! COMMON /CASEK/ CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3, -!========! & A1, A2, A3, A4 -!========!!$OMP THREADPRIVATE( /CASEK/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. -! -#if defined( ISORROPIA_V22 ) - LAMDA = MAX(W(2) - W(3) - W(1) - W(6) - W(7) - W(8), TINY) ! FREE H2SO4 -#else - LAMDA = MAX(W(2) - W(3) - W(1) - W(6) - W(7), TINY) ! FREE H2SO4 -#endif - PSI3 = P1 - PSI1 = CHI1 ! ALL NH4HSO4 DELIQUESCED - PSI2 = CHI2 ! ALL NaHSO4 DELIQUESCED -#if defined( ISORROPIA_V22 ) - PSI4 = CHI4 ! ALL MgSO4 DELIQUESCED -#endif - -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A3 = XK18 *(WATER/GAMA(18))**2.0 - A4 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2.0 -! -! -#if defined( ISORROPIA_V22 ) - BB = A4+LAMDA+PSI4 ! KAPA - CC =-A4*(LAMDA + PSI3 + PSI2 + PSI1) + LAMDA*PSI4 - DD = MAX(BB*BB-4.0*CC, ZERO) -#else - BB = A4+LAMDA ! KAPA - CC =-A4*(LAMDA + PSI3 + PSI2 + PSI1) - DD = BB*BB-4.D0*CC -#endif - KAPA = 0.5D0*(-BB+SQRT(DD)) -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! -#if defined( ISORROPIA_V22 ) - MOLAL (1) = MAX(LAMDA + KAPA, ZERO) ! HI - MOLAL (2) = PSI2 ! NAI - MOLAL (3) = PSI1 ! NH4I - MOLAL (4) = ZERO - MOLAL (5) = MAX(KAPA + PSI4, ZERO) ! SO4I - MOLAL (6) = MAX(LAMDA+PSI1+PSI2+PSI3-KAPA,ZERO) ! HSO4I - MOLAL (7) = ZERO - MOLAL (8) = ZERO - MOLAL (9) = PSI3 ! KI - MOLAL (10)= PSI4 ! KI -#else - MOLAL (1) = LAMDA + KAPA ! HI - MOLAL (2) = PSI2 ! NAI - MOLAL (3) = PSI1 ! NH4I - MOLAL (4) = ZERO - MOLAL (5) = KAPA ! SO4I - MOLAL (6) = LAMDA+PSI1+PSI2+PSI3-KAPA ! HSO4I - MOLAL (7) = ZERO - MOLAL (8) = ZERO - MOLAL (9) = PSI3 ! KI -#endif -! - CNH4HS4 = ZERO - CNAHSO4 = ZERO - CKHSO4 = CHI3-PSI3 - CCASO4 = W(6) -#if defined( ISORROPIA_V22 ) - CMGSO4 = ZERO -#endif -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 FUNCK3 = MOLAL(9)*MOLAL(6)/A3 - ONE -! -! *** END OF FUNCTION FUNCK3 ******************************************* -! - END FUNCTION FUNCK3 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCK2 -! *** CASE K2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE SUPER RICH, FREE ACID (SO4RAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : NAHSO4, KHSO4, CaSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCK2() - Real(kind=fp) :: PSI3LO, PSI3HI - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Real(kind=fp) :: DX, YLO, YHI - Integer :: I -! - !Real(kind=fp) :: LAMDA, KAPA - ! modified by hotp 8/2/07 - ! explicitly declared all variables in CASEK - ! made CASEK THREADPRIVATE for parallelization -!========! Real(kind=fp) :: CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3 -!========! Real(kind=fp) :: A1, A2, A3, A4 -!========! COMMON /CASEK/ CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3, -!========! & A1, A2, A3, A4 -!========!!$OMP THREADPRIVATE( /CASEK/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - CALAOU =.TRUE. ! Outer loop activity calculation flag - CHI1 = W(3) ! Total NH4 initially as NH4HSO4 - CHI2 = W(1) ! Total NA initially as NaHSO4 - CHI3 = W(7) ! Total K initially as KHSO4 -#if defined( ISORROPIA_V22 ) - CHI4 = W(8) ! Total Mg initially as MgSO4 -#endif -! - PSI3LO = TINY ! Low limit - PSI3HI = CHI3 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI3HI - Y1 = FUNCK2 (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH KHSO4 **** -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI3HI-PSI3LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1-DX - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y2 = FUNCK2 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH KHSO4 -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCK2 (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCK2') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCK2 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCK2') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCK2 (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCK2 ****************************************** -! - END SUBROUTINE CALCK2 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE FUNCK2 -! *** CASE K2 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE SUPER RICH, FREE ACID (SO4RAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : NAHSO4, KHSO4, CaSO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCK2 (P1) - Real(kind=fp) :: P1 - Real(kind=fp) :: A1, A2, A3, A4, BB, CC, DD, KAPA, LAMDA - Integer :: I - !Real(kind=fp) :: LAMDA, KAPA - ! modified by hotp 8/2/07 - ! explicitly declared all variables in CASEK - ! made CASEK THREADPRIVATE for parallelization -!========! Real(kind=fp) :: CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3 -!========! Real(kind=fp) :: A1, A2, A3, A4 -!========! COMMON /CASEK/ CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3, -!========! & A1, A2, A3, A4 -!========!!$OMP THREADPRIVATE( /CASEK/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. -! -#if defined( ISORROPIA_V22 ) - LAMDA = MAX(W(2) - W(3) - W(1) - W(6) - W(7) - W(8), TINY) ! FREE H2SO4 -#else - LAMDA = MAX(W(2) - W(3) - W(1) - W(6) - W(7), TINY) ! FREE H2SO4 -#endif - PSI3 = P1 - PSI1 = CHI1 ! ALL NH4HSO4 DELIQUESCED -#if defined( ISORROPIA_V22 ) - PSI4 = CHI4 ! ALL MgHSO4 DELIQUESCED -#endif -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A2 = XK11 *(WATER/GAMA(12))**2.0 - A3 = XK18 *(WATER/GAMA(18))**2.0 - A4 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2.0 -! - PSI2 = A2/A3*PSI3 ! PSI2 - PSI2 = MIN(MAX(PSI2, ZERO),CHI2) -! -#if defined( ISORROPIA_V22 ) - BB = A4+LAMDA+PSI4 ! KAPA - CC =-A4*(LAMDA + PSI3 + PSI2 + PSI1) + LAMDA*PSI4 - DD = MAX(BB*BB-4.0*CC, ZERO) -#else - BB = A4+LAMDA ! KAPA - CC =-A4*(LAMDA + PSI3 + PSI2 + PSI1) - DD = BB*BB-4.D0*CC -#endif - KAPA = 0.5D0*(-BB+SQRT(DD)) -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! -#if defined( ISORROPIA_V22 ) - MOLAL (1) = MAX(LAMDA + KAPA, ZERO) ! HI - MOLAL (2) = PSI2 ! NAI - MOLAL (3) = PSI1 ! NH4I - MOLAL (4) = ZERO - MOLAL (5) = MAX(KAPA + PSI4, ZERO) ! SO4I - MOLAL (6) = MAX(LAMDA+PSI1+PSI2+PSI3-KAPA,ZERO) ! HSO4I - MOLAL (7) = ZERO - MOLAL (8) = ZERO - MOLAL (9) = PSI3 ! KI - MOLAL (10)= PSI4 -#else - MOLAL (1) = LAMDA + KAPA ! HI - MOLAL (2) = PSI2 ! NAI - MOLAL (3) = PSI1 ! NH4I - MOLAL (4) = ZERO - MOLAL (5) = KAPA ! SO4I - MOLAL (6) = LAMDA+PSI1+PSI2+PSI3-KAPA ! HSO4I - MOLAL (7) = ZERO - MOLAL (8) = ZERO - MOLAL (9) = PSI3 ! KI -#endif -! - CNH4HS4 = ZERO - CNAHSO4 = CHI2-PSI2 - CKHSO4 = CHI3-PSI3 - CCASO4 = W(6) -#if defined( ISORROPIA_V22 ) - CMgSO4 = ZERO -#endif -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 FUNCK2 = MOLAL(9)*MOLAL(6)/A3 - ONE -! -! *** END OF FUNCTION FUNCK2 ******************************************* -! - END FUNCTION FUNCK2 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE CALCK1 -! *** CASE K1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE SUPER RICH, FREE ACID (SO4RAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : NH4HSO4, NAHSO4, KHSO4, CASO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - SUBROUTINE CALCK1() - Real(kind=fp) :: PSI3LO, PSI3HI - Real(kind=fp) :: X1, Y1, X2, Y2, X3, Y3 - Real(kind=fp) :: DX, YLO, YHI - Integer :: I -! - !Real(kind=fp) :: LAMDA, KAPA - ! modified by hotp 8/2/07 - ! explicitly declared all variables in CASEK - ! made CASEK THREADPRIVATE for parallelization -!========! Real(kind=fp) :: CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3 -!========! Real(kind=fp) :: A1, A2, A3, A4 -!========! COMMON /CASEK/ CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3, -!========! & A1, A2, A3, A4 -!========!!$OMP THREADPRIVATE( /CASEK/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - - CALAOU =.TRUE. ! Outer loop activity calculation flag - CHI1 = W(3) ! Total NH4 initially as NH4HSO4 - CHI2 = W(1) ! Total NA initially as NaHSO4 - CHI3 = W(7) ! Total K initially as KHSO4 -#if defined( ISORROPIA_V22 ) - CHI4 = W(8) ! Total Mg initially as MgSO4 -#endif -! - PSI3LO = TINY ! Low limit - PSI3HI = CHI3 ! High limit -! -! *** INITIAL VALUES FOR BISECTION ************************************ -! - X1 = PSI3HI - Y1 = FUNCK1 (X1) - YHI= Y1 ! Save Y-value at HI position -! -! *** YHI < 0.0 THE SOLUTION IS ALWAYS UNDERSATURATED WITH KHSO4 **** -! - IF (ABS(Y1).LE.EPS .OR. YHI.LT.ZERO) GOTO 50 -! -! *** ROOT TRACKING ; FOR THE RANGE OF HI AND LO ********************** -! - DX = (PSI3HI-PSI3LO)/REAL(NDIV) - DO 10 I=1,NDIV - X2 = X1-DX - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y2 = FUNCK1 (X2) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y2).LT.ZERO) GOTO 20 ! (Y1*Y2.LT.ZERO) - X1 = X2 - Y1 = Y2 -10 CONTINUE -! -! *** { YLO, YHI } > 0.0 THE SOLUTION IS ALWAYS SUPERSATURATED WITH KHSO4 -! - YLO= Y1 ! Save Y-value at Hi position - IF (YLO.GT.ZERO .AND. YHI.GT.ZERO) THEN - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCK1 (ZERO) - GOTO 50 - ELSE IF (ABS(Y2) .LT. EPS) THEN ! X2 IS A SOLUTION - GOTO 50 - ELSE - CALL PUSHERR (0001, 'CALCK1') ! WARNING ERROR: NO SOLUTION - GOTO 50 - ENDIF -! -! *** PERFORM BISECTION *********************************************** -! -20 DO 30 I=1,MAXIT - X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCK1 (X3) - IF (SIGN(ONE,Y1)*SIGN(ONE,Y3) .LE. ZERO) THEN ! (Y1*Y3 .LE. ZERO) - Y2 = Y3 - X2 = X3 - ELSE - Y1 = Y3 - X1 = X3 - ENDIF - IF (ABS(X2-X1) .LE. EPS*X1) GOTO 40 -30 CONTINUE - CALL PUSHERR (0002, 'CALCK1') ! WARNING ERROR: NO CONVERGENCE -! -! *** CONVERGED ; RETURN ********************************************** -! -40 X3 = 0.5*(X1+X2) - CALL RSTGAMP ! Reinitialize activity coefficients (SLC C2012-01-01) - Y3 = FUNCK1 (X3) -! -50 RETURN -! -! *** END OF SUBROUTINE CALCK1 ****************************************** -! - END SUBROUTINE CALCK1 - -! -!======================================================================= -! -! *** ISORROPIA CODE II -! *** SUBROUTINE FUNCK1 -! *** CASE K1 -! -! THE MAIN CHARACTERISTICS OF THIS REGIME ARE: -! 1. SULFATE super RICH, FREE ACID (SO4RAT < 1.0) -! 2. THERE IS BOTH A LIQUID & SOLID PHASE -! 3. SOLIDS POSSIBLE : NH4HSO4, NAHSO4, KHSO4, CASO4 -! -! *** COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY -! *** GEORGIA INSTITUTE OF TECHNOLOGY -! *** WRITTEN BY CHRISTOS FOUNTOUKIS AND ATHANASIOS NENES -! -!======================================================================= -! - Real(kind=fp) FUNCTION FUNCK1 (P1) - Real(kind=fp) :: P1 - Real(kind=fp) :: A1, A2, A3, A4 - Real(kind=fp) :: LAMDA, KAPA, BB, CC, DD - Integer :: I - !Real(kind=fp) :: LAMDA, KAPA - ! modified by hotp 8/2/07 - ! explicitly declared all variables in CASEK - ! made CASEK THREADPRIVATE for parallelization -!========! Real(kind=fp) :: CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3 -!========! Real(kind=fp) :: A1, A2, A3, A4 -!========! COMMON /CASEK/ CHI1, CHI2, CHI3, LAMDA, KAPA, PSI1, PSI2, PSI3, -!========! & A1, A2, A3, A4 -!========!!$OMP THREADPRIVATE( /CASEK/ ) - -! -! *** SETUP PARAMETERS ************************************************ -! - FRST = .TRUE. - CALAIN = .TRUE. -! -#if defined( ISORROPIA_V22 ) - LAMDA = MAX(W(2) - W(3) - W(1) - W(6) - W(7) - W(8), TINY) ! FREE H2SO4 -#else - LAMDA = MAX(W(2) - W(3) - W(1) - W(6) - W(7), TINY) ! FREE H2SO4 -#endif - PSI3 = P1 -#if defined( ISORROPIA_V22 ) - PSI4 = CHI4 ! All MgSO4 deliquesced -#endif -! -! *** SOLVE EQUATIONS ; WITH ITERATIONS FOR ACTIVITY COEF. ************ -! - DO 10 I=1,NSWEEP -! - A1 = XK12 *(WATER/GAMA(09))**2.0 - A2 = XK11 *(WATER/GAMA(12))**2.0 - A3 = XK18 *(WATER/GAMA(18))**2.0 - A4 = XK1 *WATER/GAMA(7)*(GAMA(8)/GAMA(7))**2.0 -! - PSI1 = A1/A3*PSI3 ! PSI1 - PSI1 = MIN(MAX(PSI1, ZERO),CHI1) -! - PSI2 = A2/A3*PSI3 ! PSI2 - PSI2 = MIN(MAX(PSI2, ZERO),CHI2) -! -#if defined( ISORROPIA_V22 ) - BB = A4+LAMDA+PSI4 ! KAPA - CC =-A4*(LAMDA + PSI3 + PSI2 + PSI1) + LAMDA*PSI4 - DD = MAX(BB*BB-4.0*CC, ZERO) -#else - BB = A4+LAMDA ! KAPA - CC =-A4*(LAMDA + PSI3 + PSI2 + PSI1) - DD = BB*BB-4.D0*CC -#endif - KAPA = 0.5D0*(-BB+SQRT(DD)) -! -! *** SAVE CONCENTRATIONS IN MOLAL ARRAY ****************************** -! -#if defined( ISORROPIA_V22 ) - MOLAL (1) = MAX(LAMDA + KAPA, ZERO) ! HI - MOLAL (2) = PSI2 ! NAI - MOLAL (3) = PSI1 ! NH4I - MOLAL (4) = ZERO ! CLI - MOLAL (5) = MAX(KAPA + PSI4, ZERO) ! SO4I - MOLAL (6) = MAX(LAMDA+PSI1+PSI2+PSI3-KAPA,ZERO) ! HSO4I - MOLAL (7) = ZERO ! NO3I - MOLAL (8) = ZERO ! CAI - MOLAL (9) = PSI3 ! KI - MOLAL (10)= PSI4 ! MGI -#else - MOLAL (1) = LAMDA + KAPA ! HI - MOLAL (2) = PSI2 ! NAI - MOLAL (3) = PSI1 ! NH4I - MOLAL (4) = ZERO ! CLI - MOLAL (5) = KAPA ! SO4I - MOLAL (6) = LAMDA+PSI1+PSI2+PSI3-KAPA ! HSO4I - MOLAL (7) = ZERO ! NO3I - MOLAL (8) = ZERO ! CAI - MOLAL (9) = PSI3 ! KI - MOLAL (10)= ZERO ! MGI -#endif -! - CNH4HS4 = CHI1-PSI1 - CNAHSO4 = CHI2-PSI2 - CKHSO4 = CHI3-PSI3 - CCASO4 = W(6) -#if defined( ISORROPIA_V22 ) - CMGSO4 = ZERO -#endif -! - CALL CALCMR ! Water content -! -! *** CALCULATE ACTIVITIES OR TERMINATE INTERNAL LOOP ***************** -! - IF (FRST.AND.CALAOU .OR. .NOT.FRST.AND.CALAIN) THEN - CALL CALCACT - - ELSE - GOTO 20 - ENDIF -10 CONTINUE -! -! *** CALCULATE OBJECTIVE FUNCTION ************************************ -! -20 FUNCK1 = MOLAL(9)*MOLAL(6)/A3 - ONE -! -! *** END OF FUNCTION FUNCK1 **************************************** -! - End Function Funck1 - - - Subroutine Init_IsoData() - Integer :: I - - Temp = 298.0 - RH = 0.9D0 - - MOLAL = NIONS*0.0D0 - MOLALR = NPAIR*0.0D0 - GAMA = NPAIR*0.1D0 - GAMOU = NPAIR*1D10 - GAMIN = NPAIR*1D10 - CALAIN = .TRUE. - CALAOU = .TRUE. - ICLACT = 0 -! - Do I=1,NERRMX - ERRSTK(I) = 0 - ERRMSG(I) = ' ' - End Do - NOFER = 0 - STKOFL = .FALSE. - IPROB = 0 - METSTBL = 0 -#if defined( ISORROPIA_V22 ) - VERSION = '2.2 (03/21/12)' -#else - VERSION = '2.0 (03/19/07)' -#endif -! -! *** ZSR RELATIONSHIP PARAMETERS ************************************** -! -! awas= ammonium sulfate -! - AWAS(1:10) = 187.72 - AWAS(11:NZSR) = (/ - & 158.13,134.41,115.37,100.10, 87.86, 78.00, 70.00, 63.45, 58.02, - & 53.46, - & 49.59, 46.26, 43.37, 40.84, 38.59, 36.59, 34.79, 33.16, 31.67, - & 30.31, - & 29.07, 27.91, 26.84, 25.84, 24.91, 24.03, 23.21, 22.44, 21.70, - & 21.01, - & 20.34, 19.71, 19.11, 18.54, 17.99, 17.46, 16.95, 16.46, 15.99, - & 15.54, - & 15.10, 14.67, 14.26, 13.86, 13.47, 13.09, 12.72, 12.36, 12.01, - & 11.67, - & 11.33, 11.00, 10.68, 10.37, 10.06, 9.75, 9.45, 9.15, 8.86, - & 8.57, - & 8.29, 8.01, 7.73, 7.45, 7.18, 6.91, 6.64, 6.37, 6.10, - & 5.83, - & 5.56, 5.29, 5.02, 4.74, 4.47, 4.19, 3.91, 3.63, 3.34, - & 3.05, - & 2.75, 2.45, 2.14, 1.83, 1.51, 1.19, 0.87, 0.56, 0.26, - & 0.1/) -! -! awsn= sodium nitrate -! - AWSN(1:10) = 394.54 - AWSN(11:NZSR) = (/ - & 338.91,293.01,254.73,222.61,195.56,172.76,153.53,137.32,123.65, - & 112.08, - & 102.26, 93.88, 86.68, 80.45, 75.02, 70.24, 66.02, 62.26, 58.89, - & 55.85, - & 53.09, 50.57, 48.26, 46.14, 44.17, 42.35, 40.65, 39.06, 37.57, - & 36.17, - & 34.85, 33.60, 32.42, 31.29, 30.22, 29.20, 28.22, 27.28, 26.39, - & 25.52, - & 24.69, 23.89, 23.12, 22.37, 21.65, 20.94, 20.26, 19.60, 18.96, - & 18.33, - & 17.72, 17.12, 16.53, 15.96, 15.40, 14.85, 14.31, 13.78, 13.26, - & 12.75, - & 12.25, 11.75, 11.26, 10.77, 10.29, 9.82, 9.35, 8.88, 8.42, - & 7.97, - & 7.52, 7.07, 6.62, 6.18, 5.75, 5.32, 4.89, 4.47, 4.05, - & 3.64, - & 3.24, 2.84, 2.45, 2.07, 1.70, 1.34, 0.99, 0.65, 0.31, - & 0.1/) -! -! awsc= sodium chloride -! - AWSC(1:10) = 28.16 - AWSC(11:NZSR) = (/ - & 27.17, 26.27, 25.45, 24.69, 23.98, 23.33, 22.72, 22.14, 21.59, - & 21.08, - & 20.58, 20.12, 19.67, 19.24, 18.82, 18.43, 18.04, 17.67, 17.32, - & 16.97, - & 16.63, 16.31, 15.99, 15.68, 15.38, 15.08, 14.79, 14.51, 14.24, - & 13.97, - & 13.70, 13.44, 13.18, 12.93, 12.68, 12.44, 12.20, 11.96, 11.73, - & 11.50, - & 11.27, 11.05, 10.82, 10.60, 10.38, 10.16, 9.95, 9.74, 9.52, - & 9.31, - & 9.10, 8.89, 8.69, 8.48, 8.27, 8.07, 7.86, 7.65, 7.45, - & 7.24, - & 7.04, 6.83, 6.62, 6.42, 6.21, 6.00, 5.79, 5.58, 5.36, - & 5.15, - & 4.93, 4.71, 4.48, 4.26, 4.03, 3.80, 3.56, 3.32, 3.07, - & 2.82, - & 2.57, 2.30, 2.04, 1.76, 1.48, 1.20, 0.91, 0.61, 0.30, - & 0.1/) -! -! awac= ammonium chloride -! - AWAC(1:10) = 1209.00 - AWAC(11:NZSR) = (/ - & 1067.60,949.27,848.62,761.82,686.04,619.16,559.55,505.92,457.25, - & 412.69, - & 371.55,333.21,297.13,262.81,229.78,197.59,165.98,135.49,108.57, - & 88.29, - & 74.40, 64.75, 57.69, 52.25, 47.90, 44.30, 41.27, 38.65, 36.36, - & 34.34, - & 32.52, 30.88, 29.39, 28.02, 26.76, 25.60, 24.51, 23.50, 22.55, - & 21.65, - & 20.80, 20.00, 19.24, 18.52, 17.83, 17.17, 16.54, 15.93, 15.35, - & 14.79, - & 14.25, 13.73, 13.22, 12.73, 12.26, 11.80, 11.35, 10.92, 10.49, - & 10.08, - & 9.67, 9.28, 8.89, 8.51, 8.14, 7.77, 7.42, 7.06, 6.72, - & 6.37, - & 6.03, 5.70, 5.37, 5.05, 4.72, 4.40, 4.08, 3.77, 3.45, - & 3.14, - & 2.82, 2.51, 2.20, 1.89, 1.57, 1.26, 0.94, 0.62, 0.31, - & 0.1/) -! -! awss= sodium sulfate -! - AWSS(1:10) = 24.10 - AWSS(11:NZSR) = (/ - & 23.17, 22.34, 21.58, 20.90, 20.27, 19.69, 19.15, 18.64, 18.17, - & 17.72, - & 17.30, 16.90, 16.52, 16.16, 15.81, 15.48, 15.16, 14.85, 14.55, - & 14.27, - & 13.99, 13.73, 13.47, 13.21, 12.97, 12.73, 12.50, 12.27, 12.05, - & 11.84, - & 11.62, 11.42, 11.21, 11.01, 10.82, 10.63, 10.44, 10.25, 10.07, - & 9.89, - & 9.71, 9.53, 9.36, 9.19, 9.02, 8.85, 8.68, 8.51, 8.35, - & 8.19, - & 8.02, 7.86, 7.70, 7.54, 7.38, 7.22, 7.06, 6.90, 6.74, - & 6.58, - & 6.42, 6.26, 6.10, 5.94, 5.78, 5.61, 5.45, 5.28, 5.11, - & 4.93, - & 4.76, 4.58, 4.39, 4.20, 4.01, 3.81, 3.60, 3.39, 3.16, - & 2.93, - & 2.68, 2.41, 2.13, 1.83, 1.52, 1.19, 0.86, 0.54, 0.25, - & 0.1/) -! -! awab= ammonium bisulfate -! - AWAB(1:10) = 312.84 - AWAB(11:NZSR) = (/ - & 271.43,237.19,208.52,184.28,163.64,145.97,130.79,117.72,106.42, - & 96.64, - & 88.16, 80.77, 74.33, 68.67, 63.70, 59.30, 55.39, 51.89, 48.76, - & 45.93, - & 43.38, 41.05, 38.92, 36.97, 35.18, 33.52, 31.98, 30.55, 29.22, - & 27.98, - & 26.81, 25.71, 24.67, 23.70, 22.77, 21.90, 21.06, 20.27, 19.52, - & 18.80, - & 18.11, 17.45, 16.82, 16.21, 15.63, 15.07, 14.53, 14.01, 13.51, - & 13.02, - & 12.56, 12.10, 11.66, 11.24, 10.82, 10.42, 10.04, 9.66, 9.29, - & 8.93, - & 8.58, 8.24, 7.91, 7.58, 7.26, 6.95, 6.65, 6.35, 6.05, - & 5.76, - & 5.48, 5.20, 4.92, 4.64, 4.37, 4.09, 3.82, 3.54, 3.27, - & 2.99, - & 2.70, 2.42, 2.12, 1.83, 1.52, 1.22, 0.90, 0.59, 0.28, - & 0.1/) -! -! awsa= sulfuric acid -! - AWSA = (/34.00, 33.56, 29.22, 26.55, 24.61, 23.11, 21.89, 20.87, - & 19.99, 18.45, - & 17.83, 17.26, 16.73, 16.25, 15.80, 15.38, 14.98, 14.61, 14.26, - & 13.93, - & 13.61, 13.30, 13.01, 12.73, 12.47, 12.21, 11.96, 11.72, 11.49, - & 11.26, - & 11.04, 10.83, 10.62, 10.42, 10.23, 10.03, 9.85, 9.67, 9.49, - & 9.31, - & 9.14, 8.97, 8.81, 8.65, 8.49, 8.33, 8.18, 8.02, 7.87, - & 7.73, - & 7.58, 7.44, 7.29, 7.15, 7.01, 6.88, 6.74, 6.61, 6.47, - & 6.34, - & 6.21, 6.07, 5.94, 5.81, 5.68, 5.55, 5.43, 5.30, 5.17, - & 5.04, - & 4.91, 4.78, 4.65, 4.52, 4.39, 4.26, 4.13, 4.00, 3.86, - & 3.73, - & 3.59, 3.45, 3.31, 3.17, 3.02, 2.87, 2.71, 2.56, 2.39, - & 2.22, - & 2.05, 1.87, 1.68, 1.48, 1.27, 1.04, 0.80, 0.55, 0.28, - & 0.1/) -! -! awlc= (NH4)3H(SO4)2 -! - AWLC(1:10) = 125.37 - AWLC(11:NZSR) = (/ - & 110.10, 97.50, 86.98, 78.08, 70.49, 63.97, 58.33, 53.43, 49.14, - & 45.36, - & 42.03, 39.07, 36.44, 34.08, 31.97, 30.06, 28.33, 26.76, 25.32, - & 24.01, - & 22.81, 21.70, 20.67, 19.71, 18.83, 18.00, 17.23, 16.50, 15.82, - & 15.18, - & 14.58, 14.01, 13.46, 12.95, 12.46, 11.99, 11.55, 11.13, 10.72, - & 10.33, - & 9.96, 9.60, 9.26, 8.93, 8.61, 8.30, 8.00, 7.72, 7.44, - & 7.17, - & 6.91, 6.66, 6.42, 6.19, 5.96, 5.74, 5.52, 5.31, 5.11, - & 4.91, - & 4.71, 4.53, 4.34, 4.16, 3.99, 3.81, 3.64, 3.48, 3.31, - & 3.15, - & 2.99, 2.84, 2.68, 2.53, 2.37, 2.22, 2.06, 1.91, 1.75, - & 1.60, - & 1.44, 1.28, 1.12, 0.95, 0.79, 0.62, 0.45, 0.29, 0.14, - & 0.1/) -! -! awan= ammonium nitrate -! - AWAN(1:10) = 960.19 - AWAN(11:NZSR) = (/ - & 853.15,763.85,688.20,623.27,566.92,517.54,473.91,435.06,400.26, - & 368.89, - & 340.48,314.63,291.01,269.36,249.46,231.11,214.17,198.50,184.00, - & 170.58, - & 158.15,146.66,136.04,126.25,117.24,108.97,101.39, 94.45, 88.11, - & 82.33, - & 77.06, 72.25, 67.85, 63.84, 60.16, 56.78, 53.68, 50.81, 48.17, - & 45.71, - & 43.43, 41.31, 39.32, 37.46, 35.71, 34.06, 32.50, 31.03, 29.63, - & 28.30, - & 27.03, 25.82, 24.67, 23.56, 22.49, 21.47, 20.48, 19.53, 18.61, - & 17.72, - & 16.86, 16.02, 15.20, 14.41, 13.64, 12.89, 12.15, 11.43, 10.73, - & 10.05, - & 9.38, 8.73, 8.09, 7.47, 6.86, 6.27, 5.70, 5.15, 4.61, - & 4.09, - & 3.60, 3.12, 2.66, 2.23, 1.81, 1.41, 1.03, 0.67, 0.32, - & 0.1/) -! -! awsb= sodium bisulfate -! - AWSB(1:10) = 55.99 - AWSB(11:NZSR) = (/ - & 53.79, 51.81, 49.99, 48.31, 46.75, 45.28, 43.91, 42.62, 41.39, - & 40.22, - & 39.10, 38.02, 36.99, 36.00, 35.04, 34.11, 33.21, 32.34, 31.49, - & 30.65, - & 29.84, 29.04, 28.27, 27.50, 26.75, 26.01, 25.29, 24.57, 23.87, - & 23.17, - & 22.49, 21.81, 21.15, 20.49, 19.84, 19.21, 18.58, 17.97, 17.37, - & 16.77, - & 16.19, 15.63, 15.08, 14.54, 14.01, 13.51, 13.01, 12.53, 12.07, - & 11.62, - & 11.19, 10.77, 10.36, 9.97, 9.59, 9.23, 8.87, 8.53, 8.20, - & 7.88, - & 7.57, 7.27, 6.97, 6.69, 6.41, 6.14, 5.88, 5.62, 5.36, - & 5.11, - & 4.87, 4.63, 4.39, 4.15, 3.92, 3.68, 3.45, 3.21, 2.98, - & 2.74, - & 2.49, 2.24, 1.98, 1.72, 1.44, 1.16, 0.87, 0.57, 0.28, - & 0.1/) -! -! awpc= potassium chloride -! - AWPC = (/172.62, 165.75, 159.10, 152.67, 146.46, 140.45, 134.64, - & 129.03, 123.61, 118.38, 113.34, 108.48, 103.79, 99.27, - & 94.93, 90.74, 86.71, 82.84, 79.11, 75.53, 72.09, 68.79, - & 65.63, 62.59, 59.68, 56.90, 54.23, 51.68, 49.24, 46.91, - & 44.68, 42.56, 40.53, 38.60, 36.76, 35.00, 33.33, 31.75, - & 30.24, 28.81, 27.45, 26.16, 24.94, 23.78, 22.68, 21.64, - & 20.66, 19.74, 18.86, 18.03, 17.25, 16.51, 15.82, 15.16, - & 14.54, 13.96, 13.41, 12.89, 12.40, 11.94, 11.50, 11.08, - & 10.69, 10.32, 9.96, 9.62, 9.30, 8.99, 8.69, 8.40, 8.12, - & 7.85, 7.59, 7.33, 7.08, 6.83, 6.58, 6.33, 6.08, 5.84, - & 5.59, 5.34, 5.09, 4.83, 4.57, 4.31, 4.04, 3.76, 3.48, - & 3.19, 2.90, 2.60, 2.29, 1.98, 1.66, 1.33, 0.99, 0.65, - & 0.30, 0.1/) -! -! awps= potassium sulfate -! - AWPS = (/1014.82, 969.72, 926.16, 884.11, 843.54, 804.41, 766.68, - & 730.32, 695.30, 661.58, 629.14, 597.93, 567.92, 539.09, - & 511.41, 484.83, 459.34, 434.89, 411.47, 389.04, 367.58, - & 347.05, 327.43, 308.69, 290.80, 273.73, 257.47, 241.98, - & 227.24, 213.22, 199.90, 187.26, 175.27, 163.91, 153.15, - & 142.97, 133.36, 124.28, 115.73, 107.66, 100.08, 92.95, - & 86.26, 79.99, 74.12, 68.63, 63.50, 58.73, 54.27, 50.14, - & 46.30, 42.74, 39.44, 36.40, 33.59, 31.00, 28.63, 26.45, - & 24.45, 22.62, 20.95, 19.43, 18.05, 16.79, 15.64, 14.61, - & 13.66, 12.81, 12.03, 11.33, 10.68, 10.09, 9.55, 9.06, - & 8.60, 8.17, 7.76, 7.38, 7.02, 6.66, 6.32, 5.98, 5.65, - & 5.31, 4.98, 4.64, 4.31, 3.96, 3.62, 3.27, 2.92, 2.57, - & 2.22, 1.87, 1.53, 1.20, 0.87, 0.57, 0.28, 0.1/) -! -! awpn= potassium nitrate -! - AWPN(1:44) = 1000.00 - AWPN(45:NZSR) = (/ 953.05, 881.09, 813.39, - & 749.78, 690.09, 634.14, 581.77, 532.83, 487.16, 444.61, - & 405.02, 368.26, 334.18, 302.64, 273.51, 246.67, 221.97, - & 199.31, 178.56, 159.60, 142.33, 126.63, 112.40, 99.54, - & 87.96, 77.55, 68.24, 59.92, 52.53, 45.98, 40.2, 35.11, - & 30.65, 26.75, 23.35, 20.40, 17.85, 15.63, 13.72, 12.06, - & 10.61, 9.35, 8.24, 7.25, 6.37, 5.56, 4.82, 4.12, 3.47, - & 2.86, 2.28, 1.74, 1.24, 0.79, 0.40, 0.1/) -! -! awpb= potassium bisulfate -! - AWPB(1:10) = 55.99 - AWPB(11:NZSR) = (/ - & 53.79, 51.81, 49.99, 48.31, 46.75, 45.28, 43.91, 42.62, 41.39, - & 40.22, - & 39.10, 38.02, 36.99, 36.00, 35.04, 34.11, 33.21, 32.34, 31.49, - & 30.65, - & 29.84, 29.04, 28.27, 27.50, 26.75, 26.01, 25.29, 24.57, 23.87, - & 23.17, - & 22.49, 21.81, 21.15, 20.49, 19.84, 19.21, 18.58, 17.97, 17.37, - & 16.77, - & 16.19, 15.63, 15.08, 14.54, 14.01, 13.51, 13.01, 12.53, 12.07, - & 11.62, - & 11.19, 10.77, 10.36, 9.97, 9.59, 9.23, 8.87, 8.53, 8.20, - & 7.88, - & 7.57, 7.27, 6.97, 6.69, 6.41, 6.14, 5.88, 5.62, 5.36, - & 5.11, - & 4.87, 4.63, 4.39, 4.15, 3.92, 3.68, 3.45, 3.21, 2.98, - & 2.74, - & 2.49, 2.24, 1.98, 1.72, 1.44, 1.16, 0.87, 0.57, 0.28, - & 0.1/) -! -! awcc= calcium chloride -! - AWCC = (/19.9, 19.0, 18.15, 17.35, 16.6, 15.89, 15.22, 14.58, - & 13.99, 13.43, 12.90, 12.41, 11.94, 11.50, 11.09, 10.7, - & 10.34, 9.99, 9.67, 9.37, 9.09, 8.83, 8.57, 8.34, 8.12, - & 7.91, 7.71, 7.53, 7.35, 7.19, 7.03, 6.88, 6.74, 6.6, - & 6.47, 6.35, 6.23, 6.12, 6.01, 5.90, 5.80, 5.70, 5.61, - & 5.51, 5.42, 5.33, 5.24, 5.16, 5.07, 4.99, 4.91, 4.82, - & 4.74, 4.66, 4.58, 4.50, 4.42, 4.34, 4.26, 4.19, 4.11, - & 4.03, 3.95, 3.87, 3.79, 3.72, 3.64, 3.56, 3.48, 3.41, - & 3.33, 3.25, 3.17, 3.09, 3.01, 2.93, 2.85, 2.76, 2.68, - & 2.59, 2.50, 2.41, 2.32, 2.23, 2.13, 2.03, 1.93, 1.82, - & 1.71, 1.59, 1.47, 1.35, 1.22, 1.07, 0.93, 0.77, 0.61, - & 0.44, 0.25, 0.1/) -! -! awcn= calcium nitrate -! - AWCN = (/32.89, 31.46, 30.12, 28.84, 27.64, 26.51, 25.44, 24.44, - & 23.49, 22.59, 21.75, 20.96, 20.22, 19.51, 18.85, 18.23, - & 17.64, 17.09, 16.56, 16.07, 15.61, 15.17, 14.75, 14.36, - & 13.99, 13.63, 13.3, 12.98, 12.68, 12.39, 12.11, 11.84, - & 11.59, 11.35, 11.11, 10.88, 10.66, 10.45, 10.24, 10.04, - & 9.84, 9.65, 9.46, 9.28, 9.1, 8.92, 8.74, 8.57, 8.4, - & 8.23, 8.06, 7.9, 7.73, 7.57, 7.41, 7.25, 7.1,6.94, 6.79, - & 6.63, 6.48, 6.33, 6.18, 6.03, 5.89, 5.74, 5.60, 5.46, - & 5.32, 5.17, 5.04, 4.9, 4.76, 4.62, 4.49, 4.35, 4.22, - & 4.08, 3.94, 3.80, 3.66, 3.52, 3.38, 3.23, 3.08, 2.93, - & 2.77, 2.60, 2.43, 2.25, 2.07, 1.87, 1.67, 1.45, 1.22, - & 0.97, 0.72, 0.44, 0.14, 0.1/) -! -! awmc= magnesium chloride -! - AWMC = (/11.24, 10.99, 10.74, 10.5, 10.26, 10.03, 9.81, 9.59, - & 9.38, 9.18, 8.98, 8.79, 8.60, 8.42, 8.25, 8.07, 7.91, - & 7.75, 7.59, 7.44, 7.29, 7.15, 7.01, 6.88, 6.75, 6.62, - & 6.5, 6.38, 6.27, 6.16, 6.05, 5.94, 5.85, 5.75, 5.65, - & 5.56, 5.47, 5.38, 5.30, 5.22, 5.14, 5.06, 4.98, 4.91, - & 4.84, 4.77, 4.7, 4.63, 4.57, 4.5, 4.44, 4.37, 4.31, - & 4.25, 4.19, 4.13, 4.07, 4.01, 3.95, 3.89, 3.83, 3.77, - & 3.71, 3.65, 3.58, 3.52, 3.46, 3.39, 3.33, 3.26, 3.19, - & 3.12, 3.05, 2.98, 2.9, 2.82, 2.75, 2.67, 2.58, 2.49, - & 2.41, 2.32, 2.22, 2.13, 2.03, 1.92, 1.82, 1.71, 1.60, - & 1.48, 1.36, 1.24, 1.11, 0.98, 0.84, 0.70, 0.56, 0.41, - & 0.25, 0.1/) -! -! awmn= magnesium nitrate -! - AWMN = (/12.00, 11.84, 11.68, 11.52, 11.36, 11.2, 11.04, 10.88, - & 10.72, 10.56, 10.40, 10.25, 10.09, 9.93, 9.78, 9.63, - & 9.47, 9.32, 9.17, 9.02, 8.87, 8.72, 8.58, 8.43, 8.29, - & 8.15, 8.01, 7.87, 7.73, 7.59, 7.46, 7.33, 7.2, 7.07, - & 6.94, 6.82, 6.69, 6.57, 6.45, 6.33, 6.21, 6.01, 5.98, - & 5.87, 5.76, 5.65, 5.55, 5.44, 5.34, 5.24, 5.14, 5.04, - & 4.94, 4.84, 4.75, 4.66, 4.56, 4.47, 4.38, 4.29, 4.21, - & 4.12, 4.03, 3.95, 3.86, 3.78, 3.69, 3.61, 3.53, 3.45, - & 3.36, 3.28, 3.19, 3.11, 3.03, 2.94, 2.85, 2.76, 2.67, - & 2.58, 2.49, 2.39, 2.3, 2.2, 2.1, 1.99, 1.88, 1.77, 1.66, - & 1.54, 1.42, 1.29, 1.16, 1.02, 0.88, 0.73, 0.58, 0.42, - & 0.25, 0.1/) -! -! awmn= magnesium sulfate -! - AWMS = (/0.93, 2.5, 3.94, 5.25, 6.45, 7.54, 8.52, 9.40, 10.19, - & 10.89, 11.50, 12.04, 12.51, 12.90, 13.23, 13.50, 13.72, - & 13.88, 13.99, 14.07, 14.1, 14.09, 14.05, 13.98, 13.88, - & 13.75, 13.6, 13.43, 13.25, 13.05, 12.83, 12.61, 12.37, - & 12.13, 11.88, 11.63, 11.37, 11.12, 10.86, 10.60, 10.35, - & 10.09, 9.85, 9.6, 9.36, 9.13, 8.9, 8.68, 8.47, 8.26, - & 8.07, 7.87, 7.69, 7.52, 7.35, 7.19, 7.03, 6.89, 6.75, - & 6.62, 6.49, 6.37, 6.26, 6.15, 6.04, 5.94, 5.84, 5.75, - & 5.65, 5.56, 5.47, 5.38, 5.29, 5.20, 5.11, 5.01, 4.92, - & 4.82, 4.71, 4.60, 4.49, 4.36, 4.24, 4.10, 3.96, 3.81, - & 3.65, 3.48, 3.30, 3.11, 2.92, 2.71, 2.49, 2.26, 2.02, - & 1.76, 1.50, 1.22, 0.94, 0.64/) -! -! *** ZSR RELATIONSHIP PARAMETERS ************************************** -! -! awas= ammonium sulfate -! -! DATA AWAS/33*100.,30,30,30,29.54,28.25,27.06,25.94, -! & 24.89,23.90,22.97,22.10,21.27,20.48,19.73,19.02,18.34,17.69, -! & 17.07,16.48,15.91,15.37,14.85,14.34,13.86,13.39,12.94,12.50, -! & 12.08,11.67,11.27,10.88,10.51,10.14, 9.79, 9.44, 9.10, 8.78, -! & 8.45, 8.14, 7.83, 7.53, 7.23, 6.94, 6.65, 6.36, 6.08, 5.81, -! & 5.53, 5.26, 4.99, 4.72, 4.46, 4.19, 3.92, 3.65, 3.38, 3.11, -! & 2.83, 2.54, 2.25, 1.95, 1.63, 1.31, 0.97, 0.63, 0.30, 0.001/ -! -! awsn= sodium nitrate -! -! DATA AWSN/ 9*1.e5,685.59, -! & 451.00,336.46,268.48,223.41,191.28, -! & 167.20,148.46,133.44,121.12,110.83, -! & 102.09,94.57,88.03,82.29,77.20,72.65,68.56,64.87,61.51,58.44, -! & 55.62,53.03,50.63,48.40,46.32,44.39,42.57,40.87,39.27,37.76, -! & 36.33,34.98,33.70,32.48,31.32,30.21,29.16,28.14,27.18,26.25, -! & 25.35,24.50,23.67,22.87,22.11,21.36,20.65,19.95,19.28,18.62, -! & 17.99,17.37,16.77,16.18,15.61,15.05,14.51,13.98,13.45,12.94, -! & 12.44,11.94,11.46,10.98,10.51,10.04, 9.58, 9.12, 8.67, 8.22, -! & 7.77, 7.32, 6.88, 6.43, 5.98, 5.53, 5.07, 4.61, 4.15, 3.69, -! & 3.22, 2.76, 2.31, 1.87, 1.47, 1.10, 0.77, 0.48, 0.23, 0.001/ -! -! awsc= sodium chloride -! -! DATA AWSC/ -! & 100., 100., 100., 100., 100., 100., 100., 100., 100., 100., -! & 100., 100., 100., 100., 100., 100., 100., 100., 100.,16.34, -! & 16.28,16.22,16.15,16.09,16.02,15.95,15.88,15.80,15.72,15.64, -! & 15.55,15.45,15.36,15.25,15.14,15.02,14.89,14.75,14.60,14.43, -! & 14.25,14.04,13.81,13.55,13.25,12.92,12.56,12.19,11.82,11.47, -! & 11.13,10.82,10.53,10.26,10.00, 9.76, 9.53, 9.30, 9.09, 8.88, -! & 8.67, 8.48, 8.28, 8.09, 7.90, 7.72, 7.54, 7.36, 7.17, 6.99, -! & 6.81, 6.63, 6.45, 6.27, 6.09, 5.91, 5.72, 5.53, 5.34, 5.14, -! & 4.94, 4.74, 4.53, 4.31, 4.09, 3.86, 3.62, 3.37, 3.12, 2.85, -! & 2.58, 2.30, 2.01, 1.72, 1.44, 1.16, 0.89, 0.64, 0.40, 0.18/ -! -! awac= ammonium chloride -! -! DATA AWAC/ -! & 100., 100., 100., 100., 100., 100., 100., 100., 100., 100., -! & 100., 100., 100., 100., 100., 100., 100., 100., 100.,31.45, -! & 31.30,31.14,30.98,30.82,30.65,30.48,30.30,30.11,29.92,29.71, -! & 29.50,29.29,29.06,28.82,28.57,28.30,28.03,27.78,27.78,27.77, -! & 27.77,27.43,27.07,26.67,26.21,25.73,25.18,24.56,23.84,23.01, -! & 22.05,20.97,19.85,18.77,17.78,16.89,16.10,15.39,14.74,14.14, -! & 13.59,13.06,12.56,12.09,11.65,11.22,10.81,10.42,10.03, 9.66, -! & 9.30, 8.94, 8.59, 8.25, 7.92, 7.59, 7.27, 6.95, 6.63, 6.32, -! & 6.01, 5.70, 5.39, 5.08, 4.78, 4.47, 4.17, 3.86, 3.56, 3.25, -! & 2.94, 2.62, 2.30, 1.98, 1.65, 1.32, 0.97, 0.62, 0.26, 0.13/ -! -! awss= sodium sulfate -! -! DATA AWSS/34*1.e5,23*14.30,14.21,12.53,11.47, -! & 10.66,10.01, 9.46, 8.99, 8.57, 8.19, 7.85, 7.54, 7.25, 6.98, -! & 6.74, 6.50, 6.29, 6.08, 5.88, 5.70, 5.52, 5.36, 5.20, 5.04, -! & 4.90, 4.75, 4.54, 4.34, 4.14, 3.93, 3.71, 3.49, 3.26, 3.02, -! & 2.76, 2.49, 2.20, 1.89, 1.55, 1.18, 0.82, 0.49, 0.22, 0.001/ -! -! awab= ammonium bisulfate -! -! DATA AWAB/356.45,296.51,253.21,220.47,194.85, -! & 174.24,157.31,143.16,131.15,120.82, -! & 111.86,103.99,97.04,90.86,85.31,80.31,75.78,71.66,67.90,64.44, -! & 61.25,58.31,55.58,53.04,50.68,48.47,46.40,44.46,42.63,40.91, -! & 39.29,37.75,36.30,34.92,33.61,32.36,31.18,30.04,28.96,27.93, -! & 26.94,25.99,25.08,24.21,23.37,22.57,21.79,21.05,20.32,19.63, -! & 18.96,18.31,17.68,17.07,16.49,15.92,15.36,14.83,14.31,13.80, -! & 13.31,12.83,12.36,11.91,11.46,11.03,10.61,10.20, 9.80, 9.41, -! & 9.02, 8.64, 8.28, 7.91, 7.56, 7.21, 6.87, 6.54, 6.21, 5.88, -! & 5.56, 5.25, 4.94, 4.63, 4.33, 4.03, 3.73, 3.44, 3.14, 2.85, -! & 2.57, 2.28, 1.99, 1.71, 1.42, 1.14, 0.86, 0.57, 0.29, 0.001/ -! -! awsa= sulfuric acid -! -! DATA AWSA/ -! & 34.0,33.56,29.22,26.55,24.61,23.11,21.89,20.87,19.99, -! & 19.21,18.51,17.87,17.29,16.76,16.26,15.8,15.37,14.95,14.56, -! & 14.20,13.85,13.53,13.22,12.93,12.66,12.40,12.14,11.90,11.67, -! & 11.44,11.22,11.01,10.8,10.60,10.4,10.2,10.01,9.83,9.65,9.47, -! & 9.3,9.13,8.96,8.81,8.64,8.48,8.33,8.17,8.02,7.87,7.72,7.58, -! & 7.44,7.30,7.16,7.02,6.88,6.75,6.61,6.48,6.35,6.21,6.08,5.95, -! & 5.82,5.69,5.56,5.44,5.31,5.18,5.05,4.92,4.79,4.66,4.53,4.40, -! & 4.27,4.14,4.,3.87,3.73,3.6,3.46,3.31,3.17,3.02,2.87,2.72, -! & 2.56,2.4,2.23,2.05,1.87,1.68,1.48,1.27,1.05,0.807,0.552,0.281/ -! -! awlc= (NH4)3H(SO4)2 -! -! DATA AWLC/34*1.e5,17.0,16.5,15.94,15.31,14.71,14.14, -! & 13.60,13.08,12.59,12.12,11.68,11.25,10.84,10.44,10.07, 9.71, -! & 9.36, 9.02, 8.70, 8.39, 8.09, 7.80, 7.52, 7.25, 6.99, 6.73, -! & 6.49, 6.25, 6.02, 5.79, 5.57, 5.36, 5.15, 4.95, 4.76, 4.56, -! & 4.38, 4.20, 4.02, 3.84, 3.67, 3.51, 3.34, 3.18, 3.02, 2.87, -! & 2.72, 2.57, 2.42, 2.28, 2.13, 1.99, 1.85, 1.71, 1.57, 1.43, -! & 1.30, 1.16, 1.02, 0.89, 0.75, 0.61, 0.46, 0.32, 0.16, 0.001/ -! -! awan= ammonium nitrate -! -! DATA AWAN/31*1.e5, -! & 97.17,92.28,87.66,83.15,78.87,74.84,70.98,67.46,64.11, -! & 60.98,58.07,55.37,52.85,50.43,48.24,46.19,44.26,42.40,40.70, -! & 39.10,37.54,36.10,34.69,33.35,32.11,30.89,29.71,28.58,27.46, -! & 26.42,25.37,24.33,23.89,22.42,21.48,20.56,19.65,18.76,17.91, -! & 17.05,16.23,15.40,14.61,13.82,13.03,12.30,11.55,10.83,10.14, -! & 9.44, 8.79, 8.13, 7.51, 6.91, 6.32, 5.75, 5.18, 4.65, 4.14, -! & 3.65, 3.16, 2.71, 2.26, 1.83, 1.42, 1.03, 0.66, 0.30, 0.001/ -! -! awsb= sodium bisulfate -! -! DATA AWSB/173.72,156.88,142.80,130.85,120.57, -! & 111.64,103.80,96.88,90.71,85.18, -! & 80.20,75.69,71.58,67.82,64.37,61.19,58.26,55.53,53.00,50.64, -! & 48.44,46.37,44.44,42.61,40.90,39.27,37.74,36.29,34.91,33.61, -! & 32.36,31.18,30.05,28.97,27.94,26.95,26.00,25.10,24.23,23.39, -! & 22.59,21.81,21.07,20.35,19.65,18.98,18.34,17.71,17.11,16.52, -! & 15.95,15.40,14.87,14.35,13.85,13.36,12.88,12.42,11.97,11.53, -! & 11.10,10.69,10.28, 9.88, 9.49, 9.12, 8.75, 8.38, 8.03, 7.68, -! & 7.34, 7.01, 6.69, 6.37, 6.06, 5.75, 5.45, 5.15, 4.86, 4.58, -! & 4.30, 4.02, 3.76, 3.49, 3.23, 2.98, 2.73, 2.48, 2.24, 2.01, -! & 1.78, 1.56, 1.34, 1.13, 0.92, 0.73, 0.53, 0.35, 0.17, 0.001/ - - END SUBROUTINE Init_IsoData - - END MODULE ISORROPIAII_MAIN_MOD From 3e6d348730bafe6a370591aa4ab525c086d6e114 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Fri, 26 Apr 2024 09:44:56 -0400 Subject: [PATCH 250/331] Update comments to use ISORROPIA/HETP instead of ISORROPIA ISORROPIA is kept because HETP is based on it. Signed-off-by: Lizzie Lundgren --- GeosCore/aerosol_mod.F90 | 4 ++-- GeosCore/planeflight_mod.F90 | 4 ++-- GeosCore/tomas_mod.F90 | 2 +- Headers/state_chm_mod.F90 | 2 +- Interfaces/GCHP/Chem_GridCompMod.F90 | 6 ++++-- KPP/aciduptake/aciduptake.kpp | 2 +- KPP/fullchem/commonIncludeVars.H | 2 +- KPP/fullchem/fullchem_HetStateFuncs.F90 | 2 +- 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 268e85bd0..6c6740bb1 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -1751,7 +1751,7 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & WERADIUS(I,J,L,N+NDUST) = ERADIUS(I,J,L,N+NDUST) ! For SO4-NIT-NH4-fine sea salt aerosol, re-calculate the wet ! effective - ! radius using the water content from ISORROPIA. + ! radius using the water content from ISORROPIA/HETP. ! This new effective radius will be used for surface area ! used in heterogeneous chemistry. We don't use this ! effective radius in the optics above (OD, scattering, @@ -1791,7 +1791,7 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & ! Save aerosol water content. Assume that the increase in volume ! equals the volume of pure water added, m3(H2O)/m3(air), ! then convert to g/m3 - ! Don't update SNA, keep ISORROPIA values + ! Don't update SNA, keep ISORROPIA/HETP values IF (N.ne.1) THEN State_Chm%AeroH2O(I,J,L,N+NDUST) = 1e+6_fp * & State_Chm%AerMass%WAERSL(I,J,L,N) / MSDENS(N) * (ScaleVol - 1d0) diff --git a/GeosCore/planeflight_mod.F90 b/GeosCore/planeflight_mod.F90 index d3606ede2..06d0f535a 100644 --- a/GeosCore/planeflight_mod.F90 +++ b/GeosCore/planeflight_mod.F90 @@ -580,7 +580,7 @@ SUBROUTINE READ_VARIABLES( Input_Opt, State_Chm, IU_FILE, RC ) IF ( LINE == 'HG2_FRACP' ) PVAR(N) = 4002 !=========================================================== - ! ISORROPIA H+, pH, water, and bisulfate (eam, 06/2015) + ! ISORROPIA/HETP H+, pH, water, and bisulfate (eam, 06/2015) !=========================================================== CASE( 'ISOR' ) @@ -2165,7 +2165,7 @@ SUBROUTINE PLANEFLIGHT( Input_Opt, State_Chm, State_Diag, & VARI(V) = OMMFP(I,J,LL) !L+1 sample 4/24/12 !--------------------------------------------------------------- - ! ISORROPIA H+ and pH (eam, 06/2015) + ! ISORROPIA/HETP H+ and pH (eam, 06/2015) !--------------------------------------------------------------- CASE( 5001 ) VARI(V) = State_Chm%IsorropHplus(I,J,L,1) diff --git a/GeosCore/tomas_mod.F90 b/GeosCore/tomas_mod.F90 index b297cb53e..df74a8d29 100644 --- a/GeosCore/tomas_mod.F90 +++ b/GeosCore/tomas_mod.F90 @@ -7195,7 +7195,7 @@ END SUBROUTINE GETACTBIN ! wr is the ratio of wet mass to dry mass of a particle. Instead ! of calling a thermodynamic equilibrium code, this routine uses a ! simple curve fits to estimate wr based on the current humidity. -! The curve fit is based on ISORROPIA results for ammonium bisulfate +! The curve fit is based on ISORROPIA/HETP results for ammonium bisulfate ! at 273 K and sea salt at 273 K. !\\ !\\ diff --git a/Headers/state_chm_mod.F90 b/Headers/state_chm_mod.F90 index 5d871b1a9..fe6060c4f 100644 --- a/Headers/state_chm_mod.F90 +++ b/Headers/state_chm_mod.F90 @@ -189,7 +189,7 @@ MODULE State_Chm_Mod ! reaction cofactors !----------------------------------------------------------------------- - ! For isoprene SOA via ISORROPIA + ! For isoprene SOA via ISORROPIA/HETP !----------------------------------------------------------------------- REAL(fp), POINTER :: IsorropAeropH (:,:,:,:) ! ISORROPIA aero pH REAL(fp), POINTER :: IsorropHplus (:,:,:,:) ! H+ conc [M] diff --git a/Interfaces/GCHP/Chem_GridCompMod.F90 b/Interfaces/GCHP/Chem_GridCompMod.F90 index 669dac187..b69612dac 100644 --- a/Interfaces/GCHP/Chem_GridCompMod.F90 +++ b/Interfaces/GCHP/Chem_GridCompMod.F90 @@ -564,7 +564,8 @@ SUBROUTINE SetServices( GC, RC ) ENDIF ENDIF - ! Sulfur-nitrogen-ammonia water content computed in Isorropia after needed in RDAER + ! Sulfur-nitrogen-ammonia water content computed in Isorropia/HETP + ! after needed in RDAER call MAPL_AddInternalSpec(GC, & SHORT_NAME = 'AeroH2O_SNA', & LONG_NAME = 'Sulfur-nitrogen-ammonia water content', & @@ -859,7 +860,8 @@ SUBROUTINE SetServices( GC, RC ) RC=STATUS ) _VERIFY(STATUS) - ! Sulfur-nitrogen-ammonia water content computed in Isorropia after needed in RDAER + ! Sulfur-nitrogen-ammonia water content computed in Isorropia/HETP + ! after needed in RDAER call MAPL_AddInternalSpec(GC, & SHORT_NAME = 'AeroH2O_SNA', & LONG_NAME = 'Sulfur-nitrogen-ammonia water content', & diff --git a/KPP/aciduptake/aciduptake.kpp b/KPP/aciduptake/aciduptake.kpp index a45f00c2f..9f5d50948 100644 --- a/KPP/aciduptake/aciduptake.kpp +++ b/KPP/aciduptake/aciduptake.kpp @@ -115,7 +115,7 @@ PH2O2 : H2O2; REAL(dp) :: aClVol ! Fine SSA+SNA aerosol volume [cm3/cm3] REAL(dp) :: aIce ! Ice surface area [cm2/cm3] REAL(dp) :: aLiq ! Liquid surface area [cm2/cm3] - REAL(dp) :: aWater(2) ! ISORROPIA aerosol water (fine & coarse) + REAL(dp) :: aWater(2) ! ISORROPIA/HETP aerosol water (fine & coarse) REAL(dp) :: Br_conc_CldA ! Br- in cloud (A=fine SSA) [mol/kg H2O] REAL(dp) :: Br_conc_CldC ! Br- in cloud (C=coarse SSA) [mol/kg H2O] REAL(dp) :: Br_conc_CldG ! Br- in cloud (G=gas-phase) [mol/kg H2O] diff --git a/KPP/fullchem/commonIncludeVars.H b/KPP/fullchem/commonIncludeVars.H index b5f7cd5b3..b7b8881d7 100644 --- a/KPP/fullchem/commonIncludeVars.H +++ b/KPP/fullchem/commonIncludeVars.H @@ -121,7 +121,7 @@ REAL(dp) :: aClVol ! Fine SSA+SNA aerosol volume [cm3/cm3] REAL(dp) :: aIce ! Ice surface area [cm2/cm3] REAL(dp) :: aLiq ! Liquid surface area [cm2/cm3] - REAL(dp) :: aWater(2) ! ISORROPIA aerosol water (fine & coarse) + REAL(dp) :: aWater(2) ! ISORROPIA/HETP aerosol water (fine & coarse) REAL(dp) :: Br_conc_CldA ! Br- in cloud (A=fine SSA) [mol/kg H2O] REAL(dp) :: Br_conc_CldC ! Br- in cloud (C=coarse SSA) [mol/kg H2O] REAL(dp) :: Br_conc_CldG ! Br- in cloud (G=gas-phase) [mol/kg H2O] diff --git a/KPP/fullchem/fullchem_HetStateFuncs.F90 b/KPP/fullchem/fullchem_HetStateFuncs.F90 index 7bf04bba8..7da424b17 100644 --- a/KPP/fullchem/fullchem_HetStateFuncs.F90 +++ b/KPP/fullchem/fullchem_HetStateFuncs.F90 @@ -139,7 +139,7 @@ SUBROUTINE fullChem_SetStateHet( I, J, L, & H%frac_HSO3_aq = SafeDiv( H%HSO3_aq, H%TSO3_aq, 0.0_dp ) H%frac_SO3_aq = SafeDiv( H%SO3_aq, H%TSO3_aq, 0.0_dp ) - ! Concentrations from ISORROPIA + ! Concentrations from ISORROPIA/HETP H%HSO4_molal = State_Chm%IsorropBisulfate(I,J,L) H%NO3_molal = State_Chm%IsorropNitrate(I,J,L,1) H%SO4_molal = State_Chm%IsorropSulfate(I,J,L) From 2d864f3c4e6eae318b21a5b02fb1130aabab8ffa Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Fri, 26 Apr 2024 14:57:52 -0400 Subject: [PATCH 251/331] Update changelog; remove HETP license info from GEOS-Chem license Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 4 +++- LICENSE.txt | 28 ---------------------------- 2 files changed, 3 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5eeb6fc34..4074931b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Updated volcano emissions from GMAO v202005 product to v202302 which extends to the end of 2022 - Use local scale height and level thickness to determine the PBL to determine the PBL top level and PBL pressure thickness - Update drydep mean diameters of aerosols to account for size distribution - +- Renamed isorropiaII_mod.F90 to aerosol_thermodynamics_mod.F90 +- Changed aerosol thermodynamics scheme from ISORROPIA II to HETP for fullchem and APM ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. @@ -36,6 +37,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Legacy binary punch diagnostic code contained within `#ifdef BPCH_DIAG` blocks - `IU_BPCH` logical file unit (in `GeosUtil/file_mod.F90`) - Removed tagged CH4 and CO species handling from `carbon_gases_mod.F90` +- Removed ISORROPIA ## [14.3.1] - 2024-04-02 ### Added diff --git a/LICENSE.txt b/LICENSE.txt index d500767d3..98326bf05 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -38,26 +38,6 @@ Linked list code (used in v11-02 and later versions): Copyright © 2005 Arjen Markus http://flibs.sourceforge.net/linked_list.html -HETP ------------------------------------------------------------------------------ - Copyright (C) 2023 Stefan Miller, Environment and Climate Change Canada - Contact: Stefan.Miller (at) ec.gc.ca - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - - See GPLv3 License text under The KineticPreProcessor (KPP). - RRTM/RRTMG Copyright and Disclaimer: ----------------------------------------------------------------------------- @@ -108,14 +88,6 @@ Modular Earth Submodel System (MESSy) tools: See https://messy-interface.org/licence/conditions/ -ISORROPIA (Aerosol Therymodynamical Equilibrium module): ------------------------------------------------------------------------------- - - COPYRIGHT 1996-2006, UNIVERSITY OF MIAMI, CARNEGIE MELLON UNIVERSITY, - GEORGIA INSTITUTE OF TECHNOLOGY - WRITTEN BY ATHANASIOS NENES - UPDATED BY CHRISTOS FOUNTOUKIS - QFYAML: Quick Fortran YAML ------------------------------------------------------------------------------ From c5c4525747ba8f02042ea9798281bbb9c6f1b087 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 29 Apr 2024 12:16:20 -0400 Subject: [PATCH 252/331] Change input data paths used for GEOS on discover due to system changes Signed-off-by: Lizzie Lundgren --- run/GEOS/GEOSCHEMchem_ExtData.yaml | 136 +++++------ run/GEOS/GEOSCHEMchem_GridComp.rc | 2 +- .../TransportTracers/GEOSCHEMchem_ExtData.rc | 216 +++++++++--------- .../GEOSCHEMchem_ExtData.yaml | 32 +-- .../TransportTracers/GEOSCHEMchem_GridComp.rc | 2 +- run/GEOS/TransportTracers/geoschem_config.yml | 2 +- run/GEOS/geoschem_config.yml | 4 +- 7 files changed, 197 insertions(+), 197 deletions(-) diff --git a/run/GEOS/GEOSCHEMchem_ExtData.yaml b/run/GEOS/GEOSCHEMchem_ExtData.yaml index ce261c336..0cd64736e 100644 --- a/run/GEOS/GEOSCHEMchem_ExtData.yaml +++ b/run/GEOS/GEOSCHEMchem_ExtData.yaml @@ -8,139 +8,139 @@ Samplings: Collections: GCC_ACET_seawater: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/OCEAN/v0.0.0/sfc/ACET_seawater.generic.1x1.esmf.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/OCEAN/v0.0.0/sfc/ACET_seawater.generic.1x1.esmf.nc GCC_ALD2_seawater: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/OCEAN/v0.0.0/sfc/ALD2_seawater_x144_y91_t12.2006.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/OCEAN/v0.0.0/sfc/ALD2_seawater_x144_y91_t12.2006.nc GCC_DMS_lana: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/OCEAN/v0.0.0/sfc/DMS_lana_x360_y180_t12.1985.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/OCEAN/v0.0.0/sfc/DMS_lana_x360_y180_t12.1985.nc GEOSCHEMchem_AEIC: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/AEIC/v0.0.0/L72/AEIC_x360_y180_z72_t12.2005.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/AEIC/v0.0.0/L72/AEIC_x360_y180_z72_t12.2005.nc GEOSCHEMchem_AF_LANDMASK: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/Masks/v0.0.0/sfc/AF_LANDMASK.025x025.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/Masks/v0.0.0/sfc/AF_LANDMASK.025x025.nc GEOSCHEMchem_resp: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/PlantDecay/v0.0.0/sfc/resp.geos_x144_y91_t12.1985.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/PlantDecay/v0.0.0/sfc/resp.geos_x144_y91_t12.1985.nc GEOSCHEMchem_Bromocarb_Liang2010: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/BromoCarb/Liang/v0.0.0/Bromocarb_Liang2010.gen.1x1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/BromoCarb/Liang/v0.0.0/Bromocarb_Liang2010.gen.1x1.nc GEOSCHEMchem_BromoCarb_Season: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/ScaleFactors/v0.0.0/sfc/BromoCarb_Season_x360_y180_t12.2000.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/ScaleFactors/v0.0.0/sfc/BromoCarb_Season_x360_y180_t12.2000.nc GEOSCHEMchem_ALD2_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/ALD2_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/ALD2_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_ALK4_butanes_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/ALK4_butanes_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/ALK4_butanes_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_ALK4_hexanes_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/ALK4_hexanes_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/ALK4_hexanes_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_ALK4_pentanes_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/ALK4_pentanes_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/ALK4_pentanes_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_BC_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/BC_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/BC_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_BENZ_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/BENZ_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/BENZ_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_C2H2_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/C2H2_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/C2H2_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_C2H4_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/C2H4_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/C2H4_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_C2H6_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/C2H6_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/C2H6_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_C3H8_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/C3H8_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/C3H8_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_CH2O_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/CH2O_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/CH2O_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_CO_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/CO_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/CO_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_EOH_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/EOH_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/EOH_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_HCOOH_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/HCOOH_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/HCOOH_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_NH3_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/NH3_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/NH3_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_NOx_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/NOx_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/NOx_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_MEK_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/MEK_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/MEK_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_SO2_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/SO2_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/SO2_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_TOLU_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/TOLU_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/TOLU_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_XYLE_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/XYLE_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/XYLE_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_OC_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/OC_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/OC_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_PRPE_anthro_CEDS: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/PRPE_anthro_CEDS_x3600_y1800_t12.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-04-21/sfc/0.1/PRPE_anthro_CEDS_x3600_y1800_t12.%y4.nc valid_range: "2000-01-01T00:00/2019-12-01T00:00" GEOSCHEMchem_CEDS_vertical_emiss_factors: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/ScaleFactors/v0.0.0/L72/CEDS_vertical_emiss_factors.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/ScaleFactors/v0.0.0/L72/CEDS_vertical_emiss_factors.nc GEOSCHEMchem_CLM4_PFT: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/CLM4_PFT.geos.025x03125.esmf.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/CLM4_PFT.geos.025x03125.esmf.nc GEOSCHEMchem_GOCART_src_fn: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/GOCART_src_fn.esmf.2x25.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/GOCART_src_fn.esmf.2x25.nc GEOSCHEMchem_dst_tibds: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/dst_tibds.esmf.2x25.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/dst_tibds.esmf.2x25.nc GEOSCHEMchem_dst_tvbds: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/dst_tvbds.esmf.2x25.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/dst_tvbds.esmf.2x25.nc GEOSCHEMchem_TOMS_O3col: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/GCHP_data/TOMS_O3col_2010.a.geos.1x1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/GCHP_data/TOMS_O3col_2010.a.geos.1x1.nc GEOSCHEMchem_EDGAR2_1985_FF_IND: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/ScaleFactors/v0.0.0/sfc/EDGAR2_1985_FF_IND.360x180.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/ScaleFactors/v0.0.0/sfc/EDGAR2_1985_FF_IND.360x180.nc GEOSCHEMchem_RONO2_seawater: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/OCEAN/v0.0.0/sfc/RONO2_seawater_x144_y91_t12.2006.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/OCEAN/v0.0.0/sfc/RONO2_seawater_x144_y91_t12.2006.nc GEOSCHEMchem_NH3: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEIA/v0.0.0/sfc/NH3.gen.1x1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEIA/v0.0.0/sfc/NH3.gen.1x1.nc GEOSCHEMchem_GEOSCCM_Bry_day: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Bry/GEOSCCM_Bry.2007.day.esmf.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Bry/GEOSCCM_Bry.2007.day.esmf.nc GEOSCHEMchem_GEOSCCM_Bry_night: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Bry/GEOSCCM_Bry.2007.night.esmf.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Bry/GEOSCCM_Bry.2007.night.esmf.nc GEOSCHEMchem_AnnualScalar_1985: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/ScaleFactors/v0.0.0/sfc/AnnualScalar.gen.1x1.1985.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/ScaleFactors/v0.0.0/sfc/AnnualScalar.gen.1x1.1985.nc GEOSCHEMchem_AnnualScalar_2010: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/ScaleFactors/v0.0.0/sfc/AnnualScalar.gen.1x1.2010.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/ScaleFactors/v0.0.0/sfc/AnnualScalar.gen.1x1.2010.nc GEOSCHEMchem_NVOC: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/NVOC.geos.1x1.esmf.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/NVOC.geos.1x1.esmf.nc GEOSCHEMchem_MEGAN2.1_EF: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/MEGAN2.1_EF.geos.025x03125.esmf.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/MEGAN2.1_EF.geos.025x03125.esmf.nc GEOSCHEMchem_MOH_seawater: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/OCEAN/v0.0.0/sfc/MOH_seawater.low.kgCm3.generic.1x1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/OCEAN/v0.0.0/sfc/MOH_seawater.low.kgCm3.generic.1x1.nc GEOSCHEMchem_multiyearice: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/HEMCO/MULTI_ICE/2021-07/multiyearice.merra2.05x0625.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/HEMCO/MULTI_ICE/2021-07/multiyearice.merra2.05x0625.%y4.nc valid_range: "1980-01-01T00:00/2020-12-31T00:00" GEOSCHEMchem_monthly.gridded.surface.methane: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/NOAA_GMD/monthly.gridded.surface.methane.1979-2024.1x1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/NOAA_GMD/monthly.gridded.surface.methane.1979-2024.1x1.nc valid_range: "1979-01-01T00:00/2024-12-01T00:00" GEOSCHEMchem_Olson_2001_Land_Map: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/Masks/v0.0.0/sfc/Olson_2001_Land_Map.2x25.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/Masks/v0.0.0/sfc/Olson_2001_Land_Map.2x25.nc GEOSCHEMchem_CH2I2_monthly_emissions_Ordonez: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/BromoCarb/ORDONEZ/v0.0.0/sfc/CH2I2_monthly_emissions_Ordonez_x360_y180_t12.2000.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/BromoCarb/ORDONEZ/v0.0.0/sfc/CH2I2_monthly_emissions_Ordonez_x360_y180_t12.2000.nc GEOSCHEMchem_CH2IBr_monthly_emissions_Ordonez: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/BromoCarb/ORDONEZ/v0.0.0/sfc/CH2IBr_monthly_emissions_Ordonez_x360_y180_t12.2000.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/BromoCarb/ORDONEZ/v0.0.0/sfc/CH2IBr_monthly_emissions_Ordonez_x360_y180_t12.2000.nc GEOSCHEMchem_CH2ICl_monthly_emissions_Ordonez: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/BromoCarb/ORDONEZ/v0.0.0/sfc/CH2ICl_monthly_emissions_Ordonez_x360_y180_t12.2000.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/BromoCarb/ORDONEZ/v0.0.0/sfc/CH2ICl_monthly_emissions_Ordonez_x360_y180_t12.2000.nc GEOSCHEMchem_CH3I_monthly_emissions_Ordonez: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/BromoCarb/ORDONEZ/v0.0.0/sfc/CH3I_monthly_emissions_Ordonez_x360_y180_t12.2000.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/BromoCarb/ORDONEZ/v0.0.0/sfc/CH3I_monthly_emissions_Ordonez_x360_y180_t12.2000.nc GEOSCHEMchem_PM25FINE_ECLIPSE: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/AFCID/v2018-04/sfc/PM25FINE_ECLIPSE_x144_y91_t12.2015.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/AFCID/v2018-04/sfc/PM25FINE_ECLIPSE_x144_y91_t12.2015.nc GEOSCHEMchem_qfed2_forest_mask: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/Masks/v0.0.0/sfc/qfed2_forest_mask.nc4 + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/Masks/v0.0.0/sfc/qfed2_forest_mask.nc4 GEOSCHEMchem_qfed2.emis_acet_006: template: /discover/nobackup/projects/gmao/share/dao_ops/fvInput_nc3/PIESA/sfc/QFED/NRT/v2.5r1_0.1_deg/Y%y4/M%m2/qfed2.emis_acet.006.%y4%m2%d2.nc4 valid_range: "2014-12-01T12:00/2021-11-01T12:00" @@ -226,16 +226,16 @@ Collections: template: /discover/nobackup/projects/gmao/share/dao_ops/fvInput_nc3/PIESA/sfc/QFED/NRT/v2.5r1_0.1_deg/Y%y4/M%m2/qfed2.emis_so2.006.%y4%m2%d2.nc4 valid_range: "2021-11-01T12:00/2025-01-01T12:00" GEOSCHEMchem_NH3_Arctic_seabirds: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/SEABIRDS/v0.0.0/sfc/NH3_Arctic_seabirds_x1440_y720_t12.1990.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/SEABIRDS/v0.0.0/sfc/NH3_Arctic_seabirds_x1440_y720_t12.1990.nc GEOSCHEMchem_soilNOx_climate: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/soilNOx.climate.generic.05x05.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/soilNOx.climate.generic.05x05.nc GEOSCHEMchem_soilNOx_fert_res: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/soilNOx.fert_res.generic.05x05.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/soilNOx.fert_res.generic.05x05.nc valid_range: "2000-01-01T00:00/2000-12-31T00:00" GEOSCHEMchem_soilNOx_landtype: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/soilNOx.landtype.generic.025x025.1L.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/soilNOx.landtype.generic.025x025.1L.nc GEOSCHEMchem_gmi.clim.OH: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/GMI/gmi.clim.OH.geos5.2x25.esmf.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/GMI/gmi.clim.OH.geos5.2x25.esmf.nc GEOSCHEMchem_surface_VMRs_WMO2018: template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/surface_VMR/WMO_2018/v2019-12/surface_VMRs_WMO2018_x360_y180_%y4.nc valid_range: "2010-01-01T00:00/2020-12-01T00:00" @@ -247,18 +247,18 @@ Collections: GEOSCHEMchem_surface_VMR_OCS: template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/surface_VMR/SfcFix/v2019-12/surface_VMR_OCS_x360_y180.nc GEOSCHEMchem_timezones: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/timezones_esmf.2x25.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/HEMCO/v0.0.0/sfc/timezones_esmf.2x25.nc GEOSCHEMchem_uvalbedo: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/UV_ALBEDO/uvalbedo.geos.2x25.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/UV_ALBEDO/uvalbedo.geos.2x25.nc GEOSCHEMchem_Condensed_Yuan_proc_MODIS_XLAI: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Yuan_XLAI/v2021-06/Condensed_Yuan_proc_MODIS_XLAI.025x025.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Yuan_XLAI/v2021-06/Condensed_Yuan_proc_MODIS_XLAI.025x025.%y4.nc valid_range: "2000-01-01T00:00/2020-12-31T00:00" GEOSCHEMchem_Oi_prj_predicted_iodide: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/OCEAN_O3_DRYDEP/v2020-02/orig/Oi_prj_predicted_iodide_0.125x0.125_No_Skagerrak_Just_Ensemble.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/OCEAN_O3_DRYDEP/v2020-02/orig/Oi_prj_predicted_iodide_0.125x0.125_No_Skagerrak_Just_Ensemble.nc GEOSCHEMchem_WOA_2013_salinity: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/OCEAN_O3_DRYDEP/v2020-02/orig/WOA_2013_salinity.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/OCEAN_O3_DRYDEP/v2020-02/orig/WOA_2013_salinity.nc GEOSCHEMchem_AEIC19_MONMEAN: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/AEIC2019/v2022-03/2019_monmean/72LGEOS/AEIC_monmean_2019_t12.0.5x0.625.72LGEOS.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/AEIC2019/v2022-03/2019_monmean/72LGEOS/AEIC_monmean_2019_t12.0.5x0.625.72LGEOS.nc Jason_10.18.0_carbon_c90: template: /discover/nobackup/projects/gmao/geos_carb/sbasu1/runs/GCM/Jason_10.18.0_carbon_c90/holding/methane_tags/Jason_10.18.0_carbon_c90.methane_tags.%y4%m2%d2_%h200z.nc ref_time: "2001-01-01T00:00" @@ -270,12 +270,12 @@ Collections: freq: "PT3H" valid_range: "2001-01-01T00:00/2021-12-31T21:00" GEOSCHEMchem_CH4_scaling: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CH4/v0.0.0/ch4_offset_to_2021_x144_y91_%y4%m2.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CH4/v0.0.0/ch4_offset_to_2021_x144_y91_%y4%m2.nc valid_range: "2021-01-01T00:00/2022-12-01T00:00" ref_time: "2021-01-01T00:00" freq: "P1M" GCC_CMAM_CO: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CMAM/v0.0.0/vmrco_monChem_CMAM_CMAM30-SD_r1i1p1.monthly_clim_0.015hPa.1979_2010.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CMAM/v0.0.0/vmrco_monChem_CMAM_CMAM30-SD_r1i1p1.monthly_clim_0.015hPa.1979_2010.nc Exports: ACET_SEAWATER: diff --git a/run/GEOS/GEOSCHEMchem_GridComp.rc b/run/GEOS/GEOSCHEMchem_GridComp.rc index 243fe3403..39617c6a3 100644 --- a/run/GEOS/GEOSCHEMchem_GridComp.rc +++ b/run/GEOS/GEOSCHEMchem_GridComp.rc @@ -226,7 +226,7 @@ Bry_Cly_Family_Transport: 1 # CO production from CO2 photolysis # CO_production_from_CO2_photolysis: 0 -CO2photolysisFile: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/StratChem/SC.J_20_12_79_72_200_45.jpl15.nc4 +CO2photolysisFile: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/StratChem/SC.J_20_12_79_72_200_45.jpl15.nc4 # # CO2 coupling with GOCART diff --git a/run/GEOS/TransportTracers/GEOSCHEMchem_ExtData.rc b/run/GEOS/TransportTracers/GEOSCHEMchem_ExtData.rc index 260fd8952..443344a9a 100644 --- a/run/GEOS/TransportTracers/GEOSCHEMchem_ExtData.rc +++ b/run/GEOS/TransportTracers/GEOSCHEMchem_ExtData.rc @@ -40,85 +40,85 @@ CONV_DEPTH 1 N N - none none CTH /dev/null # Olson land types #============================================================================== # Olson land types - conservative frac regridding of OLSON as float -OLSON00 '1' N F;0 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON01 '1' N F;1 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON02 '1' N F;2 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON03 '1' N F;3 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON04 '1' N F;4 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON05 '1' N F;5 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON06 '1' N F;6 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON07 '1' N F;7 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON08 '1' N F;8 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON09 '1' N F;9 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON10 '1' N F;10 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON11 '1' N F;11 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON12 '1' N F;12 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON13 '1' N F;13 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON14 '1' N F;14 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON15 '1' N F;15 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON16 '1' N F;16 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON17 '1' N F;17 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON18 '1' N F;18 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON19 '1' N F;19 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON20 '1' N F;20 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON21 '1' N F;21 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON22 '1' N F;22 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON23 '1' N F;23 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON24 '1' N F;24 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON25 '1' N F;25 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON26 '1' N F;26 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON27 '1' N F;27 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON28 '1' N F;28 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON29 '1' N F;29 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON30 '1' N F;30 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON31 '1' N F;31 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON32 '1' N F;32 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON33 '1' N F;33 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON34 '1' N F;34 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON35 '1' N F;35 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON36 '1' N F;36 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON37 '1' N F;37 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON38 '1' N F;38 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON39 '1' N F;39 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON40 '1' N F;40 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON41 '1' N F;41 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON42 '1' N F;42 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON43 '1' N F;43 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON44 '1' N F;44 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON45 '1' N F;45 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON46 '1' N F;46 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON47 '1' N F;47 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON48 '1' N F;48 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON49 '1' N F;49 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON50 '1' N F;50 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON51 '1' N F;51 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON52 '1' N F;52 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON53 '1' N F;53 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON54 '1' N F;54 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON55 '1' N F;55 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON56 '1' N F;56 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON57 '1' N F;57 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON58 '1' N F;58 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON59 '1' N F;59 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON60 '1' N F;60 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON61 '1' N F;61 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON62 '1' N F;62 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON63 '1' N F;63 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON64 '1' N F;64 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON65 '1' N F;65 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON66 '1' N F;66 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON67 '1' N F;67 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON68 '1' N F;68 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON69 '1' N F;69 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON70 '1' N F;70 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON71 '1' N F;71 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc -OLSON72 '1' N F;72 - none none OLSON /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON00 '1' N F;0 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON01 '1' N F;1 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON02 '1' N F;2 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON03 '1' N F;3 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON04 '1' N F;4 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON05 '1' N F;5 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON06 '1' N F;6 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON07 '1' N F;7 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON08 '1' N F;8 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON09 '1' N F;9 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON10 '1' N F;10 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON11 '1' N F;11 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON12 '1' N F;12 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON13 '1' N F;13 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON14 '1' N F;14 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON15 '1' N F;15 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON16 '1' N F;16 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON17 '1' N F;17 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON18 '1' N F;18 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON19 '1' N F;19 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON20 '1' N F;20 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON21 '1' N F;21 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON22 '1' N F;22 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON23 '1' N F;23 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON24 '1' N F;24 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON25 '1' N F;25 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON26 '1' N F;26 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON27 '1' N F;27 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON28 '1' N F;28 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON29 '1' N F;29 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON30 '1' N F;30 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON31 '1' N F;31 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON32 '1' N F;32 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON33 '1' N F;33 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON34 '1' N F;34 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON35 '1' N F;35 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON36 '1' N F;36 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON37 '1' N F;37 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON38 '1' N F;38 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON39 '1' N F;39 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON40 '1' N F;40 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON41 '1' N F;41 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON42 '1' N F;42 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON43 '1' N F;43 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON44 '1' N F;44 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON45 '1' N F;45 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON46 '1' N F;46 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON47 '1' N F;47 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON48 '1' N F;48 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON49 '1' N F;49 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON50 '1' N F;50 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON51 '1' N F;51 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON52 '1' N F;52 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON53 '1' N F;53 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON54 '1' N F;54 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON55 '1' N F;55 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON56 '1' N F;56 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON57 '1' N F;57 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON58 '1' N F;58 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON59 '1' N F;59 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON60 '1' N F;60 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON61 '1' N F;61 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON62 '1' N F;62 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON63 '1' N F;63 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON64 '1' N F;64 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON65 '1' N F;65 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON66 '1' N F;66 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON67 '1' N F;67 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON68 '1' N F;68 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON69 '1' N F;69 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON70 '1' N F;70 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON71 '1' N F;71 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc +OLSON72 '1' N F;72 - none none OLSON /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc #============================================================================== # Yuan-processed MODIS Leaf Area Index #============================================================================== # Use file with land type stored as 3rd dimension to speed up file read -XLAIMULTI cm2_cm-2 N Y %y4-%m2-%d2T00:00:00 none none XLAIMULTI /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/Yuan_XLAI/v2019-03/Condensed_Yuan_proc_MODIS_XLAI.025x025.%y4.nc +XLAIMULTI cm2_cm-2 N Y %y4-%m2-%d2T00:00:00 none none XLAIMULTI /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/Yuan_XLAI/v2019-03/Condensed_Yuan_proc_MODIS_XLAI.025x025.%y4.nc ############################################################################### ### @@ -129,34 +129,34 @@ XLAIMULTI cm2_cm-2 N Y %y4-%m2-%d2T00:00:00 none none XLAIMULTI /gpfsm/dnb52/pro #============================================================================== # SF6 emissions from EDGAR v4.2 #============================================================================== -EDGAR_SF6 1 N Y F%y4-01-01T00:00:00 none none emi_sf6 /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/SF6/v2019-01/EDGAR_v42_SF6_IPCC_2.generic.01x01.nc +EDGAR_SF6 1 N Y F%y4-01-01T00:00:00 none none emi_sf6 /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/SF6/v2019-01/EDGAR_v42_SF6_IPCC_2.generic.01x01.nc #============================================================================== # --- EDGAR v4.3 (EDGARv4.3) --- # EDGARv4.3 is turned off by default in HEMCO_Config.rc #============================================================================== -EDGAR_CO_25_POW kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.POW.0.1x0.1.nc -EDGAR_CO_25_ENG kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.ENG.0.1x0.1.nc -EDGAR_CO_25_IND kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.IND.0.1x0.1.nc -EDGAR_CO_25_TRO kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.TRO.0.1x0.1.nc -EDGAR_CO_25_TNG kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.TNG.0.1x0.1.nc -EDGAR_CO_25_RCO kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.RCO.0.1x0.1.nc -EDGAR_CO_25_PPA kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.PPA.0.1x0.1.nc -#EDGAR_CO_25_AWB kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.AWB.0.1x0.1.nc -EDGAR_CO_25_SWD kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.SWD.0.1x0.1.nc -EDGAR_CO_25_FFF kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.FFF.0.1x0.1.nc +EDGAR_CO_25_POW kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.POW.0.1x0.1.nc +EDGAR_CO_25_ENG kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.ENG.0.1x0.1.nc +EDGAR_CO_25_IND kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.IND.0.1x0.1.nc +EDGAR_CO_25_TRO kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.TRO.0.1x0.1.nc +EDGAR_CO_25_TNG kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.TNG.0.1x0.1.nc +EDGAR_CO_25_RCO kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.RCO.0.1x0.1.nc +EDGAR_CO_25_PPA kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.PPA.0.1x0.1.nc +#EDGAR_CO_25_AWB kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.AWB.0.1x0.1.nc +EDGAR_CO_25_SWD kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.SWD.0.1x0.1.nc +EDGAR_CO_25_FFF kg/m2/s N Y F%y4-01-01T00:00:00 none none emi_co /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.FFF.0.1x0.1.nc #============================================================================== # --- CEDS (CEDSv2) --- #============================================================================== -CEDS_CO_25_AGR kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_agr /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc -CEDS_CO_25_ENE kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_ene /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc -CEDS_CO_25_IND kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_ind /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc -CEDS_CO_25_TRA kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_tra /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc -CEDS_CO_25_RCO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_rco /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc -CEDS_CO_25_SLV kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_slv /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc -CEDS_CO_25_WST kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_wst /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc -CEDS_CO_25_SHP kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_shp /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc +CEDS_CO_25_AGR kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_agr /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc +CEDS_CO_25_ENE kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_ene /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc +CEDS_CO_25_IND kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_ind /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc +CEDS_CO_25_TRA kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_tra /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc +CEDS_CO_25_RCO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_rco /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc +CEDS_CO_25_SLV kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_slv /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc +CEDS_CO_25_WST kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_wst /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc +CEDS_CO_25_SHP kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_shp /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc ############################################################################### ### @@ -164,7 +164,7 @@ CEDS_CO_25_SHP kg/m2/s N Y F%y4-%m2-01T00:00:00 none none CO_shp /gpfsm/dnb ### ############################################################################### -ZHANG_Rn222_EMIS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none rnemis /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/ZHANG_Rn222/v2021-11/Rn222_Emis_Zhang_Liu_et_al_05x05_mass.nc +ZHANG_Rn222_EMIS kg/m2/s N Y F%y4-%m2-01T00:00:00 none none rnemis /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/ZHANG_Rn222/v2021-11/Rn222_Emis_Zhang_Liu_et_al_05x05_mass.nc ############################################################################### ### @@ -186,25 +186,25 @@ TIMEZONES NA N V - none none UTC_OFFSET /discover/nobackup/cakelle2/data/t #============================================================================== # --- annual scale factors --- #============================================================================== -LIQFUEL_THISYR 1 N Y F%y4-01-01T00:00:00 none none COscalar /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc -LIQFUEL_2008_2010 1 N Y F%y4-01-01T00:00:00 none none COscalar /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc +LIQFUEL_THISYR 1 N Y F%y4-01-01T00:00:00 none none COscalar /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc +LIQFUEL_2008_2010 1 N Y F%y4-01-01T00:00:00 none none COscalar /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc #============================================================================== # --- seasonal scale factors --- #============================================================================== # --- From EDGAR 4.3.1 --- -POW 1 Y Y F2010-%m2-01T00:00:00 none none POW /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc -ENG 1 Y Y F2010-%m2-01T00:00:00 none none ENG /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc -IND 1 Y Y F2010-%m2-01T00:00:00 none none IND /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc -TRO 1 Y Y F2010-%m2-01T00:00:00 none none TRO /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc -TNG 1 Y Y F2010-%m2-01T00:00:00 none none TNG /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc -RCO 1 Y Y F2010-%m2-01T00:00:00 none none RCO /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc -PPA 1 Y Y F2010-%m2-01T00:00:00 none none PPA /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc -AGR 1 Y Y F2010-%m2-01T00:00:00 none none AGR /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc -AWB 1 Y Y F2010-%m2-01T00:00:00 none none AWB /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc -SOL 1 Y Y F2010-%m2-01T00:00:00 none none SOL /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc -SWD 1 Y Y F2010-%m2-01T00:00:00 none none SWD /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc -FFF 1 Y Y F2010-%m2-01T00:00:00 none none FFF /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +POW 1 Y Y F2010-%m2-01T00:00:00 none none POW /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +ENG 1 Y Y F2010-%m2-01T00:00:00 none none ENG /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +IND 1 Y Y F2010-%m2-01T00:00:00 none none IND /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +TRO 1 Y Y F2010-%m2-01T00:00:00 none none TRO /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +TNG 1 Y Y F2010-%m2-01T00:00:00 none none TNG /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +RCO 1 Y Y F2010-%m2-01T00:00:00 none none RCO /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +PPA 1 Y Y F2010-%m2-01T00:00:00 none none PPA /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +AGR 1 Y Y F2010-%m2-01T00:00:00 none none AGR /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +AWB 1 Y Y F2010-%m2-01T00:00:00 none none AWB /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +SOL 1 Y Y F2010-%m2-01T00:00:00 none none SOL /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +SWD 1 Y Y F2010-%m2-01T00:00:00 none none SWD /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc +FFF 1 Y Y F2010-%m2-01T00:00:00 none none FFF /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc ############################################################################### ### diff --git a/run/GEOS/TransportTracers/GEOSCHEMchem_ExtData.yaml b/run/GEOS/TransportTracers/GEOSCHEMchem_ExtData.yaml index f44657e3b..b830e511b 100644 --- a/run/GEOS/TransportTracers/GEOSCHEMchem_ExtData.yaml +++ b/run/GEOS/TransportTracers/GEOSCHEMchem_ExtData.yaml @@ -1,36 +1,36 @@ Collections: TT_AnnualScalar.geos.1x1.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/AnnualScalar/v2014-07/AnnualScalar.geos.1x1.nc TT_CO-em-anthro_CMIP_CEDS_%y4.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/CEDS/v2021-06/%y4/CO-em-anthro_CMIP_CEDS_%y4.nc TT_Condensed_Yuan_proc_MODIS_XLAI.025x025.%y4.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/Yuan_XLAI/v2019-03/Condensed_Yuan_proc_MODIS_XLAI.025x025.%y4.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/Yuan_XLAI/v2019-03/Condensed_Yuan_proc_MODIS_XLAI.025x025.%y4.nc TT_EDGAR_v42_SF6_IPCC_2.generic.01x01.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/SF6/v2019-01/EDGAR_v42_SF6_IPCC_2.generic.01x01.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/SF6/v2019-01/EDGAR_v42_SF6_IPCC_2.generic.01x01.nc TT_EDGAR_v43.CO.ENG.0.1x0.1.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.ENG.0.1x0.1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.ENG.0.1x0.1.nc TT_EDGAR_v43.CO.FFF.0.1x0.1.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.FFF.0.1x0.1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.FFF.0.1x0.1.nc TT_EDGAR_v43.CO.IND.0.1x0.1.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.IND.0.1x0.1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.IND.0.1x0.1.nc TT_EDGAR_v43.CO.POW.0.1x0.1.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.POW.0.1x0.1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.POW.0.1x0.1.nc TT_EDGAR_v43.CO.PPA.0.1x0.1.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.PPA.0.1x0.1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.PPA.0.1x0.1.nc TT_EDGAR_v43.CO.RCO.0.1x0.1.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.RCO.0.1x0.1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.RCO.0.1x0.1.nc TT_EDGAR_v43.CO.SWD.0.1x0.1.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.SWD.0.1x0.1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.SWD.0.1x0.1.nc TT_EDGAR_v43.CO.TNG.0.1x0.1.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.TNG.0.1x0.1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.TNG.0.1x0.1.nc TT_EDGAR_v43.CO.TRO.0.1x0.1.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.TRO.0.1x0.1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.CO.TRO.0.1x0.1.nc TT_EDGAR_v43.Seasonal.1x1.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc TT_Olson_2001_Land_Map.025x025.generic.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/Olson_Land_Map_201203/Olson_2001_Land_Map.025x025.generic.nc TT_Rn222_Emis_Zhang_Liu_et_al_05x05_mass.nc: - template: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/ZHANG_Rn222/v2021-11/Rn222_Emis_Zhang_Liu_et_al_05x05_mass.nc + template: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/ZHANG_Rn222/v2021-11/Rn222_Emis_Zhang_Liu_et_al_05x05_mass.nc TT_timezones_esmf.2x25.nc: template: /discover/nobackup/cakelle2/data/timezones_esmf.2x25.nc diff --git a/run/GEOS/TransportTracers/GEOSCHEMchem_GridComp.rc b/run/GEOS/TransportTracers/GEOSCHEMchem_GridComp.rc index f34677dda..d57443790 100644 --- a/run/GEOS/TransportTracers/GEOSCHEMchem_GridComp.rc +++ b/run/GEOS/TransportTracers/GEOSCHEMchem_GridComp.rc @@ -217,7 +217,7 @@ Bry_Cly_Family_Transport: 0 # CO production from CO2 photolysis # CO_production_from_CO2_photolysis: 0 -CO2photolysisFile: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/StratChem/SC.J_20_12_79_72_200_45.jpl15.nc4 +CO2photolysisFile: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/StratChem/SC.J_20_12_79_72_200_45.jpl15.nc4 # # CO2 coupling with GOCART diff --git a/run/GEOS/TransportTracers/geoschem_config.yml b/run/GEOS/TransportTracers/geoschem_config.yml index d3cb110e2..900500ace 100644 --- a/run/GEOS/TransportTracers/geoschem_config.yml +++ b/run/GEOS/TransportTracers/geoschem_config.yml @@ -10,7 +10,7 @@ #============================================================================ simulation: name: TransportTracers - chem_inputs_dir: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/ + chem_inputs_dir: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/ species_database_file: ./species_database.yml verbose: activate: false diff --git a/run/GEOS/geoschem_config.yml b/run/GEOS/geoschem_config.yml index a30a4e96d..98d5d6321 100644 --- a/run/GEOS/geoschem_config.yml +++ b/run/GEOS/geoschem_config.yml @@ -60,8 +60,8 @@ operations: photolysis: activate: true input_directories: - fastjx_input_dir: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/FAST_JX/v2023-10/ - cloudj_input_dir: /gpfsm/dnb52/projects/p10/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/CLOUD_J/v2023-05/ + fastjx_input_dir: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/FAST_JX/v2023-10/ + cloudj_input_dir: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/CLOUD_J/v2023-05/ overhead_O3: use_online_O3_from_model: true use_column_O3_from_met: true From 3c77f88ca5cb5d913a3311882fbc1c1916da3c83 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 29 Apr 2024 12:42:23 -0400 Subject: [PATCH 253/331] Update changelog Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7e5dafa8..cb5c2fa38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Renamed `State_Met%FRSNO` and `State_Met%FRLANDIC` to `State_Met%FRSNOW` and `State_Met%FRLANDICE` - Renamed isorropiaII_mod.F90 to aerosol_thermodynamics_mod.F90 - Changed aerosol thermodynamics scheme from ISORROPIA II to HETP for fullchem and APM +- Changed input data paths in run/GEOS directory to match location change on NASA discover cluster ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. From ee826eb29c78c57ea7da7f9ffd58a06809c95cb6 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 29 Apr 2024 16:10:18 -0400 Subject: [PATCH 254/331] Use smaller mask files for carbon/CH4/tagCH4 sims run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 - *COAST* entries are now placed beneath the corresponding emission entries and use placeholder "-" characters for file, variable, CRE, dimension, and units. This allows us to only read each variable from the file once and then to reuse it immediately. - Now use smaller mask files (0.1 degree instead of 0.01 degree) in HEMCO/MASKS/v2024-04 for Mexico, Canada, and CONUS regions. This should relieve a data I/O bottleneck. run/GCHP/ExtData.rc.templates/ExtData.rc - Remove entries for *COAST*, as this was causing duplicate file/variable reading from disk. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 + .../HEMCO_Config.rc.CH4 | 279 ++++++++-------- .../HEMCO_Config.rc.carbon | 278 ++++++++-------- .../HEMCO_Config.rc.tagCH4 | 14 +- .../ExtData.rc.templates/ExtData.rc.carbon | 67 +--- .../HEMCO_Config.rc.carbon | 303 +++++++++--------- 6 files changed, 447 insertions(+), 496 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17ba8d3a2..d976edfd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Renamed isorropiaII_mod.F90 to aerosol_thermodynamics_mod.F90 - Changed aerosol thermodynamics scheme from ISORROPIA II to HETP for fullchem and APM - Changed input data paths in `run/GEOS` directory to match location change on NASA discover cluster +- Use new mask files at 0.1 x 0.1 degree resoluiton for CH4/tagCH4/carbon simulations to avoid I/O bottlenecks +- Update config files for CH4/carbon simulations to avoid reading the same variable multiple times ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index 7bbbcf7b1..ec43eb9ad 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -141,13 +141,19 @@ VerboseOnCores: root # Accepted values: root all # NOTES: # - This is the main Gridded GHGI v2 dataset based off the US GHGI published in 2020 # - Use Hier=100 to add to Canada and Mexico regional inventories +# - Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, +# Hier=5 to add to GFEI; mask=1009) ### #============================================================================== (((GHGI_v2 ### Oil ### -0 GHGI_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1008 1 100 -0 GHGI_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1008 1 100 -0 GHGI_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1008 1 100 -0 GHGI_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1008 1 100 +0 GHGI_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 +0 GHGI_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1008 1 100 +0 GHGI_COAST_OIL_PRODUCTION - - - - - - CH4 52/1009 1 5 +0 GHGI_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1008 1 100 +0 GHGI_COAST_OIL_REFINING - - - - - - CH4 53/1009 1 5 +0 GHGI_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_COAST_OIL_TRANSPORT - - - - - - CH4 54/1009 1 5 ### Gas ### 0 GHGI_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 @@ -157,144 +163,133 @@ VerboseOnCores: root # Accepted values: root all 0 GHGI_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 ### Coal ### -0 GHGI_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 -0 GHGI_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 -0 GHGI_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAST_COAL_UNDERGROUND - - - - - - CH4 1009 3 5 +0 GHGI_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAST_COAL_SURFACE - - - - - - CH4 1009 3 5 +0 GHGI_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAST_COAL_ABANDONED - - - - - - CH4 1009 3 5 ### Livestock ### -0 GHGI_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 4 100 -0 GHGI_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 4 100 +0 GHGI_COAST_LIVESTOCK_ENT - - - - - CH4 1009 4 1 +0 GHGI_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_COAST_LIVESTOCK_MAN - - - - - - CH4 57/1009 4 1 ### Landfills ### -0 GHGI_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 -0 GHGI_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 -0 GHGI_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_COAST_LANDFILLS_IND - - - - - - CH4 1009 5 1 +0 GHGI_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_COAST_LANDFILLS_MSW - - - - - - CH4 1009 5 1 +0 GHGI_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_COAST_LANDFILLS_COMP - - - - - - CH4 1009 5 1 ### Wastewater ### -0 GHGI_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 -0 GHGI_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 +0 GHGI_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 +0 GHGI_COAST_WASTEWATER_DOM - - - - - - CH4 1009 6 1 +0 GHGI_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 +0 GHGI_COAST_WASTEWATER_IND - - - - - - CH4 1009 6 1 ### Rice ### -0 GHGI_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_COAST_RICE - - - - - - CH4 58/1009 7 1 ### Other Anthro ### -0 GHGI_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1008 8 100 -0 GHGI_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 59/1008 8 100 -0 GHGI_OTHER_ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI; mask=1009) ### -0 GHGI_COAST_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1009 1 5 -0 GHGI_COAST_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1009 1 5 -0 GHGI_COAST_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1009 1 5 -0 GHGI_COAST_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 54/1009 1 5 -0 GHGI_COAST_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 55/1009 2 5 -0 GHGI_COAST_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 56/1009 2 5 -0 GHGI_COAST_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 4 1 -0 GHGI_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1009 4 1 -0 GHGI_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 6 1 -0 GHGI_COAST_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 6 1 -0 GHGI_COAST_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1009 7 1 -0 GHGI_COAST_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1009 8 1 -0 GHGI_COAST_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 59/1009 8 1 -0 GHGI_COAST_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 +0 GHGI_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_MCOMB - - - - - - CH4 1009 8 1 +0 GHGI_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1008 8 100 +0 GHGI_COAST_OTHER_SCOMB - - - - - - CH4 50/1009 8 1 +0 GHGI_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_PIND - - - - - - CH4 1009 8 1 +0 GHGI_OTHER_FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_FIND - - - - - - CH4 1009 8 1 +0 GHGI_OTHER_BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 59/1008 8 100 +0 GHGI_COAST_OTHER_BURN - - - - - - CH4 59/1009 8 1 +0 GHGI_OTHER_ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_ABOG - - - - - - CH4 1009 8 1 )))GHGI_v2 #======================================================================================= -# --- Gridded GHGI v2 Express Extension (Maasakkers et al., submitted to ES&T, 2023) --- +# --- CH4: Gridded GHGI v2 Express Extension (Maasakkers et al., submitted to ES&T, 2023) --- # # NOTES: # - Based off the US GHGI published in 2022. # - Uses annual source-specific spatial patterns from 2012-2018 from the main # dataset to quickly incorporate more recent national methane emission estimates. # - Emissions for years after 2018 follow the 2018 spatial patterns. +# - Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, +# Hier=5 to add to GFEI; mask=1009) ### #======================================================================================= (((GHGI_v2_Express_Ext (((.not.GHGI_v2 ### Oil ### -0 GHGI_EE_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 51/1008 1 100 -0 GHGI_EE_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 52/1008 1 100 -0 GHGI_EE_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 53/1008 1 100 -0 GHGI_EE_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_EE_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 51/1008 1 100 +0 GHGI_EE_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 5 +0 GHGI_EE_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 52/1008 1 100 +0 GHGI_EE_COAST_OIL_PRODUCTION - - - - - - CH4 52/1009 1 5 +0 GHGI_EE_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 53/1008 1 100 +0 GHGI_EE_COAST_OIL_REFINING - - - - - - CH4 53/1009 1 5 +0 GHGI_EE_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_EE_COAST_OIL_TRANSPORT - - - - - - CH4 54/1009 1 5 ### Gas ### -0 GHGI_EE_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 55/1008 2 100 -0 GHGI_EE_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1008 2 100 -0 GHGI_EE_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 - -### Coal ### -0 GHGI_EE_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 -0 GHGI_EE_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 -0 GHGI_EE_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 +0 GHGI_EE_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_COAST_GAS_DISTRIBUTION - - - - - - CH4 1009 2 5 +0 GHGI_EE_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 55/1008 2 100 +0 GHGI_EE_COAST_GAS_EXPLORATION - - - - - - CH4 55/1009 2 5 +0 GHGI_EE_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_COAST_GAS_PROCESSING - - - - - - CH4 1009 2 5 +0 GHGI_EE_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1008 2 100 +0 GHGI_EE_COAST_GAS_PRODUCTION - - - - - - CH4 56/1009 2 5 +0 GHGI_EE_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_COAST_GAS_TRANSMISSION - - - - - - CH4 1009 2 5 +0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 + +### Coal ### +0 GHGI_EE_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 +0 GHGI_EE_COAST_COAL_UNDERGROUND - - - - - - CH4 1009 3 5 +0 GHGI_EE_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 +0 GHGI_EE_COAST_COAL_SURFACE - - - - - - CH4 1009 3 5 +0 GHGI_EE_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 +0 GHGI_EE_COAST_COAL_ABANDONED - - - - - - CH4 1009 3 5 ### Livestock ### -0 GHGI_EE_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 -0 GHGI_EE_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_EE_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 +0 GHGI_EE_COAST_LIVESTOCK_ENT - - - - - - CH4 1009 4 1 +0 GHGI_EE_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_EE_COAST_LIVESTOCK_MAN - - - - - - CH4 57/1009 4 1 ### Landfills ### -0 GHGI_EE_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 -0 GHGI_EE_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 -0 GHGI_EE_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_COAST_LANDFILLS_IND - - - - - - CH4 1009 5 1 +0 GHGI_EE_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_COAST_LANDFILLS_MSW - - - - - - CH4 1009 5 1 +0 GHGI_EE_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_COAST_LANDFILLS_COMP - - - - - - CH4 1009 5 1 ### Wastewater ### -0 GHGI_EE_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 -0 GHGI_EE_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 +0 GHGI_EE_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 +0 GHGI_EE_COAST_WASTEWATER_DOM - - - - - - CH4 1009 6 1 +0 GHGI_EE_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 +0 GHGI_EE_COAST_WASTEWATER_IND - - - - - - CH4 1009 6 1 ### Rice ### -0 GHGI_EE_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_EE_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_EE_COAST_RICE - - - - -y - CH4 58/1009 7 1 ### Other Anthro ### -0 GHGI_EE_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1008 8 100 -0 GHGI_EE_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 59/1008 8 100 -0 GHGI_EE_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI; mask=1009) ### -0 GHGI_EE_COAST_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 51/1009 1 5 -0 GHGI_EE_COAST_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 52/1009 1 5 -0 GHGI_EE_COAST_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 53/1009 1 5 -0 GHGI_EE_COAST_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 54/1009 1 5 -0 GHGI_EE_COAST_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 55/1009 2 5 -0 GHGI_EE_COAST_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1009 2 5 -0 GHGI_EE_COAST_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 4 1 -0 GHGI_EE_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1009 4 1 -0 GHGI_EE_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 6 1 -0 GHGI_EE_COAST_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 6 1 -0 GHGI_EE_COAST_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1009 7 1 -0 GHGI_EE_COAST_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1009 8 1 -0 GHGI_EE_COAST_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 59/1009 8 1 -0 GHGI_EE_COAST_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 +0 GHGI_EE_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_MCOMB 0 GHGI_EE_COAST_OTHER_MCOMB - - - - - - CH4 1009 8 1 +0 GHGI_EE_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1008 8 100 +0 GHGI_EE_COAST_OTHER_SCOMB - - - - - - CH4 50/1009 8 1 +0 GHGI_EE_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_PIND - - - - - - CH4 1009 8 1 +0 GHGI_EE_OTHER_FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_FIND - - - - - - CH4 1009 8 1 +0 GHGI_EE_OTHER_BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 59/1008 8 100 +0 GHGI_EE_COAST_OTHER_BURN - - - - - - CH4 59/1009 8 1 +0 GHGI_EE_OTHER_ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_ABOG - - - - - - CH4 1009 8 1 ))).not.GHGI_v2 )))GHGI_v2_Express_Ext @@ -303,28 +298,28 @@ VerboseOnCores: root # Accepted values: root all # # NOTES: # - Use Hier=100 to add to Canada and USA regional inventories +# - Make sure to include offshore/coastal emissions +# (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) #============================================================================== (((Scarpelli_Mexico 0 MEX_OIL $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 1 100 +0 MEX_OIL_COAST - - - - - - CH4 1010 1 5 0 MEX_GAS $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 2 100 +0 MEX_GAS_COAST - - - - - - CH4 1010 2 5 0 MEX_COAL $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 3 100 +0 MEX_COAL_COAST - - - - - - CH4 1010 3 5 0 MEX_LIVESTOCK_A $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 4 100 +0 MEX_LIVESTOCK_A_COAST - - - - - - CH4 1010 4 1 0 MEX_LIVESTOCK_B $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 10/1001 4 100 +0 MEX_LIVESTOCK_B_COAST - - - - - - CH4 10/1010 4 1 0 MEX_LANDFILLS $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 5 100 +0 MEX_LANDFILLS_COAST - - - - - - CH4 1010 5 1 0 MEX_WASTEWATER $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 6 100 +0 MEX_WASTEWATER_COAST - - - - - - CH4 1010 6 1 0 MEX_RICE $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 11/1001 7 100 +0 MEX_RICE_COAST - - - - - - CH4 11/1010 7 1 0 MEX_OTHER $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) ### -0 MEX_OIL_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 1 5 -0 MEX_GAS_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 2 5 -0 MEX_COAL_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 3 5 -0 MEX_LIVESTOCK_A_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 4 1 -0 MEX_LIVESTOCK_B_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 10/1010 4 1 -0 MEX_LANDFILLS_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 5 1 -0 MEX_WASTEWATER_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 6 1 -0 MEX_RICE_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 11/1010 7 1 -0 MEX_OTHER_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 8 1 +0 MEX_OTHER_COAST - - - - - - CH4 1010 8 1 )))Scarpelli_Mexico #============================================================================== @@ -332,26 +327,26 @@ VerboseOnCores: root # Accepted values: root all # # NOTES: # - Use Hier=100 to add to USA and Mexico regional inventories +# - Make sure to include offshore/coastal emissions +# (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) #============================================================================== (((Scarpelli_Canada -0 CAN_OIL_GAS_COMBUSTION $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_OIL_GAS_LEAKAGE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_OIL_GAS_VENT_FLARE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_COAL $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4 1002 3 100 -0 CAN_LIVESTOCK $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4 1002 4 100 -0 CAN_SOLID_WASTE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4 1002 5 100 -0 CAN_WASTEWATER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4 1002 6 100 -0 CAN_OTHER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4 1002 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) ### -0 CAN_OIL_GAS_COMBUSTION_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_OIL_GAS_LEAKAGE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_OIL_GAS_VENT_FLARE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_COAL_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4 1011 3 5 -0 CAN_LIVESTOCK_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4 1011 4 1 -0 CAN_SOLID_WASTE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4 1011 5 1 -0 CAN_WASTEWATER_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4 1011 6 1 -0 CAN_OTHER_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4 1011 8 1 +0 CAN_OIL_GAS_COMBUSTION $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 +0 CAN_OIL_GAS_COMBUSTION_COAST - - - - - - CH4 1011 1/2 5 +0 CAN_OIL_GAS_LEAKAGE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 +0 CAN_OIL_GAS_LEAKAGE_COAST - - - - - - CH4 1011 1/2 5 +0 CAN_OIL_GAS_VENT_FLARE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 +0 CAN_OIL_GAS_VENT_FLARE_COAST - - - - - - CH4 1011 1/2 5 +0 CAN_COAL $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4 1002 3 100 +0 CAN_COAL_COAST - - - - - - CH4 1011 3 5 +0 CAN_LIVESTOCK $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4 1002 4 100 +0 CAN_LIVESTOCK_COAST - - - - - - CH4 1011 4 1 +0 CAN_SOLID_WASTE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4 1002 5 100 +0 CAN_SOLID_WASTE_COAST - - - - - - CH4 1011 5 1 +0 CAN_WASTEWATER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4 1002 6 100 +0 CAN_WASTEWATER_COAST - - - - - - CH4 1011 6 1 +0 CAN_OTHER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4 1002 8 100 +0 CAN_OTHER_COAST - - - - - - CH4 1011 8 1 )))Scarpelli_Canada #============================================================================== @@ -935,18 +930,18 @@ ${RUNDIR_GLOBAL_Cl} # Use updated files (v2024-01); these are COARDS-compliant. (((Scarpelli_Mexico -1001 MEX_MASK $ROOT/MASKS/v2024-01/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-01/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1001 MEX_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 )))Scarpelli_Mexico (((Scarpelli_Canada -1002 CAN_MASK $ROOT/MASKS/v2024-01/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-01/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1002 CAN_MASK $ROOT/MASKS/v2024-04/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-04/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))Scarpelli_Canada (((GHGI_v2.or.GHGI_v2_Express_Ext -1008 CONUS_MASK $ROOT/MASKS/v2018-09/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 -1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2018-09/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1008 CONUS_MASK $ROOT/MASKS/v2024-04/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2024-04/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 )))GHGI_v2.or.GHGI_v2_Express_Ext )))EMISSIONS diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 1b336853f..412be1349 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -181,15 +181,22 @@ Mask fractions: false # --- CH4: Gridded GHGI v2 (Maasakkers et al., submitted to ES&T, 2023) --- # # NOTES: -# - This is the main Gridded GHGI v2 dataset based off the US GHGI published in 2020 +# - This is the main Gridded GHGI v2 dataset based off the US GHGI +$ published in 2020 # - Use Hier=100 to add to Canada and Mexico regional inventories +# - Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, +# Hier=5 to add to GFEI; mask=1009) ### #============================================================================== (((GHGI_v2 ### Oil ### -0 GHGI_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1008 1 100 -0 GHGI_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1008 1 100 -0 GHGI_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1008 1 100 -0 GHGI_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1008 1 100 +0 GHGI_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 +0 GHGI_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1008 1 100 +0 GHGI_COAST_OIL_PRODUCTION - - - - - - CH4 52/1009 1 5 +0 GHGI_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1008 1 100 +0 GHGI_COAST_OIL_REFINING - - - - - - CH4 53/1009 1 5 +0 GHGI_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_COAST_OIL_TRANSPORT - - - - - - CH4 54/1009 1 5 ### Gas ### 0 GHGI_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 @@ -199,61 +206,50 @@ Mask fractions: false 0 GHGI_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 ### Coal ### -0 GHGI_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 -0 GHGI_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 -0 GHGI_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAST_COAL_UNDERGROUND - - - - - - CH4 1009 3 5 +0 GHGI_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAST_COAL_SURFACE - - - - - - CH4 1009 3 5 +0 GHGI_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAST_COAL_ABANDONED - - - - - - CH4 1009 3 5 ### Livestock ### -0 GHGI_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 4 100 -0 GHGI_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 4 100 +0 GHGI_COAST_LIVESTOCK_ENT - - - - - CH4 1009 4 1 +0 GHGI_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_COAST_LIVESTOCK_MAN - - - - - - CH4 57/1009 4 1 ### Landfills ### -0 GHGI_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 -0 GHGI_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 -0 GHGI_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_COAST_LANDFILLS_IND - - - - - - CH4 1009 5 1 +0 GHGI_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_COAST_LANDFILLS_MSW - - - - - - CH4 1009 5 1 +0 GHGI_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_COAST_LANDFILLS_COMP - - - - - - CH4 1009 5 1 ### Wastewater ### -0 GHGI_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 -0 GHGI_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 +0 GHGI_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 +0 GHGI_COAST_WASTEWATER_DOM - - - - - - CH4 1009 6 1 +0 GHGI_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 +0 GHGI_COAST_WASTEWATER_IND - - - - - - CH4 1009 6 1 ### Rice ### -0 GHGI_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_COAST_RICE - - - - - - CH4 58/1009 7 1 ### Other Anthro ### -0 GHGI_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1008 8 100 -0 GHGI_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 59/1008 8 100 -0 GHGI_OTHER_ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI; mask=1009) ### -0 GHGI_COAST_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1009 1 5 -0 GHGI_COAST_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1009 1 5 -0 GHGI_COAST_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1009 1 5 -0 GHGI_COAST_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 54/1009 1 5 -0 GHGI_COAST_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 55/1009 2 5 -0 GHGI_COAST_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 56/1009 2 5 -0 GHGI_COAST_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 4 1 -0 GHGI_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1009 4 1 -0 GHGI_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 6 1 -0 GHGI_COAST_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 6 1 -0 GHGI_COAST_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1009 7 1 -0 GHGI_COAST_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1009 8 1 -0 GHGI_COAST_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 59/1009 8 1 -0 GHGI_COAST_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 +0 GHGI_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_MCOMB - - - - - - CH4 1009 8 1 +0 GHGI_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1008 8 100 +0 GHGI_COAST_OTHER_SCOMB - - - - - - CH4 50/1009 8 1 +0 GHGI_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_PIND - - - - - - CH4 1009 8 1 +0 GHGI_OTHER_FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_FIND - - - - - - CH4 1009 8 1 +0 GHGI_OTHER_BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 59/1008 8 100 +0 GHGI_COAST_OTHER_BURN - - - - - - CH4 59/1009 8 1 +0 GHGI_OTHER_ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_ABOG - - - - - - CH4 1009 8 1 )))GHGI_v2 #======================================================================================= @@ -264,79 +260,79 @@ Mask fractions: false # - Uses annual source-specific spatial patterns from 2012-2018 from the main # dataset to quickly incorporate more recent national methane emission estimates. # - Emissions for years after 2018 follow the 2018 spatial patterns. +# - Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, +# Hier=5 to add to GFEI; mask=1009) ### #======================================================================================= (((GHGI_v2_Express_Ext (((.not.GHGI_v2 ### Oil ### -0 GHGI_EE_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 51/1008 1 100 -0 GHGI_EE_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 52/1008 1 100 -0 GHGI_EE_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 53/1008 1 100 -0 GHGI_EE_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_EE_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 51/1008 1 100 +0 GHGI_EE_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 5 +0 GHGI_EE_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 52/1008 1 100 +0 GHGI_EE_COAST_OIL_PRODUCTION - - - - - - CH4 52/1009 1 5 +0 GHGI_EE_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 53/1008 1 100 +0 GHGI_EE_COAST_OIL_REFINING - - - - - - CH4 53/1009 1 5 +0 GHGI_EE_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_EE_COAST_OIL_TRANSPORT - - - - - - CH4 54/1009 1 5 ### Gas ### -0 GHGI_EE_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 55/1008 2 100 -0 GHGI_EE_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1008 2 100 -0 GHGI_EE_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_COAST_GAS_DISTRIBUTION - - - - - - CH4 1009 2 5 +0 GHGI_EE_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 55/1008 2 100 +0 GHGI_EE_COAST_GAS_EXPLORATION - - - - - - CH4 55/1009 2 5 +0 GHGI_EE_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_COAST_GAS_PROCESSING - - - - - - CH4 1009 2 5 +0 GHGI_EE_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1008 2 100 +0 GHGI_EE_COAST_GAS_PRODUCTION - - - - - - CH4 56/1009 2 5 +0 GHGI_EE_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_COAST_GAS_TRANSMISSION - - - - - - CH4 1009 2 5 +0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 ### Coal ### -0 GHGI_EE_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 -0 GHGI_EE_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 -0 GHGI_EE_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 +0 GHGI_EE_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 +0 GHGI_EE_COAST_COAL_UNDERGROUND - - - - - - CH4 1009 3 5 +0 GHGI_EE_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 +0 GHGI_EE_COAST_COAL_SURFACE - - - - - - CH4 1009 3 5 +0 GHGI_EE_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 +0 GHGI_EE_COAST_COAL_ABANDONED - - - - - - CH4 1009 3 5 ### Livestock ### -0 GHGI_EE_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 -0 GHGI_EE_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_EE_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 +0 GHGI_EE_COAST_LIVESTOCK_ENT - - - - - - CH4 1009 4 1 +0 GHGI_EE_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_EE_COAST_LIVESTOCK_MAN - - - - - - CH4 57/1009 4 1 ### Landfills ### -0 GHGI_EE_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 -0 GHGI_EE_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 -0 GHGI_EE_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_COAST_LANDFILLS_IND - - - - - - CH4 1009 5 1 +0 GHGI_EE_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_COAST_LANDFILLS_MSW - - - - - - CH4 1009 5 1 +0 GHGI_EE_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_COAST_LANDFILLS_COMP - - - - - - CH4 1009 5 1 ### Wastewater ### -0 GHGI_EE_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 -0 GHGI_EE_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 +0 GHGI_EE_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 +0 GHGI_EE_COAST_WASTEWATER_DOM - - - - - - CH4 1009 6 1 +0 GHGI_EE_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 +0 GHGI_EE_COAST_WASTEWATER_IND - - - - - - CH4 1009 6 1 ### Rice ### -0 GHGI_EE_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_EE_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_EE_COAST_RICE - - - - -y - CH4 58/1009 7 1 ### Other Anthro ### -0 GHGI_EE_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1008 8 100 -0 GHGI_EE_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 59/1008 8 100 -0 GHGI_EE_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI; mask=1009) ### -0 GHGI_EE_COAST_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 51/1009 1 5 -0 GHGI_EE_COAST_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 52/1009 1 5 -0 GHGI_EE_COAST_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 53/1009 1 5 -0 GHGI_EE_COAST_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 54/1009 1 5 -0 GHGI_EE_COAST_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 55/1009 2 5 -0 GHGI_EE_COAST_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1009 2 5 -0 GHGI_EE_COAST_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 4 1 -0 GHGI_EE_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1009 4 1 -0 GHGI_EE_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 6 1 -0 GHGI_EE_COAST_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 6 1 -0 GHGI_EE_COAST_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1009 7 1 -0 GHGI_EE_COAST_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1009 8 1 -0 GHGI_EE_COAST_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 59/1009 8 1 -0 GHGI_EE_COAST_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 +0 GHGI_EE_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_MCOMB 0 GHGI_EE_COAST_OTHER_MCOMB - - - - - - CH4 1009 8 1 +0 GHGI_EE_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1008 8 100 +0 GHGI_EE_COAST_OTHER_SCOMB - - - - - - CH4 50/1009 8 1 +0 GHGI_EE_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_PIND - - - - - - CH4 1009 8 1 +0 GHGI_EE_OTHER_FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_FIND - - - - - - CH4 1009 8 1 +0 GHGI_EE_OTHER_BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 59/1008 8 100 +0 GHGI_EE_COAST_OTHER_BURN - - - - - - CH4 59/1009 8 1 +0 GHGI_EE_OTHER_ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_ABOG - - - - - - CH4 1009 8 1 ))).not.GHGI_v2 )))GHGI_v2_Express_Ext @@ -345,28 +341,28 @@ Mask fractions: false # # NOTES: # - Use Hier=100 to add to Canada and USA regional inventories +# - Make sure to include offshore/coastal emissions +# (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) #============================================================================== (((Scarpelli_Mexico 0 MEX_OIL $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 1 100 +0 MEX_OIL_COAST - - - - - - CH4 1010 1 5 0 MEX_GAS $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 2 100 +0 MEX_GAS_COAST - - - - - - CH4 1010 2 5 0 MEX_COAL $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 3 100 +0 MEX_COAL_COAST - - - - - - CH4 1010 3 5 0 MEX_LIVESTOCK_A $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 4 100 +0 MEX_LIVESTOCK_A_COAST - - - - - - CH4 1010 4 1 0 MEX_LIVESTOCK_B $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 10/1001 4 100 +0 MEX_LIVESTOCK_B_COAST - - - - - - CH4 10/1010 4 1 0 MEX_LANDFILLS $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 5 100 +0 MEX_LANDFILLS_COAST - - - - - - CH4 1010 5 1 0 MEX_WASTEWATER $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 6 100 +0 MEX_WASTEWATER_COAST - - - - - - CH4 1010 6 1 0 MEX_RICE $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 11/1001 7 100 +0 MEX_RICE_COAST - - - - - - CH4 11/1010 7 1 0 MEX_OTHER $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) ### -0 MEX_OIL_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 1 5 -0 MEX_GAS_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 2 5 -0 MEX_COAL_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 3 5 -0 MEX_LIVESTOCK_A_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 4 1 -0 MEX_LIVESTOCK_B_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 10/1010 4 1 -0 MEX_LANDFILLS_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 5 1 -0 MEX_WASTEWATER_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 6 1 -0 MEX_RICE_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 11/1010 7 1 -0 MEX_OTHER_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 8 1 +0 MEX_OTHER_COAST - - - - - - CH4 1010 8 1 )))Scarpelli_Mexico #============================================================================== @@ -374,26 +370,26 @@ Mask fractions: false # # NOTES: # - Use Hier=100 to add to USA and Mexico regional inventories +# - Make sure to include offshore/coastal emissions +# (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) #============================================================================== (((Scarpelli_Canada -0 CAN_OIL_GAS_COMBUSTION $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_OIL_GAS_LEAKAGE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_OIL_GAS_VENT_FLARE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_COAL $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4 1002 3 100 -0 CAN_LIVESTOCK $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4 1002 4 100 -0 CAN_SOLID_WASTE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4 1002 5 100 -0 CAN_WASTEWATER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4 1002 6 100 -0 CAN_OTHER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4 1002 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) ### -0 CAN_OIL_GAS_COMBUSTION_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_OIL_GAS_LEAKAGE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_OIL_GAS_VENT_FLARE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_COAL_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4 1011 3 5 -0 CAN_LIVESTOCK_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4 1011 4 1 -0 CAN_SOLID_WASTE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4 1011 5 1 -0 CAN_WASTEWATER_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4 1011 6 1 -0 CAN_OTHER_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4 1011 8 1 +0 CAN_OIL_GAS_COMBUSTION $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 +0 CAN_OIL_GAS_COMBUSTION_COAST - - - - - - CH4 1011 1/2 5 +0 CAN_OIL_GAS_LEAKAGE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 +0 CAN_OIL_GAS_LEAKAGE_COAST - - - - - - CH4 1011 1/2 5 +0 CAN_OIL_GAS_VENT_FLARE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 +0 CAN_OIL_GAS_VENT_FLARE_COAST - - - - - - CH4 1011 1/2 5 +0 CAN_COAL $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4 1002 3 100 +0 CAN_COAL_COAST - - - - - - CH4 1011 3 5 +0 CAN_LIVESTOCK $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4 1002 4 100 +0 CAN_LIVESTOCK_COAST - - - - - - CH4 1011 4 1 +0 CAN_SOLID_WASTE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4 1002 5 100 +0 CAN_SOLID_WASTE_COAST - - - - - - CH4 1011 5 1 +0 CAN_WASTEWATER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4 1002 6 100 +0 CAN_WASTEWATER_COAST - - - - - - CH4 1011 6 1 +0 CAN_OTHER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4 1002 8 100 +0 CAN_OTHER_COAST - - - - - - CH4 1011 8 1 )))Scarpelli_Canada #============================================================================== @@ -1068,7 +1064,7 @@ Mask fractions: false # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 )))GC_BCs #============================================================================== @@ -1682,18 +1678,18 @@ ${RUNDIR_CO2_COPROD} (((USE_CH4_DATA (((Scarpelli_Mexico -1001 MEX_MASK $ROOT/MASKS/v2024-01/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-01/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1001 MEX_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 )))Scarpelli_Mexico (((Scarpelli_Canada -1002 CAN_MASK $ROOT/MASKS/v2024-01/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-01/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1002 CAN_MASK $ROOT/MASKS/v2024-04/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-04/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))Scarpelli_Canada (((GHGI_v2.or.GHGI_v2_Express_Ext -1008 CONUS_MASK $ROOT/MASKS/v2018-09/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 -1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2018-09/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1008 CONUS_MASK $ROOT/MASKS/v2024-04/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2024-04/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 )))GHGI_v2.or.GHGI_v2_Express_Ext )))USE_CH4_DATA diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index bfbb5b20a..dfc62435c 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -1119,21 +1119,19 @@ ${RUNDIR_GLOBAL_Cl} # Country/region masks #============================================================================== -# Use updated files (v2024-01); these are COARDS-compliant. (((Scarpelli_Mexico -1001 MEXICO_MASK $ROOT/MASKS/v2024-01/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-01/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1001 MEXICO_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.01x00.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 )))Scarpelli_Mexico -# Use updated files (v2024-01); these are COARDS-compliant. (((Scarpelli_Canada -1002 CANADA_MASK $ROOT/MASKS/v2024-01/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-01/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1002 CANADA_MASK $ROOT/MASKS/v2024-04/Canada_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-04/Canada_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))Scarpelli_Canada (((GHGI_v2.or.GHGI_v2_Express_Ext -1008 CONUS_MASK $ROOT/MASKS/v2018-09/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 -1009 CONUS_MIRROR $ROOT/MASKS/v2018-09/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1008 CONUS_MASK $ROOT/MASKS/v2024-04/CONUS_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1009 CONUS_MIRROR $ROOT/MASKS/v2024-04/CONUS_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 )))GHGI_v2.or.GHGI_v2_Express_Ext )))EMISSIONS diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index 32376889e..2c53f74b0 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -165,32 +165,6 @@ GHGI_EE_OTHER__PIND molec/cm2/s N Y - none none GHGI_EE_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OTHER__BURN molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_EXPLORATION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_PRODUCTION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_REFINING molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OIL_TRANSPORT molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_EXPLORATION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_PRODUCTION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_TransmissionStorage ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LIVESTOCK_MAN molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_RICE molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__SCOMB molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__BURN molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAST_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc # --- Scarpelli Mexico --- MEX_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc @@ -202,16 +176,6 @@ MEX_LANDFILLS kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v20 MEX_WASTEWATER kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc MEX_RICE kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc MEX_OTHER kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc -MEX_OIL_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc -MEX_GAS_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc -MEX_COAL_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc -MEX_LIVESTOCK_A_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc -MEX_LIVESTOCK_B_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc -MEX_LANDFILLS_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc -MEX_WASTEWATER_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc -MEX_RICE_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc -MEX_OTHER_COAST kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc - # --- Scarpelli Canada --- CAN_OIL_GAS_COMBUSTION kg/m2/s N Y - none none oil_gas_combustion_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc @@ -222,15 +186,6 @@ CAN_LIVESTOCK kg/m2/s N Y - none none livestock_total CAN_SOLID_WASTE kg/m2/s N Y - none none solid_waste_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc CAN_WASTEWATER kg/m2/s N Y - none none wastewater_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc CAN_OTHER kg/m2/s N Y - none none other_minor_sources_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc -CAN_OIL_GAS_COMBUSTION_COAST kg/m2/s N Y - none none oil_gas_combustion_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc -CAN_OIL_GAS_LEAKAGE_COAST kg/m2/s N Y - none none oil_gas_leakage_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc -CAN_OIL_GAS_VENT_FLARE_COAST kg/m2/s N Y - none none oil_gas_vent_flare_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc -CAN_COAL_COAST kg/m2/s N Y - none none coal_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc -CAN_LIVESTOCK_COAST kg/m2/s N Y - none none livestock_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc -CAN_SOLID_WASTE_COAST kg/m2/s N Y - none none solid_waste_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc -CAN_WASTEWATER_COAST kg/m2/s N Y - none none wastewater_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc -CAN_OTHER_COAST kg/m2/s N Y - none none other_minor_sources_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc - # --- GFEI --- GFEI_CH4_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Oil_All.nc @@ -281,16 +236,13 @@ JPLW_CH4 kg/m2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4 ./HcoDir/CH4/v202 # --- Geological seeps --- CH4_SEEPS kg/m2/s N Y - none none emi_ch4 ./HcoDir/CH4/v2020-04/Seeps/Etiope_CH4GeologicalEmis_ScaledToHmiel.1x1.nc - # --- Emissions from reservoirs (Delwich et al 2022) --- CH4_RES_DAM kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4_RES_SFC kg/m2/s N Y - none none CH4emis ./HcoDir/CH4/v2024-01/ResME/ResME_Surface_Emissions.0.1x0.1.nc - # --- Emissions from termites (Fung et al 1991) --- CH4_TERMITES kg/m2/s N Y - none none CH4 ./HcoDir/CH4/v2022-11/4x5/termites.geos.4x5.nc - # --- Soil absorption fro MeMo model (Murguia-Flores et al. 2018, GMD) --- # # Note: Use climatology by default @@ -465,13 +417,20 @@ OCEANCO2_SCALED_MONTHLY kg/m2/s N Y F%y2-%m2-01T00:00:00 none none CO2 ./HcoD ### ############################################################################### -MEX_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Mexico_Mask.001x001.nc -MEX_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Mexico_Mask_Mirror.001x001.nc -CAN_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Canada_Mask.001x001.nc -CAN_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2024-01/Canada_Mask_Mirror.001x001.nc +# Comment these lines if you are not using Scarpelli_Mexico +MEX_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2024-04/Mexico_Mask.01x01.nc +MEX_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2024-04/Mexico_Mask_Mirror.01x01.nc + +# Comment these lines if you are not using Scarpelli_Canada +CAN_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2024-04/Canada_Mask.01x01.nc +CAN_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2024-04/Canada_Mask_Mirror.01x01.nc + +# Comment these lines if you are not using GHGI_v2/GHGIv2_Express_Ext +CONUS_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2024-04/CONUS_Mask.01x01.nc +CONUS_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2024-04/CONUS_Mask_Mirror.01x01.nc + +# Comment these lines if you are not using any of the CEDS inventories CHINA_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/China_mask.generic.1x1.nc -CONUS_MASK 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/CONUS_Mask.001x001.nc -CONUS_MASK_MIRROR 1 N Y - none none MASK ./HcoDir/MASKS/v2018-09/CONUS_Mask_Mirror.001x001.nc %% DerivedExports%% diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 4a80c0487..938755f79 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -181,79 +181,80 @@ Mask fractions: false # --- CH4: Gridded GHGI v2 (Maasakkers et al., submitted to ES&T, 2023) --- # # NOTES: -# - This is the main Gridded GHGI v2 dataset based off the US GHGI published in 2020 +# - This is the main Gridded GHGI v2 dataset based off the US GHGI +$ published in 2020 # - Use Hier=100 to add to Canada and Mexico regional inventories +# - Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, +# Hier=5 to add to GFEI; mask=1009) ### #============================================================================== (((GHGI_v2 ### Oil ### -0 GHGI_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1008 1 100 -0 GHGI_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1008 1 100 -0 GHGI_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1008 1 100 -0 GHGI_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1008 1 100 +0 GHGI_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 +0 GHGI_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1008 1 100 +0 GHGI_COAST_OIL_PRODUCTION - - - - - - CH4 52/1009 1 5 +0 GHGI_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1008 1 100 +0 GHGI_COAST_OIL_REFINING - - - - - - CH4 53/1009 1 5 +0 GHGI_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_COAST_OIL_TRANSPORT - - - - - - CH4 54/1009 1 5 ### Gas ### -0 GHGI_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 -0 GHGI_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 55/1008 2 100 -0 GHGI_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 -0 GHGI_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 56/1008 2 100 -0 GHGI_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_COAST_GAS_DISTRIBUTION - - - - - - CH4 1009 2 5 +0 GHGI_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 55/1008 2 100 +0 GHGI_COAST_GAS_EXPLORATION - - - - - - CH4 55/1009 2 5 +0 GHGI_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_COAST_GAS_PROCESSING - - - - - - CH4 1009 2 5 +0 GHGI_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 56/1008 2 100 +0 GHGI_COAST_GAS_PRODUCTION - - - - - - CH4 56/1009 2 5 +0 GHGI_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_COAST_GAS_TRANSMISSION - - - - - - CH4 1009 2 5 ### Coal ### -0 GHGI_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 -0 GHGI_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 -0 GHGI_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAST_COAL_UNDERGROUND - - - - - - CH4 1009 3 5 +0 GHGI_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAST_COAL_SURFACE - - - - - - CH4 1009 3 5 +0 GHGI_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 +0 GHGI_COAST_COAL_ABANDONED - - - - - - CH4 1009 3 5 ### Livestock ### -0 GHGI_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 4 100 -0 GHGI_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 4 100 +0 GHGI_COAST_LIVESTOCK_ENT - - - - - CH4 1009 4 1 +0 GHGI_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_COAST_LIVESTOCK_MAN - - - - - - CH4 57/1009 4 1 ### Landfills ### -0 GHGI_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 -0 GHGI_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 -0 GHGI_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_COAST_LANDFILLS_IND - - - - - - CH4 1009 5 1 +0 GHGI_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_COAST_LANDFILLS_MSW - - - - - - CH4 1009 5 1 +0 GHGI_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 +0 GHGI_COAST_LANDFILLS_COMP - - - - - - CH4 1009 5 1 ### Wastewater ### -0 GHGI_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 -0 GHGI_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 +0 GHGI_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 +0 GHGI_COAST_WASTEWATER_DOM - - - - - - CH4 1009 6 1 +0 GHGI_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 +0 GHGI_COAST_WASTEWATER_IND - - - - - - CH4 1009 6 1 ### Rice ### -0 GHGI_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_COAST_RICE - - - - - - CH4 58/1009 7 1 ### Other Anthro ### -0 GHGI_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1008 8 100 -0 GHGI_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 59/1008 8 100 -0 GHGI_OTHER_ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI; mask=1009) ### -0 GHGI_COAST_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1009 1 5 -0 GHGI_COAST_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1009 1 5 -0 GHGI_COAST_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1009 1 5 -0 GHGI_COAST_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 54/1009 1 5 -0 GHGI_COAST_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 55/1009 2 5 -0 GHGI_COAST_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 56/1009 2 5 -0 GHGI_COAST_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 4 1 -0 GHGI_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1009 4 1 -0 GHGI_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 6 1 -0 GHGI_COAST_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 6 1 -0 GHGI_COAST_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1009 7 1 -0 GHGI_COAST_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1009 8 1 -0 GHGI_COAST_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 59/1009 8 1 -0 GHGI_COAST_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 +0 GHGI_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_MCOMB - - - - - - CH4 1009 8 1 +0 GHGI_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1008 8 100 +0 GHGI_COAST_OTHER_SCOMB - - - - - - CH4 50/1009 8 1 +0 GHGI_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_PIND - - - - - - CH4 1009 8 1 +0 GHGI_OTHER_FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_FIND - - - - - - CH4 1009 8 1 +0 GHGI_OTHER_BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 59/1008 8 100 +0 GHGI_COAST_OTHER_BURN - - - - - - CH4 59/1009 8 1 +0 GHGI_OTHER_ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 +0 GHGI_COAST_OTHER_ABOG - - - - - - CH4 1009 8 1 )))GHGI_v2 #======================================================================================= @@ -264,79 +265,79 @@ Mask fractions: false # - Uses annual source-specific spatial patterns from 2012-2018 from the main # dataset to quickly incorporate more recent national methane emission estimates. # - Emissions for years after 2018 follow the 2018 spatial patterns. +# - Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, +# Hier=5 to add to GFEI; mask=1009) ### #======================================================================================= (((GHGI_v2_Express_Ext (((.not.GHGI_v2 ### Oil ### -0 GHGI_EE_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 51/1008 1 100 -0 GHGI_EE_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 52/1008 1 100 -0 GHGI_EE_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 53/1008 1 100 -0 GHGI_EE_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_EE_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 51/1008 1 100 +0 GHGI_EE_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 5 +0 GHGI_EE_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 52/1008 1 100 +0 GHGI_EE_COAST_OIL_PRODUCTION - - - - - - CH4 52/1009 1 5 +0 GHGI_EE_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 53/1008 1 100 +0 GHGI_EE_COAST_OIL_REFINING - - - - - - CH4 53/1009 1 5 +0 GHGI_EE_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 54/1008 1 100 +0 GHGI_EE_COAST_OIL_TRANSPORT - - - - - - CH4 54/1009 1 5 ### Gas ### -0 GHGI_EE_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 55/1008 2 100 -0 GHGI_EE_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1008 2 100 -0 GHGI_EE_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 - -### Coal ### -0 GHGI_EE_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 -0 GHGI_EE_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 -0 GHGI_EE_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 - -### Livestock ### -0 GHGI_EE_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 -0 GHGI_EE_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 - -### Landfills ### -0 GHGI_EE_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 -0 GHGI_EE_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 -0 GHGI_EE_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_COAST_GAS_DISTRIBUTION - - - - - - CH4 1009 2 5 +0 GHGI_EE_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 55/1008 2 100 +0 GHGI_EE_COAST_GAS_EXPLORATION - - - - - - CH4 55/1009 2 5 +0 GHGI_EE_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_COAST_GAS_PROCESSING - - - - - - CH4 1009 2 5 +0 GHGI_EE_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1008 2 100 +0 GHGI_EE_COAST_GAS_PRODUCTION - - - - - - CH4 56/1009 2 5 +0 GHGI_EE_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 +0 GHGI_EE_COAST_GAS_TRANSMISSION - - - - - - CH4 1009 2 5 +0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 + +### Coal ### +0 GHGI_EE_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 +0 GHGI_EE_COAST_COAL_UNDERGROUND - - - - - - CH4 1009 3 5 +0 GHGI_EE_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 +0 GHGI_EE_COAST_COAL_SURFACE - - - - - - CH4 1009 3 5 +0 GHGI_EE_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 +0 GHGI_EE_COAST_COAL_ABANDONED - - - - - - CH4 1009 3 5 + +### Livestock ### +0 GHGI_EE_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 +0 GHGI_EE_COAST_LIVESTOCK_ENT - - - - - - CH4 1009 4 1 +0 GHGI_EE_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 +0 GHGI_EE_COAST_LIVESTOCK_MAN - - - - - - CH4 57/1009 4 1 + +### Landfills ### +0 GHGI_EE_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_COAST_LANDFILLS_IND - - - - - - CH4 1009 5 1 +0 GHGI_EE_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_COAST_LANDFILLS_MSW - - - - - - CH4 1009 5 1 +0 GHGI_EE_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 +0 GHGI_EE_COAST_LANDFILLS_COMP - - - - - - CH4 1009 5 1 ### Wastewater ### -0 GHGI_EE_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 -0 GHGI_EE_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 +0 GHGI_EE_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 +0 GHGI_EE_COAST_WASTEWATER_DOM - - - - - - CH4 1009 6 1 +0 GHGI_EE_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 +0 GHGI_EE_COAST_WASTEWATER_IND - - - - - - CH4 1009 6 1 ### Rice ### -0 GHGI_EE_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_EE_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_EE_COAST_RICE - - - - - - CH4 58/1009 7 1 ### Other Anthro ### -0 GHGI_EE_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1008 8 100 -0 GHGI_EE_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 59/1008 8 100 -0 GHGI_EE_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI; mask=1009) ### -0 GHGI_EE_COAST_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 51/1009 1 5 -0 GHGI_EE_COAST_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 52/1009 1 5 -0 GHGI_EE_COAST_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 53/1009 1 5 -0 GHGI_EE_COAST_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 54/1009 1 5 -0 GHGI_EE_COAST_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 55/1009 2 5 -0 GHGI_EE_COAST_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1009 2 5 -0 GHGI_EE_COAST_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 4 1 -0 GHGI_EE_COAST_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1009 4 1 -0 GHGI_EE_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 6 1 -0 GHGI_EE_COAST_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 6 1 -0 GHGI_EE_COAST_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1009 7 1 -0 GHGI_EE_COAST_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1009 8 1 -0 GHGI_EE_COAST_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 59/1009 8 1 -0 GHGI_EE_COAST_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 +0 GHGI_EE_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_MCOMB 0 GHGI_EE_COAST_OTHER_MCOMB - - - - - - CH4 1009 8 1 +0 GHGI_EE_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1008 8 100 +0 GHGI_EE_COAST_OTHER_SCOMB - - - - - - CH4 50/1009 8 1 +0 GHGI_EE_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_PIND - - - - - - CH4 1009 8 1 +0 GHGI_EE_OTHER_FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_FIND - - - - - - CH4 1009 8 1 +0 GHGI_EE_OTHER_BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 59/1008 8 100 +0 GHGI_EE_COAST_OTHER_BURN - - - - - - CH4 59/1009 8 1 +0 GHGI_EE_OTHER_ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 +0 GHGI_EE_COAST_OTHER_ABOG - - - - - - CH4 1009 8 1 ))).not.GHGI_v2 )))GHGI_v2_Express_Ext @@ -345,28 +346,28 @@ Mask fractions: false # # NOTES: # - Use Hier=100 to add to Canada and USA regional inventories +# - Make sure to include offshore/coastal emissions +# (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) #============================================================================== (((Scarpelli_Mexico 0 MEX_OIL $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 1 100 +0 MEX_OIL_COAST - - - - - - CH4 1010 1 5 0 MEX_GAS $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 2 100 +0 MEX_GAS_COAST - - - - - - CH4 1010 2 5 0 MEX_COAL $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 3 100 +0 MEX_COAL_COAST - - - - - - CH4 1010 3 5 0 MEX_LIVESTOCK_A $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 4 100 +0 MEX_LIVESTOCK_A_COAST - - - - - - CH4 1010 4 1 0 MEX_LIVESTOCK_B $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 10/1001 4 100 +0 MEX_LIVESTOCK_B_COAST - - - - - - CH4 10/1010 4 1 0 MEX_LANDFILLS $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 5 100 +0 MEX_LANDFILLS_COAST - - - - - - CH4 1010 5 1 0 MEX_WASTEWATER $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 6 100 +0 MEX_WASTEWATER_COAST - - - - - - CH4 1010 6 1 0 MEX_RICE $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 11/1001 7 100 +0 MEX_RICE_COAST - - - - - - CH4 11/1010 7 1 0 MEX_OTHER $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) ### -0 MEX_OIL_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 1 5 -0 MEX_GAS_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 2 5 -0 MEX_COAL_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 3 5 -0 MEX_LIVESTOCK_A_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 4 1 -0 MEX_LIVESTOCK_B_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 10/1010 4 1 -0 MEX_LANDFILLS_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 5 1 -0 MEX_WASTEWATER_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 6 1 -0 MEX_RICE_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 11/1010 7 1 -0 MEX_OTHER_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 8 1 +0 MEX_OTHER_COAST - - - - - - CH4 1010 8 1 )))Scarpelli_Mexico #============================================================================== @@ -374,26 +375,26 @@ Mask fractions: false # # NOTES: # - Use Hier=100 to add to USA and Mexico regional inventories +# - Make sure to include offshore/coastal emissions +# (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) #============================================================================== (((Scarpelli_Canada -0 CAN_OIL_GAS_COMBUSTION $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_OIL_GAS_LEAKAGE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_OIL_GAS_VENT_FLARE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_COAL $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4 1002 3 100 -0 CAN_LIVESTOCK $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4 1002 4 100 -0 CAN_SOLID_WASTE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4 1002 5 100 -0 CAN_WASTEWATER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4 1002 6 100 -0 CAN_OTHER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4 1002 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) ### -0 CAN_OIL_GAS_COMBUSTION_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_OIL_GAS_LEAKAGE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_OIL_GAS_VENT_FLARE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_COAL_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4 1011 3 5 -0 CAN_LIVESTOCK_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4 1011 4 1 -0 CAN_SOLID_WASTE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4 1011 5 1 -0 CAN_WASTEWATER_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4 1011 6 1 -0 CAN_OTHER_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4 1011 8 1 +0 CAN_OIL_GAS_COMBUSTION $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 +0 CAN_OIL_GAS_COMBUSTION_COAST - - - - - - CH4 1011 1/2 5 +0 CAN_OIL_GAS_LEAKAGE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 +0 CAN_OIL_GAS_LEAKAGE_COAST - - - - - - CH4 1011 1/2 5 +0 CAN_OIL_GAS_VENT_FLARE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 +0 CAN_OIL_GAS_VENT_FLARE_COAST - - - - - - CH4 1011 1/2 5 +0 CAN_COAL $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4 1002 3 100 +0 CAN_COAL_COAST - - - - - - CH4 1011 3 5 +0 CAN_LIVESTOCK $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4 1002 4 100 +0 CAN_LIVESTOCK_COAST - - - - - - CH4 1011 4 1 +0 CAN_SOLID_WASTE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4 1002 5 100 +0 CAN_SOLID_WASTE_COAST - - - - - - CH4 1011 5 1 +0 CAN_WASTEWATER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4 1002 6 100 +0 CAN_WASTEWATER_COAST - - - - - - CH4 1011 6 1 +0 CAN_OTHER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4 1002 8 100 +0 CAN_OTHER_COAST - - - - - - CH4 1011 8 1 )))Scarpelli_Canada #============================================================================== @@ -1682,18 +1683,18 @@ ${RUNDIR_CO2_COPROD} (((USE_CH4_DATA (((Scarpelli_Mexico -1001 MEX_MASK $ROOT/MASKS/v2024-01/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-01/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1001 MEX_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 )))Scarpelli_Mexico (((Scarpelli_Canada -1002 CAN_MASK $ROOT/MASKS/v2024-01/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-01/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1002 CAN_MASK $ROOT/MASKS/v2024-04/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-04/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))Scarpelli_Canada (((GHGI_v2.or.GHGI_v2_Express_Ext -1008 CONUS_MASK $ROOT/MASKS/v2018-09/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 -1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2018-09/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1008 CONUS_MASK $ROOT/MASKS/v2024-04/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2024-04/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 )))GHGI_v2.or.GHGI_v2_Express_Ext )))USE_CH4_DATA From 638242720c93d168d4b7ce326822b4c0abe518f9 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 29 Apr 2024 16:37:44 -0400 Subject: [PATCH 255/331] Add *COAST* entries for GHGI Gas underneath the existing entries run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon - Bug fix: Replace missing *COAST* entries for GHGI Gas, which now are placed underneath the existing entries so that we do not have to read the same file twice. Signed-off-by: Bob Yantosca --- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 | 15 ++++++++++----- .../HEMCO_Config.rc.carbon | 15 ++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index ec43eb9ad..00489180c 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -156,11 +156,16 @@ VerboseOnCores: root # Accepted values: root all 0 GHGI_COAST_OIL_TRANSPORT - - - - - - CH4 54/1009 1 5 ### Gas ### -0 GHGI_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 -0 GHGI_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 55/1008 2 100 -0 GHGI_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 -0 GHGI_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 56/1008 2 100 -0 GHGI_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_COAST_GAS_DISTRIBUTION - - - - - - CH4 1009 2 5 +0 GHGI_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 55/1008 2 100 +0 GHGI_COAST_GAS_EXPLORATION - - - - - - CH4 55/1009 2 5 +0 GHGI_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_COAST_GAS_PROCESSING - - - - - - CH4 1009 2 5 +0 GHGI_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 56/1008 2 100 +0 GHGI_COAST_GAS_PRODUCTION - - - - - - CH4 56/1009 2 5 +0 GHGI_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_COAST_GAS_TRANSMISSION - - - - - - CH4 1009 2 5 ### Coal ### 0 GHGI_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 412be1349..58c171005 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -199,11 +199,16 @@ $ published in 2020 0 GHGI_COAST_OIL_TRANSPORT - - - - - - CH4 54/1009 1 5 ### Gas ### -0 GHGI_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 -0 GHGI_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 55/1008 2 100 -0 GHGI_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 -0 GHGI_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 56/1008 2 100 -0 GHGI_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_COAST_GAS_DISTRIBUTION - - - - - - CH4 1009 2 5 +0 GHGI_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 55/1008 2 100 +0 GHGI_COAST_GAS_EXPLORATION - - - - - - CH4 55/1009 2 5 +0 GHGI_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_COAST_GAS_PROCESSING - - - - - - CH4 1009 2 5 +0 GHGI_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 56/1008 2 100 +0 GHGI_COAST_GAS_PRODUCTION - - - - - - CH4 56/1009 2 5 +0 GHGI_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 +0 GHGI_COAST_GAS_TRANSMISSION - - - - - - CH4 1009 2 5 ### Coal ### 0 GHGI_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 From a8b458a43e6a3f7470a8f35d422d46ed32e3f5ef Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 29 Apr 2024 17:52:19 -0400 Subject: [PATCH 256/331] Bug fixes: Correct formatting issues in HEMCO_Config.rc templates run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon - Fix minor formatting issues. Mostly adding missing "-" characters in piggybacked entries. Signed-off-by: Bob Yantosca --- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 | 8 ++++---- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 4 ++-- run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index 00489180c..1a8f75bb8 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -177,7 +177,7 @@ VerboseOnCores: root # Accepted values: root all ### Livestock ### 0 GHGI_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 4 100 -0 GHGI_COAST_LIVESTOCK_ENT - - - - - CH4 1009 4 1 +0 GHGI_COAST_LIVESTOCK_ENT - - - - - - CH4 1009 4 1 0 GHGI_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1008 4 100 0 GHGI_COAST_LIVESTOCK_MAN - - - - - - CH4 57/1009 4 1 @@ -196,8 +196,8 @@ VerboseOnCores: root # Accepted values: root all 0 GHGI_COAST_WASTEWATER_IND - - - - - - CH4 1009 6 1 ### Rice ### -0 GHGI_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1008 7 100 -0 GHGI_COAST_RICE - - - - - - CH4 58/1009 7 1 +0 GHGI_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1008 7 100 +0 GHGI_COAST_RICE - - - - - - CH4 58/1009 7 1 ### Other Anthro ### 0 GHGI_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 @@ -284,7 +284,7 @@ VerboseOnCores: root # Accepted values: root all ### Other Anthro ### 0 GHGI_EE_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_COAST_OTHER_MCOMB 0 GHGI_EE_COAST_OTHER_MCOMB - - - - - - CH4 1009 8 1 +0 GHGI_EE_COAST_OTHER_MCOMB - - - - - - CH4 1008 8 100 0 GHGI_EE_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1008 8 100 0 GHGI_EE_COAST_OTHER_SCOMB - - - - - - CH4 50/1009 8 1 0 GHGI_EE_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 58c171005..8511736c0 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -220,7 +220,7 @@ $ published in 2020 ### Livestock ### 0 GHGI_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 4 100 -0 GHGI_COAST_LIVESTOCK_ENT - - - - - CH4 1009 4 1 +0 GHGI_COAST_LIVESTOCK_ENT - - - - - - CH4 1009 4 1 0 GHGI_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1008 4 100 0 GHGI_COAST_LIVESTOCK_MAN - - - - - - CH4 57/1009 4 1 @@ -327,7 +327,7 @@ $ published in 2020 ### Other Anthro ### 0 GHGI_EE_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_COAST_OTHER_MCOMB 0 GHGI_EE_COAST_OTHER_MCOMB - - - - - - CH4 1009 8 1 +0 GHGI_EE_COAST_OTHER_MCOMB - - - - - - CH4 1009 8 1 0 GHGI_EE_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1008 8 100 0 GHGI_EE_COAST_OTHER_SCOMB - - - - - - CH4 50/1009 8 1 0 GHGI_EE_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 938755f79..026848a35 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -327,7 +327,7 @@ $ published in 2020 ### Other Anthro ### 0 GHGI_EE_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_COAST_OTHER_MCOMB 0 GHGI_EE_COAST_OTHER_MCOMB - - - - - - CH4 1009 8 1 +0 GHGI_EE_COAST_OTHER_MCOMB - - - - - - CH4 1009 8 1 0 GHGI_EE_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1008 8 100 0 GHGI_EE_COAST_OTHER_SCOMB - - - - - - CH4 50/1009 8 1 0 GHGI_EE_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 From 1e4465dec553e81cbfd45ce6406fb379ba7cc2aa Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 30 Apr 2024 10:40:01 -0400 Subject: [PATCH 257/331] Fix remaining issues in CH4/carbon configuration files run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon - Fix incorrect comment character in GHGI section ("$" -> "#") - Add missing hierarchy value "5" for GHGI_COAST_OIL_EXPLORATION - Fix typos in mask file names ("001x001" -> "01x01"; "01x00" -> "01x01") run/GCHP/ExtData.rc.carbon - Fix typos in container names (replace "__" with "_"), to be consistent with the edits in HEMCO_Config.rc. Signed-off-by: Bob Yantosca --- .../HEMCO_Config.rc.CH4 | 17 +++++++++-------- .../HEMCO_Config.rc.carbon | 16 ++++++++-------- .../HEMCO_Config.rc.tagCH4 | 2 +- run/GCHP/ExtData.rc.templates/ExtData.rc.carbon | 12 ++++++------ .../HEMCO_Config.rc.carbon | 16 ++++++++-------- 5 files changed, 32 insertions(+), 31 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index 1a8f75bb8..23f813216 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -139,7 +139,8 @@ VerboseOnCores: root # Accepted values: root all # --- Gridded GHGI v2 (Maasakkers et al., submitted to ES&T, 2023) --- # # NOTES: -# - This is the main Gridded GHGI v2 dataset based off the US GHGI published in 2020 +# - This is the main Gridded GHGI v2 dataset based off the US GHGI +# published in 2020 # - Use Hier=100 to add to Canada and Mexico regional inventories # - Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, # Hier=5 to add to GFEI; mask=1009) ### @@ -147,7 +148,7 @@ VerboseOnCores: root # Accepted values: root all (((GHGI_v2 ### Oil ### 0 GHGI_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1008 1 100 -0 GHGI_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 +0 GHGI_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 5 0 GHGI_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1008 1 100 0 GHGI_COAST_OIL_PRODUCTION - - - - - - CH4 52/1009 1 5 0 GHGI_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1008 1 100 @@ -935,18 +936,18 @@ ${RUNDIR_GLOBAL_Cl} # Use updated files (v2024-01); these are COARDS-compliant. (((Scarpelli_Mexico -1001 MEX_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1001 MEX_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 )))Scarpelli_Mexico (((Scarpelli_Canada -1002 CAN_MASK $ROOT/MASKS/v2024-04/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-04/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1002 CAN_MASK $ROOT/MASKS/v2024-04/Canada_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-04/Canada_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))Scarpelli_Canada (((GHGI_v2.or.GHGI_v2_Express_Ext -1008 CONUS_MASK $ROOT/MASKS/v2024-04/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 -1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2024-04/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1008 CONUS_MASK $ROOT/MASKS/v2024-04/CONUS_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2024-04/CONUS_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 )))GHGI_v2.or.GHGI_v2_Express_Ext )))EMISSIONS diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 8511736c0..69fecad83 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -182,7 +182,7 @@ Mask fractions: false # # NOTES: # - This is the main Gridded GHGI v2 dataset based off the US GHGI -$ published in 2020 +# published in 2020 # - Use Hier=100 to add to Canada and Mexico regional inventories # - Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, # Hier=5 to add to GFEI; mask=1009) ### @@ -190,7 +190,7 @@ $ published in 2020 (((GHGI_v2 ### Oil ### 0 GHGI_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1008 1 100 -0 GHGI_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 +0 GHGI_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 5 0 GHGI_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1008 1 100 0 GHGI_COAST_OIL_PRODUCTION - - - - - - CH4 52/1009 1 5 0 GHGI_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1008 1 100 @@ -1683,18 +1683,18 @@ ${RUNDIR_CO2_COPROD} (((USE_CH4_DATA (((Scarpelli_Mexico -1001 MEX_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1001 MEX_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 )))Scarpelli_Mexico (((Scarpelli_Canada -1002 CAN_MASK $ROOT/MASKS/v2024-04/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-04/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1002 CAN_MASK $ROOT/MASKS/v2024-04/Canada_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-04/Canada_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))Scarpelli_Canada (((GHGI_v2.or.GHGI_v2_Express_Ext -1008 CONUS_MASK $ROOT/MASKS/v2024-04/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 -1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2024-04/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1008 CONUS_MASK $ROOT/MASKS/v2024-04/CONUS_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2024-04/CONUS_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 )))GHGI_v2.or.GHGI_v2_Express_Ext )))USE_CH4_DATA diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index dfc62435c..3d750919d 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -1120,7 +1120,7 @@ ${RUNDIR_GLOBAL_Cl} #============================================================================== (((Scarpelli_Mexico -1001 MEXICO_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.01x00.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1001 MEXICO_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 )))Scarpelli_Mexico diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index 2c53f74b0..8a8eea3a1 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -159,12 +159,12 @@ GHGI_EE_LANDFILLS_COMP molec/cm2/s N Y - none none GHGI_EE_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_RICE molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__SCOMB molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__BURN molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER__ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER_MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER_SCOMB molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER_PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER_FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER_BURN molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER_ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc # --- Scarpelli Mexico --- MEX_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 026848a35..0ad409929 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -182,7 +182,7 @@ Mask fractions: false # # NOTES: # - This is the main Gridded GHGI v2 dataset based off the US GHGI -$ published in 2020 +# published in 2020 # - Use Hier=100 to add to Canada and Mexico regional inventories # - Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, # Hier=5 to add to GFEI; mask=1009) ### @@ -190,7 +190,7 @@ $ published in 2020 (((GHGI_v2 ### Oil ### 0 GHGI_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1008 1 100 -0 GHGI_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 +0 GHGI_COAST_OIL_EXPLORATION - - - - - - CH4 51/1009 1 5 0 GHGI_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1008 1 100 0 GHGI_COAST_OIL_PRODUCTION - - - - - - CH4 52/1009 1 5 0 GHGI_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1008 1 100 @@ -1683,18 +1683,18 @@ ${RUNDIR_CO2_COPROD} (((USE_CH4_DATA (((Scarpelli_Mexico -1001 MEX_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1001 MEX_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 +1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 )))Scarpelli_Mexico (((Scarpelli_Canada -1002 CAN_MASK $ROOT/MASKS/v2024-04/Canada_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-04/Canada_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1002 CAN_MASK $ROOT/MASKS/v2024-04/Canada_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 +1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-04/Canada_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 )))Scarpelli_Canada (((GHGI_v2.or.GHGI_v2_Express_Ext -1008 CONUS_MASK $ROOT/MASKS/v2024-04/CONUS_Mask.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 -1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2024-04/CONUS_Mask_Mirror.001x001.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1008 CONUS_MASK $ROOT/MASKS/v2024-04/CONUS_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 +1009 CONUS_MASK_MIRROR $ROOT/MASKS/v2024-04/CONUS_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 )))GHGI_v2.or.GHGI_v2_Express_Ext )))USE_CH4_DATA From 051bea56b870d417ba1dd3130c86f7f87527167e Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 30 Apr 2024 12:23:43 -0400 Subject: [PATCH 258/331] Fixed typo in GCHP HEMCO_Config.rc.carbon template run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon - Added missing "-" for GHGI_COAST_LIVESTOCK_END under units column Signed-off-by: Bob Yantosca --- run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 0ad409929..430e01468 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -220,7 +220,7 @@ Mask fractions: false ### Livestock ### 0 GHGI_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 4 100 -0 GHGI_COAST_LIVESTOCK_ENT - - - - - CH4 1009 4 1 +0 GHGI_COAST_LIVESTOCK_ENT - - - - - - CH4 1009 4 1 0 GHGI_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1008 4 100 0 GHGI_COAST_LIVESTOCK_MAN - - - - - - CH4 57/1009 4 1 From d99c8779666ab00dee84b44fedabcc44912ca777 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 30 Apr 2024 14:42:54 -0400 Subject: [PATCH 259/331] Fix issues with GHGI_EE entries in ExtData.rc.carbon run/GCHP/ExtData.rc.templates/ExtData.rc.carbon - Add missing GHGI_EE_GAS_POSTMETER entry - Replace "-" time refresh entries with "F%y4-01-01T00:00:00" in GHGI_EE* entries, as there is data for 2012-2018. - Re-aligned Scarpelli_Canada and Scarpelli_Mexico entries to reduce whitespace Signed-off-by: Bob Yantosca --- .../ExtData.rc.templates/ExtData.rc.carbon | 67 ++++++++++--------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon index 8a8eea3a1..c6f41c1fe 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.carbon @@ -143,49 +143,50 @@ GHGI_EE_OIL_EXPLORATION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none GHGI_EE_OIL_PRODUCTION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OIL_REFINING molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Refining ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OIL_TRANSPORT molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2a_Petroleum_Systems_Transport ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_DISTRIBUTION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_DISTRIBUTION molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_1B2b_Natural_Gas_Distribution ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_GAS_EXPLORATION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2b_Natural_Gas_Exploration ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_PROCESSING molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_PROCESSING molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_1B2b_Natural_Gas_Processing ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_GAS_PRODUCTION molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1B2b_Natural_Gas_Production ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_GAS_TRANSMISSION molec/cm2/s N Y - none none emi_ch4_1B2b_Natural_Gas_TransmissionStorage ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAL_UNDERGROUND molec/cm2/s N Y - none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAL_SURFACE molec/cm2/s N Y - none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_COAL_ABANDONED molec/cm2/s N Y - none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LIVESTOCK_ENT molec/cm2/s N Y - none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_TRANSMISSION molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_1B2b_Natural_Gas_TransmissionStorage ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_GAS_POSTMETER molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_Supp_1B2b_PostMeter ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_UNDERGROUND molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_1B1a_Underground_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_SURFACE molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_1B1a_Surface_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_COAL_ABANDONED molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_1B1a_Abandoned_Coal ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LIVESTOCK_ENT molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_3A_Enteric_Fermentation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_LIVESTOCK_MAN molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3B_Manure_Management ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LANDFILLS_IND molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LANDFILLS_MSW molec/cm2/s N Y - none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_LANDFILLS_COMP molec/cm2/s N Y - none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_WASTEWATER_DOM molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_WASTEWATER_IND molec/cm2/s N Y - none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_IND molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_5A1_Landfills_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_MSW molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_5A1_Landfills_MSW ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_LANDFILLS_COMP molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_5B1_Composting ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_WASTEWATER_DOM molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_5D_Wastewater_Treatment_Domestic ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_WASTEWATER_IND molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_5D_Wastewater_Treatment_Industrial ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_RICE molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3C_Rice_Cultivation ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER_MCOMB molec/cm2/s N Y - none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER_MCOMB molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_1A_Combustion_Mobile ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OTHER_SCOMB molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_1A_Combustion_Stationary ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER_PIND molec/cm2/s N Y - none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER_FIND molec/cm2/s N Y - none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER_PIND molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_2B8_Industry_Petrochemical ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER_FIND molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_2C2_Industry_Ferroalloy ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc GHGI_EE_OTHER_BURN molec/cm2/s N Y F%y4-%m2-01T00:00:00 none none emi_ch4_3F_Field_Burning ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc -GHGI_EE_OTHER_ABOG molec/cm2/s N Y - none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc +GHGI_EE_OTHER_ABOG molec/cm2/s N Y F%y4-01-01T00:00:00 none none emi_ch4_1B2ab_Abandoned_Oil_Gas ./HcoDir/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_%y4.nc # --- Scarpelli Mexico --- -MEX_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc -MEX_GAS kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc -MEX_COAL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc -MEX_LIVESTOCK_A kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc -MEX_LIVESTOCK_B kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc -MEX_LANDFILLS kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc -MEX_WASTEWATER kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc -MEX_RICE kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc -MEX_OTHER kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc +MEX_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc +MEX_GAS kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc +MEX_COAL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc +MEX_LIVESTOCK_A kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc +MEX_LIVESTOCK_B kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc +MEX_LANDFILLS kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc +MEX_WASTEWATER kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc +MEX_RICE kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc +MEX_OTHER kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc # --- Scarpelli Canada --- -CAN_OIL_GAS_COMBUSTION kg/m2/s N Y - none none oil_gas_combustion_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc -CAN_OIL_GAS_LEAKAGE kg/m2/s N Y - none none oil_gas_leakage_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc -CAN_OIL_GAS_VENT_FLARE kg/m2/s N Y - none none oil_gas_vent_flare_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc -CAN_COAL kg/m2/s N Y - none none coal_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc -CAN_LIVESTOCK kg/m2/s N Y - none none livestock_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc -CAN_SOLID_WASTE kg/m2/s N Y - none none solid_waste_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc -CAN_WASTEWATER kg/m2/s N Y - none none wastewater_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc -CAN_OTHER kg/m2/s N Y - none none other_minor_sources_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc +CAN_OIL_GAS_COMBUSTION kg/m2/s N Y - none none oil_gas_combustion_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc +CAN_OIL_GAS_LEAKAGE kg/m2/s N Y - none none oil_gas_leakage_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc +CAN_OIL_GAS_VENT_FLARE kg/m2/s N Y - none none oil_gas_vent_flare_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc +CAN_COAL kg/m2/s N Y - none none coal_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc +CAN_LIVESTOCK kg/m2/s N Y - none none livestock_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc +CAN_SOLID_WASTE kg/m2/s N Y - none none solid_waste_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc +CAN_WASTEWATER kg/m2/s N Y - none none wastewater_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc +CAN_OTHER kg/m2/s N Y - none none other_minor_sources_total ./HcoDir/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc # --- GFEI --- GFEI_CH4_OIL kg/m2/s N Y - none none emis_ch4 ./HcoDir/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Oil_All.nc From 9748561375c1fa96859e214b318dc668b54bd602 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 1 May 2024 12:36:43 -0400 Subject: [PATCH 260/331] Bug fixes for PR #2236 (Parameterization for Reff for SNA/OM aerosols) GeosCore/aerosol_mod.F90 - Added the "g" index variable to !$OMP PRIVATE clause run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol run/GCClassic/geoschem_config.yml.templates/geoschem.config.yml.fullchem run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem - Now set fastj_input_dir from FAST_JX/v2021-10 to FAST_JX/v2024-05, as this folder now has updated org.dat and so4.dat files that correspond with the updates in PR #2236. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 ++ GeosCore/aerosol_mod.F90 | 2 +- .../geoschem_config.yml.templates/geoschem_config.yml.aerosol | 2 +- .../geoschem_config.yml.templates/geoschem_config.yml.fullchem | 2 +- .../geoschem_config.yml.templates/geoschem_config.yml.fullchem | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 550cc8e6a..fe5989326 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Added missing entry in `HEMCO_Config.rc` for natural gas postmeter CH4 emissions in GHGIv2 Express Extension - Added tagged species capability and PM25nit and PM25nh4 diagnostics for GEOS runs - Added `real*4` diagnostics for State_Met logical masks IsWater, IsLand, IsIce, and IsSnow +- New parameterization for effective radius of SNA/OM aersols (see PR #2236) +- New `FAST_JX/v2024-05` folder with updated `org.dat` and `so4.dat` files ### Changed - Updated routines in `GeosUtil/unitconv_mod.F90` for species-specific unit conversion diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 1f80351dc..65af13041 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -1558,7 +1558,7 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & !$OMP PRIVATE( IR ) & #endif !$OMP PRIVATE( RHOSTRAT, RAER, SADSTRAT, XSASTRAT ) & - !$OMP PRIVATE( VDRY, VH2O, S ) & + !$OMP PRIVATE( VDRY, VH2O, S, g ) & !$OMP SCHEDULE( DYNAMIC ) DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol index ca797b351..c221e620d 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol @@ -66,7 +66,7 @@ operations: photolysis: activate: true input_directories: - fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2021-10/ + fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05/ cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2023-05/ overhead_O3: use_online_O3_from_model: false diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem index 0f09865e2..e3ed1fb28 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -89,7 +89,7 @@ operations: photolysis: activate: true input_directories: - fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2021-10/ + fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05/ cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2023-05/ overhead_O3: use_online_O3_from_model: ${RUNDIR_USE_ONLINE_O3} diff --git a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem index c322f1d6e..f62f202f6 100644 --- a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -72,7 +72,7 @@ operations: photolysis: activate: true input_directories: - fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2021-10/ + fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05/ cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2023-05/ overhead_O3: use_online_O3_from_model: ${RUNDIR_USE_ONLINE_O3} From a6b9ac27d4a670c07d1748171c1655df98838b91 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 1 May 2024 15:23:51 -0400 Subject: [PATCH 261/331] Zero private variables in parallel loop in aerosol_mod.F90 GeosCore/aerosol_mod.F90 - Set all variables in the !$OMP PRIVATE statement (where aerosol growth rates are computed) to zero at the top of the loop. - Also use proper indentation Signed-off-by: Bob Yantosca --- GeosCore/aerosol_mod.F90 | 119 ++++++++++++++++++++++++--------------- 1 file changed, 75 insertions(+), 44 deletions(-) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 65af13041..813b0766b 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -1559,56 +1559,87 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & #endif !$OMP PRIVATE( RHOSTRAT, RAER, SADSTRAT, XSASTRAT ) & !$OMP PRIVATE( VDRY, VH2O, S, g ) & - !$OMP SCHEDULE( DYNAMIC ) + !$OMP SCHEDULE( DYNAMIC, 8 ) & + !$OMP COLLAPSE( 3 ) DO L = 1, State_Grid%NZ DO J = 1, State_Grid%NY DO I = 1, State_Grid%NX - ! Loop over relative humidity bins - IF (N == 1 .or. N == 3) THEN ! (hzhu, 08/2023) - ! For SNA or Organics - g = 1 - DO WHILE (State_Chm%AerMass%PDER(I,J,L) > REAA(1,N,g) .and. g < State_Chm%Phot%NDRg) - ! REAA(1,N,g) is the upper limit of REFF - g = g + 1 - END DO - - IF (g == 1) THEN - DO R = 1, NRH - ! Wet radius in aerosol LUT files - RW(R) = REAA(R,N,g) - - ! Extinction efficiency for Q for each RH bin - QW(R) = QQAA(IWV,R,N,g) - AW(R) = ALPHAA(IWV,R,N,g) - SSW(R) = SSAA(IWV,R,N,g) - ASYW(R) = ASYMAA(IWV,R,N,g) - ENDDO - - ELSE - FRAC = (State_Chm%AerMass%PDER(I,J,L) - REAA(1,N,g-1))/ & - (REAA(1,N,g) - REAA(1,N,g-1)) - IF ( FRAC > 1.0d0 ) FRAC = 1.0d0 - DO R = 1, NRH - RW(R) = FRAC*REAA(R,N,g) + & - (1.d0-FRAC)*REAA(R,N,g-1) - - QW(R) = FRAC*QQAA(IWV,R,N,g) + & - (1.d0-FRAC)*QQAA(IWV,R,N,g-1) - - AW(R) = FRAC*ALPHAA(IWV,R,N,g)+ & - (1.d0-FRAC)*ALPHAA(IWV,R,N,g-1) - - SSW(R) = FRAC*SSAA(IWV,R,N,g) + & - (1.d0-FRAC)*SSAA(IWV,R,N,g-1) + ! Zero private loop variables + g = 0 + IRH = 0 + AW0 = 0.0_fp + QW0 = 0.0_fp + SSW0 = 0.0_fp + ASYW0 = 0.0_fp + REFF = 0.0_fp + SCALEA = 0.0_fp + SCALEQ = 0.0_fp + SCALESSA = 0.0_fp + SCALEASY = 0.0_fp + FRAC = 0.0_fp + SCALER = 0.0_fp + SCALEOD = 0.0_fp + SCALEVOL = 0.0_fp + DRYAREA = 0.0_fp + TAERVOL = 0.0_fp + TK = 0.0_fp + CONSEXP = 0.0_fp + VPRESH2O = 0.0_fp + RELHUM = 0.0_fp + RHOSTRAT = 0.0_fp + RAER = 0.0_fp + SADSTRAT = 0.0_fp + XSASTRAT = 0.0_fp + VDRY = 0.0_fp + VH2O = 0.0_fp + S = 0.0_fp + + ! Loop over relative humidity bins + IF (N == 1 .or. N == 3) THEN ! (hzhu, 08/2023) + ! For SNA or Organics + g = 1 + DO WHILE ( State_Chm%AerMass%PDER(I,J,L) > REAA(1,N,g) .and. & + g < State_Chm%Phot%NDRg ) + ! REAA(1,N,g) is the upper limit of REFF + g = g + 1 + END DO + + IF (g == 1) THEN + DO R = 1, NRH + ! Wet radius in aerosol LUT files + RW(R) = REAA(R,N,g) + + ! Extinction efficiency for Q for each RH bin + QW(R) = QQAA(IWV,R,N,g) + AW(R) = ALPHAA(IWV,R,N,g) + SSW(R) = SSAA(IWV,R,N,g) + ASYW(R) = ASYMAA(IWV,R,N,g) + ENDDO + + ELSE + FRAC = (State_Chm%AerMass%PDER(I,J,L) - REAA(1,N,g-1))/ & + (REAA(1,N,g) - REAA(1,N,g-1)) + IF ( FRAC > 1.0d0 ) FRAC = 1.0d0 + DO R = 1, NRH + RW(R) = FRAC*REAA(R,N,g) + (1.d0-FRAC)*REAA(R,N,g-1) + + QW(R) = FRAC*QQAA(IWV,R,N,g) + & + (1.d0-FRAC)*QQAA(IWV,R,N,g-1) + + AW(R) = FRAC*ALPHAA(IWV,R,N,g)+ & + (1.d0-FRAC)*ALPHAA(IWV,R,N,g-1) + + SSW(R) = FRAC*SSAA(IWV,R,N,g) + & + (1.d0-FRAC)*SSAA(IWV,R,N,g-1) - ASYW(R)= FRAC*ASYMAA(IWV,R,N,g)+ & - (1.d0-FRAC)*ASYMAA(IWV,R,N,g-1) - END DO - END IF + ASYW(R)= FRAC*ASYMAA(IWV,R,N,g)+ & + (1.d0-FRAC)*ASYMAA(IWV,R,N,g-1) + END DO + END IF - ELSE - ! For other species + ELSE + ! For other species DO R = 1, NRH ! Wet radius in aerosol LUT files RW(R) = REAA(R,N,State_Chm%Phot%DRg) From 6538a525b318427825e9ef36094595553b8af18a Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 1 May 2024 16:27:06 -0400 Subject: [PATCH 262/331] Fix parallelization issues in GeosCore/aerosol_mod.F90 GeosCore/aerosol_mod.F90 - Fix the following issues in the parallel loop starting at line 1550: - Zero all private loop variables at start of loop to avoid uninitialized variables from causing numerical noise in output - Now declare RW, QW, AW, SSW, ASYW, BCSCAT_AE as $OMP PRIVATE Signed-off-by: Bob Yantosca --- GeosCore/aerosol_mod.F90 | 68 ++++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index 813b0766b..b8dc32b59 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -1549,11 +1549,12 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & ! Loop over grid boxes !$OMP PARALLEL DO & - !$OMP PRIVATE( I, J, L, IRH ) & + !$OMP PRIVATE( I, J, L, R, IRH ) & + !$OMP PRIVATE( RW, QW, AW, SSW, ASYW ) & !$OMP PRIVATE( AW0, QW0, SSW0, ASYW0, REFF ) & !$OMP PRIVATE( SCALEA, SCALEQ, SCALESSA, SCALEASY, FRAC ) & !$OMP PRIVATE( SCALER, SCALEOD, SCALEVOL, DRYAREA, TAERVOL ) & - !$OMP PRIVATE( TK, CONSEXP, VPRESH2O, RELHUM ) & + !$OMP PRIVATE( TK, CONSEXP, VPRESH2O, RELHUM, BCSCAT_AE ) & #ifdef RRTMG !$OMP PRIVATE( IR ) & #endif @@ -1566,34 +1567,41 @@ SUBROUTINE RDAER( Input_Opt, State_Chm, State_Diag, State_Grid, State_Met, & DO I = 1, State_Grid%NX ! Zero private loop variables - g = 0 - IRH = 0 - AW0 = 0.0_fp - QW0 = 0.0_fp - SSW0 = 0.0_fp - ASYW0 = 0.0_fp - REFF = 0.0_fp - SCALEA = 0.0_fp - SCALEQ = 0.0_fp - SCALESSA = 0.0_fp - SCALEASY = 0.0_fp - FRAC = 0.0_fp - SCALER = 0.0_fp - SCALEOD = 0.0_fp - SCALEVOL = 0.0_fp - DRYAREA = 0.0_fp - TAERVOL = 0.0_fp - TK = 0.0_fp - CONSEXP = 0.0_fp - VPRESH2O = 0.0_fp - RELHUM = 0.0_fp - RHOSTRAT = 0.0_fp - RAER = 0.0_fp - SADSTRAT = 0.0_fp - XSASTRAT = 0.0_fp - VDRY = 0.0_fp - VH2O = 0.0_fp - S = 0.0_fp + g = 0 + IRH = 0 + S = 0 + RW = 0.0_fp + QW = 0.0_fp + AW = 0.0_fp + SSW = 0.0_fp + ASYW = 0.0_fp + FRAC = 0.0_fp + AW0 = 0.0_fp + QW0 = 0.0_fp + SSW0 = 0.0_fp + ASYW0 = 0.0_fp + REFF = 0.0_fp + SCALEA = 0.0_fp + SCALEQ = 0.0_fp + SCALESSA = 0.0_fp + SCALEASY = 0.0_fp + FRAC = 0.0_fp + SCALER = 0.0_fp + SCALEOD = 0.0_fp + SCALEVOL = 0.0_fp + DRYAREA = 0.0_fp + TAERVOL = 0.0_fp + TK = 0.0_fp + CONSEXP = 0.0_fp + VPRESH2O = 0.0_fp + RELHUM = 0.0_fp + RHOSTRAT = 0.0_fp + RAER = 0.0_fp + SADSTRAT = 0.0_fp + XSASTRAT = 0.0_fp + VDRY = 0.0_fp + VH2O = 0.0_fp + BCSCAT_AE = 0.0_fp ! Loop over relative humidity bins IF (N == 1 .or. N == 3) THEN ! (hzhu, 08/2023) From 546fda29180c491bf4c6fb08fb13b0749cb5d70b Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 2 May 2024 11:24:01 -0400 Subject: [PATCH 263/331] PR #2236 post-merge fix: Read updated org.dat, so4.dat for Hg simulation run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg - Change fastjx_input_dir to CHEM_INPUTS/FAST_JX/v2024-05-Hg/ - Change cloudj_input_dir to CHEM_INPUTS/FAST_JX/v2024-05/ CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 +- .../geoschem_config.yml.templates/geoschem_config.yml.Hg | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe5989326..fe8ab128f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Added tagged species capability and PM25nit and PM25nh4 diagnostics for GEOS runs - Added `real*4` diagnostics for State_Met logical masks IsWater, IsLand, IsIce, and IsSnow - New parameterization for effective radius of SNA/OM aersols (see PR #2236) -- New `FAST_JX/v2024-05` folder with updated `org.dat` and `so4.dat` files +- New `CHEM_INPUTS/FAST_JX/v2024-05` and `CHEM_INPUTS/FAST_JX/v2024-05-Hg` folders with updated `org.dat` and `so4.dat` files ### Changed - Updated routines in `GeosUtil/unitconv_mod.F90` for species-specific unit conversion diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg index 819b03191..52bb52141 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg @@ -66,8 +66,8 @@ operations: photolysis: activate: true input_directories: - fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2022-10-Hg/ - cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2023-11-Hg/ + fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05-Hg/ + cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2024-05/ overhead_O3: use_online_O3_from_model: ${RUNDIR_USE_ONLINE_O3} use_column_O3_from_met: true From d524ad19de5d708e679d78f104fe9dbbdd907cee Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Thu, 2 May 2024 14:32:56 -0400 Subject: [PATCH 264/331] Add global continental chlorine (pCl and HCl) emissions Bingqing Zhang (Georgia Tech) has developed global continental chlorine emissions. The complete emission files from 1960-2014 in the netCDF format and a readme file have been published online at https://doi.org/10.7910/DVN/23BRII. Reference: Zhang, B., & Liu, P., et al., Global Emissions of Hydrogen Chloride and Particulate Chloride from Continental Sources, Environmental Science & Technology, 56(7), 3894-3904, https://doi.org/10.1021/acs.est.1c05634, 2022. Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 1 + .../HEMCO_Config.rc.fullchem | 38 ++++++++++++++-- .../HEMCO_Diagn.rc.fullchem | 11 +++++ .../ExtData.rc.templates/ExtData.rc.fullchem | 16 +++++++ .../HEMCO_Config.rc.fullchem | 45 ++++++++++++++----- .../HEMCO_Diagn.rc.fullchem | 11 +++++ 6 files changed, 109 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d976edfd6..84b1af6cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Added missing entry in `HEMCO_Config.rc` for natural gas postmeter CH4 emissions in GHGIv2 Express Extension - Added tagged species capability and PM25nit and PM25nh4 diagnostics for GEOS runs - Added `real*4` diagnostics for State_Met logical masks IsWater, IsLand, IsIce, and IsSnow +- Added global continental chlorine (pCl and HCl) emissions ### Changed - Updated routines in `GeosUtil/unitconv_mod.F90` for species-specific unit conversion diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 8b3202648..8ae607a13 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -73,6 +73,7 @@ VerboseOnCores: root # Accepted values: root all --> XIAO_C3H8 : ${RUNDIR_USE_XIAOC3H8} # 1985 --> LIANG_BROMOCARB : true # 2000 --> ORDONEZ_IODOCARB : true # 2000 + --> GT_Chlorine : true # 1960-2014 --> DECAYING_PLANTS : true # 1985 --> AFCID : true # 2015 # ----- AIRCRAFT EMISSIONS ---------------------------------------------------- @@ -2567,6 +2568,39 @@ VerboseOnCores: root # Accepted values: root all 0 ORDONEZ_CH2IBR $ROOT/IODINE/v2020-02/CH2IBr_monthly_emissions_Ordonez_2012_COARDS.nc CH2IBr 2000/1-12/1/0 C xy kg/m2/s CH2IBr - 1 1 )))ORDONEZ_IODOCARB +#============================================================================== +# --- GT_Chlorine --- +# +# Emission inventory for HCl and particulate Cl from continental sources +# +# Reference: +# Zhang, B., & Liu, P., et al (2022). Global Emissions of Hydrogen Chloride +# and Particulate Chloride from Continental Sources. Environmental Science & +# Technology, 56(7), 3894-3904. https://doi.org/10.1021/acs.est.1c05634 +# +# Notes: +# - The HCl emission from open biomass burning (HCL_BIO, HCL_AGR) used the same +# activity data for GFED4 (1998-2014) and BB4CMIP (1960-2014). If your +# emission inventory for open biomass burning has already include HCl +# emissions, shut down either of them to avoid the duplicated emission sources +# - Emissions of particulate Cl are added as HCl as ISORROPIA will reparition +# Cl between particle phase and gas phase. +#============================================================================== +(((GT_Chlorine +0 HCL_ENE $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_ene 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_IND $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_ind 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_RES $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_res 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_WST $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_wstop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_BIO $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_bbop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +0 HCL_AGR $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_agri 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +0 PCL_ENE $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_ene 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_IND $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_ind 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_RES $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_res 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_WST $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_wstop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_BIO $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_bbop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +0 PCL_AGR $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_agri 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +)))GT_Chlorine + #============================================================================== # --- Ship emissions --- # @@ -4245,14 +4279,12 @@ ${RUNDIR_TES_CLIM_N2O} 281 COtoSOAP_burn 0.013 - - - xy 1 1 #============================================================================== -# --- QFED2 diurnal scale factors --- +# --- Diurnal scale factors for biomass burning --- # # Fire diurnal scaling factors (% per hour) from WRAP Report to Project # No. 178-6, July 2005 #============================================================================== -(((QFED2.or.GFAS.or.BB4MIPS 75 QFED2_TOD 0.1392/0.1392/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.48/0.96/1.68/2.4/3.12/3.84/4.08/2.88/1.68/0.96/0.1368/0.1368/0.1368/0.1368/0.1368 - - - xy unitless 1 -)))QFED2.or.GFAS.or.BB4MIPS #============================================================================== # --- NAP scale factors --- diff --git a/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem b/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem index c8fd80e5c..888ee2c3f 100644 --- a/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem +++ b/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem @@ -231,6 +231,12 @@ EmisGLYX_BioBurn GLYX 111 -1 -1 2 kg/m2/s GLYX_emission_flux_from_b ############################################################################### EmisH2O_Aircraft H2O 0 20 -1 3 kg/m2/s H2O_emission_flux_from_aircraft +############################################################################### +##### HCl emissions ##### +############################################################################### +EmisCl_Total HCl 0 -1 -1 3 kg/m2/s HCl_emission_flux_from_all_sectors +EmisCl_Anthro HCl 0 1 -1 3 kg/m2/s HCl_emission_flux_from_anthropogenic + ############################################################################### ##### HCOOH sources ##### ############################################################################### @@ -564,6 +570,11 @@ HcoConvectiveCloudTopHeight -1 103 -1 -1 2 level Convective_cloud_ #InvORDONEZ_CH2IBr CH2IBr 0 1 1 2 kg/m2/s CH2IBr_emission_flux_from_ORDONEZ_IODOCARB_inventory #InvORDONEZ_CH3I CH3I 0 1 1 2 kg/m2/s CH3I_emission_flux_from_ORDONEZ_IODOCARB_inventory +#============================= +# GT_Chlorine +#============================= +#InvGTChlorine_HCl HCl 0 1 1 2 kg/m2/s HCl_emission_flux_from_GT_Chlorine_inventory + #============================= # CEDS_SHIP #============================= diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem index 74c7f0495..01ca83436 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem @@ -1372,6 +1372,22 @@ ORDONEZ_CH2ICL kg/m2/s Y Y F2000-%m2-01T00:00:00 none none CH2ICl ./HcoDir/IODIN ORDONEZ_CH2IBR kg/m2/s Y Y F2000-%m2-01T00:00:00 none none CH2IBr ./HcoDir/IODINE/v2020-02/CH2IBr_monthly_emissions_Ordonez_2012_COARDS.nc # #============================================================================== +# --- GT_Chlorine --- +#============================================================================== +HCL_ENE kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_ene ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +HCL_IND kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_ind ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +HCL_RES kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_res ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +HCL_WST kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_wstop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +HCL_BIO kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_bbop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +HCL_AGR kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_agri ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +PCL_ENE kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_ene ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +PCL_IND kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_ind ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +PCL_RES kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_res ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +PCL_WST kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_wstop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +PCL_BIO kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_bbop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +PCL_AGR kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_agri ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +# +#============================================================================== # --- Ship emissions (SHIP) --- #============================================================================== CEDS_NO_SHP kg/m2/s N Y F%y4-%m2-01T00:00:00 none none NO_shp ./HcoDir/CEDS/v2021-06/%y4/NO-em-anthro_CMIP_CEDS_%y4.nc diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index fd52976c3..bfedac657 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -72,6 +72,7 @@ VerboseOnCores: root # Accepted values: root all --> XIAO_C3H8 : ${RUNDIR_USE_XIAOC3H8} # 1985 --> LIANG_BROMOCARB : true # 2000 --> ORDONEZ_IODOCARB : true # 2000 + --> GT_Chlorine : true # 1960-2014 --> DECAYING_PLANTS : true # 1985 --> AFCID : true # 2015 # ----- AIRCRAFT EMISSIONS ---------------------------------------------------- @@ -2566,6 +2567,39 @@ VerboseOnCores: root # Accepted values: root all 0 ORDONEZ_CH2IBR $ROOT/IODINE/v2020-02/CH2IBr_monthly_emissions_Ordonez_2012_COARDS.nc CH2IBr 2000/1-12/1/0 C xy kg/m2/s CH2IBr - 1 1 )))ORDONEZ_IODOCARB +#============================================================================== +# --- GT_Chlorine --- +# +# Emission inventory for HCl and particulate Cl from continental sources +# +# Reference: +# Zhang, B., & Liu, P., et al (2022). Global Emissions of Hydrogen Chloride +# and Particulate Chloride from Continental Sources. Environmental Science & +# Technology, 56(7), 3894-3904. https://doi.org/10.1021/acs.est.1c05634 +# +# Notes: +# - The HCl emission from open biomass burning (HCL_BIO, HCL_AGR) used the same +# activity data for GFED4 (1998-2014) and BB4CMIP (1960-2014). If your +# emission inventory for open biomass burning has already include HCl +# emissions, shut down either of them to avoid the duplicated emission sources +# - Emissions of particulate Cl are added as HCl as ISORROPIA will reparition +# Cl between particle phase and gas phase. +#============================================================================== +(((GT_Chlorine +0 HCL_ENE $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_ene 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_IND $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_ind 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_RES $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_res 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_WST $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_wstop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_BIO $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_bbop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +0 HCL_AGR $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_agri 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +0 PCL_ENE $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_ene 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_IND $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_ind 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_RES $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_res 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_WST $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_wstop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_BIO $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_bbop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +0 PCL_AGR $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_agri 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +)))GT_Chlorine + #============================================================================== # --- Ship emissions --- # @@ -3444,13 +3478,6 @@ VerboseOnCores: root # Accepted values: root all * STATE_PSC ./Restarts/GEOSChem.Restart.$YYYY$MM$DD_$HH$MNz.nc4 Chem_StatePSC $YYYY/$MM/$DD/$HH EY xyz count * - 1 1 )))GC_RESTART -#============================================================================== -# --- GEOS-Chem boundary condition file --- -#============================================================================== -(((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2021-09/fullchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 -)))GC_BCs - (((CHEMISTRY_INPUT #============================================================================== @@ -4235,14 +4262,12 @@ ${RUNDIR_TES_CLIM_N2O} 281 COtoSOAP_burn 0.013 - - - xy 1 1 #============================================================================== -# --- QFED2 diurnal scale factors --- +# --- Diurnal scale factors for biomass burning --- # # Fire diurnal scaling factors (% per hour) from WRAP Report to Project # No. 178-6, July 2005 #============================================================================== -(((QFED2.or.GFAS.or.BB4MIPS 75 QFED2_TOD 0.1392/0.1392/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.48/0.96/1.68/2.4/3.12/3.84/4.08/2.88/1.68/0.96/0.1368/0.1368/0.1368/0.1368/0.1368 - - - xy unitless 1 -)))QFED2.or.GFAS.or.BB4MIPS #============================================================================== # --- NAP scale factors --- diff --git a/run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem b/run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem index c8fd80e5c..888ee2c3f 100644 --- a/run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem +++ b/run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem @@ -231,6 +231,12 @@ EmisGLYX_BioBurn GLYX 111 -1 -1 2 kg/m2/s GLYX_emission_flux_from_b ############################################################################### EmisH2O_Aircraft H2O 0 20 -1 3 kg/m2/s H2O_emission_flux_from_aircraft +############################################################################### +##### HCl emissions ##### +############################################################################### +EmisCl_Total HCl 0 -1 -1 3 kg/m2/s HCl_emission_flux_from_all_sectors +EmisCl_Anthro HCl 0 1 -1 3 kg/m2/s HCl_emission_flux_from_anthropogenic + ############################################################################### ##### HCOOH sources ##### ############################################################################### @@ -564,6 +570,11 @@ HcoConvectiveCloudTopHeight -1 103 -1 -1 2 level Convective_cloud_ #InvORDONEZ_CH2IBr CH2IBr 0 1 1 2 kg/m2/s CH2IBr_emission_flux_from_ORDONEZ_IODOCARB_inventory #InvORDONEZ_CH3I CH3I 0 1 1 2 kg/m2/s CH3I_emission_flux_from_ORDONEZ_IODOCARB_inventory +#============================= +# GT_Chlorine +#============================= +#InvGTChlorine_HCl HCl 0 1 1 2 kg/m2/s HCl_emission_flux_from_GT_Chlorine_inventory + #============================= # CEDS_SHIP #============================= From f13458d00134b900ee4c4d52b69424c76b51bc2a Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Fri, 3 May 2024 09:40:38 -0400 Subject: [PATCH 265/331] Add fixes for Cl emissions 1. In ExtData.rc change $YYYY token to %y4 for GT_Chlorine files 2. Add EmisHCl_Anthro and EmisHCl_Total to HISTORY.rc. Signed-off-by: Melissa Sulprizio --- .../ExtData.rc.templates/ExtData.rc.fullchem | 24 +++++++++---------- .../HISTORY.rc.templates/HISTORY.rc.fullchem | 2 ++ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem index 01ca83436..c09408c3f 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem @@ -1374,18 +1374,18 @@ ORDONEZ_CH2IBR kg/m2/s Y Y F2000-%m2-01T00:00:00 none none CH2IBr ./HcoDir/IODIN #============================================================================== # --- GT_Chlorine --- #============================================================================== -HCL_ENE kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_ene ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc -HCL_IND kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_ind ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc -HCL_RES kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_res ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc -HCL_WST kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_wstop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc -HCL_BIO kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_bbop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc -HCL_AGR kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_agri ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc -PCL_ENE kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_ene ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc -PCL_IND kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_ind ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc -PCL_RES kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_res ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc -PCL_WST kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_wstop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc -PCL_BIO kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_bbop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc -PCL_AGR kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_agri ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc +HCL_ENE kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_ene ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +HCL_IND kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_ind ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +HCL_RES kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_res ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +HCL_WST kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_wstop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +HCL_BIO kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_bbop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +HCL_AGR kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_agri ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_ENE kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_ene ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_IND kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_ind ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_RES kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_res ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_WST kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_wstop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_BIO kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_bbop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_AGR kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_agri ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc # #============================================================================== # --- Ship emissions (SHIP) --- diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem index 5b6846353..9184bd75f 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem @@ -274,6 +274,8 @@ COLLECTIONS: @#'DefaultCollection', 'EmisGLYX_Total ', 'GCHPchem', 'EmisGLYX_BioBurn ', 'GCHPchem', 'EmisH2O_Aircraft ', 'GCHPchem', + 'EmisHCl_Total ', 'GCHPchem', + 'EmisHCl_Anthro ', 'GCHPchem', 'EmisHCOOH_Total ', 'GCHPchem', 'EmisHCOOH_Anthro ', 'GCHPchem', 'EmisHCOOH_Ship ', 'GCHPchem', From 4d49adc7c2370248658c9a30114ff4904d796621 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Fri, 3 May 2024 13:27:07 -0400 Subject: [PATCH 266/331] Set climatology to N in ExtData.rc for GT_Chlorine emissions Signed-off-by: Melissa Sulprizio --- .../ExtData.rc.templates/ExtData.rc.fullchem | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem index c09408c3f..0ca2b1315 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem @@ -1374,18 +1374,18 @@ ORDONEZ_CH2IBR kg/m2/s Y Y F2000-%m2-01T00:00:00 none none CH2IBr ./HcoDir/IODIN #============================================================================== # --- GT_Chlorine --- #============================================================================== -HCL_ENE kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_ene ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc -HCL_IND kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_ind ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc -HCL_RES kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_res ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc -HCL_WST kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_wstop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc -HCL_BIO kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_bbop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc -HCL_AGR kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none HCl_agri ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc -PCL_ENE kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_ene ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc -PCL_IND kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_ind ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc -PCL_RES kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_res ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc -PCL_WST kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_wstop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc -PCL_BIO kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_bbop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc -PCL_AGR kg/m2/s Y Y F%y4-%m2-01T00:00:00 none none pCl_agri ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +HCL_ENE kg/m2/s N Y F%y4-%m2-01T00:00:00 none none HCl_ene ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +HCL_IND kg/m2/s N Y F%y4-%m2-01T00:00:00 none none HCl_ind ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +HCL_RES kg/m2/s N Y F%y4-%m2-01T00:00:00 none none HCl_res ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +HCL_WST kg/m2/s N Y F%y4-%m2-01T00:00:00 none none HCl_wstop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +HCL_BIO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none HCl_bbop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +HCL_AGR kg/m2/s N Y F%y4-%m2-01T00:00:00 none none HCl_agri ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_ENE kg/m2/s N Y F%y4-%m2-01T00:00:00 none none pCl_ene ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_IND kg/m2/s N Y F%y4-%m2-01T00:00:00 none none pCl_ind ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_RES kg/m2/s N Y F%y4-%m2-01T00:00:00 none none pCl_res ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_WST kg/m2/s N Y F%y4-%m2-01T00:00:00 none none pCl_wstop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_BIO kg/m2/s N Y F%y4-%m2-01T00:00:00 none none pCl_bbop ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc +PCL_AGR kg/m2/s N Y F%y4-%m2-01T00:00:00 none none pCl_agri ./HcoDir/GT_Chlorine/v2024-05/GT_Chlorine_01_01_%y4_V1.0.0.nc # #============================================================================== # --- Ship emissions (SHIP) --- From 6820d1b85e8fc50280a6208a0b555c51b842726b Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Fri, 3 May 2024 18:11:13 -0400 Subject: [PATCH 267/331] Fix typo in HEMCO_Config.rc for HCl emissions EmisCl_* should be EmisHCl_* for the GT_Chlorine emissions. Signed-off-by: Melissa Sulprizio --- .../HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem | 4 ++-- run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem b/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem index 888ee2c3f..4826f5a0b 100644 --- a/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem +++ b/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem @@ -234,8 +234,8 @@ EmisH2O_Aircraft H2O 0 20 -1 3 kg/m2/s H2O_emission_flux_from_ai ############################################################################### ##### HCl emissions ##### ############################################################################### -EmisCl_Total HCl 0 -1 -1 3 kg/m2/s HCl_emission_flux_from_all_sectors -EmisCl_Anthro HCl 0 1 -1 3 kg/m2/s HCl_emission_flux_from_anthropogenic +EmisHCl_Total HCl 0 -1 -1 3 kg/m2/s HCl_emission_flux_from_all_sectors +EmisHCl_Anthro HCl 0 1 -1 3 kg/m2/s HCl_emission_flux_from_anthropogenic ############################################################################### ##### HCOOH sources ##### diff --git a/run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem b/run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem index 888ee2c3f..4826f5a0b 100644 --- a/run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem +++ b/run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem @@ -234,8 +234,8 @@ EmisH2O_Aircraft H2O 0 20 -1 3 kg/m2/s H2O_emission_flux_from_ai ############################################################################### ##### HCl emissions ##### ############################################################################### -EmisCl_Total HCl 0 -1 -1 3 kg/m2/s HCl_emission_flux_from_all_sectors -EmisCl_Anthro HCl 0 1 -1 3 kg/m2/s HCl_emission_flux_from_anthropogenic +EmisHCl_Total HCl 0 -1 -1 3 kg/m2/s HCl_emission_flux_from_all_sectors +EmisHCl_Anthro HCl 0 1 -1 3 kg/m2/s HCl_emission_flux_from_anthropogenic ############################################################################### ##### HCOOH sources ##### From f8035ba7f8f7b59ff95d35b09fc14ead67a017c8 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Mon, 6 May 2024 17:20:54 -0400 Subject: [PATCH 268/331] Extend GFED4 emissions through the end of 2023 The GFED4 files processed for GEOS-Chem were previously only available through October 2022 in ExtData/HEMCO/GFED4/v2023-03/. Data for 2023 are available on the GFED4 site: https://www.geo.vu.nl/~gwerf/GFED/GFED4/. Sarah Hancock (Harvard) has processed the files for Nov 2022-Dec 2023 using the scripts ExtData/HEMCO/GFED4/v2023-03/ and those processed files have been placed in the same directory for simplicity. The date ranges in HEMCO_Config.rc have been changed to 2010-2023 to reflect the data currently included in the ExtData/HEMCO/GFED4/v2023-03/ directory. Earlier years may be found in other GFED4/vYYYY-MM directories. Also in this commit: 1. Fixed typo in HEMCO_Config.rc.carbon for GCClassic in GHGI_EE_COAST_RICE entry. There was an unnecessary y in the dimension column. 2. Updated GCHP's HEMCO_Config.rc.CO2 for consistency with the GCClassic version. This may eventually be deleted in favor of the carbon simulation anyway. Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 1 + .../HEMCO_Config.rc.CH4 | 16 +- .../HEMCO_Config.rc.CO2 | 16 +- .../HEMCO_Config.rc.Hg | 16 +- .../HEMCO_Config.rc.aerosol | 16 +- .../HEMCO_Config.rc.carbon | 18 +- .../HEMCO_Config.rc.fullchem | 16 +- .../HEMCO_Config.rc.tagCH4 | 16 +- .../HEMCO_Config.rc.CO2 | 163 ++++++++++++------ .../HEMCO_Config.rc.carbon | 22 +-- .../HEMCO_Config.rc.fullchem | 16 +- 11 files changed, 189 insertions(+), 127 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3adf1986..1f31c29b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - New parameterization for effective radius of SNA/OM aersols (see PR #2236) - New `CHEM_INPUTS/FAST_JX/v2024-05` and `CHEM_INPUTS/FAST_JX/v2024-05-Hg` folders with updated `org.dat` and `so4.dat` files - Added global continental chlorine (pCl and HCl) emissions +- Extended GFED4 emissions through the end of 2023 ### Changed - Updated routines in `GeosUtil/unitconv_mod.F90` for species-specific unit conversion diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index 23f813216..bdbba3e96 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -545,19 +545,19 @@ VerboseOnCores: root # Accepted values: root all # NOTE: These are the base emissions in kgDM/m2/s. #============================================================================== (((GFED4 -111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 (((GFED_daily -111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2003-2022/1-12/1-31/0 RF xy 1 * - 1 1 +111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2010-2023/1-12/1-31/0 RF xy 1 * - 1 1 )))GFED_daily (((GFED_3hourly -111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2003-2022/1-12/1/0-23 RF xy 1 * - 1 1 +111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2010-2023/1-12/1/0-23 RF xy 1 * - 1 1 )))GFED_3hourly )))GFED4 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 index 5857630b0..82d84883e 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 @@ -289,19 +289,19 @@ VerboseOnCores: root # Accepted values: root all # NOTE: These are the base emissions in kgDM/m2/s. #============================================================================== (((GFED4 -111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 (((GFED_daily -111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2003-2022/1-12/1-31/0 RF xy 1 * - 1 1 +111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2010-2023/1-12/1-31/0 RF xy 1 * - 1 1 )))GFED_daily (((GFED_3hourly -111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2003-2022/1-12/1/0-23 RF xy 1 * - 1 1 +111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2010-2023/1-12/1/0-23 RF xy 1 * - 1 1 )))GFED_3hourly )))GFED4 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg index 9b5bdb830..afd03a7f0 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg @@ -418,19 +418,19 @@ VerboseOnCores: root # Accepted values: root all # NOTE: These are the base emissions in kgDM/m2/s. #============================================================================== (((GFED4 -111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 (((GFED_daily -111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2003-2016/1-12/1-31/0 RF xy 1 * - 1 1 +111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2010-2023/1-12/1-31/0 RF xy 1 * - 1 1 )))GFED_daily (((GFED_3hourly -111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2003-2016/1-12/1/0-23 RF xy 1 * - 1 1 +111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2010-2023/1-12/1/0-23 RF xy 1 * - 1 1 )))GFED_3hourly )))GFED4 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol index 3d39b850e..f967196ff 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol @@ -1876,23 +1876,23 @@ VerboseOnCores: root # Accepted values: root all # - If a year is not available, you may use the GFED4_CLIMATOLOGY option instead #============================================================================== (((GFED4 -111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 (((GFED_subgrid_coag 111 FINN_DAILY_NUMBER $ROOT/FINN/v2015-02/FINN_daily_$YYYY_0.25x0.25_with_num.nc number 2002-2016/1-12/1/0 RF xy unitless * - 1 1 )))GFED_subgrid_coag (((GFED_daily -111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2003-2022/1-12/1-31/0 RF xy 1 * - 1 1 +111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2010-2023/1-12/1-31/0 RF xy 1 * - 1 1 )))GFED_daily (((GFED_3hourly -111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2003-2022/1-12/1/0-23 RF xy 1 * - 1 1 +111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2010-2023/1-12/1/0-23 RF xy 1 * - 1 1 )))GFED_3hourly )))GFED4 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 69fecad83..e7339590d 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -323,7 +323,7 @@ Mask fractions: false ### Rice ### 0 GHGI_EE_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1008 7 100 -0 GHGI_EE_COAST_RICE - - - - -y - CH4 58/1009 7 1 +0 GHGI_EE_COAST_RICE - - - - - - CH4 58/1009 7 1 ### Other Anthro ### 0 GHGI_EE_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 @@ -1015,19 +1015,19 @@ Mask fractions: false #============================================================================== (((GFED4 -111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 (((GFED_daily -111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2003-2022/1-12/1-31/0 RF xy 1 * - 1 1 +111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2010-2023/1-12/1-31/0 RF xy 1 * - 1 1 )))GFED_daily (((GFED_3hourly -111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2003-2022/1-12/1/0-23 RF xy 1 * - 1 1 +111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2010-2023/1-12/1/0-23 RF xy 1 * - 1 1 )))GFED_3hourly )))GFED4 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 8ae607a13..8772c3bc7 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -3398,23 +3398,23 @@ VerboseOnCores: root # Accepted values: root all # - If a year is not available, you may use the GFED4_CLIMATOLOGY option instead #============================================================================== (((GFED4 -111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 (((GFED_subgrid_coag 111 FINN_DAILY_NUMBER $ROOT/FINN/v2015-02/FINN_daily_$YYYY_0.25x0.25_with_num.nc number 2002-2016/1-12/1/0 RF xy unitless * - 1 1 )))GFED_subgrid_coag (((GFED_daily -111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2003-2022/1-12/1-31/0 RF xy 1 * - 1 1 +111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2010-2023/1-12/1-31/0 RF xy 1 * - 1 1 )))GFED_daily (((GFED_3hourly -111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2003-2022/1-12/1/0-23 RF xy 1 * - 1 1 +111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2010-2023/1-12/1/0-23 RF xy 1 * - 1 1 )))GFED_3hourly )))GFED4 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 index 3d750919d..21b24de38 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 @@ -734,19 +734,19 @@ VerboseOnCores: root # Accepted values: root all # NOTE: These are the base emissions in kgDM/m2/s. #============================================================================== (((GFED4 -111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 (((GFED_daily -111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2003-2022/1-12/1-31/0 RF xy 1 * - 1 1 +111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2010-2023/1-12/1-31/0 RF xy 1 * - 1 1 )))GFED_daily (((GFED_3hourly -111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2003-2022/1-12/1/0-23 RF xy 1 * - 1 1 +111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2010-2023/1-12/1/0-23 RF xy 1 * - 1 1 )))GFED_3hourly )))GFED4 diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 index 2e0386f36..848cbf736 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.CO2 @@ -45,13 +45,13 @@ VerboseOnCores: root # Accepted values: root all ############################################################################### # ExtNr ExtName on/off Species Years avail. 0 Base : on * -# ----- MAIN SWITCHES ----------------------------------------- +# ----- MAIN SWITCHES --------------------------------------------------------- --> EMISSIONS : true --> METEOROLOGY : false --> CHEMISTRY_INPUT : true -# ----- RESTART FIELDS ---------------------------------------- +# ----- RESTART FIELDS -------------------------------------------------------- --> GC_RESTART : false -# ----- GLOBAL INVENTORIES ------------------------------------ +# ----- GLOBAL INVENTORIES ---------------------------------------------------- --> CMS_FLUX : true --> FOSSIL_ODIAC : false # 2000-2018 --> FOSSIL_CDIAC : false # 1980-2014 @@ -60,17 +60,49 @@ VerboseOnCores: root # Accepted values: root all --> BBIO_DIURNAL : false # 1985 --> BBIO_SIB3 : false # 2006-2010 --> NET_TERR_EXCH : false # 2000 - --> AVIATION : false # 2005 --> CO2CORR : false # 2000-2018 -# ----- SHIP EMISSIONS ---------------------------------------- +# ----- AIRCRAFT EMISSIONS ---------------------------------------------------- +# There are 3 switches: +# +# 1. AEIC2019_DAILY selects daily AEIC 2019 emissions. For most simulations, +# this is not recommended due to the amount of computational overhead +# that will be incurred in regridding. But this may be useful for +# research purposes. Recommended setting: "AEIC2019_DAILY: false". +# +# 2. AEIC2019_MONMEAN selects monthly-mean AEIC 2019 emisisons, which will +# incur much less computational overhaead. This options should suffice +# for most simulations. Recommended setting "AEIC2019_MONMEAN: true". +# +# 3. AEIC_SCALE_1990_2019: If "false", the AEIC 2019 data from the year +# 2019 alone will be used. This will yield a "best estimate" of +# aviation emisssion. This could be important because simply scaling +# aviation emissions up and down is rather nonphysical. But if +# AEIC_SCALE_1990_2019 is set to true, then aviation emissions for +# 1990 to 2019 are estimated by: +# +# a. Scaling ALL aviation emissions based on the growth in fuelburn +# from 1990 to 2019* estimated by Lee et al. (2021); and +# +# b. Scaling aviation NOx emissions by an additional factor to reflect +# the changes in the NOx emissions index over the same period as +# reported by Lee et al. (2021). +# +# Recommended setting: "AEIC_SCALE_1990_2019: true" +# +# See additional notes in the AEIC scale factor section below. +#------------------------------------------------------------------------------ + --> AEIC2019_DAILY : false # 2019 (daily data) + --> AEIC2019_MONMEAN : true # 2019 (monthly-mean data) + --> AEIC_SCALE_1990_2019 : true # Scale to year in 1990-2019 +# ----- SHIP EMISSIONS -------------------------------------------------------- --> SHIP : false --> CEDS_SHIP : false # 1750-2014 --> ICOADS_SHIP : false # 2004 -# ----- NON-EMISSIONS DATA ------------------------------------ +# ----- NON-EMISSIONS DATA ---------------------------------------------------- --> CO2_COPROD : false # 2004-2009 --> OLSON_LANDMAP : false # 1985 --> YUAN_MODIS_LAI : false # 2000-2020 -# ---------------------------------------------------------------------------- +# ----------------------------------------------------------------------------- 111 GFED : on CO2/CO2bb --> GFED4 : true --> GFED_daily : true @@ -125,7 +157,7 @@ VerboseOnCores: root # Accepted values: root all )))FOSSIL_CDIAC (((FOSSIL_ODIAC -0 FOSSILCO2_ODIAC $ROOT/CO2/v2019-12/FOSSIL/ODIAC_CO2.monthly.generic.1x1.nc CO2 2000-2018/1-12/1/0 C xy kg/m2/s CO2 40/41/80 1 2 +0 FOSSILCO2_ODIAC $ROOT/CO2/v2022-11/FOSSIL/ODIAC_CO2.monthly.generic.1x1.nc CO2 2000-2018/1-12/1/0 C xy kg/m2/s CO2 40/41/80 1 2 0 FOSSILCO2FF_ODIAC - - - - - - CO2ff 40/41/80 1 2 )))FOSSIL_ODIAC @@ -139,14 +171,14 @@ VerboseOnCores: root # Accepted values: root all # ---> Recommended option: scaled ocean exchange (set OCEAN_EXCH_SCALED = true) #============================================================================== (((OCEAN_EXCH_TAKA09 -0 OCEANCO2_TAKA_ANNUAL $ROOT/CO2/v2014-09/OCEAN/Taka2009_CO2_Annual.nc CO2 2000/1/1/0 C xy kg/m2/s CO2 - 2 1 +0 OCEANCO2_TAKA_ANNUAL $ROOT/CO2/v2022-11/OCEAN/Taka2009_CO2_Annual.nc CO2 2000/1/1/0 C xy kg/m2/s CO2 - 2 1 0 OCEANCO2OC_TAKA_ANNUAL - - - - - - CO2oc - 2 1 -0 OCEANCO2_TAKA_MONTHLY $ROOT/CO2/v2014-09/OCEAN/Taka2009_CO2_Monthly.nc CO2 2000/1-12/1/0 C xy kg/m2/s CO2 - 2 2 +0 OCEANCO2_TAKA_MONTHLY $ROOT/CO2/v2022-11/OCEAN/Taka2009_CO2_Monthly.nc CO2 2000/1-12/1/0 C xy kg/m2/s CO2 - 2 2 0 OCEANCO2OC_TAKA_MONTHLY - - - - - - CO2oc - 2 2 )))OCEAN_EXCH_TAKA09 (((OCEAN_EXCH_SCALED -0 OCEANCO2_SCALED_MONTHLY $ROOT/CO2/v2015-04/OCEAN/Scaled_Ocean_CO2_monthly.nc CO2 2000-2013/1-12/1/0 C xy kg/m2/s CO2 - 2 3 +0 OCEANCO2_SCALED_MONTHLY $ROOT/CO2/v2022-11/OCEAN/Scaled_Ocean_CO2_monthly.nc CO2 2000-2013/1-12/1/0 C xy kg/m2/s CO2 - 2 3 0 OCEANCO2OC_SCALED_MONTHLY - - - - - - CO2oc - 2 3 )))OCEAN_EXCH_SCALED @@ -168,7 +200,7 @@ VerboseOnCores: root # Accepted values: root all )))BBIO_DIURNAL (((BBIO_SIB3 -0 SIB_BBIO_CO2 $ROOT/CO2/v2015-04/BIO/SiB3_3hr_NEP.nc CO2 2006-2010/1-12/1-31/0-23 C xy kg/m2/s CO2 - 3 1 +0 SIB_BBIO_CO2 $ROOT/CO2/v2022-11/BIO/SiB3_3hr_NEP.nc CO2 2006-2010/1-12/1-31/0-23 C xy kg/m2/s CO2 - 3 1 0 SIB_BBIO_CO2BAL - - - - - - CO2bal - 3 1 )))BBIO_SIB3 @@ -181,7 +213,7 @@ VerboseOnCores: root # Accepted values: root all # inversion/assimilation #============================================================================== (((NET_TERR_EXCH -0 CO2_NET_TERRESTRIAL $ROOT/CO2/v2015-04/BIO/Net_terrestrial_exch_5.29Pg.generic.1x1.nc CO2 2000/1/1/0 C xy kg/m2/s CO2nte - 5 1 +0 CO2_NET_TERRESTRIAL $ROOT/CO2/v2022-11/BIO/Net_terrestrial_exch_5.29Pg.generic.1x1.nc CO2 2000/1/1/0 C xy kg/m2/s CO2nte - 5 1 0 CO2NTE_NET_TERRESTRIAL - - - - - - CO2 - 5 1 )))NET_TERR_EXCH @@ -197,23 +229,27 @@ VerboseOnCores: root # Accepted values: root all )))ICOADS_SHIP (((CEDS_SHIP -0 CEDS_CO2_SHP $ROOT/CEDS/v2018-08/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_shp 1750-2014/1-12/1/0 C xy kg/m2/s CO2 - 6 1 +0 CEDS_CO2_SHP $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_shp 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 6 1 0 CEDS_CO2SE_SHIP - - - - - - CO2se - 6 1 )))CEDS_SHIP )))SHIP #============================================================================== -# --- AVIATION EMISSIONS --- +# --- AEIC 2019 aircraft emissions --- # -# Aviation fuel burn spatial and seaonal distribution from AEIC (Simone et al. -# 2013) scaled with global annual CO2 emission totals calculated from the IEA -# (Olsen et al., 2013) +# Data files are for 2019, but scale factors from 1990-2019 can be applied +# in order to get year-specific emissions. See the notes in the AEIC2019 +# scale factor section below for more information. #============================================================================== -(((AVIATION -0 AEIC_CO2 $ROOT/AEIC/v2015-01/AEIC.47L.gen.1x1.nc FUELBURN 2005/1-12/1/0 C xyz kg/m2/s CO2 60/70 7 1 -0 AEIC_CO2AV - - - - - - CO2av 60/70 7 1 -)))AVIATION +(((AEIC2019_DAILY +0 AEIC19_DAILY_CO2 $ROOT/AEIC2019/v2022-03/2019/AEIC_2019$MM$DD.0.5x0.625.36L.nc FUELBURN 2019/1-12/1-31/0 C xyz kg/m2/s CO2 241/60 20 1 +0 AEIC19_DAILY_CO2AV - - - - - - CO2av 241/60 20 1 +)))AEIC2019_DAILY +(((AEIC2019_MONMEAN +0 AEIC19_MONMEAN_CO2 $ROOT/AEIC2019/v2022-03/2019_monmean/AEIC_monmean_2019$MM.0.5x0.625.36L.nc FUELBURN 2019/1-12/1/0 C xyz kg/m2/s CO2 241/60 20 1 +0 AEIC19_MONMEAN_CO2AV - - - - - - CO2av 241/60 20 1 +)))AEIC2019_MONMEAN #============================================================================== # --- CO2 SURFACE CORRECTION FOR CO OXIDATION --- @@ -230,21 +266,21 @@ VerboseOnCores: root # Accepted values: root all # to make these emissions negative, so that they will be subtracted. =============================================================================== (((CO2CORR -0 FOSSILCO2_MONTHLY $ROOT/CO2/v2019-12/FOSSIL/ODIAC_CO2.monthly.generic.1x1.nc CO2 2000-2018/1-12/1/0 C xy kg/m2/s CO2 10/40/41/80/90 8 1 +0 FOSSILCO2_MONTHLY $ROOT/CO2/v2022-11/FOSSIL/ODIAC_CO2.monthly.generic.1x1.nc CO2 2000-2018/1-12/1/0 C xy kg/m2/s CO2 10/40/41/80/90 8 1 0 FOSSILCO2CORR_MONTHLY - - - - - - CO2corr 10/40/41/80/90 8 1 -0 CO2_LIVESTOCK $ROOT/CO2/v2015-04/CHEM/CH4_source.geos.2x25.nc CH4_004 2004/1-12/1/0 C xy kg/m2/s CO2 20/90 8 1 +0 CO2_LIVESTOCK $ROOT/CO2/v2022-11/CHEM/CH4_source.geos.2x25.nc CH4_004 2004/1-12/1/0 C xy kg/m2/s CO2 20/90 8 1 0 CO2CORR_LIVESTOCK - - - - - - CO2corr 20/90 8 1 -0 CO2_WASTE $ROOT/CO2/v2015-04/CHEM/CH4_source.geos.2x25.nc CH4_005 2004/1-12/1/0 C xy kg/m2/s CO2 20/90 8 1 +0 CO2_WASTE $ROOT/CO2/v2022-11/CHEM/CH4_source.geos.2x25.nc CH4_005 2004/1-12/1/0 C xy kg/m2/s CO2 20/90 8 1 0 CO2CORR_WASTE - - - - - - CO2corr 20/90 8 1 -0 CO2_RICE $ROOT/CO2/v2015-04/CHEM/CH4_source.geos.2x25.nc CH4_007 2004/1-12/1/0 C xy kg/m2/s CO2 20/90 8 1 +0 CO2_RICE $ROOT/CO2/v2022-11/CHEM/CH4_source.geos.2x25.nc CH4_007 2004/1-12/1/0 C xy kg/m2/s CO2 20/90 8 1 0 CO2CORR_RICE - - - - - - CO2corr 20/90 8 1 -0 CO2_WETLANDS $ROOT/CO2/v2015-04/CHEM/CH4_source.geos.2x25.nc CH4_010 2004/1-12/1/0 C xy kg/m2/s CO2 20/90 8 1 +0 CO2_WETLANDS $ROOT/CO2/v2022-11/CHEM/CH4_source.geos.2x25.nc CH4_010 2004/1-12/1/0 C xy kg/m2/s CO2 20/90 8 1 0 CO2CORR_WETLANDS - - - - - - CO2corr 20/90 8 1 -0 CO2_NATURAL $ROOT/CO2/v2015-04/CHEM/CH4_source.geos.2x25.nc CH4_012 2004/1-12/1/0 C xy kg/m2/s CO2 20/90 8 1 +0 CO2_NATURAL $ROOT/CO2/v2022-11/CHEM/CH4_source.geos.2x25.nc CH4_012 2004/1-12/1/0 C xy kg/m2/s CO2 20/90 8 1 0 CO2CORR_NATURAL - - - - - - CO2corr 20/90 8 1 -0 CO2_ISOPRENE $ROOT/CO2/v2015-04/CHEM/Isoprene-2004.geos.2x25.nc ISOP 2004/1-12/1/0 C xy kg/m2/s CO2 21/30/90 8 1 +0 CO2_ISOPRENE $ROOT/CO2/v2022-11/CHEM/Isoprene-2004.geos.2x25.nc ISOP 2004/1-12/1/0 C xy kg/m2/s CO2 21/30/90 8 1 0 CO2CORR_ISOPRENE - - - - - - CO2corr 21/30/90 8 1 -0 CO2_MONOTERP $ROOT/CO2/v2015-04/CHEM/Monoterpene-2004.geos.2x25.nc MONOT 2004/1-12/1/0 C xy kg/m2/s CO2 21/30/90 8 1 +0 CO2_MONOTERP $ROOT/CO2/v2022-11/CHEM/Monoterpene-2004.geos.2x25.nc MONOT 2004/1-12/1/0 C xy kg/m2/s CO2 21/30/90 8 1 0 CO2CORR_MONOTERP - - - - - - - 21/30/90 8 1 )))CO2CORR @@ -263,19 +299,19 @@ VerboseOnCores: root # Accepted values: root all # NOTE: These are the base emissions in kgDM/m2/s. #============================================================================== (((GFED4 -111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 (((GFED_daily -111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2003-2022/1-12/1-31/0 RF xy 1 * - 1 1 +111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2010-2023/1-12/1-31/0 RF xy 1 * - 1 1 )))GFED_daily (((GFED_3hourly -111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2003-2022/1-12/1/0-23 RF xy 1 * - 1 1 +111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2010-2023/1-12/1/0-23 RF xy 1 * - 1 1 )))GFED_3hourly )))GFED4 @@ -321,8 +357,8 @@ VerboseOnCores: root # Accepted values: root all # --- GEOS-Chem restart file --- #============================================================================== (((GC_RESTART -* SPC_ ./GEOSChem.Restart.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesRst_?ALL? $YYYY/$MM/$DD/$HH EFYO xyz 1 * - 1 1 -* DELPDRY ./GEOSChem.Restart.$YYYY$MM$DD_$HH$MNz.nc4 Met_DELPDRY $YYYY/$MM/$DD/$HH EY xyz 1 * - 1 1 +* SPC_ ./Restarts/GEOSChem.Restart.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesRst_?ALL? $YYYY/$MM/$DD/$HH EFYO xyz 1 * - 1 1 +* DELPDRY ./Restarts/GEOSChem.Restart.$YYYY$MM$DD_$HH$MNz.nc4 Met_DELPDRY $YYYY/$MM/$DD/$HH EY xyz 1 * - 1 1 )))GC_RESTART #============================================================================== @@ -568,20 +604,45 @@ VerboseOnCores: root # Accepted values: root all 50 CO2_SHIP_SCALE 1.043/1.068/1.094/1.128/1.154/1.180/1.205/1.231/1.265/1.291/1.316/1.342/1.368/1.393/1.427/1.453/1.479/1.504/1.530/1.556/1.590/1.615/1.641/1.667/1.641 - 1985-2009/1/1/0 C xy 1 1 )))ICOADS_SHIP -(((AVIATION #============================================================================== -# --- AVIATION FUEL BURN SCALE FACTOR ( kg C / kg fuel ) --- -#============================================================================== -60 AEIC_CO2_SCALE 3.155 - - - xy unitless 1 - -#============================================================================== -# --- AVIATION GLOBAL ANNUAL EMISSION SCALE FACTOR --- +# --- AEIC2019 aircraft emissions scale factors --- # -# AEIC global annual emissions 0.15574 TgC for 2005 -# IEA values from Olsen et al. (2013) to scale 1990-2008 +# See http://geoschemdata.wustl.edu/ExtData/HEMCO/AEIC2019/v2022-03/AEIC_2019_technical_note.pdf #============================================================================== -70 CO2_AVIATION_SCALE 0.9034/0.8867/0.8923/0.9034/0.9759/1.0038/1.0596/1.0875/1.1154/1.1544/1.1990/1.1711/1.1711/1.1711/1.2492/1.3105/1.3273/1.3496/1.3440 - 1990-2008/1/1/0 C xy 1 1 -)))AVIATION +(((AEIC2019_DAILY.or.AEIC2019_MONMEAN +#------------------------------------------------------------------------------ +# Assume 3.159 kg CO2 from every kg of fuel burned +# cf Hileman, Stratton, & Donohoo, _J. Propul. Power_, 26(6), 1184–1196, 2010. +#------------------------------------------------------------------------------ +60 AEIC19_FBtoCO2 3.159 - - - xy unitless 1 + +#------------------------------------------------------------------------------ +# Scaling factors for 1990-2019 derived from Lee et al. (2021). Lee et al. +# (2021) only covers 1990 to 2018, so to get to 2019 it is assumed that the +# growth from 2017 to 2018 is the same as that from 2018 to 2019. +# So the formula is something like: +# +# Emissions of CO in 2009 = AEIC 2019 emissions of CO +# * (Lee 2017 CO / Lee 2018 fuel burn) +# * (Lee 2009 fuel burn / Lee 2018 fuel burn) +# +# So in this case, we use the Lee 2017/Lee 2018 value to scale AEIC’s +# emissions to the “2018” values, and then scale directly using the Lee et al +# fuel burn. This ensures that, when running with year 2019, you get an +# unadjusted version of the AEIC2019 inventory, and all previous years are +# scaled down. +# +# All scaling factors are included in here in HEMCO_Config.rc. +#------------------------------------------------------------------------------ +(((AEIC_SCALE_1990_2019 +241 AC_FBMULT 0.506/0.489/0.490/0.493/0.517/0.529/0.553/0.570/0.581/0.600/0.631/0.607/0.608/0.608/0.646/0.678/0.686/0.706/0.703/0.666/0.700/0.721/0.728/0.749/0.773/0.815/0.854/0.905/0.952/1.000 - 1990-2019/1/1/0 C xy 1 1 +)))AEIC_SCALE_1990_2019 + +# If not applying 1990-2019 scale factors, use 1.0 +(((.not.AEIC_SCALE_1990_2019 +241 AC_FBMULT 1.000000e+0 - - - xy 1 1 +))).not.AEIC_SCALE_1990_2019 +)))AEIC2019_DAILY.or.AEIC2019_MONMEAN #============================================================================== # --- DOMESTIC AVIATION SURFACE CORRECTION FACTOR --- diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 430e01468..4be8e4df8 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -293,7 +293,7 @@ Mask fractions: false 0 GHGI_EE_COAST_GAS_TRANSMISSION - - - - - - CH4 1009 2 5 0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -### Coal ### +### Coal ### 0 GHGI_EE_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 0 GHGI_EE_COAST_COAL_UNDERGROUND - - - - - - CH4 1009 3 5 0 GHGI_EE_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 @@ -301,13 +301,13 @@ Mask fractions: false 0 GHGI_EE_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 0 GHGI_EE_COAST_COAL_ABANDONED - - - - - - CH4 1009 3 5 -### Livestock ### +### Livestock ### 0 GHGI_EE_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 0 GHGI_EE_COAST_LIVESTOCK_ENT - - - - - - CH4 1009 4 1 0 GHGI_EE_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 0 GHGI_EE_COAST_LIVESTOCK_MAN - - - - - - CH4 57/1009 4 1 -### Landfills ### +### Landfills ### 0 GHGI_EE_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 0 GHGI_EE_COAST_LANDFILLS_IND - - - - - - CH4 1009 5 1 0 GHGI_EE_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 @@ -1015,19 +1015,19 @@ Mask fractions: false #============================================================================== (((GFED4 -111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 (((GFED_daily -111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2003-2022/1-12/1-31/0 RF xy 1 * - 1 1 +111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2010-2023/1-12/1-31/0 RF xy 1 * - 1 1 )))GFED_daily (((GFED_3hourly -111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2003-2022/1-12/1/0-23 RF xy 1 * - 1 1 +111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2010-2023/1-12/1/0-23 RF xy 1 * - 1 1 )))GFED_3hourly )))GFED4 diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index bfedac657..56eb15950 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -3397,23 +3397,23 @@ VerboseOnCores: root # Accepted values: root all # - If a year is not available, you may use the GFED4_CLIMATOLOGY option instead #============================================================================== (((GFED4 -111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 1997-2022/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 +111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 (((GFED_subgrid_coag 111 FINN_DAILY_NUMBER $ROOT/FINN/v2015-02/FINN_daily_$YYYY_0.25x0.25_with_num.nc number 2002-2016/1-12/1/0 RF xy unitless * - 1 1 )))GFED_subgrid_coag (((GFED_daily -111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2003-2022/1-12/1-31/0 RF xy 1 * - 1 1 +111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2010-2023/1-12/1-31/0 RF xy 1 * - 1 1 )))GFED_daily (((GFED_3hourly -111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2003-2022/1-12/1/0-23 RF xy 1 * - 1 1 +111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2010-2023/1-12/1/0-23 RF xy 1 * - 1 1 )))GFED_3hourly )))GFED4 From 6931c74a9295494847e3ba8f8ccaa0fa91aefe30 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Fri, 10 May 2024 10:53:00 -0400 Subject: [PATCH 269/331] Update Github issue templates to use issue forms Here we have updated the Github issue template files to utilize forms. This involves using YAML configuration files instead of markdown. This should make issue submissions easier for users and will ensure users provide the required information. Note that issue forms are not supported for pull requests currently. The pull request form here has been cleaned up slightly. Addresses feature request https://github.com/geoschem/geos-chem/issues/1831. Signed-off-by: Melissa Sulprizio --- .github/ISSUE_TEMPLATE/bug-report.yml | 88 +++++++++++++++++++ .../new-feature-or-discussion.md | 17 ---- .github/ISSUE_TEMPLATE/new-feature.yml | 50 +++++++++++ .../ISSUE_TEMPLATE/question-discussion.yml | 23 +++++ .github/ISSUE_TEMPLATE/question-issue.md | 21 ----- .github/PULL_REQUEST_TEMPLATE.md | 8 +- CHANGELOG.md | 1 + 7 files changed, 164 insertions(+), 44 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug-report.yml delete mode 100644 .github/ISSUE_TEMPLATE/new-feature-or-discussion.md create mode 100644 .github/ISSUE_TEMPLATE/new-feature.yml create mode 100644 .github/ISSUE_TEMPLATE/question-discussion.yml delete mode 100644 .github/ISSUE_TEMPLATE/question-issue.md diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 000000000..90ddfcb8b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,88 @@ +name: Bug or Issue Report +description: Report a bug or issue with GEOS-Chem +title: "Put a one-line description here" +labels: ["category: Bug"] +body: + - type: input + id: name + attributes: + label: Your name + validations: + required: true + - type: input + id: affiliation + attributes: + label: Your affiliation + validations: + required: true + - type: textarea + id: what-happened + attributes: + label: What happened? What did you expect to happen? + placeholder: Describe your issue + validations: + required: true + - type: textarea + id: steps-to-reproduce + attributes: + label: What are the steps to reproduce the bug? + placeholder: Explain what you did + validations: + required: true + - type: textarea + id: log-files + attributes: + label: Please attach any relevant configuration and log files. + description: Drag and drop files like the GEOS-Chem log file, geoschem_config.rc, and HEMCO_Config.rc here. You may need to rename files to end in .txt first. + validations: + required: false + - type: input + id: version + attributes: + label: What GEOS-Chem version were you using? + placeholder: ex. 14.4.0 + validations: + required: true + - type: dropdown + id: machine + attributes: + label: What environment were you running GEOS-Chem on? + multiple: true + options: + - Local cluster + - AWS + - Personal computer + - Other (please explain below) + validations: + required: true + - type: dropdown + id: compiler + attributes: + label: What compiler were you using? + multiple: true + options: + - Intel + - GNU + - PGI + - Other (please specify below) + validations: + required: true + - type: dropdown + id: implemenation + attributes: + label: Will you be addressing this bug yourself? + description: If Yes, please also assign this issue to yourself (if possible) + multiple: false + options: + - "Yes" + - "Yes, but I will need some help" + - "No" + validations: + required: true + - type: textarea + id: additional-info + attributes: + label: Additional information + description: Please provide any additional information here that you think might be relevant. + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/new-feature-or-discussion.md b/.github/ISSUE_TEMPLATE/new-feature-or-discussion.md deleted file mode 100644 index b50374bed..000000000 --- a/.github/ISSUE_TEMPLATE/new-feature-or-discussion.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -name: Request a new GEOS-Chem feature or start a discussion -about: Use this form to request a new GEOS-Chem feature or start a discussion ---- - -### Name and Institution (Required) - -Name: -Institution: - -### Confirm you have reviewed the following documentation - -- [ ] [Contributing guidelines](https://geos-chem.readthedocs.io/en/stable/help-and-reference/CONTRIBUTING.html) - -### New GEOS-Chem feature or discussion - -Please provide a clear and concise overview of the discussion topic or new feature requested. diff --git a/.github/ISSUE_TEMPLATE/new-feature.yml b/.github/ISSUE_TEMPLATE/new-feature.yml new file mode 100644 index 000000000..ccd5a90d2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/new-feature.yml @@ -0,0 +1,50 @@ +name: Feature Request +description: Request a new GEOS-Chem feature +title: "Put a one-line description here" +labels: ["category: Feature Request"] +body: + - type: input + id: name + attributes: + label: Your name + validations: + required: true + - type: input + id: affiliation + attributes: + label: Your affiliation + validations: + required: true + - type: textarea + id: feature-description + attributes: + label: Provide a clear and concise overview of the new feature requested. + validations: + required: true + - type: textarea + id: reference + attributes: + label: Reference(s) + description: If this is a science update, please provide a literature citation. + placeholder: e.g. Bey, I., D. J. Jacob, R. M. Yantosca, J. A. Logan, B. Field, A. M. Fiore, Q. Li, H. Liu, L. J. Mickley, and M. Schultz, Global modeling of tropospheric chemistry with assimilated meteorology: Model description and evaluation, J. Geophys. Res., 106, 23,073-23,096, 2001. + validations: + required: false + - type: dropdown + id: implemenation + attributes: + label: Will you be implementing this feature yourself? + description: If Yes, please also assign this issue to yourself (if possible) + multiple: false + options: + - "Yes" + - "Yes, but I will need some help" + - "No" + validations: + required: true + - type: textarea + id: additional-info + attributes: + label: Additional information + description: Please provide any additional information here that you think might be relevant. + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/question-discussion.yml b/.github/ISSUE_TEMPLATE/question-discussion.yml new file mode 100644 index 000000000..d94d155d1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question-discussion.yml @@ -0,0 +1,23 @@ +name: Question or Discussion +description: Ask a question about GEOS-Chem or start a discussion +title: "Put a one-line description here" +labels: ["category: Question"] +body: + - type: input + id: name + attributes: + label: Your name + validations: + required: true + - type: input + id: affiliation + attributes: + label: Your affiliation + validations: + required: true + - type: textarea + id: description + attributes: + label: Please provide a clear and concise description of your question or discussion topic. + validations: + required: true \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/question-issue.md b/.github/ISSUE_TEMPLATE/question-issue.md deleted file mode 100644 index 35350726a..000000000 --- a/.github/ISSUE_TEMPLATE/question-issue.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: Ask a question about GEOS-Chem or report an issue with GEOS-Chem -about: Use this form to ask a question about GEOS-Chem or to report an issue ---- - -### Name and Institution (Required) - -Name: -Institution: - -### Confirm you have reviewed the following documentation - -- [ ] [Support guidelines](https://geos-chem.readthedocs.io/en/stable/help-and-reference/SUPPORT.html) -- [ ] [User manuals](https://geos-chem.readthedocs.io/en/stable/geos-chem-shared-docs/supplemental-guides/related-docs.html) -- [ ] [Debugging GEOS-Chem and HEMCO errors](https://geos-chem.readthedocs.io/en/stable/geos-chem-shared-docs/supplemental-guides/debug-guide.html) -- [ ] [Current and past Github issues](https://github.com/geoschem/geos-chem/issues) - -### Description of your issue or question - -Please provide as much detail as possible. Always include the GEOS-Chem version number and any relevant configuration and log files. - diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index f33b11a80..0875ee15a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -3,10 +3,6 @@ Name: Institution: -### Confirm you have reviewed the following documentation - -- [ ] [Contributing guidelines](https://geos-chem.readthedocs.io/en/stable/help-and-reference/CONTRIBUTING.html) - ### Describe the update Please provide a clear and concise overview of the update. @@ -19,6 +15,6 @@ Please provide details on how this update will impact model output and include p If this is a science update, please provide a literature citation. -### Related Github Issue(s) +### Related Github Issue -Please link to the corresponding Github issue here. If fixing a bug, there should be an issue describing it with steps to reproduce. +Please link to the corresponding Github issue(s) here. If fixing a bug, there should be an issue describing it with steps to reproduce. diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f31c29b3..d1b05cb6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Changed input data paths in `run/GEOS` directory to match location change on NASA discover cluster - Use new mask files at 0.1 x 0.1 degree resoluiton for CH4/tagCH4/carbon simulations to avoid I/O bottlenecks - Update config files for CH4/carbon simulations to avoid reading the same variable multiple times +- Converted Github issue templates to issue forms using YAML definition files ### Fixed - Corrected the formula for 1st order heterogeneous chemical loss on stratospheric aerosol for NO2, NO3, and VOC. From f2d9c428ccd6722f3a1e4c5cc48f117ddcf65c9c Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 10 May 2024 17:27:29 -0400 Subject: [PATCH 270/331] Make the GCHP DryDep collection consistent w/ GCClassic (fullchem) run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem - Add drydep species from GEOS-Chem Classic to avoid inconsistencies in the DryDep collection - Removed tabs; trimmed whitespace CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + .../HISTORY.rc.templates/HISTORY.rc.fullchem | 692 +++++++++--------- 2 files changed, 359 insertions(+), 334 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f31c29b3..e3291c6ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Change restart file time cycle flag from `EFYO` to `CYS` for TOMAS simulations to avoid missing species error. - Now define `REEVAPSO2` in wetscav_mod when units are kg species; this avoids floating-point errors. - Fixed `State_Met%FRSNO` to be fraction of grid box with snow rather than fraction of land with snow +- Fixed variable definitions in the `DryDep` collection of `run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem` ### Removed - Legacy binary punch diagnostic code contained within `#ifdef BPCH_DIAG` blocks diff --git a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem index f709106f7..535a8fb2e 100644 --- a/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem +++ b/run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem @@ -156,7 +156,7 @@ COLLECTIONS: @#'DefaultCollection', 'Met_PBLH ', 'GCHPchem', 'Met_AIRDEN ', 'GCHPchem', 'Met_PMID ', 'GCHPchem', - 'Met_PMIDDRY ', 'GCHPchem', + 'Met_PMIDDRY ', 'GCHPchem', 'Met_TropHt ', 'GCHPchem', 'Met_TropP ', 'GCHPchem', 'Met_BXHEIGHT ', 'GCHPchem', @@ -460,8 +460,8 @@ COLLECTIONS: @#'DefaultCollection', #'InvCEDSship_XYLE ', 'GCHPchem', #'InvAEIC_ACET ', 'GCHPchem', #'InvAEIC_ALD2 ', 'GCHPchem', - #'InvAEIC_ALK4 ', 'GCHPchem', - #'InvAEIC_BCPI ', 'GCHPchem', + #'InvAEIC_ALK4 ', 'GCHPchem', + #'InvAEIC_BCPI ', 'GCHPchem', #'InvAEIC_C2H6 ', 'GCHPchem', #'InvAEIC_C3H8 ', 'GCHPchem', #'InvAEIC_CH2O ', 'GCHPchem', @@ -502,7 +502,7 @@ COLLECTIONS: @#'DefaultCollection', #'InvSeaSalt_SALAAL ', 'GCHPchem', #'InvSeaSalt_SALACL ', 'GCHPchem', #'InvSeaSalt_SALCAL ', 'GCHPchem', - #'InvSeaSalt_SALCCL ', 'GCHPchem', + #'InvSeaSalt_SALCCL ', 'GCHPchem', #'InvMEGAN_ALD2 ', 'GCHPchem', ##'InvMEGAN_C2H4 ', 'GCHPchem', #'InvMEGAN_EOH ', 'GCHPchem', @@ -778,20 +778,20 @@ COLLECTIONS: @#'DefaultCollection', 'BudgetChemistryFull_O3 ', 'GCHPchem', 'BudgetConvectionFull_O3 ', 'GCHPchem', 'BudgetMixingFull_O3 ', 'GCHPchem', - 'BudgetEmisDryDepFull_O3 ', 'GCHPchem', + 'BudgetEmisDryDepFull_O3 ', 'GCHPchem', # - 'BudgetWetDepLevs1to35_O3 ', 'GCHPchem', + 'BudgetWetDepLevs1to35_O3 ', 'GCHPchem', 'BudgetChemistryLevs1to35_O3 ', 'GCHPchem', 'BudgetConvectionLevs1to35_O3 ', 'GCHPchem', 'BudgetMixingLevs1to35_O3 ', 'GCHPchem', 'BudgetEmisDryDepLevs1to35_O3 ', 'GCHPchem', - # + # 'BudgetWetDepTrop_O3 ', 'GCHPchem', 'BudgetChemistryTrop_O3 ', 'GCHPchem', 'BudgetConvectionTrop_O3 ', 'GCHPchem', 'BudgetMixingTrop_O3 ', 'GCHPchem', 'BudgetEmisDryDepTrop_O3 ', 'GCHPchem', - # + # 'BudgetWetDepPBL_O3 ', 'GCHPchem', 'BudgetChemistryPBL_O3 ', 'GCHPchem', 'BudgetConvectionPBL_O3 ', 'GCHPchem', @@ -1096,332 +1096,356 @@ COLLECTIONS: @#'DefaultCollection', DryDep.frequency: 010000 DryDep.duration: 010000 DryDep.mode: 'time-averaged' - DryDep.fields: 'DryDep_SOAS ', 'GCHPchem', - 'DryDep_SOAIE ', 'GCHPchem', - 'DryDep_SOAGX ', 'GCHPchem', - 'DryDep_SO4s ', 'GCHPchem', - 'DryDep_SO4 ', 'GCHPchem', - 'DryDep_SO2 ', 'GCHPchem', - 'DryDep_SALCCL ', 'GCHPchem', - 'DryDep_SALCAL ', 'GCHPchem', - 'DryDep_SALC ', 'GCHPchem', - 'DryDep_SALACL ', 'GCHPchem', - 'DryDep_SALAAL ', 'GCHPchem', - 'DryDep_SALA ', 'GCHPchem', - 'DryDep_RP ', 'GCHPchem', - 'DryDep_RIPD ', 'GCHPchem', - 'DryDep_RIPC ', 'GCHPchem', - 'DryDep_RIPB ', 'GCHPchem', - 'DryDep_RIPA ', 'GCHPchem', - 'DryDep_RB3P ', 'GCHPchem', - 'DryDep_RA3P ', 'GCHPchem', - 'DryDep_R4P ', 'GCHPchem', - 'DryDep_R4N2 ', 'GCHPchem', - 'DryDep_PYAC ', 'GCHPchem', - 'DryDep_PRPN ', 'GCHPchem', - 'DryDep_PROPNN ', 'GCHPchem', - 'DryDep_PPN ', 'GCHPchem', - 'DryDep_PP ', 'GCHPchem', - 'DryDep_pFe ', 'GCHPchem', - 'DryDep_PAN ', 'GCHPchem', - 'DryDep_OCPO ', 'GCHPchem', - 'DryDep_OCPI ', 'GCHPchem', - 'DryDep_O3 ', 'GCHPchem', - 'DryDep_NPRNO3 ', 'GCHPchem', - 'DryDep_NO2 ', 'GCHPchem', - 'DryDep_NITs ', 'GCHPchem', - 'DryDep_NIT ', 'GCHPchem', - 'DryDep_NH4 ', 'GCHPchem', - 'DryDep_NH3 ', 'GCHPchem', - 'DryDep_N2O5 ', 'GCHPchem', - 'DryDep_MVKPC ', 'GCHPchem', - 'DryDep_MVKN ', 'GCHPchem', - 'DryDep_MVKHP ', 'GCHPchem', - 'DryDep_MVKHCB ', 'GCHPchem', - 'DryDep_MVKHC ', 'GCHPchem', - 'DryDep_MVKDH ', 'GCHPchem', - 'DryDep_MVK ', 'GCHPchem', - 'DryDep_MTPO ', 'GCHPchem', - 'DryDep_MTPA ', 'GCHPchem', - 'DryDep_MSA ', 'GCHPchem', - 'DryDep_MPAN ', 'GCHPchem', - 'DryDep_MONITU ', 'GCHPchem', - 'DryDep_MONITS ', 'GCHPchem', - 'DryDep_MONITA ', 'GCHPchem', - 'DryDep_MOH ', 'GCHPchem', - 'DryDep_MGLY ', 'GCHPchem', - 'DryDep_MENO3 ', 'GCHPchem', - 'DryDep_MCRHP ', 'GCHPchem', - 'DryDep_MCRHNB ', 'GCHPchem', - 'DryDep_MCRHN ', 'GCHPchem', - 'DryDep_MCRENOL ', 'GCHPchem', - 'DryDep_MCRDH ', 'GCHPchem', - 'DryDep_MAP ', 'GCHPchem', - 'DryDep_MACR1OOH ', 'GCHPchem', - 'DryDep_MACR ', 'GCHPchem', - 'DryDep_LVOCOA ', 'GCHPchem', - 'DryDep_LVOC ', 'GCHPchem', - 'DryDep_LIMO ', 'GCHPchem', - 'DryDep_ITHN ', 'GCHPchem', - 'DryDep_ITCN ', 'GCHPchem', - 'DryDep_ISALC ', 'GCHPchem', - 'DryDep_ISALA ', 'GCHPchem', - 'DryDep_IPRNO3 ', 'GCHPchem', - 'DryDep_IONO2 ', 'GCHPchem', - 'DryDep_IONO ', 'GCHPchem', - 'DryDep_IONITA ', 'GCHPchem', - 'DryDep_INPD ', 'GCHPchem', - 'DryDep_INPB ', 'GCHPchem', - 'DryDep_INDIOL ', 'GCHPchem', - 'DryDep_IHN4 ', 'GCHPchem', - 'DryDep_IHN3 ', 'GCHPchem', - 'DryDep_IHN2 ', 'GCHPchem', - 'DryDep_IHN1 ', 'GCHPchem', - 'DryDep_IEPOXD ', 'GCHPchem', - 'DryDep_IEPOXB ', 'GCHPchem', - 'DryDep_IEPOXA ', 'GCHPchem', - 'DryDep_IDN ', 'GCHPchem', - 'DryDep_IDHPE ', 'GCHPchem', - 'DryDep_IDHDP ', 'GCHPchem', - 'DryDep_IDCHP ', 'GCHPchem', - 'DryDep_IDC ', 'GCHPchem', - 'DryDep_ICPDH ', 'GCHPchem', - 'DryDep_ICN ', 'GCHPchem', - 'DryDep_ICl ', 'GCHPchem', - 'DryDep_ICHE ', 'GCHPchem', - 'DryDep_IBr ', 'GCHPchem', - 'DryDep_I2O4 ', 'GCHPchem', - 'DryDep_I2O3 ', 'GCHPchem', - 'DryDep_I2O2 ', 'GCHPchem', - 'DryDep_I2 ', 'GCHPchem', - 'DryDep_HPETHNL ', 'GCHPchem', - 'DryDep_HPALD4 ', 'GCHPchem', - 'DryDep_HPALD3 ', 'GCHPchem', - 'DryDep_HPALD2 ', 'GCHPchem', - 'DryDep_HPALD1 ', 'GCHPchem', - 'DryDep_HONIT ', 'GCHPchem', - 'DryDep_HOI ', 'GCHPchem', - 'DryDep_HOCl ', 'GCHPchem', - 'DryDep_HOBr ', 'GCHPchem', - 'DryDep_HNO3 ', 'GCHPchem', - 'DryDep_HMS ', 'GCHPchem', - 'DryDep_HMML ', 'GCHPchem', - 'DryDep_HMHP ', 'GCHPchem', - 'DryDep_HI ', 'GCHPchem', - 'DryDep_HCOOH ', 'GCHPchem', - 'DryDep_HCl ', 'GCHPchem', - 'DryDep_HC5A ', 'GCHPchem', - 'DryDep_HBr ', 'GCHPchem', - 'DryDep_HAC ', 'GCHPchem', - 'DryDep_H2O2 ', 'GCHPchem', - 'DryDep_GLYX ', 'GCHPchem', - 'DryDep_GLYC ', 'GCHPchem', - 'DryDep_ETP ', 'GCHPchem', - 'DryDep_ETNO3 ', 'GCHPchem', - 'DryDep_ETHP ', 'GCHPchem', - 'DryDep_ETHN ', 'GCHPchem', - 'DryDep_ETHLN ', 'GCHPchem', - 'DryDep_EOH ', 'GCHPchem', - 'DryDep_DST4 ', 'GCHPchem', - 'DryDep_DST3 ', 'GCHPchem', - 'DryDep_DST2 ', 'GCHPchem', - 'DryDep_DST1 ', 'GCHPchem', - 'DryDep_ClOO ', 'GCHPchem', - 'DryDep_ClO ', 'GCHPchem', - 'DryDep_ClNO3 ', 'GCHPchem', - 'DryDep_ClNO2 ', 'GCHPchem', - 'DryDep_Cl2 ', 'GCHPchem', - 'DryDep_CH2O ', 'GCHPchem', - 'DryDep_BrSALC ', 'GCHPchem', - 'DryDep_BrSALA ', 'GCHPchem', - 'DryDep_BrNO3 ', 'GCHPchem', - 'DryDep_BrCl ', 'GCHPchem', - 'DryDep_Br2 ', 'GCHPchem', - 'DryDep_BCPO ', 'GCHPchem', - 'DryDep_BCPI ', 'GCHPchem', - 'DryDep_ATOOH ', 'GCHPchem', - 'DryDep_ALD2 ', 'GCHPchem', - 'DryDep_AERI ', 'GCHPchem', - 'DryDep_ACTA ', 'GCHPchem', - 'DryDep_ACET ', 'GCHPchem', - #'DryDep_TSOG3 ', 'GCHPchem', - #'DryDep_TSOG2 ', 'GCHPchem', - #'DryDep_TSOG1 ', 'GCHPchem', - #'DryDep_TSOG0 ', 'GCHPchem', - #'DryDep_TSOA3 ', 'GCHPchem', - #'DryDep_TSOA2 ', 'GCHPchem', - #'DryDep_TSOA1 ', 'GCHPchem', - #'DryDep_TSOA0 ', 'GCHPchem', - #'DryDep_ASOG3 ', 'GCHPchem', - #'DryDep_ASOG2 ', 'GCHPchem', - #'DryDep_ASOG1 ', 'GCHPchem', - #'DryDep_ASOAN ', 'GCHPchem', - #'DryDep_ASOA3 ', 'GCHPchem', - #'DryDep_ASOA2 ', 'GCHPchem', - #'DryDep_ASOA1 ', 'GCHPchem', - 'DryDepVel_SOAS ', 'GCHPchem', - 'DryDepVel_SOAIE ', 'GCHPchem', - 'DryDepVel_SOAGX ', 'GCHPchem', - 'DryDepVel_SO4s ', 'GCHPchem', - 'DryDepVel_SO4 ', 'GCHPchem', - 'DryDepVel_SO2 ', 'GCHPchem', - 'DryDepVel_SALCCL ', 'GCHPchem', - 'DryDepVel_SALCAL ', 'GCHPchem', - 'DryDepVel_SALC ', 'GCHPchem', - 'DryDepVel_SALACL ', 'GCHPchem', - 'DryDepVel_SALAAL ', 'GCHPchem', - 'DryDepVel_SALA ', 'GCHPchem', - 'DryDepVel_RP ', 'GCHPchem', - 'DryDepVel_RIPD ', 'GCHPchem', - 'DryDepVel_RIPC ', 'GCHPchem', - 'DryDepVel_RIPB ', 'GCHPchem', - 'DryDepVel_RIPA ', 'GCHPchem', - 'DryDepVel_RB3P ', 'GCHPchem', - 'DryDepVel_RA3P ', 'GCHPchem', - 'DryDepVel_R4P ', 'GCHPchem', - 'DryDepVel_R4N2 ', 'GCHPchem', - 'DryDepVel_PYAC ', 'GCHPchem', - 'DryDepVel_PRPN ', 'GCHPchem', - 'DryDepVel_PROPNN ', 'GCHPchem', - 'DryDepVel_PPN ', 'GCHPchem', - 'DryDepVel_PP ', 'GCHPchem', - 'DryDepVel_pFe ', 'GCHPchem', - 'DryDepVel_PAN ', 'GCHPchem', - 'DryDepVel_OCPO ', 'GCHPchem', - 'DryDepVel_OCPI ', 'GCHPchem', - 'DryDepVel_O3 ', 'GCHPchem', - 'DryDepVel_NPRNO3 ', 'GCHPchem', - 'DryDepVel_NO2 ', 'GCHPchem', - 'DryDepVel_NITs ', 'GCHPchem', - 'DryDepVel_NIT ', 'GCHPchem', - 'DryDepVel_NH4 ', 'GCHPchem', - 'DryDepVel_NH3 ', 'GCHPchem', - 'DryDepVel_N2O5 ', 'GCHPchem', - 'DryDepVel_MVKPC ', 'GCHPchem', - 'DryDepVel_MVKN ', 'GCHPchem', - 'DryDepVel_MVKHP ', 'GCHPchem', - 'DryDepVel_MVKHCB ', 'GCHPchem', - 'DryDepVel_MVKHC ', 'GCHPchem', - 'DryDepVel_MVKDH ', 'GCHPchem', - 'DryDepVel_MVK ', 'GCHPchem', - 'DryDepVel_MTPO ', 'GCHPchem', - 'DryDepVel_MTPA ', 'GCHPchem', - 'DryDepVel_MSA ', 'GCHPchem', - 'DryDepVel_MPAN ', 'GCHPchem', - 'DryDepVel_MONITU ', 'GCHPchem', - 'DryDepVel_MONITS ', 'GCHPchem', - 'DryDepVel_MONITA ', 'GCHPchem', - 'DryDepVel_MOH ', 'GCHPchem', - 'DryDepVel_MGLY ', 'GCHPchem', - 'DryDepVel_MENO3 ', 'GCHPchem', - 'DryDepVel_MCRHP ', 'GCHPchem', - 'DryDepVel_MCRHNB ', 'GCHPchem', - 'DryDepVel_MCRHN ', 'GCHPchem', - 'DryDepVel_MCRENOL ', 'GCHPchem', - 'DryDepVel_MCRDH ', 'GCHPchem', - 'DryDepVel_MAP ', 'GCHPchem', - 'DryDepVel_MACR1OOH ', 'GCHPchem', - 'DryDepVel_MACR ', 'GCHPchem', - 'DryDepVel_LVOCOA ', 'GCHPchem', - 'DryDepVel_LVOC ', 'GCHPchem', - 'DryDepVel_LIMO ', 'GCHPchem', - 'DryDepVel_ITHN ', 'GCHPchem', - 'DryDepVel_ITCN ', 'GCHPchem', - 'DryDepVel_ISALC ', 'GCHPchem', - 'DryDepVel_ISALA ', 'GCHPchem', - 'DryDepVel_IPRNO3 ', 'GCHPchem', - 'DryDepVel_IONO2 ', 'GCHPchem', - 'DryDepVel_IONO ', 'GCHPchem', - 'DryDepVel_IONITA ', 'GCHPchem', - 'DryDepVel_INPD ', 'GCHPchem', - 'DryDepVel_INPB ', 'GCHPchem', - 'DryDepVel_INDIOL ', 'GCHPchem', - 'DryDepVel_IHN4 ', 'GCHPchem', - 'DryDepVel_IHN3 ', 'GCHPchem', - 'DryDepVel_IHN2 ', 'GCHPchem', - 'DryDepVel_IHN1 ', 'GCHPchem', - 'DryDepVel_IEPOXD ', 'GCHPchem', - 'DryDepVel_IEPOXB ', 'GCHPchem', - 'DryDepVel_IEPOXA ', 'GCHPchem', - 'DryDepVel_IDN ', 'GCHPchem', - 'DryDepVel_IDHPE ', 'GCHPchem', - 'DryDepVel_IDHDP ', 'GCHPchem', - 'DryDepVel_IDCHP ', 'GCHPchem', - 'DryDepVel_IDC ', 'GCHPchem', - 'DryDepVel_ICPDH ', 'GCHPchem', - 'DryDepVel_ICN ', 'GCHPchem', - 'DryDepVel_ICl ', 'GCHPchem', - 'DryDepVel_ICHE ', 'GCHPchem', - 'DryDepVel_IBr ', 'GCHPchem', - 'DryDepVel_I2O4 ', 'GCHPchem', - 'DryDepVel_I2O3 ', 'GCHPchem', - 'DryDepVel_I2O2 ', 'GCHPchem', - 'DryDepVel_I2 ', 'GCHPchem', - 'DryDepVel_HPETHNL ', 'GCHPchem', - 'DryDepVel_HPALD4 ', 'GCHPchem', - 'DryDepVel_HPALD3 ', 'GCHPchem', - 'DryDepVel_HPALD2 ', 'GCHPchem', - 'DryDepVel_HPALD1 ', 'GCHPchem', - 'DryDepVel_HONIT ', 'GCHPchem', - 'DryDepVel_HOI ', 'GCHPchem', - 'DryDepVel_HOCl ', 'GCHPchem', - 'DryDepVel_HOBr ', 'GCHPchem', - 'DryDepVel_HNO3 ', 'GCHPchem', - 'DryDepVel_HMS ', 'GCHPchem', - 'DryDepVel_HMML ', 'GCHPchem', - 'DryDepVel_HMHP ', 'GCHPchem', - 'DryDepVel_HI ', 'GCHPchem', - 'DryDepVel_HCOOH ', 'GCHPchem', - 'DryDepVel_HCl ', 'GCHPchem', - 'DryDepVel_HC5A ', 'GCHPchem', - 'DryDepVel_HBr ', 'GCHPchem', - 'DryDepVel_HAC ', 'GCHPchem', - 'DryDepVel_H2O2 ', 'GCHPchem', - 'DryDepVel_GLYX ', 'GCHPchem', - 'DryDepVel_GLYC ', 'GCHPchem', - 'DryDepVel_ETP ', 'GCHPchem', - 'DryDepVel_ETNO3 ', 'GCHPchem', - 'DryDepVel_ETHP ', 'GCHPchem', - 'DryDepVel_ETHN ', 'GCHPchem', - 'DryDepVel_ETHLN ', 'GCHPchem', - 'DryDepVel_EOH ', 'GCHPchem', - 'DryDepVel_DST4 ', 'GCHPchem', - 'DryDepVel_DST3 ', 'GCHPchem', - 'DryDepVel_DST2 ', 'GCHPchem', - 'DryDepVel_DST1 ', 'GCHPchem', - 'DryDepVel_ClOO ', 'GCHPchem', - 'DryDepVel_ClO ', 'GCHPchem', - 'DryDepVel_ClNO3 ', 'GCHPchem', - 'DryDepVel_ClNO2 ', 'GCHPchem', - 'DryDepVel_Cl2 ', 'GCHPchem', - 'DryDepVel_CH2O ', 'GCHPchem', - 'DryDepVel_BrSALC ', 'GCHPchem', - 'DryDepVel_BrSALA ', 'GCHPchem', - 'DryDepVel_BrNO3 ', 'GCHPchem', - 'DryDepVel_BrCl ', 'GCHPchem', - 'DryDepVel_Br2 ', 'GCHPchem', - 'DryDepVel_BCPO ', 'GCHPchem', - 'DryDepVel_BCPI ', 'GCHPchem', - 'DryDepVel_ATOOH ', 'GCHPchem', - 'DryDepVel_ALD2 ', 'GCHPchem', - 'DryDepVel_AERI ', 'GCHPchem', - 'DryDepVel_ACTA ', 'GCHPchem', - 'DryDepVel_ACET ', 'GCHPchem', - #'DryDepVel_TSOG3 ', 'GCHPchem', - #'DryDepVel_TSOG2 ', 'GCHPchem', - #'DryDepVel_TSOG1 ', 'GCHPchem', - #'DryDepVel_TSOG0 ', 'GCHPchem', - #'DryDepVel_TSOA3 ', 'GCHPchem', - #'DryDepVel_TSOA2 ', 'GCHPchem', - #'DryDepVel_TSOA1 ', 'GCHPchem', - #'DryDepVel_TSOA0 ', 'GCHPchem', - #'DryDepVel_ASOG3 ', 'GCHPchem', - #'DryDepVel_ASOG2 ', 'GCHPchem', - #'DryDepVel_ASOG1 ', 'GCHPchem', - #'DryDepVel_ASOAN ', 'GCHPchem', - #'DryDepVel_ASOA3 ', 'GCHPchem', - #'DryDepVel_ASOA2 ', 'GCHPchem', - #'DryDepVel_ASOA1 ', 'GCHPchem', + DryDep.fields: 'DryDepVel_SOAS ', 'GCHPchem', + 'DryDepVel_SOAIE ', 'GCHPchem', + 'DryDepVel_SOAGX ', 'GCHPchem', + 'DryDepVel_SO4s ', 'GCHPchem', + 'DryDepVel_SO4 ', 'GCHPchem', + 'DryDepVel_SO2 ', 'GCHPchem', + 'DryDepVel_SALCCL ', 'GCHPchem', + 'DryDepVel_SALCAL ', 'GCHPchem', + 'DryDepVel_SALC ', 'GCHPchem', + 'DryDepVel_SALACL ', 'GCHPchem', + 'DryDepVel_SALAAL ', 'GCHPchem', + 'DryDepVel_SALA ', 'GCHPchem', + 'DryDepVel_RP ', 'GCHPchem', + 'DryDepVel_RIPD ', 'GCHPchem', + 'DryDepVel_RIPC ', 'GCHPchem', + 'DryDepVel_RIPB ', 'GCHPchem', + 'DryDepVel_RIPA ', 'GCHPchem', + 'DryDepVel_RB3P ', 'GCHPchem', + 'DryDepVel_RA3P ', 'GCHPchem', + 'DryDepVel_R4P ', 'GCHPchem', + 'DryDepVel_R4N2 ', 'GCHPchem', + 'DryDepVel_PYAC ', 'GCHPchem', + 'DryDepVel_PRPN ', 'GCHPchem', + 'DryDepVel_PROPNN ', 'GCHPchem', + 'DryDepVel_PPN ', 'GCHPchem', + 'DryDepVel_PP ', 'GCHPchem', + 'DryDepVel_PHEN ', 'GCHPchem', + 'DryDepVel_pFe ', 'GCHPchem', + 'DryDepVel_PAN ', 'GCHPchem', + 'DryDepVel_OCPO ', 'GCHPchem', + 'DryDepVel_OCPI ', 'GCHPchem', + 'DryDepVel_O3 ', 'GCHPchem', + 'DryDepVel_NPRNO3 ', 'GCHPchem', + 'DryDepVel_NPHEN ', 'GCHPchem', + 'DryDepVel_NO2 ', 'GCHPchem', + 'DryDepVel_NITs ', 'GCHPchem', + 'DryDepVel_NIT ', 'GCHPchem', + 'DryDepVel_NH4 ', 'GCHPchem', + 'DryDepVel_NH3 ', 'GCHPchem', + 'DryDepVel_N2O5 ', 'GCHPchem', + 'DryDepVel_MVKPC ', 'GCHPchem', + 'DryDepVel_MVKN ', 'GCHPchem', + 'DryDepVel_MVKHP ', 'GCHPchem', + 'DryDepVel_MVKHCB ', 'GCHPchem', + 'DryDepVel_MVKHC ', 'GCHPchem', + 'DryDepVel_MVKDH ', 'GCHPchem', + 'DryDepVel_MVK ', 'GCHPchem', + 'DryDepVel_MTPO ', 'GCHPchem', + 'DryDepVel_MTPA ', 'GCHPchem', + 'DryDepVel_MSA ', 'GCHPchem', + 'DryDepVel_MPAN ', 'GCHPchem', + 'DryDepVel_MONITU ', 'GCHPchem', + 'DryDepVel_MONITS ', 'GCHPchem', + 'DryDepVel_MONITA ', 'GCHPchem', + 'DryDepVel_MOH ', 'GCHPchem', + 'DryDepVel_MGLY ', 'GCHPchem', + 'DryDepVel_MENO3 ', 'GCHPchem', + 'DryDepVel_MCT ', 'GCHPchem', + 'DryDepVel_MCRHP ', 'GCHPchem', + 'DryDepVel_MCRHNB ', 'GCHPchem', + 'DryDepVel_MCRHN ', 'GCHPchem', + 'DryDepVel_MCRENOL ', 'GCHPchem', + 'DryDepVel_MCRDH ', 'GCHPchem', + 'DryDepVel_MAP ', 'GCHPchem', + 'DryDepVel_MACR1OOH ', 'GCHPchem', + 'DryDepVel_MACR ', 'GCHPchem', + 'DryDepVel_LVOCOA ', 'GCHPchem', + 'DryDepVel_LVOC ', 'GCHPchem', + 'DryDepVel_LIMO ', 'GCHPchem', + 'DryDepVel_ITHN ', 'GCHPchem', + 'DryDepVel_ITCN ', 'GCHPchem', + 'DryDepVel_ISALC ', 'GCHPchem', + 'DryDepVel_ISALA ', 'GCHPchem', + 'DryDepVel_IPRNO3 ', 'GCHPchem', + 'DryDepVel_IONO2 ', 'GCHPchem', + 'DryDepVel_IONO ', 'GCHPchem', + 'DryDepVel_IONITA ', 'GCHPchem', + 'DryDepVel_INPD ', 'GCHPchem', + 'DryDepVel_INPB ', 'GCHPchem', + 'DryDepVel_INDIOL ', 'GCHPchem', + 'DryDepVel_IHN4 ', 'GCHPchem', + 'DryDepVel_IHN3 ', 'GCHPchem', + 'DryDepVel_IHN2 ', 'GCHPchem', + 'DryDepVel_IHN1 ', 'GCHPchem', + 'DryDepVel_IEPOXD ', 'GCHPchem', + 'DryDepVel_IEPOXB ', 'GCHPchem', + 'DryDepVel_IEPOXA ', 'GCHPchem', + 'DryDepVel_IDN ', 'GCHPchem', + 'DryDepVel_IDHPE ', 'GCHPchem', + 'DryDepVel_IDHDP ', 'GCHPchem', + 'DryDepVel_IDCHP ', 'GCHPchem', + 'DryDepVel_IDC ', 'GCHPchem', + 'DryDepVel_ICPDH ', 'GCHPchem', + 'DryDepVel_ICN ', 'GCHPchem', + 'DryDepVel_ICl ', 'GCHPchem', + 'DryDepVel_ICHE ', 'GCHPchem', + 'DryDepVel_IBr ', 'GCHPchem', + 'DryDepVel_I2O4 ', 'GCHPchem', + 'DryDepVel_I2O3 ', 'GCHPchem', + 'DryDepVel_I2O2 ', 'GCHPchem', + 'DryDepVel_I2 ', 'GCHPchem', + 'DryDepVel_HPETHNL ', 'GCHPchem', + 'DryDepVel_HPALD4 ', 'GCHPchem', + 'DryDepVel_HPALD3 ', 'GCHPchem', + 'DryDepVel_HPALD2 ', 'GCHPchem', + 'DryDepVel_HPALD1 ', 'GCHPchem', + 'DryDepVel_HONIT ', 'GCHPchem', + 'DryDepVel_HOI ', 'GCHPchem', + 'DryDepVel_HOCl ', 'GCHPchem', + 'DryDepVel_HOBr ', 'GCHPchem', + 'DryDepVel_HNO3 ', 'GCHPchem', + 'DryDepVel_HMS ', 'GCHPchem', + 'DryDepVel_HMML ', 'GCHPchem', + 'DryDepVel_HMHP ', 'GCHPchem', + 'DryDepVel_HI ', 'GCHPchem', + 'DryDepVel_HCOOH ', 'GCHPchem', + 'DryDepVel_HCl ', 'GCHPchem', + 'DryDepVel_HC5A ', 'GCHPchem', + 'DryDepVel_HBr ', 'GCHPchem', + 'DryDepVel_HAC ', 'GCHPchem', + 'DryDepVel_H2O2 ', 'GCHPchem', + 'DryDepVel_GLYX ', 'GCHPchem', + 'DryDepVel_GLYC ', 'GCHPchem', + 'DryDepVel_FURA ', 'GCHPchem', + 'DryDepVel_ETP ', 'GCHPchem', + 'DryDepVel_ETNO3 ', 'GCHPchem', + 'DryDepVel_ETHP ', 'GCHPchem', + 'DryDepVel_ETHN ', 'GCHPchem', + 'DryDepVel_ETHLN ', 'GCHPchem', + 'DryDepVel_EOH ', 'GCHPchem', + 'DryDepVel_DST4 ', 'GCHPchem', + 'DryDepVel_DST3 ', 'GCHPchem', + 'DryDepVel_DST2 ', 'GCHPchem', + 'DryDepVel_DST1 ', 'GCHPchem', + 'DryDepVel_CSL ', 'GCHPchem', + 'DryDepVel_ClOO ', 'GCHPchem', + 'DryDepVel_ClO ', 'GCHPchem', + 'DryDepVel_ClNO3 ', 'GCHPchem', + 'DryDepVel_ClNO2 ', 'GCHPchem', + 'DryDepVel_Cl2 ', 'GCHPchem', + 'DryDepVel_CH2O ', 'GCHPchem', + 'DryDepVel_BZPAN ', 'GCHPchem', + 'DryDepVel_BZCO3H ', 'GCHPchem', + 'DryDepVel_BrSALC ', 'GCHPchem', + 'DryDepVel_BrSALA ', 'GCHPchem', + 'DryDepVel_BrNO3 ', 'GCHPchem', + 'DryDepVel_BrCl ', 'GCHPchem', + 'DryDepVel_Br2 ', 'GCHPchem', + 'DryDepVel_BENZP ', 'GCHPchem', + 'DryDepVel_BCPO ', 'GCHPchem', + 'DryDepVel_BCPI ', 'GCHPchem', + 'DryDepVel_BALD ', 'GCHPchem', + 'DryDepVel_ATOOH ', 'GCHPchem', + 'DryDepVel_AROMP5 ', 'GCHPchem', + 'DryDepVel_AROMP4 ', 'GCHPchem', + 'DryDepVel_AONITA ', 'GCHPchem', + 'DryDepVel_ALD2 ', 'GCHPchem', + 'DryDepVel_AERI ', 'GCHPchem', + 'DryDepVel_ACTA ', 'GCHPchem', + 'DryDepVel_ACET ', 'GCHPchem', + #'DryDepVel_TSOG3 ', 'GCHPchem', + #'DryDepVel_TSOG2 ', 'GCHPchem', + #'DryDepVel_TSOG1 ', 'GCHPchem', + #'DryDepVel_TSOG0 ', 'GCHPchem', + #'DryDepVel_TSOA3 ', 'GCHPchem', + #'DryDepVel_TSOA2 ', 'GCHPchem', + #'DryDepVel_TSOA1 ', 'GCHPchem', + #'DryDepVel_TSOA0 ', 'GCHPchem', + #'DryDepVel_ASOG3 ', 'GCHPchem', + #'DryDepVel_ASOG2 ', 'GCHPchem', + #'DryDepVel_ASOG1 ', 'GCHPchem', + #'DryDepVel_ASOAN ', 'GCHPchem', + #'DryDepVel_ASOA3 ', 'GCHPchem', + #'DryDepVel_ASOA2 ', 'GCHPchem', + #'DryDepVel_ASOA1 ', 'GCHPchem', + 'DryDepSOAS ', 'GCHPchem', + 'DryDepSOAIE ', 'GCHPchem', + 'DryDepSOAGX ', 'GCHPchem', + 'DryDepSO4s ', 'GCHPchem', + 'DryDepSO4 ', 'GCHPchem', + 'DryDepSO2 ', 'GCHPchem', + 'DryDepSALCCL ', 'GCHPchem', + 'DryDepSALCAL ', 'GCHPchem', + 'DryDepSALC ', 'GCHPchem', + 'DryDepSALACL ', 'GCHPchem', + 'DryDepSALAAL ', 'GCHPchem', + 'DryDepSALA ', 'GCHPchem', + 'DryDepRP ', 'GCHPchem', + 'DryDepRIPD ', 'GCHPchem', + 'DryDepRIPC ', 'GCHPchem', + 'DryDepRIPB ', 'GCHPchem', + 'DryDepRIPA ', 'GCHPchem', + 'DryDepRB3P ', 'GCHPchem', + 'DryDepRA3P ', 'GCHPchem', + 'DryDepR4P ', 'GCHPchem', + 'DryDepR4N2 ', 'GCHPchem', + 'DryDepPYAC ', 'GCHPchem', + 'DryDepPRPN ', 'GCHPchem', + 'DryDepPROPNN ', 'GCHPchem', + 'DryDepPPN ', 'GCHPchem', + 'DryDepPP ', 'GCHPchem', + 'DryDepPHEN ', 'GCHPchem', + 'DryDeppFe ', 'GCHPchem', + 'DryDepPAN ', 'GCHPchem', + 'DryDepOCPO ', 'GCHPchem', + 'DryDepOCPI ', 'GCHPchem', + 'DryDepO3 ', 'GCHPchem', + 'DryDepNPRNO3 ', 'GCHPchem', + 'DryDepNPHEN ', 'GCHPchem', + 'DryDepNO2 ', 'GCHPchem', + 'DryDepNITs ', 'GCHPchem', + 'DryDepNIT ', 'GCHPchem', + 'DryDepNH4 ', 'GCHPchem', + 'DryDepNH3 ', 'GCHPchem', + 'DryDepN2O5 ', 'GCHPchem', + 'DryDepMVKPC ', 'GCHPchem', + 'DryDepMVKN ', 'GCHPchem', + 'DryDepMVKHP ', 'GCHPchem', + 'DryDepMVKHCB ', 'GCHPchem', + 'DryDepMVKHC ', 'GCHPchem', + 'DryDepMVKDH ', 'GCHPchem', + 'DryDepMVK ', 'GCHPchem', + 'DryDepMTPO ', 'GCHPchem', + 'DryDepMTPA ', 'GCHPchem', + 'DryDepMSA ', 'GCHPchem', + 'DryDepMPAN ', 'GCHPchem', + 'DryDepMONITU ', 'GCHPchem', + 'DryDepMONITS ', 'GCHPchem', + 'DryDepMONITA ', 'GCHPchem', + 'DryDepMOH ', 'GCHPchem', + 'DryDepMGLY ', 'GCHPchem', + 'DryDepMENO3 ', 'GCHPchem', + 'DryDepMCT ', 'GCHPchem', + 'DryDepMCRHP ', 'GCHPchem', + 'DryDepMCRHNB ', 'GCHPchem', + 'DryDepMCRHN ', 'GCHPchem', + 'DryDepMCRENOL ', 'GCHPchem', + 'DryDepMCRDH ', 'GCHPchem', + 'DryDepMAP ', 'GCHPchem', + 'DryDepMACR1OOH ', 'GCHPchem', + 'DryDepMACR ', 'GCHPchem', + 'DryDepLVOCOA ', 'GCHPchem', + 'DryDepLVOC ', 'GCHPchem', + 'DryDepLIMO ', 'GCHPchem', + 'DryDepITHN ', 'GCHPchem', + 'DryDepITCN ', 'GCHPchem', + 'DryDepISALC ', 'GCHPchem', + 'DryDepISALA ', 'GCHPchem', + 'DryDepIPRNO3 ', 'GCHPchem', + 'DryDepIONO2 ', 'GCHPchem', + 'DryDepIONO ', 'GCHPchem', + 'DryDepIONITA ', 'GCHPchem', + 'DryDepINPD ', 'GCHPchem', + 'DryDepINPB ', 'GCHPchem', + 'DryDepINDIOL ', 'GCHPchem', + 'DryDepIHN4 ', 'GCHPchem', + 'DryDepIHN3 ', 'GCHPchem', + 'DryDepIHN2 ', 'GCHPchem', + 'DryDepIHN1 ', 'GCHPchem', + 'DryDepIEPOXD ', 'GCHPchem', + 'DryDepIEPOXB ', 'GCHPchem', + 'DryDepIEPOXA ', 'GCHPchem', + 'DryDepIDN ', 'GCHPchem', + 'DryDepIDHPE ', 'GCHPchem', + 'DryDepIDHDP ', 'GCHPchem', + 'DryDepIDCHP ', 'GCHPchem', + 'DryDepIDC ', 'GCHPchem', + 'DryDepICPDH ', 'GCHPchem', + 'DryDepICN ', 'GCHPchem', + 'DryDepICl ', 'GCHPchem', + 'DryDepICHE ', 'GCHPchem', + 'DryDepIBr ', 'GCHPchem', + 'DryDepI2O4 ', 'GCHPchem', + 'DryDepI2O3 ', 'GCHPchem', + 'DryDepI2O2 ', 'GCHPchem', + 'DryDepI2 ', 'GCHPchem', + 'DryDepHPETHNL ', 'GCHPchem', + 'DryDepHPALD4 ', 'GCHPchem', + 'DryDepHPALD3 ', 'GCHPchem', + 'DryDepHPALD2 ', 'GCHPchem', + 'DryDepHPALD1 ', 'GCHPchem', + 'DryDepHONIT ', 'GCHPchem', + 'DryDepHOI ', 'GCHPchem', + 'DryDepHOCl ', 'GCHPchem', + 'DryDepHOBr ', 'GCHPchem', + 'DryDepHNO3 ', 'GCHPchem', + 'DryDepHMS ', 'GCHPchem', + 'DryDepHMML ', 'GCHPchem', + 'DryDepHMHP ', 'GCHPchem', + 'DryDepHI ', 'GCHPchem', + 'DryDepHCOOH ', 'GCHPchem', + 'DryDepHCl ', 'GCHPchem', + 'DryDepHC5A ', 'GCHPchem', + 'DryDepHBr ', 'GCHPchem', + 'DryDepHAC ', 'GCHPchem', + 'DryDepH2O2 ', 'GCHPchem', + 'DryDepGLYX ', 'GCHPchem', + 'DryDepGLYC ', 'GCHPchem', + 'DryDepFURA ', 'GCHPchem', + 'DryDepETP ', 'GCHPchem', + 'DryDepETNO3 ', 'GCHPchem', + 'DryDepETHP ', 'GCHPchem', + 'DryDepETHN ', 'GCHPchem', + 'DryDepETHLN ', 'GCHPchem', + 'DryDepEOH ', 'GCHPchem', + 'DryDepDST4 ', 'GCHPchem', + 'DryDepDST3 ', 'GCHPchem', + 'DryDepDST2 ', 'GCHPchem', + 'DryDepDST1 ', 'GCHPchem', + 'DryDepCSL ', 'GCHPchem', + 'DryDepClOO ', 'GCHPchem', + 'DryDepClO ', 'GCHPchem', + 'DryDepClNO3 ', 'GCHPchem', + 'DryDepClNO2 ', 'GCHPchem', + 'DryDepCl2 ', 'GCHPchem', + 'DryDepCH2O ', 'GCHPchem', + 'DryDepBZPAN ', 'GCHPchem', + 'DryDepBZCO3H ', 'GCHPchem', + 'DryDepBrSALC ', 'GCHPchem', + 'DryDepBrSALA ', 'GCHPchem', + 'DryDepBrNO3 ', 'GCHPchem', + 'DryDepBrCl ', 'GCHPchem', + 'DryDepBr2 ', 'GCHPchem', + 'DryDepBENZP ', 'GCHPchem', + 'DryDepBCPO ', 'GCHPchem', + 'DryDepBCPI ', 'GCHPchem', + 'DryDepBALD ', 'GCHPchem', + 'DryDepATOOH ', 'GCHPchem', + 'DryDepAROMP5 ', 'GCHPchem', + 'DryDepAROMP4 ', 'GCHPchem', + 'DryDepAONITA ', 'GCHPchem', + 'DryDepALD2 ', 'GCHPchem', + 'DryDepAERI ', 'GCHPchem', + 'DryDepACTA ', 'GCHPchem', + 'DryDepACET ', 'GCHPchem', + #'DryDep_TSOG3 ', 'GCHPchem', + #'DryDep_TSOG2 ', 'GCHPchem', + #'DryDep_TSOG1 ', 'GCHPchem', + #'DryDep_TSOG0 ', 'GCHPchem', + #'DryDep_TSOA3 ', 'GCHPchem', + #'DryDep_TSOA2 ', 'GCHPchem', + #'DryDep_TSOA1 ', 'GCHPchem', + #'DryDep_TSOA0 ', 'GCHPchem', + #'DryDep_ASOG3 ', 'GCHPchem', + #'DryDep_ASOG2 ', 'GCHPchem', + #'DryDep_ASOG1 ', 'GCHPchem', + #'DryDep_ASOAN ', 'GCHPchem', + #'DryDep_ASOA3 ', 'GCHPchem', + #'DryDep_ASOA2 ', 'GCHPchem', + #'DryDep_ASOA1 ', 'GCHPchem', :: #============================================================================== # %%%%% THE JValues COLLECTION %%%%% From 093b956a0e4f51bcd73d6ce4ff7747749dcc0e75 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Thu, 16 May 2024 13:43:27 -0400 Subject: [PATCH 271/331] Retire tagCH4 simulation as an option in GCClassic IMPORTANT: This update impacts simulation numbers in createRunDir.sh for GCClassic. The tagged CH4 simulation has been removed as an option for GCClassic. This simulation is sparsely used. Also, the CH4, CO2, and tagCO simulations are slated for removal in an upcoming version in favor of the carbon simulation which can also be run in single tracer mode. If users want to utilize tagged CH4 tracers in the carbon simulation, they will need to make the modifications to the input files and chemistry mechanism. As noted above this update also reorders the simulation numbers when executing ./createRunDir for GCClassic. The carbon simulation has been bumped up the list to number 3 to confirm with alphabetical order. The CH4, CO2, and tagCO options have been moved to the end of the list in preparation for their eventual removal. The scripts that utilize simulation number (e.g. integrationTestCreate.sh and parallelTestCreate.sh for GCClassic) have also been updated. Any external user scripts that hardcode simulation number will need to be updated. For example, this will impact the IMI. Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 1 + GeosCore/chemistry_mod.F90 | 2 +- GeosCore/gc_environment_mod.F90 | 2 +- GeosCore/global_ch4_mod.F90 | 33 - GeosCore/hco_interface_gc_mod.F90 | 1 - GeosCore/hcoi_gc_diagn_mod.F90 | 544 -------- GeosCore/input_mod.F90 | 11 +- GeosCore/mixing_mod.F90 | 133 +- Headers/input_opt_mod.F90 | 2 - Headers/state_chm_mod.F90 | 2 +- Headers/state_diag_mod.F90 | 6 +- .../HEMCO_Config.rc.CH4 | 2 - .../HEMCO_Config.rc.carbon | 2 - .../HEMCO_Config.rc.tagCH4 | 1142 ----------------- .../HEMCO_Diagn.rc.CH4 | 48 - .../HEMCO_Diagn.rc.tagCH4 | 17 - .../HISTORY.rc.templates/HISTORY.rc.tagCH4 | 318 ----- run/GCClassic/createRunDir.sh | 42 +- .../geoschem_config.yml.tagCH4 | 112 -- run/GCClassic/setupForRestarts.sh | 30 +- .../HEMCO_Config.rc.carbon | 2 - run/GCHP/createRunDir.sh | 5 +- run/WRF/ch4/HEMCO_Config.rc | 2 - run/shared/download_data.yml | 3 - .../GCClassic/integrationTestCreate.sh | 43 +- test/parallel/GCClassic/parallelTestCreate.sh | 32 +- 26 files changed, 74 insertions(+), 2463 deletions(-) delete mode 100644 run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 delete mode 100644 run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.tagCH4 delete mode 100644 run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 delete mode 100644 run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.tagCH4 diff --git a/CHANGELOG.md b/CHANGELOG.md index e3291c6ee..4daa20f32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - GitHub config files `.github/stale.yml` and `.github/no-response.yml` - Unused CO2 and carbon simulation options from `geoschem_config.yml` (and from related code in co2_mod.F90). - Removed ISORROPIA +- Removed tagCH4 simulation as option ## [14.3.1] - 2024-04-02 ### Added diff --git a/GeosCore/chemistry_mod.F90 b/GeosCore/chemistry_mod.F90 index f1c10347e..f507b2612 100644 --- a/GeosCore/chemistry_mod.F90 +++ b/GeosCore/chemistry_mod.F90 @@ -968,7 +968,7 @@ SUBROUTINE Do_Chemistry( Input_Opt, State_Chm, State_Diag, & !===================================================================== ! CH4 !===================================================================== - ELSE IF ( Input_Opt%ITS_A_CH4_SIM .or. Input_Opt%ITS_A_TAGCH4_SIM ) THEN + ELSE IF ( Input_Opt%ITS_A_CH4_SIM ) THEN ! Do CH4 chemistry CALL ChemCh4( Input_Opt = Input_Opt, & diff --git a/GeosCore/gc_environment_mod.F90 b/GeosCore/gc_environment_mod.F90 index 6d4b413fe..de0b97ea1 100644 --- a/GeosCore/gc_environment_mod.F90 +++ b/GeosCore/gc_environment_mod.F90 @@ -693,7 +693,7 @@ SUBROUTINE GC_Init_Extra( Diag_List, Input_Opt, State_Chm, & !----------------------------------------------------------------- ! CH4 !----------------------------------------------------------------- - IF ( Input_Opt%ITS_A_CH4_SIM .or. Input_Opt%ITS_A_TAGCH4_SIM ) THEN + IF ( Input_Opt%ITS_A_CH4_SIM ) THEN CALL Init_Global_Ch4( Input_Opt, State_Chm, State_Diag, State_Grid, RC ) IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Error encountered in "Init_Global_CH4"!' diff --git a/GeosCore/global_ch4_mod.F90 b/GeosCore/global_ch4_mod.F90 index c7725347f..64dc749ee 100644 --- a/GeosCore/global_ch4_mod.F90 +++ b/GeosCore/global_ch4_mod.F90 @@ -215,26 +215,6 @@ SUBROUTINE CHEMCH4( Input_Opt, State_Chm, State_Diag, & RETURN ENDIF - !================================================================= - ! If multi-CH4 species, we store the CH4 total conc. to - ! distribute the sink after the chemistry. (ccc, 2/10/09) - !================================================================= - IF ( Input_Opt%ITS_A_TAGCH4_SIM ) THEN - - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L ) - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - PREVCH4(I,J,L) = Spc(1)%Conc(I,J,L) - ENDDO - ENDDO - ENDDO - !$OMP END PARALLEL DO - - ENDIF - !================================================================= ! Calculate rate of decay of CH4 by OH oxidation. !================================================================= @@ -247,13 +227,6 @@ SUBROUTINE CHEMCH4( Input_Opt, State_Chm, State_Diag, & CALL CH4_STRAT( Input_Opt, State_Chm, State_Diag, & State_Grid, State_Met, RC ) - !================================================================= - ! Distribute the chemistry sink from total CH4 to tagged species - !================================================================= - IF ( Input_Opt%ITS_A_TAGCH4_SIM ) THEN - CALL CH4_DISTRIB( Input_Opt, State_Chm, State_Grid, PREVCH4 ) - ENDIF - ! Free pointer Spc => NULL() @@ -381,9 +354,6 @@ SUBROUTINE CH4_DECAY( Input_Opt, State_Chm, State_Diag, & ! Advected species ID N = State_Chm%Map_Advect(NA) - ! Only do chemistry for the total CH4 tracer in tagCH4 simulations - IF ( Input_Opt%ITS_A_TAGCH4_SIM .and. NA > 1 ) CYCLE - !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED ) & !$OMP PRIVATE( I, J, L, KRATE, Spc2GCH4, GCH4, C_OH ) & @@ -856,9 +826,6 @@ SUBROUTINE CH4_STRAT( Input_Opt, State_Chm, State_Diag, & ! Advected species ID N = State_Chm%Map_Advect(NA) - ! Only do chemistry for the total CH4 tracer in tagCH4 simulations - IF ( Input_Opt%ITS_A_TAGCH4_SIM .and. NA > 1 ) CYCLE - !$OMP PARALLEL DO & !$OMP DEFAULT( SHARED ) & !$OMP PRIVATE( I, J, L, Spc2GCH4, GCH4, LRATE ) diff --git a/GeosCore/hco_interface_gc_mod.F90 b/GeosCore/hco_interface_gc_mod.F90 index 0c2ddbddc..0b09a27cc 100644 --- a/GeosCore/hco_interface_gc_mod.F90 +++ b/GeosCore/hco_interface_gc_mod.F90 @@ -3609,7 +3609,6 @@ SUBROUTINE SetHcoSpecies( Input_Opt, State_Chm, HcoState, nSpec, Phase, RC ) Input_Opt%ITS_A_CH4_SIM .or. & Input_Opt%ITS_A_MERCURY_SIM .or. & Input_Opt%ITS_A_POPS_SIM .or. & - Input_Opt%ITS_A_TAGCH4_SIM .or. & Input_Opt%ITS_A_TAGCO_SIM .or. & Input_Opt%ITS_A_TAGO3_SIM .or. & Input_Opt%ITS_A_TRACER_SIM .or. & diff --git a/GeosCore/hcoi_gc_diagn_mod.F90 b/GeosCore/hcoi_gc_diagn_mod.F90 index b2418688a..848fbab36 100644 --- a/GeosCore/hcoi_gc_diagn_mod.F90 +++ b/GeosCore/hcoi_gc_diagn_mod.F90 @@ -130,20 +130,6 @@ SUBROUTINE HCOI_GC_Diagn_Init( Input_Opt, HcoState, ExtState, RC ) ThisLoc = & ' -> at HCOI_GC_Diagn_Init (in module GeosCore/hcoi_gc_diagn_mod.F90)' - !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - !%%%% NOTE: Emissions for CH4 specialty simulations are passed to %%%% - !%%%% global_ch4_mod.F90 via HEMCO diagnostics, and not directly %%%% - !%%%% from the HEMCO state pointer. -- Bob Yantosca (25 Jan 2018) %%%% - !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - CALL Diagn_CH4( Input_Opt, HcoState, ExtState, RC ) - - ! Trap potential errors - IF ( RC /= HCO_SUCCESS ) THEN - ErrMsg = 'Error encountered in "Diagn_CH4"!' - CALL GC_Error( ErrMsg, RC, ThisLoc ) - RETURN - ENDIF - #ifdef TOMAS CALL Diagn_TOMAS( Input_Opt, HcoState, ExtState, RC ) IF ( RC /= HCO_SUCCESS ) RETURN @@ -154,536 +140,6 @@ SUBROUTINE HCOI_GC_Diagn_Init( Input_Opt, HcoState, ExtState, RC ) END SUBROUTINE HCOI_GC_Diagn_Init !EOC -!------------------------------------------------------------------------------ -! GEOS-Chem Global Chemical Transport Model ! -!------------------------------------------------------------------------------ -!BOP -! -! !IROUTINE: Diagn_CH4 -! -! !DESCRIPTION: Subroutine Diagn\_CH4 initializes diagnostics for the -! CH4 simulation (ND58). -!\\ -!\\ -! !INTERFACE: -! - SUBROUTINE Diagn_CH4( Input_Opt, HcoState, ExtState, RC ) -! -! !USES: -! - USE HCO_ExtList_Mod, ONLY : GetExtNr - USE HCO_State_Mod, ONLY : HCO_State - USE HCO_State_Mod, ONLY : HCO_GetHcoID - USE HCOX_State_Mod, ONLY : Ext_State - USE Input_Opt_Mod, ONLY : OptInput - USE State_Chm_Mod, ONLY : Ind_ -! -! !INPUT/OUTPUT PARAMETERS: -! - TYPE(OptInput), INTENT(INOUT) :: Input_Opt ! Input opts - TYPE(HCO_State), POINTER :: HcoState ! HEMCO state object - TYPE(EXT_State), POINTER :: ExtState ! Extensions state object - INTEGER, INTENT(INOUT) :: RC ! Failure or success -! -! !REMARKS: -! Split off code from HCOI_GC_Diagn_Init into smaller routines in order to -! make the code more manageable. -! -! Biomass diagnostics are defined in routine Diagn_Biomass. -!\\ -!\\ -! CH4 diagnostics need to be defined even if ND58 is turned off because -! the diagnostics are also being used to write CH4 emissions from the -! individual sources (gas, coal, etc.) into STT (in global\_ch4\_mod.F90). -! The categories defined here need to match the ones specified in the -! HEMCO configuration file. -! -! !REVISION HISTORY: -! 13 Sep 2014 - C. Keller - Initial version -! See https://github.com/geoschem/geos-chem for complete history -!EOP -!------------------------------------------------------------------------------ -!BOC -! -! !LOCAL VARIABLES: -! - INTEGER :: ExtNr, id_CH4, Cat, HcoID, N - CHARACTER(LEN=31) :: DiagnName - CHARACTER(LEN=255) :: MSG - CHARACTER(LEN=255) :: LOC = 'DIAGN_CH4 (hcoi_gc_diagn_mod.F90)' - - !======================================================================= - ! Define ND58 diagnostics (CH4 emissions) - !======================================================================= - - ! Assume success - RC = HCO_SUCCESS - - ! Exit if the CH4 simulation is not selected - IF ( ( .not. Input_Opt%ITS_A_CH4_SIM ) .and. & - ( .not. Input_Opt%ITS_A_TAGCH4_SIM ) .and. & - ( .not. Input_Opt%ITS_A_CARBON_SIM ) ) RETURN - - ! Get default HEMCO species ID for CH4 - id_CH4 = HCO_GetHcoID( 'CH4', HcoState ) - - ! Extension number is zero (HEMCO core) until defined otherwise - ExtNr = 0 - - !----------------------------------------------------------------- - ! %%%%% CH4 from oil (Category 1 or species CH4_OIL) %%%%% - !----------------------------------------------------------------- - - ! Check if tagged CH4 simulation - ! Otherwise, use CH4 category 1 emissions - Cat = 1 - HcoID = HCO_GetHcoID( 'CH4_OIL', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_OIL' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !----------------------------------------------------------------- - ! %%%%% CH4 from natural gas (Category 2 or species CH4_GAS) %%%%% - !----------------------------------------------------------------- - - ! Check if tagged CH4 simulation - ! Otherwise, use CH4 category 1 emissions - Cat = 2 - HcoID = HCO_GetHcoID( 'CH4_GAS', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_GAS' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !---------------------------------------------------------- - ! %%%%% CH4 from coal (Category 3 or species CH4_COL) %%%%% - !---------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 3 - HcoID = HCO_GetHcoID( 'CH4_COL', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_COAL' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !--------------------------------------------------------------- - ! %%%%% CH4 from livestock (Category 4 or species CH4_LIV) %%%%% - !--------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 4 - HcoID = HCO_GetHcoID( 'CH4_LIV', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_LIVESTOCK' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !--------------------------------------------------------------- - ! %%%%% CH4 from landfills (Category 5 or species CH4_LDF) %%%%% - !--------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 5 - HcoID = HCO_GetHcoID( 'CH4_LDF', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_LANDFILLS' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !--------------------------------------------------------------- - ! %%%%% CH4 from wastewater (Category 6 or species CH4_WST) %%%%% - !--------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 6 - HcoID = HCO_GetHcoID( 'CH4_WST', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_WASTEWATER' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !--------------------------------------------------------------- - ! %%%%% CH4 from rice (Category 7 or species CH4_RIC) %%%%% - !--------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 7 - HcoID = HCO_GetHcoID( 'CH4_RIC', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_RICE' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !------------------------------------------------------------------------- - ! %%%%% CH4 from other anth. sources (Category 8 or species CH4_OTA) %%%%% - !------------------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 8 - HcoID = HCO_GetHcoID( 'CH4_OTA', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_ANTHROTHER' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !------------------------------------------------------------------------- - ! %%%%% CH4 from biomass burning (Category 9 or species CH4_BBN) %%%%% - !------------------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 9 - HcoID = HCO_GetHcoID( 'CH4_BBN', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_BIOMASS' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !------------------------------------------------------------------------- - ! %%%%% CH4 from wetlands (Category 10 or species CH4_WTL) %%%%% - !------------------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 10 - HcoID = HCO_GetHcoID( 'CH4_WTL', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_WETLAND' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !------------------------------------------------------------------------- - ! %%%%% CH4 from seeps (Category 11 or species CH4_SEE) %%%%% - !------------------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 11 - HcoID = HCO_GetHcoID( 'CH4_SEE', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_SEEPS' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !------------------------------------------------------------------------- - ! %%%%% CH4 from lakes (Category 12 or species CH4_LAK) %%%%% - !------------------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 12 - HcoID = HCO_GetHcoID( 'CH4_LAK', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_LAKES' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !------------------------------------------------------------------------- - ! %%%%% CH4 from termites (Category 13 or species CH4_TER) %%%%% - !------------------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 13 - HcoID = HCO_GetHcoID( 'CH4_TER', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_TERMITES' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !------------------------------------------------------------------------- - ! %%%%% CH4 from soil absorption (Category 14 or species CH4_SAB) %%%%% - !------------------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 14 - HcoID = HCO_GetHcoID( 'CH4_SAB', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_SOILABSORB' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - !------------------------------------------------------------------------- - ! %%%%% CH4 from hydroelectric reservoirs (Category 15 or species CH4_RES) - !------------------------------------------------------------------------- - - ! Check if tagged CH4 simulation - Cat = 15 - HcoID = HCO_GetHcoID( 'CH4_RES', HcoState ) - IF ( HcoID <= 0 ) THEN - HcoID = id_CH4 - ENDIF - - IF ( HcoID > 0 ) THEN - - ! Create diagnostic container - DiagnName = 'CH4_RESERVOIRS' - CALL Diagn_Create( HcoState = HcoState, & - cName = TRIM( DiagnName ), & - ExtNr = ExtNr, & - Cat = Cat, & - Hier = -1, & - HcoID = HcoID, & - SpaceDim = 2, & - LevIDx = -1, & - OutUnit = 'kg/m2/s', & - COL = HcoState%Diagn%HcoDiagnIDManual, & - AutoFill = 1, & - RC = RC ) - IF ( RC /= HCO_SUCCESS ) RETURN - ENDIF - - END SUBROUTINE Diagn_CH4 -!EOC #ifdef TOMAS !------------------------------------------------------------------------------ ! GEOS-Chem Global Chemical Transport Model ! diff --git a/GeosCore/input_mod.F90 b/GeosCore/input_mod.F90 index 5e06a54be..15d0a6e48 100644 --- a/GeosCore/input_mod.F90 +++ b/GeosCore/input_mod.F90 @@ -233,8 +233,7 @@ SUBROUTINE Read_Input_File( Input_Opt, State_Grid, RC ) !======================================================================== ! CH4/carbon simulation settings - IF ( Input_Opt%Its_A_CH4_Sim .or. Input_Opt%Its_A_TagCH4_Sim .or. & - Input_Opt%Its_A_Carbon_Sim ) THEN + IF ( Input_Opt%Its_A_CH4_Sim .or. Input_Opt%Its_A_Carbon_Sim ) THEN CALL Config_CH4( Config, Input_Opt, RC ) IF ( RC /= GC_SUCCESS ) THEN errMsg = 'Error in "Config_CH4"!' @@ -432,7 +431,6 @@ SUBROUTINE Config_Simulation( Config, Input_Opt, RC ) TRIM(Sim) /= 'HG' .and. & TRIM(Sim) /= 'METALS' .and. & TRIM(Sim) /= 'POPS' .and. & - TRIM(Sim) /= 'TAGCH4' .and. & TRIM(Sim) /= 'TAGCO' .and. & TRIM(Sim) /= 'TAGO3' .and. & TRIM(Sim) /= 'TRANSPORTTRACERS' ) THEN @@ -440,7 +438,7 @@ SUBROUTINE Config_Simulation( Config, Input_Opt, RC ) errMsg = Trim( Input_Opt%SimulationName) // ' is not a' // & ' valid simulation. Supported simulations are:' // & ' aerosol, carbon, CH4, CO2, fullchem, Hg, Metals, POPs,' // & - ' TransportTracers, TagCH4, TagCO, or TagO3.' + ' TransportTracers, TagCO, or TagO3.' CALL GC_Error( errMsg, RC, thisLoc ) RETURN ENDIF @@ -454,7 +452,6 @@ SUBROUTINE Config_Simulation( Config, Input_Opt, RC ) Input_Opt%ITS_A_MERCURY_SIM = ( TRIM(Sim) == 'HG' ) Input_Opt%ITS_A_TRACEMETAL_SIM = ( TRIM(Sim) == 'METALS' ) Input_Opt%ITS_A_POPS_SIM = ( TRIM(Sim) == 'POPS' ) - Input_Opt%ITS_A_TAGCH4_SIM = ( TRIM(Sim) == 'TAGCH4' ) Input_Opt%ITS_A_TAGCO_SIM = ( TRIM(Sim) == 'TAGCO' ) Input_Opt%ITS_A_TAGO3_SIM = ( TRIM(Sim) == 'TAGO3' ) Input_Opt%ITS_A_TRACER_SIM = ( TRIM(Sim) == 'TRANSPORTTRACERS' ) @@ -1275,7 +1272,6 @@ SUBROUTINE Config_Timesteps( Config, Input_Opt, State_Grid, RC ) IF ( TRIM( Input_Opt%MetField ) == 'MERRA2' .and. & TRIM( State_Grid%GridRes ) == '0.5x0.625' ) THEN IF ( Input_Opt%ITS_A_CH4_SIM .or. & - Input_Opt%ITS_A_TAGCH4_SIM .or. & Input_Opt%ITS_A_CO2_SIM ) THEN IF ( Input_Opt%TS_DYN > 300 .or. Input_Opt%TS_CHEM > 600 ) THEN IF ( Input_Opt%amIRoot ) THEN @@ -1523,8 +1519,6 @@ SUBROUTINE Config_Transport( Config, Input_Opt, RC ) Input_Opt%LSPLIT = ( Input_Opt%N_ADVECT > 1 ) ! Tags if > 1 species ELSE IF ( Input_Opt%ITS_A_CARBON_SIM ) THEN Input_Opt%LSPLIT = ( Input_Opt%N_ADVECT > 4 ) ! Tags if > 4 species - ELSE IF ( Input_Opt%ITS_A_TAGCH4_SIM ) THEN - Input_Opt%LSPLIT = .TRUE. ! Always tag for this sim ELSE Input_Opt%LSPLIT = .FALSE. ENDIF @@ -3304,7 +3298,6 @@ SUBROUTINE Config_DryDep_WetDep( Config, Input_Opt, RC ) ! Turn off wetdep for simulations that don't need it IF ( Input_Opt%ITS_A_CH4_SIM ) Input_Opt%LWETD = .FALSE. - IF ( Input_Opt%ITS_A_TAGCH4_SIM ) Input_Opt%LWETD = .FALSE. IF ( Input_Opt%ITS_A_TAGCO_SIM ) Input_Opt%LWETD = .FALSE. IF ( Input_Opt%ITS_A_TAGO3_SIM ) Input_Opt%LWETD = .FALSE. diff --git a/GeosCore/mixing_mod.F90 b/GeosCore/mixing_mod.F90 index 9328f3778..399acebec 100644 --- a/GeosCore/mixing_mod.F90 +++ b/GeosCore/mixing_mod.F90 @@ -271,17 +271,12 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & INTEGER, SAVE :: id_ALK4, id_C2H6, id_C3H8, id_CH2O INTEGER, SAVE :: id_PRPE, id_O3, id_HNO3, id_BrO INTEGER, SAVE :: id_Br2, id_Br, id_HOBr, id_HBr - INTEGER, SAVE :: id_BrNO3, id_CH4_SAB, id_CO2 + INTEGER, SAVE :: id_BrNO3, id_CO2 ! Pointers and objects TYPE(Species), POINTER :: SpcInfo REAL(fp), POINTER :: DepFreq(:,:,: ) ! IM, JM, nDryDep - ! Temporary save for total ch4 (Xueying Yu, 12/08/2017) - REAL(fp) :: total_ch4_pre_soil_absorp(State_Grid%NX, & - State_Grid%NY, & - State_Grid%NZ) - ! Strings CHARACTER(LEN=255) :: ErrMsg, ErrorMsg, ThisLoc @@ -442,7 +437,6 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & id_HOBr = Ind_('HOBr' ) id_HBr = Ind_('HBr' ) id_BrNO3= Ind_('BrNO3') - id_CH4_SAB = Ind_('CH4_SAB') FIRST = .FALSE. ENDIF @@ -477,14 +471,6 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & Ptr2D => NULL() ENDIF - !----------------------------------------------------------------------- - ! For tagged CH4 simulations - ! Save the total CH4 concentration before apply soil absorption - !----------------------------------------------------------------------- - IF ( Input_Opt%ITS_A_TAGCH4_SIM ) THEN - total_ch4_pre_soil_absorp = State_Chm%Species(1)%Conc(:,:,:) - ENDIF - !======================================================================= ! Do for every advected species and grid box !======================================================================= @@ -795,41 +781,6 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & ENDIF ENDIF - !-------------------------------------------------------------- - ! Special handling for tagged CH4 simulations - ! - ! Tagged CH4 species are split off into a separate loop to - ! ensure we remove soil absorption from NA=1 (total CH4) first - !-------------------------------------------------------------- - IF ( Input_Opt%ITS_A_TAGCH4_SIM ) THEN - - ! If we are in the chemistry grid - IF ( L <= EMIS_TOP ) THEN - - ! Total CH4 species - IF ( NA == 1 ) THEN - - ! Get soil absorption from HEMCO. Units are [kg/m2/s]. - ! CH4_SAB is species #15 - CALL GetHcoValEmis ( Input_Opt, State_Grid, 15, I, J, L, FND, TMP ) - - ! Remove soil absorption from total CH4 emissions - IF ( FND ) THEN - - ! Flux: [kg/m2] = [kg m-2 s-1 ] x [s] - FLUX = TMP * TS - - ! Apply soil absorption as loss - State_Chm%Species(N)%Conc(I,J,L) = & - State_Chm%Species(N)%Conc(I,J,L) - FLUX - ENDIF - - ENDIF - - ENDIF - - ENDIF - ! Check for negative concentrations IF ( State_Chm%Species(N)%Conc(I,J,L) < 0.0_fp ) THEN #ifdef TOMAS @@ -841,19 +792,14 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & State_Chm%Species(N)%Conc(I,J,L) = 1e-26_fp #else - IF ( ( N /= id_CH4_SAB ) .and. ( N /= id_CO2 ) ) THEN - - ! KLUDGE: skip the warning message for CH4_SAB, which can be - ! negative (it's a soil absorption flux). The TagCH4 - ! simulation is not used regularly as of Feb 2021 -- fix this - ! later if need by. (bmy, 2/25/21) - Print*, 'WARNING: Negative concentration for species ', & - TRIM( SpcInfo%Name), ' at (I,J,L) = ', I, J, L - ErrorMsg = 'Negative species concentations encountered.' // & - ' This may be fixed by increasing the' // & - ' background concentration or by shortening' // & + IF ( N /= id_CO2 ) THEN + Print*, 'WARNING: Negative concentration for species ', & + TRIM( SpcInfo%Name), ' at (I,J,L) = ', I, J, L + ErrorMsg = 'Negative species concentations encountered.'// & + ' This may be fixed by increasing the' // & + ' background concentration or by shortening' // & ' the transport time step.' - RC = GC_FAILURE + RC = GC_FAILURE ENDIF #endif ENDIF @@ -874,69 +820,6 @@ SUBROUTINE DO_TEND( Input_Opt, State_Chm, State_Diag, State_Grid, & ENDDO !N - !-------------------------------------------------------------- - ! Special handling for tagged CH4 simulations - !-------------------------------------------------------------- - IF ( Input_Opt%ITS_A_TAGCH4_SIM ) THEN - - !$OMP PARALLEL DO & - !$OMP DEFAULT( SHARED ) & - !$OMP PRIVATE( I, J, L, N, NA, ErrorMsg ) - DO NA = 1, nAdvect - - ! Get the species ID from the advected species ID - N = State_Chm%Map_Advect(NA) - - ! Loop over all grid boxes - DO L = 1, State_Grid%NZ - DO J = 1, State_Grid%NY - DO I = 1, State_Grid%NX - - ! Tagged CH4 tracers - IF ( NA >= 2 .and. NA <= nAdvect-1 ) THEN - - ! Apply soil absorption to each tagged CH4 species - ! (Xueying Yu, 12/08/2017) - State_Chm%Species(N)%Conc(I,J,L) = & - SAFE_DIV(State_Chm%Species(N)%Conc(I,J,L), & - total_ch4_pre_soil_absorp(I,J,L), & - 0.e+0_fp) * & - State_Chm%Species(1)%Conc(I,J,L) - - ENDIF - - ! Check for negative concentrations - ! KLUDGE: skip the warning message for CH4_SAB, which can be - ! negative (it's a soil absorption flux). The TagCH4 simulation - ! is not used regularly as of Feb 2021 -- fix this later if - ! need by. (bmy, 2/25/21) - IF ( State_Chm%Species(N)%Conc(I,J,L) < 0.0_fp ) THEN - IF ( N /= id_CH4_SAB ) THEN - Print*, 'WARNING: Negative concentration for species ', & - TRIM( State_Chm%SpcData(N)%Info%Name), & - ' at (I,J,L) = ', I, J, L - ErrorMsg = 'Negative species concentations encountered.' // & - ' This may be fixed by increasing the' // & - ' background concentration or by shortening' // & - ' the transport time step.' - RC = GC_FAILURE - ENDIF - ENDIF - - ENDDO - ENDDO - ENDDO - ENDDO - !$OMP END PARALLEL DO - - ! Exit with error condition - IF ( RC /= GC_SUCCESS ) THEN - CALL GC_Error( ErrorMsg, RC, ThisLoc ) - RETURN - ENDIF - - ENDIF - #if defined( ADJOINT ) && defined ( DEBUG ) IF (Input_Opt%is_adjoint .and. Input_Opt%IS_FD_SPOT_THIS_PET) THEN WRITE(*,*) ' SpcAdj(IFD,JFD) before unit converstion: ', & diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index 81bc45d33..ba8a14e51 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -77,7 +77,6 @@ MODULE Input_Opt_Mod LOGICAL :: ITS_A_FULLCHEM_SIM LOGICAL :: ITS_A_MERCURY_SIM LOGICAL :: ITS_A_POPS_SIM - LOGICAL :: ITS_A_TAGCH4_SIM LOGICAL :: ITS_A_TAGCO_SIM LOGICAL :: ITS_A_TAGO3_SIM LOGICAL :: ITS_A_TRACEMETAL_SIM @@ -559,7 +558,6 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) Input_Opt%ITS_A_FULLCHEM_SIM = .FALSE. Input_Opt%ITS_A_MERCURY_SIM = .FALSE. Input_Opt%ITS_A_POPS_SIM = .FALSE. - Input_Opt%ITS_A_TAGCH4_SIM = .FALSE. Input_Opt%ITS_A_TAGCO_SIM = .FALSE. Input_Opt%ITS_A_TAGO3_SIM = .FALSE. Input_Opt%ITS_A_TRACEMETAL_SIM = .FALSE. diff --git a/Headers/state_chm_mod.F90 b/Headers/state_chm_mod.F90 index 2ce446a63..4a013f1a6 100644 --- a/Headers/state_chm_mod.F90 +++ b/Headers/state_chm_mod.F90 @@ -2274,7 +2274,7 @@ SUBROUTINE Init_State_Chm( Input_Opt, State_Chm, State_Grid, RC ) !======================================================================= ! Initialize State_Chm quantities pertinent to CH4 simulations !======================================================================= - IF ( Input_Opt%ITS_A_CH4_SIM .or. Input_Opt%ITS_A_TAGCH4_SIM ) THEN + IF ( Input_Opt%ITS_A_CH4_SIM ) THEN ! Global OH and Cl from HEMCO input chmId = 'BOH' CALL Init_and_Register( & diff --git a/Headers/state_diag_mod.F90 b/Headers/state_diag_mod.F90 index e215059d6..5ed1fc66e 100644 --- a/Headers/state_diag_mod.F90 +++ b/Headers/state_diag_mod.F90 @@ -7265,8 +7265,7 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & !======================================================================= IF ( Input_Opt%ITS_A_FULLCHEM_SIM .or. & Input_Opt%ITS_A_CARBON_SIM .or. & - Input_Opt%ITS_A_CH4_SIM .or. & - Input_Opt%ITS_A_TAGCH4_SIM ) THEN + Input_Opt%ITS_A_CH4_SIM ) THEN !-------------------------------------------------------------------- ! OH concentration upon exiting the FlexChem solver (fullchem @@ -10766,7 +10765,6 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & ! THE CH4 SPECIALTY SIMULATION !======================================================================= IF ( Input_Opt%ITS_A_CH4_SIM .or. & - Input_Opt%ITS_A_TAGCH4_SIM .or. & Input_Opt%ITS_A_CARBON_SIM ) THEN !-------------------------------------------------------------------- @@ -10861,7 +10859,7 @@ SUBROUTINE Init_State_Diag( Input_Opt, State_Chm, State_Grid, & IF ( Found ) THEN ErrMsg = TRIM( diagId ) // ' is a requested diagnostic, ' // & 'but this is only appropriate for the CH4 ' // & - 'and tagged CH4 specialty simulations.' + 'and carbon specialty simulations.' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN ENDIF diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index bdbba3e96..65adc314e 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -482,8 +482,6 @@ VerboseOnCores: root # Accepted values: root all # - Multiply soil absorption by -1 to get a "negative" flux. # (Only apply the scaling factor when adding to the total CH4 simulation) # - Use updated soil absorption emissions with seasonality applied -# - For tagged CH4 simulations soil absorption is treated as a loss and applied -# in mixing_mod.F #============================================================================== (((FUNG_TERMITES 0 CH4_TERMITES $ROOT/CH4/v2022-11/4x5/termites.geos.4x5.nc CH4 1985/1/1/0 C xy kg/m2/s CH4 - 13 1 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index e7339590d..dd41b6536 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -524,8 +524,6 @@ Mask fractions: false # - Multiply soil absorption by -1 to get a "negative" flux. # (Only apply the scaling factor when adding to the total CH4 simulation) # - Use updated soil absorption emissions with seasonality applied -# - For tagged CH4 simulations soil absorption is treated as a loss and applied -# in mixing_mod.F #============================================================================== (((FUNG_TERMITES 0 CH4_TERMITES $ROOT/CH4/v2022-11/4x5/termites.geos.4x5.nc CH4 1985/1/1/0 C xy kg/m2/s CH4 - 13 1 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 deleted file mode 100644 index 21b24de38..000000000 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.tagCH4 +++ /dev/null @@ -1,1142 +0,0 @@ -#------------------------------------------------------------------------------ -# Harmonized Emissions Component (HEMCO) ! -#------------------------------------------------------------------------------ -#BOP -# -# !MODULE: HEMCO_Config.rc -# -# !DESCRIPTION: Contains configuration information for HEMCO. Define the -# emissions inventories and corresponding file paths here. Entire -# configuration files can be inserted into this configuration file with -# an '>>>include' statement, e.g. '>>>include HEMCO\_Config\_test.rc' -# The settings of include-files will be ignored. -#\\ -#\\ -# !REMARKS: -# This file has been customized for the CH4 simulation. -# See The HEMCO User's Guide for file details: -# http://wiki.geos-chem.org/The_HEMCO_User%27s_Guide -# -# NOTE: To avoid duplicate container names, we have appended "_T" to -# the container names that denote one of the tagged CH4 species. -# For example, "CH4_OILGAS_T" denotes the contribution from EDGAR -# oil and gas that goes into tagged species "CH4_OIL", and -# "CH4_OILGAS" is the contribution that goes into the total -# "CH4" species. -# -# !REVISION HISTORY: -# See https://github.com/geoschem/geos-chem for complete history -#EOP -#------------------------------------------------------------------------------ -#BOC -############################################################################### -### BEGIN SECTION SETTINGS -############################################################################### - -ROOT: ${RUNDIR_DATA_ROOT}/HEMCO -GCAPSCENARIO: ${RUNDIR_GCAP2_SCENARIO} -GCAPVERTRES: ${RUNDIR_GCAP2_VERTRES} -Logfile: * -DiagnFile: HEMCO_Diagn.rc -DiagnPrefix: ./OutputDir/HEMCO_diagnostics -DiagnFreq: Monthly -Wildcard: * -Separator: / -Unit tolerance: 1 -Negative values: 2 -Only unitless scale factors: false -Verbose: false -VerboseOnCores: root # Accepted values: root all - -### END SECTION SETTINGS ### - -############################################################################### -### BEGIN SECTION EXTENSION SWITCHES -############################################################################### -# ExtNr ExtName on/off Species Years avail. -0 Base : on * -# ----- MAIN SWITCHES --------------------------------------------------------- - --> EMISSIONS : true - --> METEOROLOGY : true ${RUNDIR_MET_AVAIL} - --> CHEMISTRY_INPUT : true -# ----- RESTART FIELDS -------------------------------------------------------- - --> GC_RESTART : true -# ----- NESTED GRID FIELDS ---------------------------------------------------- - --> GC_BCs : ${RUNDIR_USE_BCs} -# ----- REGIONAL INVENTORIES -------------------------------------------------- - --> GHGI_v2 : false # 2012-2018 - --> GHGI_v2_Express_Ext : true # 2012-2020 - --> Scarpelli_Canada : true # 2018 - --> Scarpelli_Mexico : true # 2015 -# ----- GLOBAL INVENTORIES ---------------------------------------------------- - --> GFEIv2 : true # 2019 - --> EDGARv8 : true # 2010-2022 - --> QFED2 : false # 2009-2015 - --> JPL_WETCHARTS : true # 2009-2017 - --> SEEPS : true # 2012 - --> LAKES : false # 2009-2015 - --> RESERVOIRS : true # 2022 - --> FUNG_TERMITES : true # 1985 - --> FUNG_SOIL_ABSORPTION : false # 2009-2015 - --> MeMo_SOIL_ABSORPTION : true # 1990-2009 or clim. -# ----- FUTURE EMISSIONS ------------------------------------------------------ - --> RCP_3PD : false # 2005-2100 - --> RCP_45 : false # 2005-2100 - --> RCP_60 : false # 2005-2100 - --> RCP_85 : false # 2005-2100 -# ----- CMIP6 ANTHRO EMISSIONS ------------------------------------------------ -# Set GCAPSCENARIO (e.g., HIST, SSP585) above in SECTION SETTINGS - --> CMIP6_SFC_LAND_ANTHRO : false # 1850-2100 - --> CMIP6_SHIP : false # 1850-2100 - --> BB4MIPS : false # 1850-2100 -# ----- NON-EMISSIONS DATA ---------------------------------------------------- - --> CH4_LOSS_FREQ : true # 1985 - --> GLOBAL_OH : true # 2010-2019 - --> GLOBAL_CL : true # 2010-2019 - --> OLSON_LANDMAP : true # 1985 - --> YUAN_MODIS_LAI : true # 2000-2020 -# ----- OPTIONS FOR ANALYTICAL INVERSIONS ------------------------------------ - --> AnalyticalInversion : false - --> UseTotalPriorEmis : false # Skips global/regional inventories - --> Emis_PosteriorSF : false # Apply posterior scale factors to total emis? - --> OH_PosteriorSF : false # Apply posterior scale factor to global OH? -# ----------------------------------------------------------------------------- -111 GFED : on CH4/CH4_BBN - --> GFED4 : true - --> GFED_daily : true - --> GFED_3hourly : false - --> Scaling_CO : 1.05 - --> Scaling_NAP : 2.75e-4 - --> hydrophilic BC : 0.2 - --> hydrophilic OC : 0.5 - --> fraction POG1 : 0.49 -114 FINN : off CH4 - --> FINN_daily : true - --> Scaling_CO : 1.0 - --> hydrophilic BC : 0.2 - --> hydrophilic OC : 0.5 - -### END SECTION EXTENSION SWITCHES ### - -############################################################################### -### BEGIN SECTION BASE EMISSIONS -############################################################################### - -# ExtNr Name sourceFile sourceVar sourceTime C/R/E SrcDim SrcUnit Species ScalIDs Cat Hier - -(((EMISSIONS - -#============================================================================== -# ---Total CH4 emissions (all sectors) from prior simulation --- -#============================================================================== -(((UseTotalPriorEmis - -(((Emis_PosteriorSF -0 CH4_Emis_Prior ../../prior_run/OutputDir/HEMCO_sa_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 3 1 500 -)))Emis_PosteriorSF - -(((.not.Emis_PosteriorSF -0 CH4_Emis_Prior ../../prior_run/OutputDir/HEMCO_sa_diagnostics.$YYYY$MM$DD0000.nc EmisCH4_Total $YYYY/$MM/$DD/0 C xy kg/m2/s CH4 - 1 500 -))).not.Emis_PosteriorSF - -)))UseTotalPriorEmis - -(((.not.UseTotalPriorEmis -#============================================================================== -# --- Gridded GHGI v2 (Maasakkers et al., submitted to ES&T, 2023) --- -# -# NOTES: -# - This is the main Gridded GHGI v2 dataset based off the US GHGI published in 2020 -# - Use Hier=100 to add to Canada and Mexico regional inventories -#============================================================================== -(((GHGI_v2 -### Oil ### -0 GHGI_OIL_EXPLORATION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OIL 51/1008 1 100 -0 GHGI_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1008 1 100 -0 GHGI_OIL_PRODUCTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OIL 52/1008 1 100 -0 GHGI_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1008 1 100 -0 GHGI_OIL_REFINING_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OIL 53/1008 1 100 -0 GHGI_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1008 1 100 -0 GHGI_OIL_TRANSPORT_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OIL 54/1008 1 100 -0 GHGI_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 54/1008 1 100 - -### Gas ### -0 GHGI_GAS_DISTRIBUTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_GAS 1008 2 100 -0 GHGI_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 -0 GHGI_GAS_EXPLORATION _T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_GAS 55/1008 2 100 -0 GHGI_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 55/1008 2 100 -0 GHGI_GAS_PROCESSING_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_GAS 1008 2 100 -0 GHGI_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 -0 GHGI_GAS_PRODUCTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_GAS 56/1008 2 100 -0 GHGI_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 56/1008 2 100 -0 GHGI_GAS_TRANSMISSION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_GAS 1008 2 100 -0 GHGI_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 2 100 - -### Coal ### -0 GHGI_COAL_UNDERGROUND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_COL 1008 3 100 -0 GHGI_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 -0 GHGI_COAL_SURFACE_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_COL 1008 3 100 -0 GHGI_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 -0 GHGI_COAL_ABANDONED_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_COL 1008 3 100 -0 GHGI_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 3 100 - -### Livestock ### -0 GHGI_LIVESTOCK_ENT_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_LIV 1008 4 100 -0 GHGI_LIVESTOCK_ENT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 4 100 -0 GHGI_LIVESTOCK_MAN_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_LIV 57/1008 4 100 -0 GHGI_LIVESTOCK_MAN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1008 4 100 - -### Landfills ### -0 GHGI_LANDFILLS_IND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_LDF 1008 5 100 -0 GHGI_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 -0 GHGI_LANDFILLS_MSW_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_LDF 1008 5 100 -0 GHGI_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 -0 GHGI_LANDFILLS_COMP_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_LDF 1008 5 100 -0 GHGI_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 5 100 - -### Wastewater ### -0 GHGI_WASTEWATER_DOM_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_WST 1008 6 100 -0 GHGI_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 -0 GHGI_WASTEWATER_IND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_WST 1008 6 100 -0 GHGI_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 6 100 - -### Rice ### -0 GHGI_RICE_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_RIC 58/1008 7 100 -0 GHGI_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1008 7 100 - -### Other Anthro ### -0 GHGI_OTHER_MCOMB_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_OTA 1008 8 100 -0 GHGI_OTHER_MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_SCOMB_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OTA 50/1008 8 100 -0 GHGI_OTHER_SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1008 8 100 -0 GHGI_OTHER_PIND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_OTA 1008 8 100 -0 GHGI_OTHER_PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_FIND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_OTA 1008 8 100 -0 GHGI_OTHER_FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 -0 GHGI_OTHER_BURN_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OTA 59/1008 8 100 -0 GHGI_OTHER_BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 59/1008 8 100 -0 GHGI_OTHER_ABOG_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_OTA 1008 8 100 -0 GHGI_OTHER_ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1008 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI; mask=1009) ### -0 GHGI_COAST_OIL_EXPLORATION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OIL 51/1009 1 5 -0 GHGI_COAST_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 51/1009 1 5 -0 GHGI_COAST_OIL_PRODUCTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OIL 52/1009 1 5 -0 GHGI_COAST_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 52/1009 1 5 -0 GHGI_COAST_OIL_REFINING_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OIL 53/1009 1 5 -0 GHGI_COAST_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 53/1009 1 5 -0 GHGI_COAST_OIL_TRANSPORT_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OIL 54/1009 1 5 -0 GHGI_COAST_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 54/1009 1 5 -0 GHGI_COAST_GAS_DISTRIBUTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_GAS 1009 2 5 -0 GHGI_COAST_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_GAS_EXPLORATION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_GAS 55/1009 2 5 -0 GHGI_COAST_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 55/1009 2 5 -0 GHGI_COAST_GAS_PROCESSING_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_GAS 1009 2 5 -0 GHGI_COAST_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_GAS_PRODUCTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_GAS 56/1009 2 5 -0 GHGI_COAST_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 56/1009 2 5 -0 GHGI_COAST_GAS_TRANSMISSION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_GAS 1009 2 5 -0 GHGI_COAST_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 2 5 -0 GHGI_COAST_COAL_UNDERGROUND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_COL 1009 3 5 -0 GHGI_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_COAL_SURFACE_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_COL 1009 3 5 -0 GHGI_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_COAL_ABANDONED_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_COL 1009 3 5 -0 GHGI_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 3 5 -0 GHGI_COAST_LIVESTOCK__4A_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_LIV 1009 4 1 -0 GHGI_COAST_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 4 1 -0 GHGI_COAST_LIVESTOCK__4B_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_LIV 57/1009 4 1 -0 GHGI_COAST_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 57/1009 4 1 -0 GHGI_COAST_LANDFILLS_IND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_LDF 1009 5 1 -0 GHGI_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_LANDFILLS_MSW_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_LDF 1009 5 1 -0 GHGI_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_LANDFILLS_COMP_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_LDF 1009 5 1 -0 GHGI_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 5 1 -0 GHGI_COAST_WASTEWATER_DOM_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_WST 1009 6 1 -0 GHGI_COAST_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 6 1 -0 GHGI_COAST_WASTEWATER_IND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_WST 1009 6 1 -0 GHGI_COAST_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 6 1 -0 GHGI_COAST_RICE_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_RIC 58/1009 7 1 -0 GHGI_COAST_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 58/1009 7 1 -0 GHGI_COAST_OTHER__MCOMB_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_OTA 1009 8 1 -0 GHGI_COAST_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__SCOMB_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OTA 50/1009 8 1 -0 GHGI_COAST_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 50/1009 8 1 -0 GHGI_COAST_OTHER__PIND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_OTA 1009 8 1 -0 GHGI_COAST_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__FIND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_OTA 1009 8 1 -0 GHGI_COAST_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -0 GHGI_COAST_OTHER__BURN_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4_OTA 59/1009 8 1 -0 GHGI_COAST_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2018/1-12/1/0 EFY xy molec/cm2/s CH4 59/1009 8 1 -0 GHGI_COAST_OTHER__ABOG_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4_OTA 1009 8 1 -0 GHGI_COAST_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2018/1/1/0 EFY xy molec/cm2/s CH4 1009 8 1 -)))GHGI_v2 - -#======================================================================================= -# --- Gridded GHGI v2 Express Extension (Maasakkers et al., submitted to ES&T, 2023) --- -# -# NOTES: -# - Based off the US GHGI published in 2022. -# - Uses annual source-specific spatial patterns from 2012-2018 from the main -# dataset to quickly incorporate more recent national methane emission estimates. -# - Emissions for years after 2018 follow the 2018 spatial patterns. -#======================================================================================= -(((GHGI_v2_Express_Ext -(((.not.GHGI_v2 -### Oil ### -0 GHGI_EE_OIL_EXPLORATION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OIL 51/1008 1 100 -0 GHGI_EE_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 51/1008 1 100 -0 GHGI_EE_OIL_PRODUCTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OIL 52/1008 1 100 -0 GHGI_EE_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 52/1008 1 100 -0 GHGI_EE_OIL_REFINING_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OIL 53/1008 1 100 -0 GHGI_EE_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 53/1008 1 100 -0 GHGI_EE_OIL_TRANSPORT_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OIL 54/1008 1 100 -0 GHGI_EE_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 54/1008 1 100 - -### Gas ### -0 GHGI_EE_GAS_DISTRIBUTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4_GAS 1008 2 100 -0 GHGI_EE_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_EXPLORATION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_GAS 55/1008 2 100 -0 GHGI_EE_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 55/1008 2 100 -0 GHGI_EE_GAS_PROCESSING_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4_GAS 1008 2 100 -0 GHGI_EE_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_PRODUCTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_GAS 56/1008 2 100 -0 GHGI_EE_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1008 2 100 -0 GHGI_EE_GAS_TRANSMISSION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4_GAS 1008 2 100 -0 GHGI_EE_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 -0 GHGI_EE_GAS_POSTMETER_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4_GAS 1008 2 100 -0 GHGI_EE_GAS_POSTMETER $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_Supp_1B2b_PostMeter 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 2 100 - -### Coal ### -0 GHGI_EE_COAL_UNDERGROUND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4_COL 1008 3 100 -0 GHGI_EE_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 -0 GHGI_EE_COAL_SURFACE_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4_COL 1008 3 100 -0 GHGI_EE_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 -0 GHGI_EE_COAL_ABANDONED_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4_COL 1008 3 100 -0 GHGI_EE_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 3 100 - -### Livestock ### -0 GHGI_EE_LIVESTOCK__4A_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4_LIV 1008 4 100 -0 GHGI_EE_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 4 100 -0 GHGI_EE_LIVESTOCK__4B_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_LIV 57/1008 4 100 -0 GHGI_EE_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1008 4 100 - -### Landfills ### -0 GHGI_EE_LANDFILLS_IND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4_LDF 1008 5 100 -0 GHGI_EE_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 -0 GHGI_EE_LANDFILLS_MSW_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4_LDF 1008 5 100 -0 GHGI_EE_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 -0 GHGI_EE_LANDFILLS_COMP_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4_LDF 1008 5 100 -0 GHGI_EE_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 5 100 - -### Wastewater ### -0 GHGI_EE_WASTEWATER_DOM_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4_WST 1008 6 100 -0 GHGI_EE_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 -0 GHGI_EE_WASTEWATER_IND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4_WST 1008 6 100 -0 GHGI_EE_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 6 100 - -### Rice ### -0 GHGI_EE_RICE_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_RIC 58/1008 7 100 -0 GHGI_EE_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1008 7 100 - -### Other Anthro ### -0 GHGI_EE_OTHER__MCOMB_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4_OTA 1008 8 100 -0 GHGI_EE_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__SCOMB_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OTA 50/1008 8 100 -0 GHGI_EE_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1008 8 100 -0 GHGI_EE_OTHER__PIND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4_OTA 1008 8 100 -0 GHGI_EE_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__FIND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4_OTA 1008 8 100 -0 GHGI_EE_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 -0 GHGI_EE_OTHER__BURN_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OTA 59/1008 8 100 -0 GHGI_EE_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 59/1008 8 100 -0 GHGI_EE_OTHER__ABOG_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4_OTA 1008 8 100 -0 GHGI_EE_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4 1008 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI; mask=1009) ### -0 GHGI_EE_COAST_OIL_EXPLORATION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OIL 51/1009 1 5 -0 GHGI_EE_COAST_OIL_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 51/1009 1 5 -0 GHGI_EE_COAST_OIL_PRODUCTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OIL 52/1009 1 5 -0 GHGI_EE_COAST_OIL_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 52/1009 1 5 -0 GHGI_EE_COAST_OIL_REFINING_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OIL 53/1009 1 5 -0 GHGI_EE_COAST_OIL_REFINING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Refining 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 53/1009 1 5 -0 GHGI_EE_COAST_OIL_TRANSPORT_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OIL 54/1009 1 5 -0 GHGI_EE_COAST_OIL_TRANSPORT $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2a_Petroleum_Systems_Transport 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 54/1009 1 5 -0 GHGI_EE_COAST_GAS_DISTRIBUTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4_GAS 1009 2 5 -0 GHGI_EE_COAST_GAS_DISTRIBUTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Distribution 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_GAS_EXPLORATION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_GAS 55/1009 2 5 -0 GHGI_EE_COAST_GAS_EXPLORATION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Exploration 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 55/1009 2 5 -0 GHGI_EE_COAST_GAS_PROCESSING_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4_GAS 1009 2 5 -0 GHGI_EE_COAST_GAS_PROCESSING $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Processing 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_GAS_PRODUCTION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_GAS 56/1009 2 5 -0 GHGI_EE_COAST_GAS_PRODUCTION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_Production 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 56/1009 2 5 -0 GHGI_EE_COAST_GAS_TRANSMISSION_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4_GAS 1009 2 5 -0 GHGI_EE_COAST_GAS_TRANSMISSION $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2b_Natural_Gas_TransmissionStorage 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 2 5 -0 GHGI_EE_COAST_COAL_UNDERGROUND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4_COL 1009 3 5 -0 GHGI_EE_COAST_COAL_UNDERGROUND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Underground_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_COAL_SURFACE_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4_COL 1009 3 5 -0 GHGI_EE_COAST_COAL_SURFACE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Surface_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_COAL_ABANDONED_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4_COL 1009 3 5 -0 GHGI_EE_COAST_COAL_ABANDONED $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B1a_Abandoned_Coal 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 3 5 -0 GHGI_EE_COAST_LIVESTOCK__4A_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4_LIV 1009 4 1 -0 GHGI_EE_COAST_LIVESTOCK__4A $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3A_Enteric_Fermentation 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 4 1 -0 GHGI_EE_COAST_LIVESTOCK__4B_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_LIV 57/1009 4 1 -0 GHGI_EE_COAST_LIVESTOCK__4B $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3B_Manure_Management 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 57/1009 4 1 -0 GHGI_EE_COAST_LANDFILLS_IND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4_LDF 1009 5 1 -0 GHGI_EE_COAST_LANDFILLS_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_LANDFILLS_MSW_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4_LDF 1009 5 1 -0 GHGI_EE_COAST_LANDFILLS_MSW $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5A1_Landfills_MSW 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_LANDFILLS_COMP_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4_LDF 1009 5 1 -0 GHGI_EE_COAST_LANDFILLS_COMP $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5B1_Composting 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 5 1 -0 GHGI_EE_COAST_WASTEWATER_DOM_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4_WST 1009 6 1 -0 GHGI_EE_COAST_WASTEWATER_DOM $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Domestic 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 6 1 -0 GHGI_EE_COAST_WASTEWATER_IND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4_WST 1009 6 1 -0 GHGI_EE_COAST_WASTEWATER_IND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_5D_Wastewater_Treatment_Industrial 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 6 1 -0 GHGI_EE_COAST_RICE_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_RIC 58/1009 7 1 -0 GHGI_EE_COAST_RICE $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3C_Rice_Cultivation 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 58/1009 7 1 -0 GHGI_EE_COAST_OTHER__MCOMB_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4_OTA 1009 8 1 -0 GHGI_EE_COAST_OTHER__MCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Mobile 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__SCOMB_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OTA 50/1009 8 1 -0 GHGI_EE_COAST_OTHER__SCOMB $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1A_Combustion_Stationary 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 50/1009 8 1 -0 GHGI_EE_COAST_OTHER__PIND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4_OTA 1009 8 1 -0 GHGI_EE_COAST_OTHER__PIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2B8_Industry_Petrochemical 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__FIND_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4_OTA 1009 8 1 -0 GHGI_EE_COAST_OTHER__FIND $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_2C2_Industry_Ferroalloy 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -0 GHGI_EE_COAST_OTHER__BURN_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4_OTA 59/1009 8 1 -0 GHGI_EE_COAST_OTHER__BURN $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_3F_Field_Burning 2012-2020/1-12/1/0 C xy molec/cm2/s CH4 59/1009 8 1 -0 GHGI_EE_COAST_OTHER__ABOG_T $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4_OTA 1009 8 1 -0 GHGI_EE_COAST_OTHER__ABOG $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Express_Extension_Gridded_GHGI_Methane_v2_$YYYY.nc emi_ch4_1B2ab_Abandoned_Oil_Gas 2012-2020/1/1/0 C xy molec/cm2/s CH4 1009 8 1 -))).not.GHGI_v2 -)))GHGI_v2_Express_Ext - -#============================================================================== -# --- Mexico emissions (Scarpelli et. al, Environ. Res. Lett., 2020) --- -# -# NOTES: -# - Use Hier=100 to add to Canada and USA regional inventories -#============================================================================== -(((Scarpelli_Mexico -0 MEX_OIL_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_OIL 1001 1 100 -0 MEX_OIL $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 1 100 -0 MEX_GAS_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_GAS 1001 2 100 -0 MEX_GAS $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 2 100 -0 MEX_COAL_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_COL 1001 3 100 -0 MEX_COAL $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 3 100 -0 MEX_LIVESTOCK_A_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_LIV 1001 4 100 -0 MEX_LIVESTOCK_A $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 4 100 -0 MEX_LIVESTOCK_B_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_LIV 10/1001 4 100 -0 MEX_LIVESTOCK_B $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 10/1001 4 100 -0 MEX_LANDFILLS_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_LDF 1001 5 100 -0 MEX_LANDFILLS $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 5 100 -0 MEX_WASTEWATER_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_WST 1001 6 100 -0 MEX_WASTEWATER $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 6 100 -0 MEX_RICE_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_RIC 11/1001 7 100 -0 MEX_RICE $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 11/1001 7 100 -0 MEX_OTHER_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_OTA 1001 8 100 -0 MEX_OTHER $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1001 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) ### -0 MEX_OIL_COAST_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_OIL 1010 1 5 -0 MEX_OIL_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_oil_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 1 5 -0 MEX_GAS_COAST_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_GAS 1010 2 5 -0 MEX_GAS_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_gas_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 2 5 -0 MEX_COAL_COAST_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_COL 1010 3 5 -0 MEX_COAL_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_coal_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 3 5 -0 MEX_LIVESTOCK_A_COAST_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_LIV 1010 4 1 -0 MEX_LIVESTOCK_A_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_A_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 4 1 -0 MEX_LIVESTOCK_B_COAST_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_LIV 10/1010 4 1 -0 MEX_LIVESTOCK_B_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_livestock_B_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 10/1010 4 1 -0 MEX_LANDFILLS_COAST_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_LDF 1010 5 1 -0 MEX_LANDFILLS_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_landfill_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 5 1 -0 MEX_WASTEWATER_COAST_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_WST 1010 6 1 -0 MEX_WASTEWATER_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_waste_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 6 1 -0 MEX_RICE_COAST_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_RIC 11/1010 7 1 -0 MEX_RICE_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_rice_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 11/1010 7 1 -0 MEX_OTHER_COAST_T $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4_OTA 1010 8 1 -0 MEX_OTHER_COAST $ROOT/CH4/v2022-11/Scarpelli_Mexico/MEX_Tia2020_other_anthro_2015.nc emis_ch4 2015/1/1/0 C xy molec/cm2/s CH4 1010 8 1 -)))Scarpelli_Mexico - -#============================================================================== -# --- Canada emissions (Scarpelli et al., Environ. Res. Lett., 2022) --- -# -# NOTES: -# - Use Hier=100 to add to USA and Mexico regional inventories -#============================================================================== -(((Scarpelli_Canada -0 CAN_OIL_GAS_COMBUSTION_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4_OIL 1002 1/2 100 -0 CAN_OIL_GAS_COMBUSTION $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_OIL_GAS_LEAKAGE_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4_OIL 1002 1/2 100 -0 CAN_OIL_GAS_LEAKAGE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_OIL_GAS_VENT_FLARE_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4_OIL 1002 1/2 100 -0 CAN_OIL_GAS_VENT_FLARE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4 1002 1/2 100 -0 CAN_COAL_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4_COL 1002 3 100 -0 CAN_COAL $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4 1002 3 100 -0 CAN_LIVESTOCK_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4_LIV 1002 4 100 -0 CAN_LIVESTOCK $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4 1002 4 100 -0 CAN_SOLID_WASTE_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4_LDF 1002 5 100 -0 CAN_SOLID_WASTE $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4 1002 5 100 -0 CAN_WASTEWATER_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4_WST 1002 6 100 -0 CAN_WASTEWATER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4 1002 6 100 -0 CAN_OTHER_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4_OTA 1002 8 100 -0 CAN_OTHER $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4 1002 8 100 - -### Make sure to include offshore/coastal emissions (Hier=1 to add to EDGAR, Hier=5 to add to GFEI) ### -0 CAN_OIL_GAS_COMBUSTION_COAST_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4_OIL 1011 1/2 5 -0 CAN_OIL_GAS_COMBUSTION_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_combustion_2018.nc oil_gas_combustion_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_OIL_GAS_LEAKAGE_COAST_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4_OIL 1011 1/2 5 -0 CAN_OIL_GAS_LEAKAGE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_leakage_2018.nc oil_gas_leakage_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_OIL_GAS_VENT_FLARE_COAST_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4_OIL 1011 1/2 5 -0 CAN_OIL_GAS_VENT_FLARE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_oil_gas_vent_flare_2018.nc oil_gas_vent_flare_total 2018/1/1/0 C xy kg/m2/s CH4 1011 1/2 5 -0 CAN_COAL_COAST_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4_COL 1011 3 5 -0 CAN_COAL_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_coal_2018.nc coal_total 2018/1/1/0 C xy kg/m2/s CH4 1011 3 5 -0 CAN_LIVESTOCK_COAST_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4_LIV 1011 4 1 -0 CAN_LIVESTOCK_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_livestock_2018.nc livestock_total 2018/1/1/0 C xy kg/m2/s CH4 1011 4 1 -0 CAN_SOLID_WASTE_COAST_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4_LDF 1011 5 1 -0 CAN_SOLID_WASTE_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_solid_waste_2018.nc solid_waste_total 2018/1/1/0 C xy kg/m2/s CH4 1011 5 1 -0 CAN_WASTEWATER_COAST_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4_WST 1011 6 1 -0 CAN_WASTEWATER_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_wastewater_2018.nc wastewater_total 2018/1/1/0 C xy kg/m2/s CH4 1011 6 1 -0 CAN_OTHER_COAST_T $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4_OTA 1011 8 1 -0 CAN_OTHER_COAST $ROOT/CH4/v2022-01/Scarpelli_Canada/can_emis_other_minor_sources_2018.nc other_minor_sources_total 2018/1/1/0 C xy kg/m2/s CH4 1011 8 1 -)))Scarpelli_Canada - -#============================================================================== -# --- Global Fuel Exploitation Inventory (GFEI v2, Scarpelli et al., 2021) --- -# -# This inventory will replace EDGAR (oil, gas, & coal) -#============================================================================== -(((GFEIv2 -0 GFEI_CH4_OIL_T $ROOT/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Oil_All.nc emis_ch4 2019/1/1/0 C xy molec/cm2/s CH4_OIL - 1 5 -0 GFEI_CH4_OIL $ROOT/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Oil_All.nc emis_ch4 2019/1/1/0 C xy molec/cm2/s CH4 - 1 5 -0 GFEI_CH4_GAS_T $ROOT/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Gas_All.nc emis_ch4 2019/1/1/0 C xy molec/cm2/s CH4_GAS - 2 5 -0 GFEI_CH4_GAS $ROOT/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Gas_All.nc emis_ch4 2019/1/1/0 C xy molec/cm2/s CH4 - 2 5 -0 GFEI_CH4_COAL_T $ROOT/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Coal.nc emis_ch4 2019/1/1/0 C xy molec/cm2/s CH4_COL - 3 5 -0 GFEI_CH4_COAL $ROOT/CH4/v2022-01/GFEIv2/Global_Fuel_Exploitation_Inventory_v2_2019_Coal.nc emis_ch4 2019/1/1/0 C xy molec/cm2/s CH4 - 3 5 -)))GFEIv2 - -#============================================================================== -# --- EDGAR v8.0 emissions --- -#============================================================================== -(((EDGARv8 -### Oil ### -0 EDGAR8_CH4_PRO_OIL $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_OIL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OIL - 1 1 -0 EDGAR8_CH4_PRO_OIL_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_OIL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 1 1 -0 EDGAR8_CH4_REF_TRF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_REF_TRF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OIL - 1 1 -0 EDGAR8_CH4_REF_TRF_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_REF_TRF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 1 1 - -### Gas ### -0 EDGAR8_CH4_PRO_GAS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_GAS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_GAS - 2 1 -0 EDGAR8_CH4_PRO_GAS_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_GAS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 2 1 - -### Coal ### -0 EDGAR8_CH4_PRO_COAL $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_COAL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_COL - 3 1 -0 EDGAR8_CH4_PRO_COAL_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_PRO_COAL_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 3 1 - -### Livestock ### -0 EDGAR8_CH4_ENF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_LIV - 4 1 -0 EDGAR8_CH4_ENF_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 4 1 -0 EDGAR8_CH4_MNM $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_MNM_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_LIV - 4 1 -0 EDGAR8_CH4_MNM_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_MNM_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 4 1 - -### Landfills ### -0 EDGAR8_CH4_SWD_LDF $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_LDF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_LDF - 5 1 -0 EDGAR8_CH4_SWD_LDF_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_LDF_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 5 1 - -### Wastewater ### -0 EDGAR8_CH4_WWT $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_WWT_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_WST - 6 1 -0 EDGAR8_CH4_WWT_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_WWT_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 6 1 - -### Rice ### -0 EDGAR8_CH4_AGS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AGS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_RIC - 7 1 -0 EDGAR8_CH4_AGS_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AGS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 7 1 - -### Other Anthro ### -0 EDGAR8_CH4_ENE $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_ENE_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_ENE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_IND $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IND_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_IND_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IND_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_TNR_Aviation_CDS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CDS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_TNR_Aviation_CDS_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CDS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_TNR_Aviation_CRS $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CRS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_TNR_Aviation_CRS_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_CRS_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_TNR_Aviation_LTO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_LTO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_TNR_Aviation_LTO_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Aviation_LTO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_TRO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_TRO_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_TNR_Other $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Other_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_TNR_Other_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Other_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_TNR_Ship $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Ship_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_TNR_Ship_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_TNR_Ship_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_RCO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_RCO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_RCO_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_RCO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_CHE $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_CHE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_CHE_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_CHE_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_IRO $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_IRO_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_IRO_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_AWB $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AWB_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_AWB_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_AWB_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 EDGAR8_CH4_SWD_INC $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_INC_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 EDGAR8_CH4_SWD_INC_T $ROOT/CH4/v2024-02/EDGARv8/$YYYY/v8.0_FT2022_GHG_CH4_$YYYY_SWD_INC_flx.nc emi_ch4 2010-2022/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -)))EDGARv8 - -#============================================================================== -# CEDS (historical) or Shared Socioeconomic Pathways (future) -#============================================================================== -(((CMIP6_SFC_LAND_ANTHRO -0 CMIP6_CH4_AGR $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_agr 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 4 1 -0 CMIP6_CH4_AGR_T $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_agr 1970-2014/1-12/1/0 C xy kg/m2/s CH4_LIV - 4 1 -0 CMIP6_CH4_ENE $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_ene 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 2 1 -0 CMIP6_CH4_ENE_T $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_ene 1970-2014/1-12/1/0 C xy kg/m2/s CH4_GAS - 2 1 -0 CMIP6_CH4_IND $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_ind 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 CMIP6_CH4_IND_T $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_ind 1970-2014/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 CMIP6_CH4_TRA $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_tra 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 CMIP6_CH4_TRA_T $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_tra 1970-2014/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 CMIP6_CH4_RCO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_rco 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 2 1 -0 CMIP6_CH4_RCO_T $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_rco 1970-2014/1-12/1/0 C xy kg/m2/s CH4_GAS - 2 1 -0 CMIP6_CH4_SLV $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_slv 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 CMIP6_CH4_SLV_T $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_slv 1970-2014/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -0 CMIP6_CH4_WST $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_wst 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 5 1 -0 CMIP6_CH4_WST_T $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_wst 1970-2014/1-12/1/0 C xy kg/m2/s CH4_LDF - 5 1 -)))CMIP6_SFC_LAND_ANTHRO -(((CMIP6_SHIP -0 CMIP6_CH4_SHP $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_shp 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 8 1 -0 CMIP6_CH4_SHP_T $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_shp 1970-2014/1-12/1/0 C xy kg/m2/s CH4_OTA - 8 1 -)))CMIP6_SHIP - -#============================================================================== -# BB4MIPs historical / SSP future biomass burning inventories -#============================================================================== -(((BB4MIPS -0 CMIP6_BB_CH4 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_bbn 1750-2015/1-12/1/0 C xyL=1:PBL kg/m2/s CH4 75 9 1 -0 CMIP6_BB_CH4_T $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY.nc4 CH4_bbn 1750-2015/1-12/1/0 C xyL=1:PBL kg/m2/s CH4_BBN 75 9 1 -)))BB4MIPS - -#============================================================================== -# --- QFED2 biomass burning --- -# -# Use QFED v2.4r8 for CH4. The data in QFED/v2014-09 are for v2.4r5 and have -# been found to be buggy for CH4 (same emissions on each day). -#============================================================================== -(((QFED2 -0 QFED_CH4_T $ROOT/CH4/v2017-10/QFED/QFEDv2.4r8.emis_ch4.$YYYY.nc emi_ch4 2009-2015/1-12/1-31/0 C xy molec/cm2/s CH4_BBN - 9 2 -0 QFED_CH4 $ROOT/CH4/v2017-10/QFED/QFEDv2.4r8.emis_ch4.$YYYY.nc emi_ch4 2009-2015/1-12/1-31/0 C xy molec/cm2/s CH4 - 9 2 -)))QFED2 - -#============================================================================== -# --- JPL WetCHARTs v1.0 (Bloom et al., https://doi.org/10.3334/ORNLDAAC/1502) --- -# -# # Use updated files (v2024-01); these are COARDS-compliant. -#============================================================================== -(((JPL_WETCHARTS -0 JPLW_CH4_T $ROOT/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4_WTL - 10 1 -0 JPLW_CH4 $ROOT/CH4/v2024-01/JPL_WetCharts/HEensemble/JPL_WetCharts_2010-2019.Ensemble_Mean.0.5x0.5.nc emi_ch4 2010-2019/1-12/1/0 C xy molec/cm2/s CH4 - 10 1 -)))JPL_WETCHARTS - -#============================================================================== -# --- Geological Seeps --- -#============================================================================== -(((SEEPS -0 CH4_SEEPS_T $ROOT/CH4/v2020-04/Seeps/Etiope_CH4GeologicalEmis_ScaledToHmiel.1x1.nc emi_ch4 2012/1/1/0 C xy kg/m2/s CH4_SEE - 11 1 -0 CH4_SEEPS $ROOT/CH4/v2020-04/Seeps/Etiope_CH4GeologicalEmis_ScaledToHmiel.1x1.nc emi_ch4 2012/1/1/0 C xy kg/m2/s CH4 - 11 1 -)))SEEPS - -#============================================================================== -# --- Emissions from Lakes (Maasakkers et al., 2019) --- -#============================================================================== -(((LAKES -0 CH4_LAKES_T $ROOT/CH4/v2022-11/Lakes/Maasakkers_Lakes_$YYYY.01x01.nc emi_ch4 $YYYY/1-12/1/0 C xy molec/cm2/s CH4_LAK - 12 1 -0 CH4_LAKES $ROOT/CH4/v2022-11/Lakes/Maasakkers_Lakes_$YYYY.01x01.nc emi_ch4 $YYYY/1-12/1/0 C xy molec/cm2/s CH4 - 12 1 -)))LAKES - -#============================================================================== -# --- Emissions from Hydroelectric Reservoirs (Delwich et al., 2022) --- -# -# Use updated files (v2024-01); these are COARDS-compliant. -#============================================================================== -(((RESERVOIRS -0 CH4_RES_DAM_T $ROOT/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4_RES - 15 1 -0 CH4_RES_DAM $ROOT/CH4/v2024-01/ResME/ResME_Dam_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 -0 CH4_RES_SFC_T $ROOT/CH4/v2024-01/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4_RES - 15 1 -0 CH4_RES_SFC $ROOT/CH4/v2024-01/ResME/ResME_Surface_Emissions.0.1x0.1.nc CH4emis 2022/1/1/0 C xy kg/m2/s CH4 - 15 1 -)))RESERVOIRS - -#============================================================================== -# --- Soil absorption & termites from Fung et al, 1991 --- -# -# NOTES: -# - Multiply soil absorption by -1 to get a "negative" flux. -# (Only apply the scaling factor when adding to the total CH4 simulation) -# - Use updated soil absorption emissions with seasonality applied -# - For tagged CH4 simulations soil absorption is treated as a loss and applied -# in mixing_mod.F -#============================================================================== -(((FUNG_TERMITES -0 CH4_TERMITES_T $ROOT/CH4/v2022-11/4x5/termites.geos.4x5.nc CH4 1985/1/1/0 C xy kg/m2/s CH4_TER - 13 1 -0 CH4_TERMITES $ROOT/CH4/v2022-11/4x5/termites.geos.4x5.nc CH4 1985/1/1/0 C xy kg/m2/s CH4 - 13 1 -)))FUNG_TERMITES -(((FUNG_SOIL_ABSORPTION -0 CH4_SOILABSORB_T $ROOT/CH4/v2019-10/Fung_SoilAbs/Soil_Absorption_4x5_$YYYY.nc CH4 2009-2015/1-12/1/0 C xy molec/cm2/s CH4_SAB - 14 1 -#0 CH4_SOILABSORB $ROOT/CH4/v2019-10/Fung_SoilAbs/Soil_Absorption_4x5_$YYYY.nc CH4 2009-2015/1-12/1/0 C xy molec/cm2/s CH4 1 14 1 -)))FUNG_SOIL_ABSORPTION - -#============================================================================== -# --- # Soil absorption from MeMo model (Murguia-Flores et al. 2018, GMD) --- -# -# - Multiply soil absorption by -1 to get a "negative" flux -#============================================================================== -(((MeMo_SOIL_ABSORPTION -# Climatology -0 CH4_SOILABSORB_T $ROOT/CH4/v2019-10/MeMo_SoilAbs/MeMo_CH4uptake_Climatology.nc CH4uptake 2009/1-12/1/0 C xy kg/m2/s CH4_SAB - 14 2 -#0 CH4_SOILABSORB $ROOT/CH4/v2019-10/MeMo_SoilAbs/MeMo_CH4uptake_Climatology.nc CH4uptake 2009/1-12/1/0 C xy kg/m2/s CH4 1 14 2 - -# 1990-2009 -#0 CH4_SOILABSORB_T $ROOT/CH4/v2019-10/MeMo_SoilAbs/MeMo_CH4uptake_1990-2009.nc CH4uptake 1990-2009/1-12/1/0 C xy kg/m2/s CH4_SAB - 14 2 -##0 CH4_SOILABSORB $ROOT/CH4/v2019-10/MeMo_SoilAbs/MeMo_CH4uptake_1990-2009.nc CH4uptake 1990-2009/1-12/1/0 C xy kg/m2/s CH4 1 14 2 -)))MeMo_SOIL_ABSORPTION - -#============================================================================== -# --- RCP future emission scenarios --- -#============================================================================== -(((RCP_3PD -0 RCP3PD_CH4 $ROOT/RCP/v2020-07/RCP_3PD/RCPs_anthro_CH4_2005-2100_23474.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH4 - 1 1 -)))RCP_3PD - -(((RCP_45 -0 RCP45_CH4 $ROOT/RCP/v2020-07/RCP_45/RCPs_anthro_CH4_2005-2100_27424.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH4 - 1 1 -)))RCP_45 - -(((RCP_60 -0 RCP60_CH4 $ROOT/RCP/v2020-07/RCP_60/RCPs_anthro_CH4_2005-2100_43190.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH4 - 1 1 -)))RCP_60 - -(((RCP_85 -0 RCP85_CH4 $ROOT/RCP/v2020-07/RCP_85/RCPs_anthro_CH4_2005-2100_43533.nc ACCMIP 2005-2100/1/1/0 ID xy kg/m2/s CH4 - 1 1 -)))RCP_85 - -))).not.UseTotalPriorEmis - -)))EMISSIONS - -############################################################################### -### EXTENSION DATA (subsection of BASE EMISSIONS SECTION) -### -### These fields are needed by the extensions listed above. The assigned ExtNr -### must match the ExtNr entry in section 'Extension switches'. These fields -### are only read if the extension is enabled. The fields are imported by the -### extensions by field name. The name given here must match the name used -### in the extension's source code. -############################################################################### - -(((EMISSIONS - -#============================================================================== -# --- GFED biomass burning emissions (Extension 111) -# NOTE: These are the base emissions in kgDM/m2/s. -#============================================================================== -(((GFED4 -111 GFED_TEMP $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_TEMP 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_AGRI $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_AGRI 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_DEFO $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_DEFO 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_BORF $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_BORF 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_PEAT $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_PEAT 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 -111 GFED_SAVA $ROOT/GFED4/v2023-03/$YYYY/GFED4_gen.025x025.$YYYY$MM.nc DM_SAVA 2010-2023/1-12/01/0 RF xy kgDM/m2/s * - 1 1 - -(((GFED_daily -111 GFED_FRAC_DAY $ROOT/GFED4/v2023-03/$YYYY/GFED4_dailyfrac_gen.025x025.$YYYY$MM.nc GFED_FRACDAY 2010-2023/1-12/1-31/0 RF xy 1 * - 1 1 -)))GFED_daily - -(((GFED_3hourly -111 GFED_FRAC_3HOUR $ROOT/GFED4/v2023-03/$YYYY/GFED4_3hrfrac_gen.025x025.$YYYY$MM.nc GFED_FRAC3HR 2010-2023/1-12/1/0-23 RF xy 1 * - 1 1 -)))GFED_3hourly -)))GFED4 - -#============================================================================== -# --- FINN v1.5 biomass burning emissions (Extension 114) -#============================================================================== -(((.not.FINN_daily -114 FINN_VEGTYP1 $ROOT/FINN/v2015-02/FINN_monthly_$YYYY_0.25x0.25.compressed.nc fire_vegtype1 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -114 FINN_VEGTYP2 $ROOT/FINN/v2015-02/FINN_monthly_$YYYY_0.25x0.25.compressed.nc fire_vegtype2 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -114 FINN_VEGTYP3 $ROOT/FINN/v2015-02/FINN_monthly_$YYYY_0.25x0.25.compressed.nc fire_vegtype3 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -114 FINN_VEGTYP4 $ROOT/FINN/v2015-02/FINN_monthly_$YYYY_0.25x0.25.compressed.nc fire_vegtype4 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -114 FINN_VEGTYP5 $ROOT/FINN/v2015-02/FINN_monthly_$YYYY_0.25x0.25.compressed.nc fire_vegtype5 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -114 FINN_VEGTYP9 $ROOT/FINN/v2015-02/FINN_monthly_$YYYY_0.25x0.25.compressed.nc fire_vegtype9 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -))).not.FINN_daily - -(((FINN_daily -114 FINN_DAILY_VEGTYP1 $ROOT/FINN/v2015-02/FINN_daily_$YYYY_0.25x0.25.compressed.nc fire_vegtype1 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -114 FINN_DAILY_VEGTYP2 $ROOT/FINN/v2015-02/FINN_daily_$YYYY_0.25x0.25.compressed.nc fire_vegtype2 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -114 FINN_DAILY_VEGTYP3 $ROOT/FINN/v2015-02/FINN_daily_$YYYY_0.25x0.25.compressed.nc fire_vegtype3 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -114 FINN_DAILY_VEGTYP4 $ROOT/FINN/v2015-02/FINN_daily_$YYYY_0.25x0.25.compressed.nc fire_vegtype4 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -114 FINN_DAILY_VEGTYP5 $ROOT/FINN/v2015-02/FINN_daily_$YYYY_0.25x0.25.compressed.nc fire_vegtype5 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -114 FINN_DAILY_VEGTYP9 $ROOT/FINN/v2015-02/FINN_daily_$YYYY_0.25x0.25.compressed.nc fire_vegtype9 2002-2016/1-12/1/0 RF xy kg/m2/s * - 1 1 -)))FINN_daily - -)))EMISSIONS - -############################################################################### -### NON-EMISSIONS DATA (subsection of BASE EMISSIONS SECTION) -### -### Non-emissions data. The following fields are read through HEMCO but do -### not contain emissions data. The extension number is set to wildcard -### character denoting that these fields will not be considered for emission -### calculation. A given entry is only read if the assigned species name is -### an HEMCO species. -############################################################################### - -#============================================================================== -# --- Time zones (offset to UTC) --- -#============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 - -#============================================================================== -# --- Meteorology fields --- -#============================================================================== -(((METEOROLOGY - ->>>include ${RUNDIR_MET_FIELD_CONFIG} - -)))METEOROLOGY - -#============================================================================== -# --- GEOS-Chem restart file --- -#============================================================================== -(((GC_RESTART -* SPC_ ./Restarts/GEOSChem.Restart.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesRst_?ALL? $YYYY/$MM/$DD/$HH EFYO xyz 1 * - 1 1 -* DELPDRY ./Restarts/GEOSChem.Restart.$YYYY$MM$DD_$HH$MNz.nc4 Met_DELPDRY $YYYY/$MM/$DD/$HH EY xyz 1 * - 1 1 -)))GC_RESTART - -#============================================================================== -# --- GEOS-Chem boundary condition file --- -#============================================================================== -(((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 -)))GC_BCs - -#============================================================================== -# --- Quantities needed for CH4 chemistry --- -#============================================================================== -(((CHEMISTRY_INPUT - -# --- Global CH4 loss frequencies [1/s] --- -(((CH4_LOSS_FREQ -${RUNDIR_CH4_LOSS} -)))CH4_LOSS_FREQ - -# --- Global OH from GEOS-Chem v5-07 [kg/m3] --- -(((GLOBAL_OH - -(((OH_PosteriorSF -* GLOBAL_OH $ROOT/OH/v2014-09/v5-07-08/OH_3Dglobal.geos5.72L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2/4 1 1 -)))OH_PosteriorSF - -(((.not.OH_PosteriorSF -* GLOBAL_OH $ROOT/OH/v2014-09/v5-07-08/OH_3Dglobal.geos5.72L.4x5.nc OH 1985/1-12/1/0 C xyz kg/m3 * 2 1 1 -))).not.OH_PosteriorSF - -)))GLOBAL_OH - -# --- Global Cl [mol/mol dry air] --- -(((GLOBAL_CL -${RUNDIR_GLOBAL_Cl} -)))GLOBAL_CL - -)))CHEMISTRY_INPUT - -#============================================================================== -# --- Olson land map masks --- -#============================================================================== -(((OLSON_LANDMAP -* LANDTYPE00 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE00 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE01 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE01 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE02 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE02 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE03 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE03 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE04 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE04 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE05 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE05 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE06 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE06 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE07 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE07 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE08 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE08 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE09 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE09 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE10 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE10 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE11 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE11 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE12 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE12 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE13 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE13 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE14 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE14 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE15 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE15 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE16 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE16 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE17 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE17 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE18 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE18 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE19 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE19 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE20 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE20 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE21 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE21 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE22 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE22 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE23 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE23 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE24 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE24 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE25 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE25 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE26 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE26 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE27 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE27 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE28 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE28 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE29 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE29 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE30 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE30 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE31 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE31 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE32 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE32 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE33 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE33 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE34 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE34 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE35 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE35 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE36 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE36 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE37 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE37 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE38 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE38 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE39 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE39 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE40 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE40 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE41 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE41 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE42 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE42 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE43 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE43 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE44 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE44 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE45 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE45 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE46 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE46 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE47 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE47 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE48 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE48 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE49 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE49 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE50 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE50 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE51 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE51 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE52 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE52 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE53 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE53 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE54 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE54 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE55 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE55 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE56 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE56 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE57 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE57 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE58 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE58 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE59 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE59 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE60 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE60 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE61 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE61 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE62 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE62 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE63 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE63 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE64 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE64 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE65 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE65 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE66 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE66 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE67 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE67 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE68 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE68 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE69 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE69 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE70 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE70 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE71 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE71 1985/1/1/0 C xy 1 * - 1 1 -* LANDTYPE72 $ROOT/OLSON_MAP/v2019-02/Olson_2001_Land_Type_Masks.025x025.generic.nc LANDTYPE72 1985/1/1/0 C xy 1 * - 1 1 -)))OLSON_LANDMAP - -#============================================================================== -# --- Yuan processed MODIS leaf area index data --- -# -# Source: Yuan et al 2011, doi:10.1016/j.rse.2011.01.001 -# http://globalchange.bnu.edu.cn/research/lai -# -# NOTES: -# (1) LAI data corresponding to each Olson land type is stored in -# separate netCDF variables (XLAI00, XLAI01, ... XLAI72). -# The "XLAI" denotes that the files are prepared in this way. -# (2) Units are "cm2 leaf/cm2 grid box". -# (3) Data is timestamped every 8 days, starting from the 2nd of the month. -#============================================================================== -(((YUAN_MODIS_LAI -* XLAI00 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI00 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI01 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI01 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI02 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI02 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI03 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI03 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI04 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI04 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI05 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI05 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI06 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI06 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI07 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI07 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI08 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI08 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI09 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI09 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI10 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI10 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI11 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI11 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI12 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI12 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI13 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI13 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI14 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI14 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI15 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI15 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI16 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI16 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI17 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI17 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI18 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI18 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI19 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI19 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI20 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI20 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI21 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI21 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI22 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI22 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI23 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI23 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI24 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI24 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI25 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI25 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI26 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI26 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI27 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI27 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI28 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI28 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI29 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI29 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI30 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI30 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI31 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI31 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI32 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI32 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI33 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI33 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI34 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI34 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI35 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI35 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI36 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI36 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI37 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI37 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI38 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI38 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI39 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI39 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI40 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI40 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI41 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI41 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI42 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI42 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI43 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI43 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI44 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI44 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI45 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI45 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI46 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI46 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI47 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI47 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI48 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI48 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI49 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI49 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI50 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI50 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI51 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI51 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI52 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI52 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI53 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI53 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI54 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI54 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI55 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI55 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI56 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI56 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI57 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI57 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI58 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI58 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI59 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI59 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI60 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI60 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI61 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI61 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI62 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI62 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI63 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI63 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI64 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI64 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI65 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI65 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI66 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI66 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI67 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI67 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI68 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI68 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI69 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI69 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI70 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI70 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI71 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI71 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -* XLAI72 $ROOT/Yuan_XLAI/v2021-06/Yuan_proc_MODIS_XLAI.025x025.$YYYY.nc XLAI72 2000-2020/1-12/1-31/0 I xy cm2/cm2 * - 1 1 -)))YUAN_MODIS_LAI - -#============================================================================== -# --- Files needed for analytical inversion --- -#============================================================================== -(((AnalyticalInversion -* CH4_STATE_VECTOR StateVector.nc StateVector 2009/1/1/0 C xy 1 * - 1 1 -)))AnalyticalInversion - -### END SECTION BASE EMISSIONS ### - -############################################################################### -### BEGIN SECTION SCALE FACTORS -############################################################################### - -# ScalID Name sourceFile sourceVar sourceTime C/R/E SrcDim SrcUnit Oper - -#============================================================================== -# --- Soil absorption scale factors --- -# -# Multiply soil absorption by -1 to get a "negative" flux. -#============================================================================== -1 NEGATIVE -1.0 - - - xy 1 1 - -#============================================================================== -# --- Perturbation factors --- -# -# Add factors to perturb OH, emissions, and other fields here for -# analytical inversions. -#============================================================================== -2 OH_pert_factor 1.0 - - - xy 1 1 - -#============================================================================== -# --- Scale factors for posterior run --- -# -# Enable emission scale factors by setting the use_emission_scale_factor or -# use_OH_scale_factor options to true in geoschem_config.yml. These fields are -# obtained from HEMCO and applied in GEOS-Chem/GeosCore/global_ch4_mod.F90. -# -# Entries below are provided for examples only. Add your own here! -#============================================================================== -(((Emis_PosteriorSF -3 EMIS_SF gridded_posterior.nc ScaleFactor 2000/1/1/0 C xy 1 1 -)))Emis_PosteriorSF - -(((OH_PosteriorSF -4 OH_SF Post_SF_OH.nc SF_OH 2010-2017/1/1/0 C xy 1 1 -)))OH_PosteriorSF - -#============================================================================== -# --- Scale factors for analytical inversions --- -#============================================================================== -(((AnalyticalInversion - -# Add perturbations to individual state vector element (N) following this format -# Start scale factor ID at 2000 to avoid conflicts with other SFs/masks -#200N SCALE_ELEM_000N ./Perturbations.txt - - - xy count 1 - -)))AnalyticalInversion - -(((EMISSIONS -#============================================================================== -# --- Seasonal scaling factors ---- -#============================================================================== -(((GHGI_v2.or.GHGI_v2_Express_Ext -50 GHGI_OTH_STA_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1A_Combustion_Stationary 2012-2018/1-12/1/0 C xy 1 1 -51 GHGI_OIL_EXP_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1B2a_Petroleum_Systems_Exploration 2012-2018/1-12/1/0 C xy 1 1 -52 GHGI_OIL_PRD_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1B2a_Petroleum_Systems_Production 2012-2018/1-12/1/0 C xy 1 1 -53 GHGI_OIL_REF_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1B2a_Petroleum_Systems_Refining 2012-2018/1-12/1/0 C xy 1 1 -54 GHGI_OIL_TRA_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1B2a_Petroleum_Systems_Transport 2012-2018/1-12/1/0 C xy 1 1 -55 GHGI_GAS_EXP_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1B2b_Natural_Gas_Exploration 2012-2018/1-12/1/0 C xy 1 1 -56 GHGI_GAS_PRD_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_1B2b_Natural_Gas_Production 2012-2018/1-12/1/0 C xy 1 1 -57 GHGI_LIV_MAN_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_3B_Manure_Management 2012-2018/1-12/1/0 C xy 1 1 -58 GHGI_RIC_CUL_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_3C_Rice_Cultivation 2012-2018/1-12/1/0 C xy 1 1 -59 GHGI_OTH_BUR_SF $ROOT/CH4/v2023-07/Gridded_GHGI_v2/Gridded_GHGI_Methane_v2_Monthly_Scale_Factors_$YYYY.nc monthly_scale_factor_3F_Field_Burning 2012-2018/1-12/1/0 C xy 1 1 -)))GHGI_v2.or.GHGI_v2_Express_Ext - -#============================================================================== -# --- Seasonal scaling factors ---- -#============================================================================== -(((Scarpelli_Mexico -10 MANURE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Manure_ScalingFactors.WithClimatology.nc sf_ch4 2008-2016/1-12/1/0 C xy 1 1 -11 RICE_SF $ROOT/CH4/v2017-10/Seasonal_SF/EMICH4_Rice_ScalingFactors.SetMissing.nc sf_ch4 2012/1-12/1/0 C xy 1 1 -)))Scarpelli_Mexico - -#============================================================================== -# --- QFED2 diurnal scale factors --- -# -# Fire diurnal scaling factors (% per hour) from WRAP Report to Project -# No. 178-6, July 2005 -#============================================================================== -(((QFED2.or.GFAS.or.BB4MIPS -75 QFED2_TOD 0.1392/0.1392/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.1368/0.48/0.96/1.68/2.4/3.12/3.84/4.08/2.88/1.68/0.96/0.1368/0.1368/0.1368/0.1368/0.1368 - - - xy unitless 1 -)))QFED2.or.GFAS.or.BB4MIPS - -)))EMISSIONS - -### END SECTION SCALE FACTORS ### - -############################################################################### -### BEGIN SECTION MASKS -############################################################################### - -# ScalID Name sourceFile sourceVar sourceTime C/R/E SrcDim SrcUnit Oper Lon1/Lat1/Lon2/Lat2 - -(((EMISSIONS - -#============================================================================== -# Country/region masks -#============================================================================== - -(((Scarpelli_Mexico -1001 MEXICO_MASK $ROOT/MASKS/v2024-04/Mexico_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -1010 MEX_MASK_MIRROR $ROOT/MASKS/v2024-04/Mexico_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -118/17/-95/33 -)))Scarpelli_Mexico - -(((Scarpelli_Canada -1002 CANADA_MASK $ROOT/MASKS/v2024-04/Canada_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -1011 CAN_MASK_MIRROR $ROOT/MASKS/v2024-04/Canada_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -141/40/-52/85 -)))Scarpelli_Canada - -(((GHGI_v2.or.GHGI_v2_Express_Ext -1008 CONUS_MASK $ROOT/MASKS/v2024-04/CONUS_Mask.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 -1009 CONUS_MIRROR $ROOT/MASKS/v2024-04/CONUS_Mask_Mirror.01x01.nc MASK 2000/1/1/0 C xy 1 1 -140/20/-50/60 -)))GHGI_v2.or.GHGI_v2_Express_Ext - -)))EMISSIONS - -### END SECTION MASKS ### - -### END OF HEMCO INPUT FILE ### -#EOC diff --git a/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.CH4 b/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.CH4 index 70ea13cb7..b5bffe66f 100644 --- a/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.CH4 +++ b/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.CH4 @@ -35,52 +35,4 @@ EmisCH4_Termites CH4 0 13 -1 2 kg/m2/s CH4_emissions_from_termit EmisCH4_SoilAbsorb CH4 0 14 -1 2 kg/m2/s CH4_emissions_from_soil_absorption EmisCH4_Reservoirs CH4 0 15 -1 2 kg/m2/s CH4_emissions_from_hydroelectric_reservoirs -############################################################################### -##### Anthropogenic emissions diagnostics by inventory ##### -##### (not needed for other sectors with only one inventory) ##### -############################################################################### -#InvGEPA_CH4_TOTAL CH4 0 -1 50 2 kg/m2/s CH4_total_emissions_from_GEPA_inventory -#InvGEPA_CH4_OIL CH4 0 1 50 2 kg/m2/s CH4_oil_emissions_from_GEPA_inventory -#InvGEPA_CH4_GAS CH4 0 2 50 2 kg/m2/s CH4_gas_emissions_from_GEPA_inventory -#InvGEPA_CH4_COAL CH4 0 3 50 2 kg/m2/s CH4_coal_emissions_from_GEPA_inventory -#InvGEPA_CH4_LIVESTOCK CH4 0 4 50 2 kg/m2/s CH4_livestock_emissions_from_GEPA_inventory -#InvGEPA_CH4_LANDFILLS CH4 0 5 50 2 kg/m2/s CH4_landfills_emissions_from_GEPA_inventory -#InvGEPA_CH4_WASTEWATER CH4 0 6 50 2 kg/m2/s CH4_wastewater_emissions_from_GEPA_inventory -#InvGEPA_CH4_RICE CH4 0 7 50 2 kg/m2/s CH4_rice_emissions_from_GEPA_inventory -#InvGEPA_CH4_OTHER_ANTH CH4 0 8 50 2 kg/m2/s CH4_other_anthro_emissions_from_GEPA_inventory -# -#InvScarpelliMexico_CH4_TOTAL CH4 0 -1 30 2 kg/m2/s CH4_total_emissions_from_ScarpelliMexico_inventory -#InvScarpelliMexico_CH4_OIL CH4 0 1 30 2 kg/m2/s CH4_oil_emissions_from_ScarpelliMexico_inventory -#InvScarpelliMexico_CH4_GAS CH4 0 2 30 2 kg/m2/s CH4_gas_emissions_from_ScarpelliMexico_inventory -#InvScarpelliMexico_CH4_COAL CH4 0 3 30 2 kg/m2/s CH4_coal_emissions_from_ScarpelliMexico_inventory -#InvScarpelliMexico_CH4_LIVESTOCK CH4 0 4 30 2 kg/m2/s CH4_livestock_emissions_from_ScarpelliMexico_inventory -#InvScarpelliMexico_CH4_LANDFILLS CH4 0 5 30 2 kg/m2/s CH4_landfills_emissions_from_ScarpelliMexico_inventory -#InvScarpelliMexico_CH4_WASTEWATER CH4 0 6 30 2 kg/m2/s CH4_wastewater_emissions_from_ScarpelliMexico_inventory -#InvScarpelliMexico_CH4_RICE CH4 0 7 30 2 kg/m2/s CH4_rice_emissions_from_ScarpelliMexico_inventory -#InvScarpelliMexico_CH4_OTHER_ANTH CH4 0 8 30 2 kg/m2/s CH4_other_anthro_emissions_from_ScarpelliMexico_inventory -# -#InvScarpelliCanada_CH4_TOTAL CH4 0 -1 100 2 kg/m2/s CH4_total_emissions_from_ScarpelliCanada_inventory -#InvScarpelliCanada_CH4_OIL CH4 0 1 100 2 kg/m2/s CH4_oil_emissions_from_ScarpelliCanada_inventory -#InvScarpelliCanada_CH4_GAS CH4 0 2 100 2 kg/m2/s CH4_gas_emissions_from_ScarpelliCanada_inventory -#InvScarpelliCanada_CH4_COAL CH4 0 3 100 2 kg/m2/s CH4_coal_emissions_from_ScarpelliCanada_inventory -#InvScarpelliCanada_CH4_LIVESTOCK CH4 0 4 100 2 kg/m2/s CH4_livestock_emissions_from_ScarpelliCanada_inventory -#InvScarpelliCanada_CH4_LANDFILLS CH4 0 5 100 2 kg/m2/s CH4_landfills_emissions_from_ScarpelliCanada_inventory -#InvScarpelliCanada_CH4_WASTEWATER CH4 0 6 100 2 kg/m2/s CH4_wastewater_emissions_from_ScarpelliCanada_inventory -#InvScarpelliCanada_CH4_RICE CH4 0 7 100 2 kg/m2/s CH4_rice_emissions_from_ScarpelliCanada_inventory -#InvScarpelliCanada_CH4_OTHER_ANTH CH4 0 8 100 2 kg/m2/s CH4_other_anthro_emissions_from_ScarpelliCanada_inventory -# -#InvGFEI_CH4_TOTAL CH4 0 -1 5 2 kg/m2/s CH4_total_emissions_from_GFEI_inventory -#InvGFEI_CH4_OIL CH4 0 1 5 2 kg/m2/s CH4_oil_emissions_from_GFEI_inventory -#InvGFEI_CH4_GAS CH4 0 2 5 2 kg/m2/s CH4_gas_emissions_from_GFEI_inventory -#InvGFEI_CH4_COAL CH4 0 3 5 2 kg/m2/s CH4_coal_emissions_from_GFEI_inventory -# -#InvEDGAR_CH4_TOTAL CH4 0 -1 1 2 kg/m2/s CH4_total_emissions_from_EDGAR_inventory -#InvEDGAR_CH4_OIL CH4 0 1 1 2 kg/m2/s CH4_oil_emissions_from_EDGAR_inventory -#InvEDGAR_CH4_GAS CH4 0 2 1 2 kg/m2/s CH4_gas_emissions_from_EDGAR_inventory -#InvEDGAR_CH4_COAL CH4 0 3 1 2 kg/m2/s CH4_coal_emissions_from_EDGAR_inventory -#InvEDGAR_CH4_LIVESTOCK CH4 0 4 1 2 kg/m2/s CH4_livestock_emissions_from_EDGAR_inventory -#InvEDGAR_CH4_LANDFILLS CH4 0 5 1 2 kg/m2/s CH4_landfills_emissions_from_EDGAR_inventory -#InvEDGAR_CH4_WASTEWATER CH4 0 6 1 2 kg/m2/s CH4_wastewater_emissions_from_EDGAR_inventory -#InvEDGAR_CH4_RICE CH4 0 7 1 2 kg/m2/s CH4_rice_emissions_from_EDGAR_inventory -#InvEDGAR_CH4_OTHER_ANTH CH4 0 8 1 2 kg/m2/s CH4_other_anthro_emissions_from_EDGAR_inventory #EOC diff --git a/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.tagCH4 b/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.tagCH4 deleted file mode 100644 index 8258d5ac0..000000000 --- a/run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.tagCH4 +++ /dev/null @@ -1,17 +0,0 @@ -# Name Spec ExtNr Cat Hier Dim OutUnit -EMIS_CH4_TOTAL CH4 -1 -1 -1 2 molec/cm2/s -EMIS_CH4_OIL CH4 0 1 -1 2 molec/cm2/s -EMIS_CH4_GAS CH4 0 2 -1 2 molec/cm2/s -EMIS_CH4_COAL CH4 0 3 -1 2 molec/cm2/s -EMIS_CH4_LIVESTOCK CH4 0 4 -1 2 molec/cm2/s -EMIS_CH4_LANDFILLS CH4 0 5 -1 2 molec/cm2/s -EMIS_CH4_WASTEWATER CH4 0 6 -1 2 molec/cm2/s -EMIS_CH4_RICE CH4 0 7 -1 2 molec/cm2/s -EMIS_CH4_OTHERANTH CH4 0 8 -1 2 molec/cm2/s -EMIS_CH4_BIOMASSBURN CH4 111 -1 -1 2 molec/cm2/s -EMIS_CH4_WETLANDS CH4 0 10 -1 2 molec/cm2/s -EMIS_CH4_SEEPS CH4 0 11 -1 2 molec/cm2/s -EMIS_CH4_LAKES CH4 0 12 -1 2 molec/cm2/s -EMIS_CH4_TERMITES CH4 0 13 -1 2 molec/cm2/s -EMIS_CH4_SOILABSORB CH4 0 14 -1 2 molec/cm2/s -EMIS_CH4_RESERVOIRS CH4 0 15 -1 2 molec/cm2/s diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 deleted file mode 100644 index c8f6e2fa2..000000000 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCH4 +++ /dev/null @@ -1,318 +0,0 @@ -############################################################################### -### HISTORY.rc file for GEOS-Chem CH4 specialty simulations ### -### Contact: GEOS-Chem Support Team (geos-chem-support@g.harvard.edu) ### -############################################################################### - -#============================================================================ -# EXPID allows you to specify the beginning of the file path corresponding -# to each diagnostic collection. For example: -# -# EXPID: ./GEOSChem -# Will create netCDF files whose names begin "GEOSChem", -# in this run directory. -# -# EXPID: ./OutputDir/GEOSChem -# Will create netCDF files whose names begin with "GEOSChem" -# in the OutputDir sub-folder of this run directory. -# -# EXPDSC and CoresPerNode are only used by GCHP simulations. -#============================================================================ -EXPID: ./OutputDir/GEOSChem - -#============================================================================== -# %%%%% COLLECTION NAME DECLARATIONS %%%%% -# -# To enable a collection, remove the "#" character in front of its name. The -# Restart collection should always be turned on. -# -# NOTE: These are the "default" collections for GEOS-Chem, but you can create -# your own customized diagnostic collections as well. -#============================================================================== -COLLECTIONS: 'Restart', - 'SpeciesConc', - #'Budget', - #'CloudConvFlux', - #'ConcAfterChem', - #'LevelEdgeDiags', - #'SatDiagn', - #'SatDiagnEdge', - #'StateMet', - #'BoundaryConditions', -:: -############################################################################### -### The rest of this file consists of collection definitions. ### -### Above collections whose declarations are commented out will be ignored. ### -### Make sure that each collection definition, as well as the list of ### -### collections above, ends with a double-colon ("::"). ### -############################################################################### - -#============================================================================== -# %%%%% THE Restart COLLECTION %%%%% -# -# GEOS-Chem restart file fields -# -# Available for all simulations -#============================================================================== - Restart.filename: './Restarts/GEOSChem.Restart.%y4%m2%d2_%h2%n2z.nc4', - Restart.frequency: 'End', - Restart.duration: 'End', - Restart.mode: 'instantaneous' - Restart.fields: 'SpeciesRst_?ALL? ', - 'Met_DELPDRY ', - 'Met_BXHEIGHT ', - 'Met_TropLev ', -:: -#============================================================================== -# %%%%% THE SpeciesConc COLLECTION %%%%% -# -# GEOS-Chem species concentrations (default = all species) -# -# Available for all simulations -# -# Concentrations may be saved out as SpeciesConcVV [v/v dry air] or -# SpeciesConcMND [molec/cm3] -#============================================================================== - SpeciesConc.template: '%y4%m2%d2_%h2%n2z.nc4', - SpeciesConc.frequency: ${RUNDIR_HIST_TIME_AVG_FREQ} - SpeciesConc.duration: ${RUNDIR_HIST_TIME_AVG_DUR} - SpeciesConc.mode: 'time-averaged' - SpeciesConc.fields: 'SpeciesConcVV_?ADV? ', - 'SpeciesConcMND_?ALL? ', -:: -#============================================================================== -# %%%%% THE Budget COLLECTION %%%%% -# -# GEOS-Chem budget diagnostics defined as species kg/s in the column -# (full, troposphere, or PBL) due to a single component (e.g. chemistry) -# (default = advected species) -# -# Available for all simulations -#============================================================================== - Budget.template: '%y4%m2%d2_%h2%n2z.nc4', - Budget.frequency: ${RUNDIR_HIST_TIME_AVG_FREQ} - Budget.duration: ${RUNDIR_HIST_TIME_AVG_DUR} - Budget.mode: 'time-averaged' - Budget.fields: 'BudgetEmisDryDepFull_?ADV? ', - 'BudgetEmisDryDepTrop_?ADV? ', - 'BudgetEmisDryDepPBL_?ADV? ', - 'BudgetEmisDryDepLevs1to35_?ADV? ', - 'BudgetChemistryFull_?ADV? ', - 'BudgetChemistryTrop_?ADV? ', - 'BudgetChemistryPBL_?ADV? ', - 'BudgetChemistryLevs1to35_?ADV? ', - 'BudgetTransportFull_?ADV? ', - 'BudgetTransportTrop_?ADV? ', - 'BudgetTransportPBL_?ADV? ', - 'BudgetTransportLevs1to35_?ADV? ', - 'BudgetMixingFull_?ADV? ', - 'BudgetMixingTrop_?ADV? ', - 'BudgetMixingPBL_?ADV? ', - 'BudgetMixingLevs1to35_?ADV? ', - 'BudgetConvectionFull_?ADV? ', - 'BudgetConvectionTrop_?ADV? ', - 'BudgetConvectionPBL_?ADV? ', - 'BudgetConvectionLevs1to35_?ADV? ', - 'BudgetWetDepFull_?WET? ', - 'BudgetWetDepTrop_?WET? ', - 'BudgetWetDepPBL_?WET? ', - 'BudgetWetDepLevs1to35_?WET? ', -:: -#============================================================================== -# %%%%% THE CloudConvFlux COLLECTION %%%%% -# -# Cloud convective flux (default = advected species) -# -# Available for all simulations -#============================================================================== - CloudConvFlux.template: '%y4%m2%d2_%h2%n2z.nc4', - CloudConvFlux.frequency: ${RUNDIR_HIST_TIME_AVG_FREQ} - CloudConvFlux.duration: ${RUNDIR_HIST_TIME_AVG_DUR} - CloudConvFlux.mode: 'time-averaged' - CloudConvFlux.fields: 'CloudConvFlux_?ADV? ', -:: -#============================================================================== -# %%%%% THE ConcAfterChem COLLECTION %%%%% -# -# Concentrations of OH, HO2, O1D, O3P immediately after exiting the KPP solver -# or OH after the CH4 specialty-simulation chemistry routine. -# -# OH: Available for all full-chemistry simulations and CH4 specialty sim -#============================================================================== - ConcAfterChem.template: '%y4%m2%d2_%h2%n2z.nc4', - ConcAfterChem.frequency: ${RUNDIR_HIST_TIME_AVG_FREQ} - ConcAfterChem.duration: ${RUNDIR_HIST_TIME_AVG_DUR} - ConcAfterChem.mode: 'time-averaged' - ConcAfterChem.fields: 'OHconcAfterChem ', -:: -#============================================================================== -# %%%%% THE LevelEdgeDiags COLLECTION %%%%% -# -# Diagnostics that are defined on grid box level edges -# -# Available for all simulations -#============================================================================== - LevelEdgeDiags.template: '%y4%m2%d2_%h2%n2z.nc4', - LevelEdgeDiags.frequency: ${RUNDIR_HIST_TIME_AVG_FREQ} - LevelEdgeDiags.duration: ${RUNDIR_HIST_TIME_AVG_DUR} - LevelEdgeDiags.mode: 'time-averaged' - LevelEdgeDiags.fields: 'Met_CMFMC ', - 'Met_PEDGE ', - 'Met_PEDGEDRY ', - 'Met_PFICU ', - 'Met_PFILSAN ', - 'Met_PFLCU ', - 'Met_PFLLSAN ', -:: -#============================================================================== -# %%%%% THE SatDiagn COLLECTION %%%%% -# -# GEOS-Chem data during satellite overpass -# -# Available for all simulations -#============================================================================== - SatDiagn.template: '%y4%m2%d2_%h2%n2z.nc4', - SatDiagn.format: 'CFIO', - SatDiagn.frequency: 00000001 000000 - SatDiagn.duration: 00000100 000000 - SatDiagn.hrrange: 11.98 15.02 - SatDiagn.mode: 'time-averaged' - SatDiagn.fields: 'SatDiagnConc_CH4 ', - 'SatDiagnRH ', - 'SatDiagnAirDen ', - 'SatDiagnBoxHeight ', - 'SatDiagnPEdge ', - 'SatDiagnTROPP ', - 'SatDiagnPBLHeight ', - 'SatDiagnPBLTop ', - 'SatDiagnTAir ', - 'SatDiagnGWETROOT ', - 'SatDiagnGWETTOP ', - 'SatDiagnPARDR ', - 'SatDiagnPARDF ', - 'SatDiagnPRECTOT ', - 'SatDiagnSLP ', - 'SatDiagnSPHU ', - 'SatDiagnTS ', - 'SatDiagnPBLTOPL ', - 'SatDiagnMODISLAI ', - 'SatDiagnColEmis_CH4 ', - 'SatDiagnSurfFlux_CH4 ', -:: -#============================================================================== -# %%%%% THE SatDiagnEdge COLLECTION %%%%% -# -# GEOS-Chem data (on level edges) during satellite overpass -# -# Available for all simulations -#============================================================================== - SatDiagnEdge.template: '%y4%m2%d2_%h2%n2z.nc4', - SatDiagnEdge.format: 'CFIO', - SatDiagnEdge.frequency: 00000001 000000 - SatDiagnEdge.duration: 00000100 000000 - SatDiagnEdge.hrrange: 11.98 15.02 - SatDiagnEdge.mode: 'time-averaged' - SatDiagnEdge.fields: 'SatDiagnConc_PEDGE ', -:: -#============================================================================== -# %%%%% The StateMet COLLECTION %%%%% -# -# Fields of the State_Met object (also see the LevelEdgeDiags collection) -# -# Available for all simulations -#============================================================================== - StateMet.template: '%y4%m2%d2_%h2%n2z.nc4', - StateMet.frequency: ${RUNDIR_HIST_TIME_AVG_FREQ} - StateMet.duration: ${RUNDIR_HIST_TIME_AVG_DUR} - StateMet.mode: 'time-averaged' - StateMet.fields: 'Met_AD ', - 'Met_AIRDEN ', - 'Met_AIRVOL ', - 'Met_ALBD ', - 'Met_AVGW ', - 'Met_BXHEIGHT ', - 'Met_ChemGridLev ', - 'Met_CLDF ', - 'Met_CLDFRC ', - 'Met_CLDTOPS ', - 'Met_DELP ', - 'Met_DQRCU ', - 'Met_DQRLSAN ', - 'Met_DTRAIN ', - 'Met_EFLUX ', - 'Met_FRCLND ', - 'Met_FRLAKE ', - 'Met_FRLAND ', - 'Met_FRLANDICE ', - 'Met_FROCEAN ', - 'Met_FRSEAICE ', - 'Met_FRSNOW ', - 'Met_GWETROOT ', - 'Met_GWETTOP ', - 'Met_HFLUX ', - 'Met_LAI ', - 'Met_PARDR ', - 'Met_PARDF ', - 'Met_PBLTOPL ', - 'Met_PBLH ', - 'Met_PHIS ', - 'Met_PMID ', - 'Met_PMIDDRY ', - 'Met_PRECANV ', - 'Met_PRECCON ', - 'Met_PRECLSC ', - 'Met_PRECTOT ', - 'Met_PS1DRY ', - 'Met_PS1WET ', - 'Met_PS2DRY ', - 'Met_PS2WET ', - 'Met_PSC2WET ', - 'Met_PSC2DRY ', - 'Met_QI ', - 'Met_QL ', - 'Met_OMEGA ', - 'Met_OPTD ', - 'Met_REEVAPCN ', - 'Met_REEVAPLS ', - 'Met_SLP ', - 'Met_SNODP ', - 'Met_SNOMAS ', - 'Met_SPHU ', - 'Met_SPHU1 ', - 'Met_SPHU2 ', - 'Met_SUNCOS ', - 'Met_SUNCOSmid ', - 'Met_SWGDN ', - 'Met_T ', - 'Met_TAUCLI ', - 'Met_TAUCLW ', - 'Met_THETA ', - 'Met_TMPU1 ', - 'Met_TMPU2 ', - 'Met_TO3 ', - 'Met_TropHt ', - 'Met_TropLev ', - 'Met_TropP ', - 'Met_TS ', - 'Met_TSKIN ', - 'Met_TV ', - 'Met_U ', - 'Met_U10M ', - 'Met_USTAR ', - 'Met_UVALBEDO ', - 'Met_V ', - 'Met_V10M ', - 'Met_Z0 ', -:: -#============================================================================== -# %%%%% THE BoundaryConditions COLLECTION %%%%% -# -# GEOS-Chem boundary conditions for use in nested grid simulations -# -# Available for all simulations -#============================================================================== - BoundaryConditions.template: '%y4%m2%d2_%h2%n2z.nc4', - BoundaryConditions.frequency: 00000000 030000 - BoundaryConditions.duration: 00000001 000000 - BoundaryConditions.mode: 'instantaneous' - BoundaryConditions.fields: 'SpeciesBC_?ADV? ', -:: \ No newline at end of file diff --git a/run/GCClassic/createRunDir.sh b/run/GCClassic/createRunDir.sh index cd32b6edc..073f85b17 100755 --- a/run/GCClassic/createRunDir.sh +++ b/run/GCClassic/createRunDir.sh @@ -105,16 +105,15 @@ RUNDIR_VARS+="RUNDIR_DATA_ROOT=$GC_DATA_ROOT\n" printf "${thinline}Choose simulation type:${thinline}" printf " 1. Full chemistry\n" printf " 2. Aerosols only\n" -printf " 3. CH4\n" -printf " 4. CO2\n" -printf " 5. Hg\n" -printf " 6. POPs\n" -printf " 7. Tagged CH4\n" -printf " 8. Tagged CO\n" -printf " 9. Tagged O3\n" -printf " 10. TransportTracers\n" -printf " 11. Trace metals\n" -printf " 12. Carbon\n" +printf " 3. Carbon\n" +printf " 4. Hg\n" +printf " 5. POPs\n" +printf " 6. Tagged O3\n" +printf " 7. TransportTracers\n" +printf " 8. Trace metals\n" +printf " 9. CH4\n" +printf " 10. CO2\n" +printf " 11. Tagged CO\n" valid_sim=0 while [ "${valid_sim}" -eq 0 ]; do read -p "${USER_PROMPT}" sim_num @@ -124,25 +123,23 @@ while [ "${valid_sim}" -eq 0 ]; do elif [[ ${sim_num} = "2" ]]; then sim_name=aerosol elif [[ ${sim_num} = "3" ]]; then - sim_name=CH4 + sim_name=carbon elif [[ ${sim_num} = "4" ]]; then - sim_name=CO2 - elif [[ ${sim_num} = "5" ]]; then sim_name=Hg - elif [[ ${sim_num} = "6" ]]; then + elif [[ ${sim_num} = "5" ]]; then sim_name=POPs + elif [[ ${sim_num} = "6" ]]; then + sim_name=tagO3 elif [[ ${sim_num} = "7" ]]; then - sim_name=tagCH4 + sim_name=TransportTracers elif [[ ${sim_num} = "8" ]]; then - sim_name=tagCO + sim_name=metals elif [[ ${sim_num} = "9" ]]; then - sim_name=tagO3 + sim_name=CH4 elif [[ ${sim_num} = "10" ]]; then - sim_name=TransportTracers + sim_name=CO2 elif [[ ${sim_num} = "11" ]]; then - sim_name=metals - elif [[ ${sim_num} = "12" ]]; then - sim_name=carbon + sim_name=tagCO else valid_sim=0 printf "Invalid simulation option. Try again.\n" @@ -886,7 +883,7 @@ chmod 744 ${rundir}/archiveRun.sh # inactive species that are active in the other simulations, and this # causes a conflict. Work out a better solution later. # -- Bob Yantosca, 10 Dec 2021 -if [[ "x${sim_num}" == "x5" ]]; then +if [[ "x${sim_name}" == "xHg" ]]; then cp -r ${gcdir}/run/shared/species_database_hg.yml ${rundir}/species_database.yml else cp -r ${gcdir}/run/shared/species_database.yml ${rundir} @@ -922,7 +919,6 @@ cd ${rundir} # start year/month/day matches default initial restart file. if [[ "x${sim_name}" == "xHg" || "x${sim_name}" == "xCH4" || - "x${sim_name}" == "xtagCH4" || "x${sim_name}" == "xcarbon" || "x${sim_name}" == "xTransportTracers" ]]; then startdate='20190101' diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.tagCH4 b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.tagCH4 deleted file mode 100644 index 2c872a89a..000000000 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.tagCH4 +++ /dev/null @@ -1,112 +0,0 @@ ---- -### geoschem_config.yml: GEOS-Chem Runtime configuration options. -### Customized for simulations using the tagged CH4 mechanism. - -#============================================================================ -# Simulation settings -#============================================================================ -simulation: - name: ${RUNDIR_SIM_NAME} - start_date: [${RUNDIR_SIM_START_DATE}, ${RUNDIR_SIM_START_TIME}] - end_date: [${RUNDIR_SIM_END_DATE}, ${RUNDIR_SIM_END_TIME}] - root_data_dir: ${RUNDIR_DATA_ROOT} - met_field: ${RUNDIR_MET} - species_database_file: ./species_database.yml - species_metadata_output_file: OutputDir/geoschem_species_metadata.yml - verbose: - activate: false - on_cores: root # Allowed values: root all - use_gcclassic_timers: ${RUNDIR_USE_GCCLASSIC_TIMERS} - -#============================================================================ -# Grid settings -#============================================================================ -grid: - resolution: ${RUNDIR_GRID_RES_LONG} - number_of_levels: ${RUNDIR_GRID_NLEV} - longitude: - range: ${RUNDIR_GRID_LON_RANGE} - center_at_180: ${RUNDIR_CENTER_LON_180} - latitude: - range: ${RUNDIR_GRID_LAT_RANGE} - half_size_polar_boxes: ${RUNDIR_GRID_HALF_POLAR} - nested_grid_simulation: - activate: ${RUNDIR_GRID_NESTED_SIM} - buffer_zone_NSEW: ${RUNDIR_GRID_BUFFER_ZONE} - -#============================================================================ -# Timesteps settings -#============================================================================ -timesteps: - transport_timestep_in_s: ${RUNDIR_TRANSPORT_TS} - chemistry_timestep_in_s: ${RUNDIR_CHEMISTRY_TS} - -#============================================================================ -# Settings for GEOS-Chem operations -#============================================================================ -operations: - - chemistry: - activate: true - - convection: - activate: true - - pbl_mixing: - activate: true - use_non_local_pbl: ${RUNDIR_USE_NLPBL} - - transport: - gcclassic_tpcore: # GEOS-Chem Classic only - activate: true # GEOS-Chem Classic only - fill_negative_values: true # GEOS-Chem Classic only - iord_jord_kord: [3, 3, 7] # GEOS-Chem Classic only - transported_species: - - CH4 - - CH4_OIL - - CH4_GAS - - CH4_COL - - CH4_LIV - - CH4_LDF - - CH4_WST - - CH4_RIC - - CH4_OTA - - CH4_BBN - - CH4_WTL - - CH4_SEE - - CH4_LAK - - CH4_TER - - CH4_SAB - - CH4_RES - -#============================================================================ -# Options for CH4 -#============================================================================ -CH4_simulation_options: - - use_observational_operators: - AIRS: false - GOSAT: false - TCCON: false - - analytical_inversion: - perturb_CH4_boundary_conditions: false - CH4_boundary_condition_ppb_increase_NSEW: [0.0, 0.0, 0.0, 0.0] - -#============================================================================ -# Settings for diagnostics (other than HISTORY and HEMCO) -#============================================================================ -extra_diagnostics: - - obspack: - activate: false - quiet_logfile_output: false - input_file: ./obspack_co2_1_OCO2MIP_2018-11-28.YYYYMMDD.nc - output_file: ./OutputDir/GEOSChem.ObsPack.YYYYMMDD_hhmmz.nc4 - output_species: - - CH4 - - planeflight: - activate: false - flight_track_file: Planeflight.dat.YYYYMMDD - output_file: plane.log.YYYYMMDD \ No newline at end of file diff --git a/run/GCClassic/setupForRestarts.sh b/run/GCClassic/setupForRestarts.sh index 9cace4b46..61ef8b4a7 100755 --- a/run/GCClassic/setupForRestarts.sh +++ b/run/GCClassic/setupForRestarts.sh @@ -334,7 +334,7 @@ function getPOPsLocal() { function getPOPsRemote() { #======================================================================== - # Returns remote restart file path for the TagCH4 simulation + # Returns remote restart file path for the POPs simulation # # 1st argument: Remote restart file directory #======================================================================== @@ -342,29 +342,6 @@ function getPOPsRemote() { return $? } - -function getTagCH4Local() { - #======================================================================== - # Returns local restart file path for the TagCH4 simulation - # - # 1st argument: Local restart file directory - #======================================================================== - echo $(join "${1}" "${RUNDIR_restarts_tagch4_local}") - return $? -} - - -function getTagCH4Remote() { - #======================================================================== - # Returns remote restart file path for the TagCH4 simulation - # - # 1st argument: Remote restart file directory - #======================================================================== - echo $(join "${1}" "${RUNDIR_restarts_tagch4_remote}") - return $? -} - - function getTagCOLocal() { #======================================================================== # Returns local restart file path for the TagCO simulation @@ -479,7 +456,6 @@ function setEFYOtoEYinHemcoConfig() { "x${sim_extra_option}" == "xcomplexSOA_SVPOA" || "x${sim_extra_option}" == "xAPM" || "x${sim_name}" == "xPOPs" || - "x${sim_name}" == "xtagCH4" || "x${sim_name}" == "xtagO3" ]]; then old="SpeciesRst_?ALL? \$YYYY/\$MM/\$DD/\$HH EFYO" new="SpeciesRst_?ALL? \$YYYY/\$MM/\$DD/\$HH EY " @@ -541,10 +517,6 @@ function copyRestartToRunDir() { remote_rst=$(getPOPsRemote "${rst_root}") local_rst=$(getPOPsLocal "${loc_root}") - elif [[ "x${sim_name}" == "xtagCH4" ]]; then - remote_rst=$(getTagCH4Remote "${rst_root}") - local_rst=$(getTagCH4Local "${loc_root}") - elif [[ "x${sim_name}" == "xtagCO" ]]; then remote_rst=$(getTagCORemote "${rst_root}") local_rst=$(getTagCOLocal "${loc_root}") diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 4be8e4df8..845983b8f 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -524,8 +524,6 @@ Mask fractions: false # - Multiply soil absorption by -1 to get a "negative" flux. # (Only apply the scaling factor when adding to the total CH4 simulation) # - Use updated soil absorption emissions with seasonality applied -# - For tagged CH4 simulations soil absorption is treated as a loss and applied -# in mixing_mod.F #============================================================================== (((FUNG_TERMITES 0 CH4_TERMITES $ROOT/CH4/v2022-11/4x5/termites.geos.4x5.nc CH4 1985/1/1/0 C xy kg/m2/s CH4 - 13 1 diff --git a/run/GCHP/createRunDir.sh b/run/GCHP/createRunDir.sh index 1d937a482..ea3ceecc4 100755 --- a/run/GCHP/createRunDir.sh +++ b/run/GCHP/createRunDir.sh @@ -617,7 +617,7 @@ cp ./gitignore ${rundir}/.gitignore # Copy file to auto-update common settings. Use adjoint version for CO2. cp ./setCommonRunSettings.sh.template ${rundir}/setCommonRunSettings.sh -if [[ "x${sim_name}" == "xfullchem" || "x${sim_name}" == "xCH4" ]]; then +if [[ "x${sim_name}" == "xfullchem" || "x${sim_name}" == "xcarbon" ]]; then cp -r ${gcdir}/run/shared/metrics.py ${rundir} chmod 744 ${rundir}/metrics.py fi @@ -765,7 +765,6 @@ if [[ "x${sim_extra_option}" == "xbenchmark" || "x${sim_extra_option}" == "xTOMAS15" || "x${sim_extra_option}" == "xTOMAS40" || "x${sim_name}" == "xPOPs" || - "x${sim_name}" == "xtagCH4" || "x${sim_name}" == "xTransportTracers" || "x${sim_name}" == "xtagO3" ]]; then RUNDIR_VARS+="RUNDIR_INITIAL_RESTART_SPECIES_REQUIRED='0'\n" @@ -843,7 +842,7 @@ while [ "$valid_response" -eq 0 ]; do printf "\n" git init git add *.rc *.sh *.yml input.nml - if [[ "x${sim_name}" == "xfullchem" || "x${sim_name}" == "xCH4" ]]; then + if [[ "x${sim_name}" == "xfullchem" || "x${sim_name}" == "xcarbon" ]]; then git add *.py fi printf " " >> ${version_log} diff --git a/run/WRF/ch4/HEMCO_Config.rc b/run/WRF/ch4/HEMCO_Config.rc index c18e6dcd4..d6edc5b85 100644 --- a/run/WRF/ch4/HEMCO_Config.rc +++ b/run/WRF/ch4/HEMCO_Config.rc @@ -364,8 +364,6 @@ Warnings: 1 # - Multiply soil absorption by -1 to get a "negative" flux. # (Only apply the scaling factor when adding to the total CH4 simulation) # - Use updated soil absorption emissions with seasonality applied -# - For tagged CH4 simulations soil absorption is treated as a loss and applied -# in mixing_mod.F #============================================================================== (((FUNG_TERMITES 0 CH4_TERMITES $ROOT/CH4/v2014-09/4x5/termites.geos.4x5.nc CH4 1985/1/1/0 C xy kg/m2/s CH4 - 13 1 diff --git a/run/shared/download_data.yml b/run/shared/download_data.yml index 14321c494..0c09816d4 100644 --- a/run/shared/download_data.yml +++ b/run/shared/download_data.yml @@ -50,9 +50,6 @@ restarts: pops: remote: v2020-02/GEOSChem.Restart.POPs_BaP.20190701_0000z.nc4 local: GEOSChem.Restart.20190701_0000z.nc4 - tagch4: - remote: v2020-02/GEOSChem.Restart.CH4.20190101_0000z.nc4 - local: GEOSChem.Restart.20190101_0000z.nc4 tagco: remote: v2020-02/GEOSChem.Restart.tagCO.20190701_0000z.nc4 local: GEOSChem.Restart.20190701_0000z.nc4 diff --git a/test/integration/GCClassic/integrationTestCreate.sh b/test/integration/GCClassic/integrationTestCreate.sh index f9a381096..48ccd518a 100755 --- a/test/integration/GCClassic/integrationTestCreate.sh +++ b/test/integration/GCClassic/integrationTestCreate.sh @@ -195,29 +195,23 @@ if [[ "X${testsToRun}" == "XALL" ]]; then #========================================================================= printf "\nCreating new run directories:\n" - # 4x5 merra2 CH4 - create_rundir "3\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" - - # 4x5 merra2 CO2 - create_rundir "4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" - # 4x5 merra2 aerosol create_rundir "2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 carbon - create_rundir "12\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "3\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 carbon CH4 only - create_rundir "12\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "3\n2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 carbon CO2 only - create_rundir "12\n3\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "3\n3\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 carbon CO only - create_rundir "12\n4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "3\n4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 carbon OCS only - create_rundir "12\n5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "3\n5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 fullchem create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" @@ -257,28 +251,31 @@ if [[ "X${testsToRun}" == "XALL" ]]; then create_rundir "1\n6\n1\n1\n1\n2\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 Hg - create_rundir "5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 POPs_BaP - create_rundir "6\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" - - # 4x5 merra2 tagCH4 - create_rundir "7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" - - # 4x5 merra2 tagCO - create_rundir "8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "5\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 tagO3 - create_rundir "9\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "6\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 TransportTracers - create_rundir "10\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 TransportTracers_LuoWd dir="gc_4x5_merra2_TransportTracers_LuoWd" - create_rundir "10\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" + create_rundir "7\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" # 4x5 merra2 metals + create_rundir "8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + + # 4x5 merra2 CH4 + create_rundir "9\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + + # 4x5 merra2 CO2 + create_rundir "10\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + + # 4x5 merra2 tagCO create_rundir "11\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" #========================================================================= @@ -293,7 +290,7 @@ if [[ "X${testsToRun}" == "XALL" ]]; then #========================================================================= # 05x0625 merra2 CH4_47L_na - create_rundir "3\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "9\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" # 05x0625 merra2 fullchem_47L_na create_rundir "1\n1\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" diff --git a/test/parallel/GCClassic/parallelTestCreate.sh b/test/parallel/GCClassic/parallelTestCreate.sh index 1fba154d1..c5112558c 100755 --- a/test/parallel/GCClassic/parallelTestCreate.sh +++ b/test/parallel/GCClassic/parallelTestCreate.sh @@ -197,10 +197,7 @@ if [[ "X${testsToRun}" == "XALL" ]]; then create_rundir "2\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" #4x5 merra2 carbon - create_rundir "12\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" - - # 4x5 merra2 CH4 - create_rundir "3\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "3\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 fullchem create_rundir "1\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" @@ -240,28 +237,31 @@ if [[ "X${testsToRun}" == "XALL" ]]; then create_rundir "1\n6\n1\n1\n1\n2\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 Hg - create_rundir "5\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "4\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 POPs_BaP - create_rundir "6\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" - - # 4x5 merra2 tagCH4 - create_rundir "7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" - - # 4x5 merra2 tagCO - create_rundir "8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "5\n1\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 tagO3 - create_rundir "9\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "6\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 TransportTracers - create_rundir "10\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "7\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" # 4x5 merra2 TransportTracers_LuoWd dir="gc_4x5_merra2_TransportTracers_LuoWd" - create_rundir "10\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" + create_rundir "7\n1\n1\n1\n${rundirsDir}\n${dir}\nn\n" "${log}" # 4x5 merra2 metals" + create_rundir "8\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + + # 4x5 merra2 CH4 + create_rundir "9\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + + # 4x5 merra2 CO2 + create_rundir "10\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" + + # 4x5 merra2 tagCO create_rundir "11\n1\n1\n1\n${rundirsDir}\n\nn\n" "${log}" #========================================================================= @@ -276,7 +276,7 @@ if [[ "X${testsToRun}" == "XALL" ]]; then #========================================================================= # 05x0625 merra2 CH4_47L_na" - create_rundir "3\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" + create_rundir "9\n1\n3\n4\n2\n${rundirsDir}\n\nn\n" "${log}" fi From e4a555f0d86ea247dfb19883ed04850304a322b4 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Tue, 21 May 2024 13:07:15 -0400 Subject: [PATCH 272/331] Fix typo and formatting in issue template forms Signed-off-by: Melissa Sulprizio --- .github/ISSUE_TEMPLATE/bug-report.yml | 7 +++---- .github/ISSUE_TEMPLATE/new-feature.yml | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 90ddfcb8b..198090241 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -32,8 +32,8 @@ body: - type: textarea id: log-files attributes: - label: Please attach any relevant configuration and log files. - description: Drag and drop files like the GEOS-Chem log file, geoschem_config.rc, and HEMCO_Config.rc here. You may need to rename files to end in .txt first. + label: Please attach any relevant configuration and log files. + description: Drag and drop files like the GEOS-Chem log file, geoschem_config.yml, HEMCO_Config.rc, HISTORY.rc, and build_info/summarize_build here. You may need to rename files to end in .txt first. validations: required: false - type: input @@ -61,9 +61,8 @@ body: label: What compiler were you using? multiple: true options: - - Intel - GNU - - PGI + - Intel - Other (please specify below) validations: required: true diff --git a/.github/ISSUE_TEMPLATE/new-feature.yml b/.github/ISSUE_TEMPLATE/new-feature.yml index ccd5a90d2..64f08b9e4 100644 --- a/.github/ISSUE_TEMPLATE/new-feature.yml +++ b/.github/ISSUE_TEMPLATE/new-feature.yml @@ -26,7 +26,7 @@ body: attributes: label: Reference(s) description: If this is a science update, please provide a literature citation. - placeholder: e.g. Bey, I., D. J. Jacob, R. M. Yantosca, J. A. Logan, B. Field, A. M. Fiore, Q. Li, H. Liu, L. J. Mickley, and M. Schultz, Global modeling of tropospheric chemistry with assimilated meteorology: Model description and evaluation, J. Geophys. Res., 106, 23,073-23,096, 2001. + placeholder: "e.g. Bey et al., Global modeling of tropospheric chemistry with assimilated meteorology: Model description and evaluation, J. Geophys. Res., 106, 23,073-23,096, 2001." validations: required: false - type: dropdown From 9a12d4819a4235dce35a0b7267eaac0e33f2727a Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Tue, 21 May 2024 14:15:44 -0400 Subject: [PATCH 273/331] Update bug report issue form to require user to specify compiler version Removed the dropdown for selecting a compiler used and now use a text box so users can also provide the compiler version. Signed-off-by: Melissa Sulprizio --- .github/ISSUE_TEMPLATE/bug-report.yml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 198090241..db55024c6 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -40,7 +40,7 @@ body: id: version attributes: label: What GEOS-Chem version were you using? - placeholder: ex. 14.4.0 + placeholder: e.g. 14.4.0 validations: required: true - type: dropdown @@ -55,15 +55,11 @@ body: - Other (please explain below) validations: required: true - - type: dropdown - id: compiler + - type: input + id: compiler-version attributes: - label: What compiler were you using? - multiple: true - options: - - GNU - - Intel - - Other (please specify below) + label: What compiler and version were you using? + placeholder: e.g. gcc 10.2.0, ifort 19.0.5.281 validations: required: true - type: dropdown From 4a2c29196775116a06f120c13556ae11c5972421 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 20 May 2024 16:33:23 -0400 Subject: [PATCH 274/331] Remove do_fullchem array that is declared but not used. Usage of this array was removed in 13.4.0. Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + GeosCore/fullchem_mod.F90 | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3adf1986..2b5861345 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,6 +66,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - GitHub config files `.github/stale.yml` and `.github/no-response.yml` - Unused CO2 and carbon simulation options from `geoschem_config.yml` (and from related code in co2_mod.F90). - Removed ISORROPIA +- Removed Begin array in do_fullchem (declared but not used) ## [14.3.1] - 2024-04-02 ### Added diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index de50dfa2a..0bbe52b9a 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -200,8 +200,6 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & REAL(dp) :: RCNTRL (20) REAL(dp) :: RSTATE (20) REAL(dp) :: C_before_integrate(NSPEC) - REAL(fp) :: Before(State_Grid%NX, State_Grid%NY, & - State_Grid%NZ, State_Chm%nAdvect ) ! For tagged CO saving REAL(fp) :: LCH4, PCO_TOT, PCO_CH4, PCO_NMVOC From 6306946c519cedfc11e4946a489b30ead0e7ce0e Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Tue, 21 May 2024 15:46:40 -0400 Subject: [PATCH 275/331] Add entries for additional simulation information to the bug report form Now require user to specify the configuration (GCClassic, GCHP, etc.), simulation type (fullchem, carbon, etc.), resolution, and meteorology used when encountering the bug reported. Signed-off-by: Melissa Sulprizio --- .github/ISSUE_TEMPLATE/bug-report.yml | 54 +++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index db55024c6..1c3186d8c 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -74,6 +74,60 @@ body: - "No" validations: required: true + - type: dropdown + id: configuration + attributes: + label: In what configuration were you running GEOS-Chem? + multiple: false + options: + - GCClassic + - GCHP + - CESM + - WRF-GC + - Other (please explain in additional information section below) + validations: + required: true + - type: dropdown + id: simulation + attributes: + label: What simulation were you running? + description: If using full chemistry, specify extra options like benchmark, complexSOA, etc. in the additional information section below + multiple: false + options: + - Full chemistry + - Aerosol + - Carbon + - Hg + - POPs + - TagO3 + - TransportTracers + - Trace metals + - CH4 + - CO2 + - TagCO + validations: + required: true + - type: input + id: resolution + attributes: + label: As what resolution were you running GEOS-Chem? + description: If running a nested grid simulation, please also specify the region. + placeholder: "e.g. 4x5, 2x2.5, 0.25x0.3125 NA, c48, c180" + validations: + required: true + - type: dropdown + id: meteorology + attributes: + label: What meterology fields did you use? + multiple: false + options: + - GEOS-FP + - GEOS-IT + - MERRA-2 + - GCAP 2.0 + - Other (please explain in additional information section below) + validations: + required: true - type: textarea id: additional-info attributes: From 5b48126bb864a0b83d9eb354dc810eeabe01f510 Mon Sep 17 00:00:00 2001 From: ubuntu Date: Wed, 22 May 2024 15:00:00 +0000 Subject: [PATCH 276/331] Remove "--request-payer requester" from run/shared/download_data.yml run/shared/download_data.yml - Removed "--request-payer requester" from command to download data from the s3://gcgrid bucket. This data is now open-source. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + run/shared/download_data.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4daa20f32..878d76fb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Unused CO2 and carbon simulation options from `geoschem_config.yml` (and from related code in co2_mod.F90). - Removed ISORROPIA - Removed tagCH4 simulation as option +- Removed `--request-payer requester` from `run/shared/download_data.py`; the `s3://gcgrid` data is open-source ## [14.3.1] - 2024-04-02 ### Added diff --git a/run/shared/download_data.yml b/run/shared/download_data.yml index 0c09816d4..add6476a0 100644 --- a/run/shared/download_data.yml +++ b/run/shared/download_data.yml @@ -9,7 +9,7 @@ mirrors: short_name: aws s3_bucket: True remote: s3://gcgrid - command: 'aws s3 cp --request-payer requester ' + command: 'aws s3 cp ' quote: "" rochester: short_name: ur From ede27d016259a1db386c401565c263a288aaf2fe Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 23 May 2024 12:41:23 -0400 Subject: [PATCH 277/331] Updated the list of authors for 14.4.0 AUTHORS.txt - Added Simon Branford, Yidan Tang, Karn Vohra, Haihui Zhu to the list of GEOS-Chem developers Signed-off-by: Bob Yantosca --- AUTHORS.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index 6bb5146eb..fa8ecb638 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1,5 +1,5 @@ List of Developers for GEOS-Chem, HEMCO, and Related Software -(11 Jul 2023) +(23 May 2024) =============================================================================== ADAMS, Peter @@ -23,6 +23,7 @@ BONILLA, Eimy BOVY, Benoit BOWMAN, Kevin BOYS, Brian +BRANFORD, Simon BRATTICH, Erika BREIDER, Tom BREWER, Jared @@ -290,6 +291,7 @@ SUTHERLAND, Bethany SUTO, Kimito SZELAG, Monika TAI, Amos +TANG, Yidan TANIMOTO, Hiroshi TANNAHILL, John TAO, Shu @@ -312,6 +314,7 @@ VAN DONKELAAR, Aaron VAROTSOS, Kostas VINKEN, Geert VITT, Francis +VOHRA, Karn WAGSTROM, Kristina WALKER, Thomas WANG, James @@ -359,6 +362,7 @@ ZHANG, Li ZHANG, Lin ZHANG, Qiang ZHANG, Yanxu +ZHU, Haihui ZHU, Lei ZHU, Liye ZHUANG, Jiawei From 4a2c4237a165b9ce30d601d81c2459c705184145 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Wed, 29 May 2024 08:53:22 -0400 Subject: [PATCH 278/331] Modify model configuration section in bug report issues form Remove CESM and WRF-GC from model configuration option and instead add a note instructing users to contact the specific model's support if running into issues with GEOS-Chem in an external model. Signed-off-by: Melissa Sulprizio --- .github/ISSUE_TEMPLATE/bug-report.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 1c3186d8c..b82973516 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -78,12 +78,11 @@ body: id: configuration attributes: label: In what configuration were you running GEOS-Chem? + description: If you are experiencing issues with GEOS-Chem in an external model, please contact that model's support. This repository is for tracking issues related to the GEOS-Chem science code base. multiple: false options: - GCClassic - GCHP - - CESM - - WRF-GC - Other (please explain in additional information section below) validations: required: true @@ -134,4 +133,4 @@ body: label: Additional information description: Please provide any additional information here that you think might be relevant. validations: - required: false \ No newline at end of file + required: false From 1ef3d7f88da95ca2425267fc4f96bd1524fc985f Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 30 May 2024 09:38:56 -0400 Subject: [PATCH 279/331] GEOS-Chem 14.4.0 release commit Updated version numbers to 14.4.0 in: - CHANGELOG.md - KPP/fullchem/CHANGELOG_fullchem.md Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 +- KPP/fullchem/CHANGELOG_fullchem.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93f123a4a..b7f695551 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] - TBD +## [14.4.0] - 2024-05-30 ### Added - Added `SpcConc%Units` for species-specific unit conversion - Diel and day-of-week scale factors for CEDS global base emissions diff --git a/KPP/fullchem/CHANGELOG_fullchem.md b/KPP/fullchem/CHANGELOG_fullchem.md index 2b3f7f193..50eba3202 100644 --- a/KPP/fullchem/CHANGELOG_fullchem.md +++ b/KPP/fullchem/CHANGELOG_fullchem.md @@ -4,7 +4,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), # Mechanism history -## [Unreleased] - TBD +## [14.4.0] - 2024-05-30 - Bug fix: Change `3.4.e-31` to `3.4.d-31` in `NO2 + O = NO + O2` rxn - Update rxns with zero Arrhenius `B` parameters to use function `GCARR_ac` instead of `GCARR_abc` From 0b1c88dbf1d39d5de44b5df29a45791a17fe09ae Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 4 Jun 2024 17:06:13 -0400 Subject: [PATCH 280/331] Now use comma-separated list for exempt-issue-labels .github/workflows/stale.yml - The exempt-issue-labels YAML tag should have had a comma-separated list of labels not to be marked stale. We had used a YAML sequence, which caused the GitHub "Mark stale issues" to fail. Now fixed. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- .github/workflows/stale.yml | 9 +-------- CHANGELOG.md | 4 ++++ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index b14b1f621..c4ba4f38f 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -22,14 +22,7 @@ jobs: with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-label: 'stale' - exempt-issue-labels: - - 'category: Discussion' - - 'category: Feature Request' - - 'deferred' - - 'help needed: Open Research Problem' - - 'help needed: Request Input from Community' - - 'never stale' - - 'TODO: Documentation' + exempt-issue-labels: 'category: Discussion','category: Feature Request','deferred','help needed: Open Research Problem','help needed: Request Input from Community','never stale','TODO: Documentation' days-before-issue-stale: 30 days-before-issue-close: 7 stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. If there are no updates within 7 days it will be closed. You can add the "never stale" tag to prevent the issue from closing this issue.' diff --git a/CHANGELOG.md b/CHANGELOG.md index b7f695551..ad602fb14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] - TBD +### Fixed +- Fixed formatting error in `.github/workflows/stale.yml` that caused the Mark Stale Issues action not to run + ## [14.4.0] - 2024-05-30 ### Added - Added `SpcConc%Units` for species-specific unit conversion From b921184a54747de9df61f43ab43ff0e4e97e8c79 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 7 Jun 2024 15:19:17 -0400 Subject: [PATCH 281/331] Remove BudgetWetDep* diagnostic entries for sims w/o soluble species run/GCClassic/HISTORY/.rc.templates/HISTORY.rc.CH4 run/GCClassic/HISTORY/.rc.templates/HISTORY.rc.CO2 run/GCClassic/HISTORY/.rc.templates/HISTORY.rc.carbon run/GCClassic/HISTORY/.rc.templates/HISTORY.rc.tagCO run/GCClassic/HISTORY/.rc.templates/HISTORY.rc.tagO3 - Remove the BudgetWetDep* terms, as these simulations do not have any soluble species, and as such, wetdep is turned off. This will avoid the error as described in issue #2305. Signed-off-by: Bob Yantosca --- run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 | 4 ---- run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 | 4 ---- run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon | 4 ---- run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO | 4 ---- run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 | 4 ---- 5 files changed, 20 deletions(-) diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 index d175f2487..ffafc62ae 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 @@ -136,10 +136,6 @@ COLLECTIONS: 'Restart', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', 'BudgetConvectionLevs1to35_?ADV? ', - 'BudgetWetDepFull_?WET? ', - 'BudgetWetDepTrop_?WET? ', - 'BudgetWetDepPBL_?WET? ', - 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CH4 COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 index 767356540..be4672d21 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 @@ -111,10 +111,6 @@ COLLECTIONS: 'Restart', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', 'BudgetConvectionLevs1to35_?ADV? ', - 'BudgetWetDepFull_?WET? ', - 'BudgetWetDepTrop_?WET? ', - 'BudgetWetDepPBL_?WET? ', - 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CO2 COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon index b0d89c647..fc9d39cca 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon @@ -136,10 +136,6 @@ COLLECTIONS: 'Restart', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', 'BudgetConvectionLevs1to35_?ADV? ', - 'BudgetWetDepFull_?WET? ', - 'BudgetWetDepTrop_?WET? ', - 'BudgetWetDepPBL_?WET? ', - 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE Carbon COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO index e905d6354..b8bd57025 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO @@ -112,10 +112,6 @@ COLLECTIONS: 'Restart', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', 'BudgetConvectionLevs1to35_?ADV? ', - 'BudgetWetDepFull_?WET? ', - 'BudgetWetDepTrop_?WET? ', - 'BudgetWetDepPBL_?WET? ', - 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CloudConvFlux COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 index b9a2a6f43..891cdb3d9 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 @@ -113,10 +113,6 @@ COLLECTIONS: 'Restart', 'BudgetConvectionTrop_?ADV? ', 'BudgetConvectionPBL_?ADV? ', 'BudgetConvectionLevs1to35_?ADV? ', - 'BudgetWetDepFull_?WET? ', - 'BudgetWetDepTrop_?WET? ', - 'BudgetWetDepPBL_?WET? ', - 'BudgetWetDepLevs1to35_?WET? ', :: #============================================================================== # %%%%% THE CloudConvFlux COLLECTION %%%%% From 81912e0a640470034d55315585bcefd3c98994d2 Mon Sep 17 00:00:00 2001 From: "yuanjian.z" Date: Sat, 8 Jun 2024 02:02:24 -0500 Subject: [PATCH 282/331] Simplified and removed unnecessary codes - use AerMass in OCPISOA to avoid unnecessary recalculation - removed unnecessary OCPI reference when SVPOA is activated --- GeosCore/aerosol_mod.F90 | 45 ++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index b8dc32b59..f909567ae 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -763,39 +763,29 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & ! Use simple SOA by default over complex SOA in calculations IF ( Is_SimpleSOA ) THEN - State_Chm%AerMass%OCPISOA(I,J,L) = ( Spc(id_OCPI)%Conc(I,J,L) * State_chm%AerMass%OCFOPOA(I,J) + & - Spc(id_SOAS)%Conc(I,J,L) ) / AIRVOL(I,J,L) + State_Chm%AerMass%OCPISOA(I,J,L) = State_Chm%AerMass%OCPI(I,J,L) + & + State_Chm%AerMass%SOAS(I,J,L) ELSEIF ( Is_ComplexSOA ) THEN - State_Chm%AerMass%OCPISOA(I,J,L) = ( Spc(id_TSOA1)%Conc(I,J,L) & - + Spc(id_TSOA2)%Conc(I,J,L) & - + Spc(id_TSOA3)%Conc(I,J,L) & - + Spc(id_TSOA0)%Conc(I,J,L) & - + Spc(id_ASOAN)%Conc(I,J,L) & - + Spc(id_ASOA1)%Conc(I,J,L) & - + Spc(id_ASOA2)%Conc(I,J,L) & - + Spc(id_ASOA3)%Conc(I,J,L) ) & - / AIRVOL(I,J,L) - - IF ( IS_OPOA ) THEN ! hotp 7/28/10 - State_Chm%AerMass%OCPISOA(I,J,L) = State_Chm%AerMass%OCPISOA(I,J,L) + & - ( Spc(id_OPOA1)%Conc(I,J,L) & - + Spc(id_OPOA2)%Conc(I,J,L) ) & - * State_chm%AerMass%OCFOPOA(I,J) / AIRVOL(I,J,L) - ENDIF + State_Chm%AerMass%OCPISOA(I,J,L) = State_Chm%AerMass%TSOA(I,J,L) + & + State_Chm%AerMass%ASOA(I,J,L) IF ( IS_OCPI ) THEN ! hotp 7/28/10 - State_Chm%AerMass%OCPISOA(I,J,L) = State_Chm%AerMass%OCPISOA(I,J,L) + Spc(id_OCPI)%Conc(I,J,L) & - * State_chm%AerMass%OCFOPOA(I,J) / AIRVOL(I,J,L) + State_Chm%AerMass%OCPISOA(I,J,L) = State_Chm%AerMass%OCPISOA(I,J,L) + & + State_Chm%AerMass%OCPI(I,J,L) ENDIF - ENDIF + IF ( IS_OPOA ) THEN ! hotp 7/28/10 + State_Chm%AerMass%OCPISOA(I,J,L) = State_Chm%AerMass%OCPISOA(I,J,L) + & + State_Chm%AerMass%OPOA(I,J,L) + ENDIF - ! Add mechanistic isoprene OA (eam, 08/2015) - ! Skip adding this for Simple SOA (jaf, clh, bmy, 5/17/18) - IF ( Is_ComplexSOA ) THEN + ! Add mechanistic isoprene OA (eam, 08/2015) + ! Skip adding this for Simple SOA (jaf, clh, bmy, 5/17/18) + ! Moved here (yzhang, 8 Jun 2024) State_Chm%AerMass%OCPISOA(I,J,L) = State_Chm%AerMass%OCPISOA(I,J,L) + State_Chm%AerMass%ISOAAQ(I,J,L) + ENDIF ! Now avoid division by zero (bmy, 4/20/04) @@ -825,13 +815,18 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & State_Chm%AerMass%BCPI(I,J,L) + & State_Chm%AerMass%BCPO(I,J,L) + & State_Chm%AerMass%OCPO(I,J,L) + & - State_Chm%AerMass%OCPI(I,J,L) * ORG_GROWTH + & State_Chm%AerMass%SALA(I,J,L) * SSA_GROWTH + & SOILDUST(I,J,L,1) + & SOILDUST(I,J,L,2) + & SOILDUST(I,J,L,3) + & SOILDUST(I,J,L,4) + & SOILDUST(I,J,L,5) * 0.3_fp ! + 30% of DST2 + ! OCPI is not present in SVPOA simulation + ! OCPO represents all POA intead (factor*POA) + IF ( Is_OCPI ) THEN + State_Chm%AerMass%PM25(I,J,L) = State_Chm%AerMass%PM25(I,J,L) + & + State_Chm%AerMass%OCPI(I,J,L) * ORG_GROWTH + ENDIF ! Particulate matter < 10um [kg/m3] State_Chm%AerMass%PM10(I,J,L) = State_Chm%AerMass%PM25(I,J,L) + & ! PM2.5 From f79c9463daa1883a7eb26b26ddff55d286ee866c Mon Sep 17 00:00:00 2001 From: "yuanjian.z" Date: Sat, 8 Jun 2024 02:15:09 -0500 Subject: [PATCH 283/331] Supported SVPOA in SNAOM parameterized effective radius - replace verbose representation of SOA and OCPI with OCPISOA --- GeosCore/aerosol_mod.F90 | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index f909567ae..d4d6d27ee 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -876,19 +876,16 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & ! Parameterized dry effective radius for SNA and OM !=========================================================== IF ( State_Chm%AerMass%SO4_NH4_NIT(I,J,L) > 0e+0_fp ) THEN - IF ( Is_SimpleSOA ) THEN - ! dry SNA and OM mass, in unit of ug/m3 - State_Chm%AerMass%SNAOM(I,J,L) = ( State_Chm%AerMass%SO4_NH4_NIT(I,J,L) + State_Chm%AerMass%OCPO(I,J,L) + State_Chm%AerMass%OCPI(I,J,L) + State_Chm%AerMass%SOAS(I,J,L) )*1.0e+9_fp - ! ratio between OM and SNA, unitless - State_Chm%AerMass%R_OMSNA(I,J,L) = (State_Chm%AerMass%OCPO(I,J,L) + State_Chm%AerMass%OCPI(I,J,L) + State_Chm%AerMass%SOAS(I,J,L)) / State_Chm%AerMass%SO4_NH4_NIT(I,J,L) - - ELSE IF ( Is_ComplexSOA ) THEN - ! dry SNA and OM mass, in unit of ug/m3 - State_Chm%AerMass%SNAOM(I,J,L) = ( State_Chm%AerMass%SO4_NH4_NIT(I,J,L) + State_Chm%AerMass%OCPO(I,J,L) + State_Chm%AerMass%OCPI(I,J,L) + State_Chm%AerMass%TSOA(I,J,L) + State_Chm%AerMass%ASOA(I,J,L) + State_Chm%AerMass%ISOAAQ(I,J,L) ) * 1.0e+9_fp - ! ratio between OM and SNA, unitless - State_Chm%AerMass%R_OMSNA(I,J,L) = (State_Chm%AerMass%OCPO(I,J,L) + State_Chm%AerMass%OCPI(I,J,L) + State_Chm%AerMass%TSOA(I,J,L) + State_Chm%AerMass%ASOA(I,J,L) + State_Chm%AerMass%ISOAAQ(I,J,L) )/ State_Chm%AerMass%SO4_NH4_NIT(I,J,L) - - ENDIF + ! dry SNA and OM mass, in unit of ug/m3 + State_Chm%AerMass%SNAOM(I,J,L) = ( State_Chm%AerMass%SO4_NH4_NIT(I,J,L) + & + State_Chm%AerMass%OCPO(I,J,L) + & + State_Chm%AerMass%OCPISOA(I,J,L) ) * 1.0e+9_fp + + ! ratio between OM and SNA, unitless + State_Chm%AerMass%R_OMSNA(I,J,L) = ( State_Chm%AerMass%OCPO(I,J,L) + & + State_Chm%AerMass%OCPISOA(I,J,L) ) / & + State_Chm%AerMass%SO4_NH4_NIT(I,J,L) + ! Parameterized dry effective radius, in unit of um State_Chm%AerMass%PDER(I,J,L) = (exp( 4.36_fp + 0.20_fp*log(State_Chm%AerMass%SNAOM(I,J,L)) + 0.065_fp*log(State_Chm%AerMass%R_OMSNA(I,J,L)) ) *0.001_fp )/0.9_fp ; From afc59634a49ffa016ace1100d24238cb42d2d8d0 Mon Sep 17 00:00:00 2001 From: Lee Murray Date: Mon, 10 Jun 2024 11:27:35 -0500 Subject: [PATCH 284/331] Fix filename for CMIP6 aircraft emissions in HEMCO_Config.rc.template --- .../HEMCO_Config.rc.fullchem | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 8772c3bc7..836baceb0 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -1931,10 +1931,10 @@ VerboseOnCores: root # Accepted values: root all # #============================================================================== (((CMIP6_AIRCRAFT -0 CMIP6_AIR_NO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 NO_air 1750-2100/1-12/1/0 C xyz kg/m2/s NO - 20 1 -0 CMIP6_AIR_CO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 CO_air 1750-2100/1-12/1/0 C xyz kg/m2/s CO - 20 1 +0 CMIP6_AIR_NO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAPVERTRES.nc4 NO_air 1750-2100/1-12/1/0 C xyz kg/m2/s NO - 20 1 +0 CMIP6_AIR_CO $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAPVERTRES.nc4 CO_air 1750-2100/1-12/1/0 C xyz kg/m2/s CO - 20 1 0 CMIP6_AIR_SOAP - - - - - - SOAP 280 20 1 -0 CMIP6_AIR_SO2 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 SO2_air 1750-2100/1-12/1/0 C xyz kg/m2/s SO2 - 20 1 +0 CMIP6_AIR_SO2 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAPVERTRES.nc4 SO2_air 1750-2100/1-12/1/0 C xyz kg/m2/s SO2 - 20 1 0 CMIP6_AIR_SO4 - - - - - - SO4 63 20 1 0 CMIP6_AIR_pFe - - - - - - pFe 66 20 1 0 CMIP6_AIR_ACET - - - - - - ACET 601 20 1 @@ -1946,10 +1946,10 @@ VerboseOnCores: root # Accepted values: root all 0 CMIP6_AIR_PRPE - - - - - - PRPE 607 20 1 0 CMIP6_AIR_MACR - - - - - - MACR 608 20 1 0 CMIP6_AIR_RCHO - - - - - - RCHO 609 20 1 -0 CMIP6_AIR_NH3 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 NH3_air 1750-2100/1-12/1/0 C xyz kg/m2/s NH3 - 20 1 +0 CMIP6_AIR_NH3 $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAPVERTRES.nc4 NH3_air 1750-2100/1-12/1/0 C xyz kg/m2/s NH3 - 20 1 # Assume all BC/OC is BCPI/OCPI -0 CMIP6_AIR_BCPI $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 BC_air 1750-2100/1-12/1/0 C xyz kg/m2/s BCPI - 20 1 -0 CMIP6_AIR_OCPI $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAP2VERTRESL.nc4 OC_air 1750-2100/1-12/1/0 C xyz kg/m2/s OCPI - 20 1 +0 CMIP6_AIR_BCPI $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAPVERTRES.nc4 BC_air 1750-2100/1-12/1/0 C xyz kg/m2/s BCPI - 20 1 +0 CMIP6_AIR_OCPI $ROOT/CMIP6/v2021-01/$GCAPSCENARIO/$GCAPSCENARIO_$YYYY_AIR.$GCAPVERTRES.nc4 OC_air 1750-2100/1-12/1/0 C xyz kg/m2/s OCPI - 20 1 0 CMIP6_AIR_POG1 - - - - - - POG1 74/76 20 1 0 CMIP6_AIR_POG2 - - - - - - POG2 74/77 20 1 From 08a68106347b2c93a47ddc37ab3c406fc29dc8cb Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 4 Jun 2024 17:06:13 -0400 Subject: [PATCH 285/331] Now use comma-separated list for exempt-issue-labels .github/workflows/stale.yml - The exempt-issue-labels YAML tag should have had a comma-separated list of labels not to be marked stale. We had used a YAML sequence, which caused the GitHub "Mark stale issues" to fail. Now fixed. CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- .github/workflows/stale.yml | 9 +-------- CHANGELOG.md | 4 ++++ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index b14b1f621..c4ba4f38f 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -22,14 +22,7 @@ jobs: with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-label: 'stale' - exempt-issue-labels: - - 'category: Discussion' - - 'category: Feature Request' - - 'deferred' - - 'help needed: Open Research Problem' - - 'help needed: Request Input from Community' - - 'never stale' - - 'TODO: Documentation' + exempt-issue-labels: 'category: Discussion','category: Feature Request','deferred','help needed: Open Research Problem','help needed: Request Input from Community','never stale','TODO: Documentation' days-before-issue-stale: 30 days-before-issue-close: 7 stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. If there are no updates within 7 days it will be closed. You can add the "never stale" tag to prevent the issue from closing this issue.' diff --git a/CHANGELOG.md b/CHANGELOG.md index b7f695551..ad602fb14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] - TBD +### Fixed +- Fixed formatting error in `.github/workflows/stale.yml` that caused the Mark Stale Issues action not to run + ## [14.4.0] - 2024-05-30 ### Added - Added `SpcConc%Units` for species-specific unit conversion From 494512a5ba166c2b2ef006c10ae39bf8b94a7681 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 11 Jun 2024 10:38:28 -0400 Subject: [PATCH 286/331] Add CHANGELOG update for typo in HEMCO_Config.fullchem CHANGELOG.md - Added note about fixing $GCAPVERTRESL -> $GCAPVERTRES typo Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad602fb14..e73170f88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] - TBD ### Fixed - Fixed formatting error in `.github/workflows/stale.yml` that caused the Mark Stale Issues action not to run +- Fixed typo `$GCAPVERTRESL` -> `$GCAPVERTRES` in `HEMCO_Config.rc.fullchem` template file ## [14.4.0] - 2024-05-30 ### Added From 2592c6d285de8f9bbb15f47307b8d1acdfa5aad6 Mon Sep 17 00:00:00 2001 From: "yuanjian.z" Date: Tue, 11 Jun 2024 23:49:54 -0500 Subject: [PATCH 287/331] Fixed bug only including Isoprene SOA OC for TotalOC in complexSOA_nonSVPOA - also includes some rewrites for better readability --- GeosCore/aerosol_mod.F90 | 25 ++++++++----------- GeosCore/diagnostics_mod.F90 | 47 ++++++++++++++++++++++++------------ 2 files changed, 41 insertions(+), 31 deletions(-) diff --git a/GeosCore/aerosol_mod.F90 b/GeosCore/aerosol_mod.F90 index d4d6d27ee..e8a554a5d 100644 --- a/GeosCore/aerosol_mod.F90 +++ b/GeosCore/aerosol_mod.F90 @@ -783,7 +783,9 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & ! Add mechanistic isoprene OA (eam, 08/2015) ! Skip adding this for Simple SOA (jaf, clh, bmy, 5/17/18) - ! Moved here (yzhang, 8 Jun 2024) + ! benchmark OCPISOA follows simpleSOA and + ! should exculde ISOAAQ to avoid double-counting + ! (yuanjianz, 8 Jun 2024) State_Chm%AerMass%OCPISOA(I,J,L) = State_Chm%AerMass%OCPISOA(I,J,L) + State_Chm%AerMass%ISOAAQ(I,J,L) ENDIF @@ -828,13 +830,6 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & State_Chm%AerMass%OCPI(I,J,L) * ORG_GROWTH ENDIF - ! Particulate matter < 10um [kg/m3] - State_Chm%AerMass%PM10(I,J,L) = State_Chm%AerMass%PM25(I,J,L) + & ! PM2.5 - SOILDUST(I,J,L,5) * 0.7_fp + & ! + 70% of DST2 - SOILDUST(I,J,L,6) + & ! + 100% of DST3 - SOILDUST(I,J,L,7) * 0.9_fp + & ! + 90% of DST4 - State_Chm%AerMass%SALC(I,J,L) * SSA_GROWTH - ! Include either simple SOA (default) or Complex SOA in ! PM2.5 calculation. In simulations where both Simple SOA and ! Complex SOA species are carried (i.e. "benchmark"), then @@ -842,7 +837,6 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & ! to avoid double-counting. (bmy, 03 Nov 2021) IF ( Is_SimpleSOA ) THEN State_Chm%AerMass%PM25(I,J,L) = State_Chm%AerMass%PM25(I,J,L) + ( State_Chm%AerMass%SOAS(I,J,L) * ORG_GROWTH ) - State_Chm%AerMass%PM10(I,J,L) = State_Chm%AerMass%PM10(I,J,L) + ( State_Chm%AerMass%SOAS(I,J,L) * ORG_GROWTH ) ELSE IF ( Is_ComplexSOA ) THEN State_Chm%AerMass%PM25(I,J,L) = State_Chm%AerMass%PM25(I,J,L) + & @@ -850,19 +844,20 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, & State_Chm%AerMass%ASOA(I,J,L) * ORG_GROWTH + & State_Chm%AerMass%ISOAAQ(I,J,L) * ORG_GROWTH ! Includes SOAGX - State_Chm%AerMass%PM10(I,J,L) = State_Chm%AerMass%PM10(I,J,L) + & - State_Chm%AerMass%TSOA(I,J,L) * ORG_GROWTH + & - State_Chm%AerMass%ASOA(I,J,L) * ORG_GROWTH + & - State_Chm%AerMass%ISOAAQ(I,J,L) * ORG_GROWTH ! Includes SOAGX - ! Need to add OPOA to PM2.5 for complexSOA_SVPOA simulations ! -- Maggie Marvin (15 Jul 2020) IF ( Is_OPOA ) THEN State_Chm%AerMass%PM25(I,J,L) = State_Chm%AerMass%PM25(I,J,L) + ( State_Chm%AerMass%OPOA(I,J,L) * ORG_GROWTH ) - State_Chm%AerMass%PM10(I,J,L) = State_Chm%AerMass%PM10(I,J,L) + ( State_Chm%AerMass%OPOA(I,J,L) * ORG_GROWTH ) ENDIF ENDIF + ! Particulate matter < 10um [kg/m3] + State_Chm%AerMass%PM10(I,J,L) = State_Chm%AerMass%PM25(I,J,L) + & ! PM2.5 + SOILDUST(I,J,L,5) * 0.7_fp + & ! + 70% of DST2 + SOILDUST(I,J,L,6) + & ! + 100% of DST3 + SOILDUST(I,J,L,7) * 0.9_fp + & ! + 90% of DST4 + State_Chm%AerMass%SALC(I,J,L) * SSA_GROWTH + ! Apply STP correction factor based on ideal gas law State_Chm%AerMass%PM25(I,J,L) = State_Chm%AerMass%PM25(I,J,L) * ( 1013.25_fp / PMID(I,J,L) ) * & ( T(I,J,L) / 298.0_fp ) diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index 6ea561f4b..40c1c9e12 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -1768,7 +1768,8 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & ! ! !USES: ! - USE Aerosol_Mod, ONLY : IS_POA, IS_OPOA + USE Aerosol_Mod, ONLY : Is_POA, Is_OPOA, Is_OCPO, Is_OCPI + USE Aerosol_Mod, ONLY : Is_ComplexSOA, Is_SimpleSOA USE ErrCode_Mod USE Input_Opt_Mod, ONLY : OptInput USE Species_Mod, ONLY : Species, SpcConc @@ -2087,7 +2088,7 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & IF ( State_Diag%Archive_AerMassPOA ) THEN IF ( Is_POA ) THEN State_Diag%AerMassPOA(I,J,L) = OCPO(I,J,L) * kgm3_to_ugm3 - ELSE + ELSEIF ( Is_OCPO ) THEN State_Diag%AerMassPOA(I,J,L) = ( OCPI(I,J,L) + OCPO(I,J,L) ) * & kgm3_to_ugm3 ENDIF @@ -2158,12 +2159,13 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & ! PDER [nm] !-------------------------------------- IF ( State_Diag%Archive_PDER ) THEN - State_Diag%PDER(I,J,L) = PDER(I,J,L) + State_Diag%PDER(I,J,L) = PDER(I,J,L) ENDIF !-------------------------------------- ! Sum of all biogenic organic aerosol !-------------------------------------- + ! ComplexSOA only IF ( State_Diag%Archive_TotalBiogenicOA ) THEN State_Diag%TotalBiogenicOA(I,J,L) = ( TSOA(I,J,L) + ISOAAQ(I,J,L) ) & * kgm3_to_ugm3 @@ -2172,34 +2174,47 @@ SUBROUTINE Set_AerMass_Diagnostic( Input_Opt, State_Chm, State_Diag, & !-------------------------------------- ! Sum of all organic aerosol [ug/m3] !-------------------------------------- + ! Now TotalOA also works for simpleSOA IF ( State_Diag%Archive_TotalOA ) THEN - State_Diag%TotalOA(I,J,L) = ( TSOA(I,J,L) + & - ASOA(I,J,L) + & - OCPO(I,J,L) + & - OCPI(I,J,L) + & - OPOA(I,J,L) + & - ISOAAQ(I,J,L) ) * kgm3_to_ugm3 + State_Diag%TotalOA(I,J,L) = ( OCPO(I,J,L) + & + OCPISOA(I,J,L) ) * kgm3_to_ugm3 ENDIF !-------------------------------------- ! Sum of all organic carbon [ug/m3] !-------------------------------------- + ! ComplexSOA only + ! since OM/OC ratio is not available for SOAS + ! consistent with aerosol_mod.F90 IF ( State_Diag%Archive_TotalOC ) THEN + ! Hydrophobic OC IF ( Is_POA ) THEN State_Diag%TotalOC(I,J,L) = & - ( ( TSOA(I,J,L) + ASOA(I,J,L) & - + OCPI(I,J,L) + OPOA(I,J,L) ) / OCFOPOA(I,J) & + ( ( TSOA(I,J,L) + ASOA(I,J,L) ) / OCFOPOA(I,J) & + OCPO(I,J,L) / OCFPOA(I,J) ) * kgm3_to_ugm3 - - ELSE IF ( Is_OPOA ) THEN + ELSE IF ( Is_OCPO ) THEN State_Diag%TotalOC(I,J,L) = & ( ( TSOA(I,J,L) + ASOA(I,J,L) & - + OCPO(I,J,L) + OCPI(I,J,L) + OPOA(I,J,L) ) & - / OCFOPOA(I,J) ) * kgm3_to_ugm3 + + OCPO(I,J,L) ) / OCFOPOA(I,J) ) * kgm3_to_ugm3 + ENDIF + + ! Hydrophilic OC + IF (Is_OCPI) THEN + State_Diag%TotalOC(I,J,L) = State_Diag%TotalOC(I,J,L) + & + ( OCPI(I,J,L) / OCFOPOA(I,J) * & + kgm3_to_ugm3 ) + ENDIF + + ! OPOA OC + IF (Is_OPOA) THEN + State_Diag%TotalOC(I,J,L) = State_Diag%TotalOC(I,J,L) + & + ( OPOA(I,J,L) / OCFOPOA(I,J) * & + kgm3_to_ugm3 ) ENDIF - IF ( Input_Opt%LSOA ) THEN + ! Isoprene SOA OC + IF ( Is_ComplexSOA ) THEN State_Diag%TotalOC(I,J,L) = State_Diag%TotalOC(I,J,L) + & ( ( Spc(id_SOAIE )%Conc(I,J,L) * Fac_SOAIE ) + & ( Spc(id_INDIOL)%Conc(I,J,L) * Fac_INDIOL ) + & From e9e72137b41704aabc9f51b343e4102d7c993f48 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 13 Jun 2024 10:39:30 -0400 Subject: [PATCH 288/331] Fix bug in MERRA2 climatology ExtData.rc entry Signed-off-by: Lizzie Lundgren --- run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem index 0ca2b1315..47669b46b 100644 --- a/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem +++ b/run/GCHP/ExtData.rc.templates/ExtData.rc.fullchem @@ -32,14 +32,15 @@ ${RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS} #============================================================================== # --- Fields for lightning emissions (Extension 103) --- # These fields are stored in State_Met, along with the other met fields +# Lines below are commented/uncommented by setCommonRunSettings.sh based +# on setting in HEMCO_Config.rc. #============================================================================== #FLASH_DENS 1 N Y F0;013000 none none LDENS ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/%y4/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_%y4_%m2.nc4 #CONV_DEPTH 1 N Y F0;013000 none none CTH ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/%y4/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_%y4_%m2.nc4 -# Climatology option (if using make sure two lines below are uncommented and -# two lines above are commented) -FLASH_DENS 1 N N F1980-%m2-01T00:00:00 none none LDENS ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 -CONV_DEPTH 1 N N F1980-%m2-01T00:00:00 none none CTH ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 +# Climatology option +FLASH_DENS 1 Y Y F1980-%m2-01T00:00:00 none none LDENS ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 +CONV_DEPTH 1 Y Y F1980-%m2-01T00:00:00 none none CTH ./HcoDir/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/CLIM/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_${RUNDIR_MET_LCLIM}.ymonmean.nc4 # #============================================================================== # --- Fields for RRTMG --- From 34e3ae38138287c981f874cb731677632e4e8344 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 13 Jun 2024 10:40:07 -0400 Subject: [PATCH 289/331] Remove auto-update to use O-server if using >=1000 cores in GCHP Signed-off-by: Lizzie Lundgren --- run/GCHP/setCommonRunSettings.sh.template | 9 --------- 1 file changed, 9 deletions(-) diff --git a/run/GCHP/setCommonRunSettings.sh.template b/run/GCHP/setCommonRunSettings.sh.template index 011a952fa..10a3943c9 100644 --- a/run/GCHP/setCommonRunSettings.sh.template +++ b/run/GCHP/setCommonRunSettings.sh.template @@ -498,15 +498,6 @@ replace_val NX ${NX} GCHP.rc replace_val NY ${NY} GCHP.rc replace_val CoresPerNode ${NUM_CORES_PER_NODE} HISTORY.rc -#### If # cores exceeds 1000 then write restart via o-server -if [ ${TOTAL_CORES} -ge 1000 ]; then - print_msg "WARNING: write restarts by o-server is enabled since >=1000 cores" - replace_val WRITE_RESTART_BY_OSERVER YES GCHP.rc -else - print_msg "WARNING: write restarts by o-server is disabled since <1000 cores" - replace_val WRITE_RESTART_BY_OSERVER NO GCHP.rc -fi - ### Make sure adjoint diagnostics (if present) are commented out if using ### forward model, and uncommented if using adjoint. if [[ ${Model_Phase} == "FORWARD" ]]; then From 5690b69e8d4dfcd35ab1d0a42d4a4698fe8bf6ba Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 13 Jun 2024 10:40:24 -0400 Subject: [PATCH 290/331] Update comments in GCHP config files for clarity Signed-off-by: Lizzie Lundgren --- run/GCHP/GCHP.rc.template | 15 ++++++++++++--- run/GCHP/setCommonRunSettings.sh.template | 4 +++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/run/GCHP/GCHP.rc.template b/run/GCHP/GCHP.rc.template index dd093553e..f29f13c73 100644 --- a/run/GCHP/GCHP.rc.template +++ b/run/GCHP/GCHP.rc.template @@ -68,11 +68,18 @@ GCHPchem_REFERENCE_TIME: 121000 #----------------------------------------------------------------- PRINTRC: 0 -# Set the number of parallel I/O processes to use when -# RESTART_TYPE and or CHECKPOINT_TYPE are set to pbinary or pnc4 -#--------------------------------------------------------------- PARALLEL_READFORCING: 0 + +# Set the number of parallel I/O processes to use when reading restarts. +# Try something from 6 to 24 if reading a large restart file and have +# poor performance +#--------------------------------------------------------------- NUM_READERS: 1 + +# Set the number of parallel I/O processes to use when writing restarts. +# Try something from 6 to 24 if writing a large restart file and have +# poor performance +#--------------------------------------------------------------- NUM_WRITERS: 1 # Active observer when desired @@ -131,6 +138,8 @@ MEMORY_DEBUG_LEVEL: 0 # # %%% Option to write restart files via o-server +# %%% This should only be necessary with certain MPI stacks. Try changing +# %%% this to true if writing checkpoints causes the run to hang. # WRITE_RESTART_BY_OSERVER: NO diff --git a/run/GCHP/setCommonRunSettings.sh.template b/run/GCHP/setCommonRunSettings.sh.template index 10a3943c9..793862578 100644 --- a/run/GCHP/setCommonRunSettings.sh.template +++ b/run/GCHP/setCommonRunSettings.sh.template @@ -17,7 +17,7 @@ NUM_CORES_PER_NODE=${RUNDIR_CORES_PER_NODE} #------------------------------------------------ # GRID RESOLUTION #------------------------------------------------ -# Integer representing number of grid cells per cubed-sphere face side +# Even integer representing number of grid cells per cubed-sphere face side CS_RES=${RUNDIR_CS_RES} #------------------------------------------------ @@ -30,6 +30,8 @@ CS_RES=${RUNDIR_CS_RES} # (4) STRETCH_FACTOR, TARGET_LAT, and TARGET_LON exactly match # the global attribute values of these parameters in the # initial restart file +# NOTE: Running with stretched grid requires using winds in advection. +# Create a new run directory to use winds if this one uses mass fluxes. STRETCH_GRID=OFF STRETCH_FACTOR=2.0 TARGET_LAT=-45.0 From 93906ce14171c91de56b79d9adacd2ec1755c06c Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 13 Jun 2024 11:32:57 -0400 Subject: [PATCH 291/331] Move switch for missing species in GCHP restart to a more visible location Signed-off-by: Lizzie Lundgren --- run/GCHP/setCommonRunSettings.sh.template | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/run/GCHP/setCommonRunSettings.sh.template b/run/GCHP/setCommonRunSettings.sh.template index 793862578..a65f7091a 100644 --- a/run/GCHP/setCommonRunSettings.sh.template +++ b/run/GCHP/setCommonRunSettings.sh.template @@ -117,6 +117,11 @@ Checkpoint_Freq=monthly # More than 2 digits for hours is permitted, e.g. "1680000" for 7 days. # NOTE: Frequency of output will be measured from start date set in cap_restart. +#------------------------------------------------ +# REQUIRE ALL SPECIES IN INITIAL RESTART FILE +#------------------------------------------------ +Require_Species_in_Restart=${RUNDIR_INITIAL_RESTART_SPECIES_REQUIRED} + ################################################################### # INFREQUENTLY CHANGED SETTINGS ################################################################### @@ -127,11 +132,6 @@ Checkpoint_Freq=monthly # FORWARD for forward model, ADJOINT for adjoint model Model_Phase=FORWARD -#------------------------------------------------ -# REQUIRE ALL SPECIES IN INITIAL RESTART FILE -#------------------------------------------------ -Require_Species_in_Restart=${RUNDIR_INITIAL_RESTART_SPECIES_REQUIRED} - #------------------------------------------------ # TIMESTEPS #------------------------------------------------ From 5617ef387f4f494d1e737d9c6c3e686b0ea22b7e Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 13 Jun 2024 15:28:40 -0400 Subject: [PATCH 292/331] Updates to GCHP setCommonRunSetting.sh - Clarifying comments - Moved allow species in restart option to frequently changed settings - Changed criteria for dynamics field entries in ExtData.rc to update based on timestep. Now searches for whitespace+name+whitespace rather than whitespace+name and MetDir. Start of line is still required. - Added end of script message that run is complete - Added check that grid resolution is even - Added checks for runs using mass fluxes* 1. check that stretched grid is off 2. check that input and grid resolutions are evenly divisible 3. check that grid/run resolutions evenly divisible by NX and NY/6 *Checks assume either GEOS-FP or GEOS-IT source for mass fluxes and that C180x180x6 appears in GEOS-IT filename. --- run/GCHP/setCommonRunSettings.sh.template | 158 ++++++++++++++++------ 1 file changed, 118 insertions(+), 40 deletions(-) diff --git a/run/GCHP/setCommonRunSettings.sh.template b/run/GCHP/setCommonRunSettings.sh.template index a65f7091a..667ab8615 100644 --- a/run/GCHP/setCommonRunSettings.sh.template +++ b/run/GCHP/setCommonRunSettings.sh.template @@ -10,6 +10,7 @@ # COMPUTE RESOURCES #------------------------------------------------ # Total cores must be divisible by 6 + TOTAL_CORES=${RUNDIR_NUM_CORES} NUM_NODES=${RUNDIR_NUM_NODES} NUM_CORES_PER_NODE=${RUNDIR_CORES_PER_NODE} @@ -18,6 +19,11 @@ NUM_CORES_PER_NODE=${RUNDIR_CORES_PER_NODE} # GRID RESOLUTION #------------------------------------------------ # Even integer representing number of grid cells per cubed-sphere face side +# +# NOTE: If using mass flux inputs then grid resolution must be evenly divisible +# by input mass flux resolution, or vice versa. Acceptable resolutions for GEOS-IT +# when using mass fluxes are therefore in set [10,30,90,180,360,540,720,etc] + CS_RES=${RUNDIR_CS_RES} #------------------------------------------------ @@ -30,8 +36,10 @@ CS_RES=${RUNDIR_CS_RES} # (4) STRETCH_FACTOR, TARGET_LAT, and TARGET_LON exactly match # the global attribute values of these parameters in the # initial restart file +# # NOTE: Running with stretched grid requires using winds in advection. # Create a new run directory to use winds if this one uses mass fluxes. + STRETCH_GRID=OFF STRETCH_FACTOR=2.0 TARGET_LAT=-45.0 @@ -41,12 +49,14 @@ TARGET_LON=170.0 # SIMULATION DURATION #------------------------------------------------ # Format is "YYYYMMDD HHmmSS". Example: "0000100 000000" for 1 month + Run_Duration="${RUNDIR_SIM_DUR_YYYYMMDD} ${RUNDIR_SIM_DUR_HHmmSS}" #------------------------------------------------------------ # GEOS-CHEM COMPONENTS #------------------------------------------------------------ # Sets values in geoschem_config.yml + Do_Chemistry=true Do_Advection=true Do_Cloud_Conv=true @@ -59,6 +69,8 @@ Do_WetDep=true # DIAGNOSTICS #--------------------------------------------------------------------- # Auto-update settings in HISTORY.rc for specific collections (enable with ON) +# NOTE: you must add new collections to the list below to auto-update them. + AutoUpdate_Diagnostics=OFF # Instructions to auto-update diagnostics @@ -69,7 +81,7 @@ AutoUpdate_Diagnostics=OFF # 3b. Set Diag_Duration for file write frequency, format "HHmmSS" # *Note that number of hours may exceed 2 digits, e.g. 744 for 744 hrs # 4. Edit Diag_Collections list to specify which collections to update -# + Diag_Monthly="${RUNDIR_HIST_MONTHLY_DIAG}" Diag_Frequency="${RUNDIR_HIST_TIME_AVG_FREQ}" Diag_Duration="${RUNDIR_HIST_TIME_AVG_DUR}" @@ -107,9 +119,6 @@ Diag_Collections=(SpeciesConc \ #------------------------------------------------------------ # MID-RUN CHECKPOINT FILES #------------------------------------------------------------ -Midrun_Checkpoint=OFF -Checkpoint_Freq=monthly - # Instructions for configuring restart output before end of run: # 1. Set Midrun_Checkpoint=ON # 2. Set Checkpoint_Freq to either monthly or a string of format HHmmss @@ -117,9 +126,14 @@ Checkpoint_Freq=monthly # More than 2 digits for hours is permitted, e.g. "1680000" for 7 days. # NOTE: Frequency of output will be measured from start date set in cap_restart. +Midrun_Checkpoint=OFF +Checkpoint_Freq=monthly + #------------------------------------------------ # REQUIRE ALL SPECIES IN INITIAL RESTART FILE #------------------------------------------------ +# Set to 1 to require all species in restart; set to 0 to enable missing species. + Require_Species_in_Restart=${RUNDIR_INITIAL_RESTART_SPECIES_REQUIRED} ################################################################### @@ -127,15 +141,55 @@ Require_Species_in_Restart=${RUNDIR_INITIAL_RESTART_SPECIES_REQUIRED} ################################################################### #------------------------------------------------ -# MODEL PHASE +# DOMAIN DECOMPOSITION #------------------------------------------------ -# FORWARD for forward model, ADJOINT for adjoint model -Model_Phase=FORWARD +# Enable auto-update of NX and NY based on core count by setting to ON. This +# will make NX by NY/6 as square as possible to reduce communication overhead +# in GCHP. Only disable this feature if using mass fluxes. + +AutoUpdate_NXNY=ON + +# Specify NX and NY below if not auto-updating. Otherwise leave blank. See rules below. + +NX= +NY= + +# Cores are distributed across each of the six cubed sphere faces using +# configurable parameters NX and NY. Each face is divided into NX by NY/6 +# regions and each of those regions is processed by a single core +# independent of which node it belongs to. +# +# Rules and tips for setting NX and NY manually: +# 1. NY must be an integer and a multiple of 6 +# 2. NX*NY must equal total number of cores (NUM_NODES*NUM_CORES_PER_NODE) +# 3. NX and NY should be as close to equal as possible (maximize squareness) +# Good examples: (NX=4,NY=24) -> 96 cores at 4x4 +# (NX=6,NY=24) -> 144 cores at 6x4 +# Bad examples: (NX=8,NY=12) -> 96 cores at 8x2 +# (NX=12,NY=12) -> 144 cores at 12x2 +# 4. Domain decomposition requires that CS_RES/NX >= 4 and CS_RES*6/NY >= 4, +# which puts an upper limit on total cores per grid resolution. +# c24: 216 cores (NX=6, NY=36 ) +# c48: 864 cores (NX=12, NY=72 ) +# c90: 3174 cores (NX=22, NY=132) +# c180: 12150 cores (NX=45, NY=270) +# c360: 48600 cores (NX=90, NY=540) +# Using fewer cores may still trigger a domain decomposition error, e.g.: +# c48: 768 cores (NX=16, NY=48) --> 48/16=3 will trigger FV3 error +# 5. If using mass flux inputs then both native mass flux resolution and model +# run resolution must be evenly divisible by both NX and NY/6. +# Example of C180 fluxes (e.g. GEOS-IT) run at C90: +# 96 cores, NX=4, NY/6=4 -> fail (90/4=22.5) +# 150 cores, NX=5, NY/6=5 -> success (180/5=36, 90/5=18) +# 216 cores, NX=6, NY/6=6 -> success (180/6=30, 90/6=15) +# 384 cores, NX=8, NY/6=8 -> fail (180/8=22.5) #------------------------------------------------ # TIMESTEPS #------------------------------------------------ -# Timesteps in GCHP are resolution-dependent +# Non-RRTMG timesteps in GCHP are resolution-dependent. +# Stretched grid timesteps are set based on the high-resolution region. + CS_RES_EFFECTIVE=${CS_RES} if [[ ${STRETCH_GRID} == 'ON' ]]; then CS_RES_EFFECTIVE=$( echo $CS_RES $STRETCH_FACTOR | awk '{printf "%.0f",$1*$2}' ) @@ -157,6 +211,7 @@ RRTMG_Timestep_sec=10800 # Mass tuning factor is used in the HEMCO DustDead extenstion for GEOS-Chem # benchmarking and is resolution-dependent. We recommend using offline dust # instead of the online extension for GCHP science runs. + dustEntry=$(grep "105.*DustDead" HEMCO_Config.rc || echo "missing") if [[ ${dustEntry} != "missing" ]]; then dustSetting=(${dustEntry// / }) @@ -190,6 +245,7 @@ fi # Mass tuning factor is used in the HEMCO DustDead extenstion for GEOS-Chem # benchmarking and is resolution-dependent. We recommend using offline dust # instead of the online extension for GCHP science runs. + TomasDustEntry=$(grep "131.*TOMAS_DustDead" HEMCO_Config.rc || echo "missing") if [[ ${TomasDustEntry} != "missing" ]]; then TomasDustSetting=(${TomasDustEntry// / }) @@ -215,39 +271,13 @@ if [[ ${TomasDustEntry} != "missing" ]]; then fi fi fi + #------------------------------------------------ -# DOMAIN DECOMPOSITION +# MODEL PHASE #------------------------------------------------ -# Enable auto-update of NX and NY based on core count by setting to ON. This -# will make NX by NY/6 as square as possible to reduce communication overhead -# in GCHP. -AutoUpdate_NXNY=ON +# FORWARD for forward model, ADJOINT for adjoint model -# Specify NX and NY if not auto-updating. See rules below. -NX= -NY= -# Cores are distributed across each of the six cubed sphere faces using -# configurable parameters NX and NY. Each face is divided into NX by NY/6 -# regions and each of those regions is processed by a single core -# independent of which node it belongs to. -# -# Rules and tips for setting NX and NY manually: -# 1. NY must be an integer and a multiple of 6 -# 2. NX*NY must equal total number of cores (NUM_NODES*NUM_CORES_PER_NODE) -# -# Good examples: (NX=4,NY=24) -> 96 cores at 4x4 -# (NX=6,NY=24) -> 144 cores at 6x4 -# Bad examples: (NX=8,NY=12) -> 96 cores at 8x2 -# (NX=12,NY=12) -> 144 cores at 12x2 -# 4. Domain decomposition requires that CS_RES/NX >= 4 and CS_RES*6/NY >= 4, -# which puts an upper limit on total cores per grid resolution. -# c24: 216 cores (NX=6, NY=36 ) -# c48: 864 cores (NX=12, NY=72 ) -# c90: 3174 cores (NX=22, NY=132) -# c180: 12150 cores (NX=45, NY=270) -# c360: 48600 cores (NX=90, NY=540) -# Using fewer cores may still trigger a domain decomposition error, e.g.: -# c48: 768 cores (NX=16, NY=48) --> 48/16=3 will trigger FV3 error +Model_Phase=FORWARD ############################### @@ -305,6 +335,13 @@ if (( ${NY}%6 != 0 )); then exit 1 fi +#### Check grid resolution +if (( (${CS_RES}) % 2 != 0 )); then + echo "ERROR: Cubed-sphere face does not have even number of grid cells per side. Update grid resolution in setCommonRunSettings.sh to be an even number." + exit 1 +fi + + #### Check that domain decomposition will not trigger a FV3 domain error if [[ $(( ${CS_RES}/${NX} )) -lt 4 || $(( ${CS_RES}*6/${NY} )) -lt 4 ]]; then echo "ERROR: NX and NY are set such that face side length divided by NX or NY/6 is less than 4. The cubed sphere compute domain has a minimum requirement of 4 points in NX and NY/6. This problem occurs when grid resolution is too low for core count requested. Edit setCommonRunSettings.sh to loower total number of cores or increase your grid resolution." @@ -347,6 +384,44 @@ if [[ ${STRETCH_GRID} == 'ON' ]]; then fi fi +#### Mass flux checks for grid resolution and domain decomposition +MassFlux_Entry=$(grep "MFXC" ExtData.rc || echo "missing") +if [[ ${MassFluxEntry} != "missing" ]]; then + + #### Get met grid res (assume GEOS-IT and GEOS-FP are the only options) + C180_Entry=$(grep "MFXC.*C180x180x6" ExtData.rc || echo "missing") + if [[ ${C180_Entry} != "missing" ]]; then + input_res=180 + else + input_res=720 + fi + if (( ${CS_RES} < ${input_res} )); then + lowest_res=${CS_RES} + highest_res=${input_res} + else + lowest_res=${input_res} + highest_res=${CS_RES} + fi + + #### Check that not using stretched grid + if [[ ${STRETCH_GRID} == 'ON' ]]; then + echo "ERROR: Do not use stretched grid when using mass flux inputs. Create a winds run directory for stretched grid simulations." + exit 1 + fi + + #### Check that input and grid resolutions are evenly divisible + if (( (${highest_res}) % (${lowest_res}) != 0 )); then + echo "ERROR: Mass flux input resolution and run grid resolution must be evenly divisible. Input resolution is ${input_res} but grid resolution is ${CS_RES}." + exit 1 + fi + + #### Check that grid/run resolutions are evenly divisible by NX and NY/6 + if (( ${lowest_res} % ${NX} != 0 || ${lowest_res} % (${NY}/6) != 0 )); then + echo "ERROR: Input and run resolutions must divide evenly by NX and NY/6 when using mass flux inputs. Manually set NX and NY in setCommonRunSettings.sh for your simulation. Current settings are input resolution ${input_res}, grid resolution ${CS_RES}, NX ${NX} and NY ${NY}." + exit 1 + fi +fi + ########################################## #### DEFINE FUNCTIONS TO UPDATE FILES ########################################## @@ -451,10 +526,11 @@ comment_line() { update_dyn_freq() { # String to search for - str="^[\t ]*$1.*MetDir" + str="^[\t ]*$1*[\t ]" # Check number of matches where first string is start of line, allowing for - # whitespace. # matches should be one; otherwise exit with an error. + # whitespace before and require whitespace after. # matches should be one; + # otherwise exit with an error. numlines=$(grep -c "$str" $2) if [[ ${numlines} == "0" ]]; then echo "ERROR: met-field $1 missing in $2" @@ -699,3 +775,5 @@ fi #### Done print_msg " " +print_msg "setCommonRunSettings.sh done" +print_msg " " From 689f1bcd39b6fb4741a972d88e9d0a5a8cf039ad Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Mon, 17 Jun 2024 10:32:20 -0400 Subject: [PATCH 293/331] Update changelog Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index afcdb997f..5f186a156 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] - TBD ### Removed - Removed `BudgetWetDep*` entries from simulations with no soluble species in `HISTORY.rc` templates +- Remove enabling O-server in GCHP for high core counts ### Fixed - Fixed formatting error in `.github/workflows/stale.yml` that caused the Mark Stale Issues action not to run - Fixed typo `$GCAPVERTRESL` -> `$GCAPVERTRES` in `HEMCO_Config.rc.fullchem` template file +- Fixed GCHP ExtData.rc entry for lightning climatology files + +### Added +- Added clarifying comments in GCHP configuration files for several settings, particularly related to domain decomposition, mass fluxes, and stretched grid +- Added pre-run GCHP configuration checks to setCommonRunSettings.sh related to domain decomposition, mass fluxes, and stretched grid. + +### Changed +- Changed search criteria for GCHP auto-update of met-field refresh frequency to not rely on presence of MetDir symlink in ExtData.rc file path ## [14.4.0] - 2024-05-30 ### Added From d6ed507cb387dadf173b78e1809f6644aca38cba Mon Sep 17 00:00:00 2001 From: Haipeng Lin Date: Tue, 18 Jun 2024 18:03:02 -0400 Subject: [PATCH 294/331] Correct alphabetical order of complex SOA species in geoschem_config.yml. Due to introduction of new species, ASOA1 should be inserted after AROMP5 instead of ALK4 in order to be correctly alphabetically ordered. This facilitates coupling to CESM and WRF by allowing scripts to generate the correct order programmatically. Signed-off-by: Haipeng Lin --- run/CESM/geoschem_config.yml | 6 +++--- run/shared/setupConfigFiles.sh | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/run/CESM/geoschem_config.yml b/run/CESM/geoschem_config.yml index d7a8a5270..be47c127c 100644 --- a/run/CESM/geoschem_config.yml +++ b/run/CESM/geoschem_config.yml @@ -94,6 +94,9 @@ operations: - AERI - ALD2 - ALK4 + - AONITA + - AROMP4 + - AROMP5 - ASOA1 - ASOA2 - ASOA3 @@ -101,9 +104,6 @@ operations: - ASOG1 - ASOG2 - ASOG3 - - AONITA - - AROMP4 - - AROMP5 - ATOOH - BALD - BCPI diff --git a/run/shared/setupConfigFiles.sh b/run/shared/setupConfigFiles.sh index 0deeda069..1db10b6f1 100755 --- a/run/shared/setupConfigFiles.sh +++ b/run/shared/setupConfigFiles.sh @@ -156,8 +156,8 @@ function set_common_settings() { [[ ${sim_extra_option} =~ "complexSOA" ]] || \ [[ "x${sim_extra_option}" == "xAPM" ]]; then - # Add complex SOA species ASOA* and ASOG* following ALK4 - prev_line=' - ALK4' + # Add complex SOA species ASOA* and ASOG* following AROMP5 + prev_line=' - AROMP5' new_line='\ - ASOA1\ - ASOA2\ - ASOA3\ From b3e5c4fc1c9212acde85d44509ce114ced6d24c4 Mon Sep 17 00:00:00 2001 From: Haipeng Lin Date: Mon, 24 Jun 2024 11:24:39 -0400 Subject: [PATCH 295/331] Changes for GEOS-Chem within CESM compatibility --- GeosCore/ucx_mod.F90 | 1 - run/CESM/HEMCO_Config.rc | 2 +- run/CESM/geoschem_config.yml | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/GeosCore/ucx_mod.F90 b/GeosCore/ucx_mod.F90 index f72988ae7..4e9075d07 100644 --- a/GeosCore/ucx_mod.F90 +++ b/GeosCore/ucx_mod.F90 @@ -4139,7 +4139,6 @@ SUBROUTINE NOXCOEFF_INIT( Input_Opt, State_Grid, State_Chm ) #if defined( MODEL_CESM ) ENDIF - CALL MPI_BCAST( State_Chm%NOXCOEFF, nSize, mpi_real8, masterprocid, mpicom, ierr ) IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NOXCOEFF') #endif diff --git a/run/CESM/HEMCO_Config.rc b/run/CESM/HEMCO_Config.rc index 2988dfe0a..f3fafd6ec 100644 --- a/run/CESM/HEMCO_Config.rc +++ b/run/CESM/HEMCO_Config.rc @@ -162,7 +162,7 @@ VerboseOnCores: root # Accepted values: root all # ----------------------------------------------------------------------------- 100 Custom : off - 101 SeaFlux : on DMS/ACET/ALD2/MENO3/ETNO3/MOH -102 ParaNOx : on NO/NO2/O3/HNO3 +102 ParaNOx : off NO/NO2/O3/HNO3 --> LUT data format : nc --> LUT source dir : $ROOT/PARANOX/v2015-02 103 LightNOx : off NO diff --git a/run/CESM/geoschem_config.yml b/run/CESM/geoschem_config.yml index d7a8a5270..be47c127c 100644 --- a/run/CESM/geoschem_config.yml +++ b/run/CESM/geoschem_config.yml @@ -94,6 +94,9 @@ operations: - AERI - ALD2 - ALK4 + - AONITA + - AROMP4 + - AROMP5 - ASOA1 - ASOA2 - ASOA3 @@ -101,9 +104,6 @@ operations: - ASOG1 - ASOG2 - ASOG3 - - AONITA - - AROMP4 - - AROMP5 - ATOOH - BALD - BCPI From a6485af315f9c523dd17f106c957f93b3e36059d Mon Sep 17 00:00:00 2001 From: nicholasbalasus Date: Mon, 24 Jun 2024 11:57:45 -0400 Subject: [PATCH 296/331] Merge PR #2347 (Use hard-coded dates for met fields/BCs) This merge brings PR #2347 (Use hard-coded dates for meteorological fields and boundary conditions, by @nicholasbalasus) into the GEOS-Chem "no-diff-to-benchmark" development stream. This PR fixes a bug that was implemented in PR #2263. It should improve the performance by preventing excessive reading of met fields/BCs. Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + .../HEMCO_Config.rc.CH4 | 2 +- .../HEMCO_Config.rc.Hg | 2 +- .../HEMCO_Config.rc.aerosol | 2 +- .../HEMCO_Config.rc.carbon | 2 +- .../HEMCO_Config.rc.fullchem | 2 +- .../HEMCO_Config.rc.gmao_metfields | 140 +++++++++--------- .../HEMCO_Config.rc.carbon | 2 +- 8 files changed, 77 insertions(+), 76 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index afcdb997f..b62390b23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Fixed - Fixed formatting error in `.github/workflows/stale.yml` that caused the Mark Stale Issues action not to run - Fixed typo `$GCAPVERTRESL` -> `$GCAPVERTRES` in `HEMCO_Config.rc.fullchem` template file +- Use hard-coded years for met fields and BC files in HEMCO_Config.rc so they are not read hourly ## [14.4.0] - 2024-05-30 ### Added diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 index 65adc314e..2ffe5ac87 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.CH4 @@ -618,7 +618,7 @@ VerboseOnCores: root # Accepted values: root all # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? 1900-2100/1-12/1-31/* EFY xyz 1 * - 1 1 )))GC_BCs #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg index afd03a7f0..9e7b0b253 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg @@ -500,7 +500,7 @@ VerboseOnCores: root # Accepted values: root all # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2019-05/tropchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/v2019-05/tropchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? 1900-2100/1-12/1-31/* EFY xyz 1 * - 1 1 )))GC_BCs (((CHEMISTRY_INPUT diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol index f967196ff..e05a6df07 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol @@ -1967,7 +1967,7 @@ VerboseOnCores: root # Accepted values: root all # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/GC_14.3.0/fullchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/GC_14.3.0/fullchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? 1900-2100/1-12/1-31/* EFY xyz 1 * - 1 1 )))GC_BCs (((CHEMISTRY_INPUT diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index dd41b6536..e3d9f3a9a 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1067,7 +1067,7 @@ Mask fractions: false # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? 1900-2100/1-12/1-31/* EFY xyz 1 * - 1 1 )))GC_BCs #============================================================================== diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 836baceb0..b0c5bc5d8 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -3492,7 +3492,7 @@ VerboseOnCores: root # Accepted values: root all # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/GC_14.3.0/fullchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/GC_14.3.0/fullchem/GEOSChem.BoundaryConditions.$YYYY$MM$DD_$HH$MNz.nc4 SpeciesBC_?ADV? 1900-2100/1-12/1-31/* EFY xyz 1 * - 1 1 )))GC_BCs (((CHEMISTRY_INPUT diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields index db7807b27..92e346dac 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.gmao_metfields @@ -45,85 +45,85 @@ METDIR: ${RUNDIR_MET_DIR} * PHIS $METDIR/$CNYR/01/$MET.$CNYR0101.CN.$RES.$NC PHIS */1/1/0 C xy 1 * - 1 1 # --- A1 fields --- -* ALBEDO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC ALBEDO $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* CLDTOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC CLDTOT $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* EFLUX $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC EFLUX $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* EVAP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC EVAP $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* FRSEAICE $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC FRSEAICE $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* FRSNO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC FRSNO $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* GRN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GRN $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* GWETROOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GWETROOT $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* GWETTOP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GWETTOP $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* HFLUX $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC HFLUX $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* LAI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC LAI $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* PARDF $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PARDF $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* PARDR $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PARDR $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* PBLH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PBLH $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* PRECANV $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECANV $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* PRECCON $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECCON $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* PRECLSC $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECLSC $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* PRECSNO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECSNO $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* PRECTOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECTOT $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* QV2M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC QV2M $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SEAICE00 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE00 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SEAICE10 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE10 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SEAICE20 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE20 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SEAICE30 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE30 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SEAICE40 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE40 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SEAICE50 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE50 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SEAICE60 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE60 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SEAICE70 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE70 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SEAICE80 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE80 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SEAICE90 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE90 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SLP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SLP $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SNODP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SNODP $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SNOMAS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SNOMAS $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* SWGDN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SWGDN $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* TO3 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TO3 $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* TROPPT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TROPPT $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* TS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TS $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* T2M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC T2M $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* U10M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC U10M $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* USTAR $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC USTAR $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* V10M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC V10M $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 -* Z0M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC Z0M $YYYY/$MM/$DD/*/+30minute EFY xy 1 * - 1 1 +* ALBEDO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC ALBEDO 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* CLDTOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC CLDTOT 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* EFLUX $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC EFLUX 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* EVAP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC EVAP 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* FRSEAICE $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC FRSEAICE 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* FRSNO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC FRSNO 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* GRN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GRN 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* GWETROOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GWETROOT 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* GWETTOP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC GWETTOP 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* HFLUX $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC HFLUX 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* LAI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC LAI 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* PARDF $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PARDF 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* PARDR $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PARDR 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* PBLH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PBLH 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* PRECANV $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECANV 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* PRECCON $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECCON 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* PRECLSC $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECLSC 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* PRECSNO $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECSNO 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* PRECTOT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC PRECTOT 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* QV2M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC QV2M 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SEAICE00 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE00 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SEAICE10 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE10 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SEAICE20 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE20 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SEAICE30 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE30 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SEAICE40 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE40 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SEAICE50 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE50 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SEAICE60 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE60 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SEAICE70 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE70 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SEAICE80 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE80 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SEAICE90 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SEAICE90 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SLP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SLP 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SNODP $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SNODP 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SNOMAS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SNOMAS 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* SWGDN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC SWGDN 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* TO3 $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TO3 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* TROPPT $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TROPPT 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* TS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC TS 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* T2M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC T2M 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* U10M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC U10M 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* USTAR $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC USTAR 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* V10M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC V10M 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 +* Z0M $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A1.$RES.$NC Z0M 1900-2100/1-12/1-31/*/+30minute EFY xy 1 * - 1 1 # --- A3cld fields --- -* CLOUD $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC CLOUD $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* OPTDEPTH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC OPTDEPTH $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* QI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC QI $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* QL $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC QL $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* TAUCLI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC TAUCLI $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* TAUCLW $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC TAUCLW $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* CLOUD $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC CLOUD 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* OPTDEPTH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC OPTDEPTH 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* QI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC QI 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* QL $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC QL 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* TAUCLI $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC TAUCLI 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* TAUCLW $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3cld.$RES.$NC TAUCLW 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 # --- A3dyn fields --- -* DTRAIN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC DTRAIN $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* OMEGA $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC OMEGA $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* RH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC RH $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* U $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC U $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* V $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC V $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* DTRAIN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC DTRAIN 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* OMEGA $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC OMEGA 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* RH $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC RH 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* U $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC U 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* V $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3dyn.$RES.$NC V 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 # --- A3mstC fields --- -* DQRCU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC DQRCU $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* DQRLSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC DQRLSAN $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* REEVAPCN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC REEVAPCN $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* REEVAPLS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC REEVAPLS $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* DQRCU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC DQRCU 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* DQRLSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC DQRLSAN 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* REEVAPCN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC REEVAPCN 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* REEVAPLS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstC.$RES.$NC REEVAPLS 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 # --- A3mstE fields --- -* CMFMC $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC CMFMC $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* PFICU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFICU $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* PFILSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFILSAN $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* PFLCU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFLCU $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 -* PFLLSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFLLSAN $YYYY/$MM/$DD/*/+90minute EFY xyz 1 * - 1 1 +* CMFMC $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC CMFMC 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* PFICU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFICU 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* PFILSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFILSAN 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* PFLCU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFLCU 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 +* PFLLSAN $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.A3mstE.$RES.$NC PFLLSAN 1900-2100/1-12/1-31/*/+90minute EFY xyz 1 * - 1 1 # --- I3 fields --- -* PS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC PS $YYYY/$MM/$DD/* EFY xy 1 * - 1 1 -* SPHU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC QV $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 -* TMPU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC T $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 +* PS $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC PS 1900-2100/1-12/1-31/* EFY xy 1 * - 1 1 +* SPHU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC QV 1900-2100/1-12/1-31/* EFY xyz 1 * - 1 1 +* TMPU $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC T 1900-2100/1-12/1-31/* EFY xyz 1 * - 1 1 -* PS_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC PS $YYYY/$MM/1-31/1/+1day EFY xy 1 * - 1 1 -* SPHU_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC QV $YYYY/$MM/1-31/1/+1day EFY xyz 1 * - 1 1 -* TMPU_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC T $YYYY/$MM/1-31/1/+1day EFY xyz 1 * - 1 1 +* PS_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC PS 1900-2100/1-12/1-31/1/+1day EFY xy 1 * - 1 1 +* SPHU_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC QV 1900-2100/1-12/1-31/1/+1day EFY xyz 1 * - 1 1 +* TMPU_NEXTDAY $METDIR/$YYYY/$MM/$MET.$YYYY$MM$DD.I3.$RES.$NC T 1900-2100/1-12/1-31/1/+1day EFY xyz 1 * - 1 1 #============================================================================== # --- Fields for lightning emissions (Extension 103) --- @@ -134,8 +134,8 @@ METDIR: ${RUNDIR_MET_DIR} #============================================================================== (((LightNOx (((.not.LightningClimatology -* FLASH_DENS $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_$YYYY_$MM.nc4 LDENS $YYYY/$MM/$DD/0-23/+90minute RFY3 xy 1 * - 1 1 -* CONV_DEPTH $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_$YYYY_$MM.nc4 CTH $YYYY/$MM/$DD/0-23/+90minute RFY3 xy 1 * - 1 1 +* FLASH_DENS $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_$YYYY_$MM.nc4 LDENS 1900-2100/1-12/1-31/0-23/+90minute RFY3 xy 1 * - 1 1 +* CONV_DEPTH $ROOT/OFFLINE_LIGHTNING/v2020-03/${RUNDIR_METLIGHTNING}/$YYYY/FLASH_CTH_${RUNDIR_METLIGHTNING}_${RUNDIR_METLIGHTNING_RES}_$YYYY_$MM.nc4 CTH 1900-2100/1-12/1-31/0-23/+90minute RFY3 xy 1 * - 1 1 ))).not.LightningClimatology (((LightningClimatology diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon index 845983b8f..334d9c7d3 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon @@ -1067,7 +1067,7 @@ Mask fractions: false # --- GEOS-Chem boundary condition file --- #============================================================================== (((GC_BCs -* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? $YYYY/$MM/$DD/* EFY xyz 1 * - 1 1 +* BC_ $ROOT/SAMPLE_BCs/v2021-07/CH4/GEOSChem.BoundaryConditions.$YYYY$MM$DD_0000z.nc4 SpeciesBC_?ADV? 1900-2100/1-12/1-31/* EFY xyz 1 * - 1 1 )))GC_BCs #============================================================================== From 2a8244fb2235c80a3a438eb3866448c3be281587 Mon Sep 17 00:00:00 2001 From: Haipeng Lin Date: Mon, 24 Jun 2024 19:01:05 -0400 Subject: [PATCH 297/331] Update CHANGELOG.md --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7f695551..8859559b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] - TBD +### Changed +- Alphabetically sort Complex SOA species into `geoschem_config.yml` in run directory creation + ## [14.4.0] - 2024-05-30 ### Added - Added `SpcConc%Units` for species-specific unit conversion From abb36e693d88aa0007a47b720db06ca2ced99e66 Mon Sep 17 00:00:00 2001 From: Haipeng Lin Date: Mon, 24 Jun 2024 19:03:50 -0400 Subject: [PATCH 298/331] Update CHANGELOG.md --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7f695551..82ce69c47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] - TBD +### Changed +- Updated `run/CESM` with alphabetical sorting of species in `geoschem_config.yml` + +### Removed +- Disabled `run/CESM` ParaNOx extension by default in `HEMCO_Config.rc` +- Removed MPI broadcasts in CESM-only UCX code; MPI broadcast done at coupler level + ## [14.4.0] - 2024-05-30 ### Added - Added `SpcConc%Units` for species-specific unit conversion From 9bc285ea51fd0f1175be0b2d5a35c9eb0f05c925 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Tue, 25 Jun 2024 10:13:11 -0400 Subject: [PATCH 299/331] Initialize local variable PHOTDELTA to avoid run-time error in debug mode This error is triggered in CESM. Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 3 +++ GeosCore/ucx_mod.F90 | 3 +++ 2 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index afcdb997f..c8612c440 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Fixed formatting error in `.github/workflows/stale.yml` that caused the Mark Stale Issues action not to run - Fixed typo `$GCAPVERTRESL` -> `$GCAPVERTRES` in `HEMCO_Config.rc.fullchem` template file +### Added +- Added initialization of PHOTDELTA in ucx_h2so4phot to avoid run-time error in CESM + ## [14.4.0] - 2024-05-30 ### Added - Added `SpcConc%Units` for species-specific unit conversion diff --git a/GeosCore/ucx_mod.F90 b/GeosCore/ucx_mod.F90 index f72988ae7..b5ac005cf 100644 --- a/GeosCore/ucx_mod.F90 +++ b/GeosCore/ucx_mod.F90 @@ -3825,6 +3825,9 @@ SUBROUTINE UCX_H2SO4PHOT( Input_Opt, State_Chm, State_Grid, State_Met ) ! UCX_H2SO4PHOT begins here! !================================================================= + ! Initialize + PHOTDELTA = 0.0_fp + ! Copy fields from species database SO2_MW_G = State_Chm%SpcData(id_SO2)%Info%MW_g ! g/mol SO4_MW_G = State_Chm%SpcData(id_SO4)%Info%MW_g ! g/mol From 8d0fdca481a27a700cdd1750881402fc4bb12b9d Mon Sep 17 00:00:00 2001 From: Haipeng Lin Date: Tue, 25 Jun 2024 11:48:45 -0400 Subject: [PATCH 300/331] Remove extraneous variables in MODEL_CESM block in UCX --- GeosCore/ucx_mod.F90 | 9 --------- 1 file changed, 9 deletions(-) diff --git a/GeosCore/ucx_mod.F90 b/GeosCore/ucx_mod.F90 index 4e9075d07..c7e2a3122 100644 --- a/GeosCore/ucx_mod.F90 +++ b/GeosCore/ucx_mod.F90 @@ -3903,8 +3903,6 @@ SUBROUTINE NOXCOEFF_INIT( Input_Opt, State_Grid, State_Chm ) USE State_Chm_Mod, ONLY : ChmState #if defined( MODEL_CESM ) USE UNITS, ONLY : freeUnit - USE CAM_ABORTUTILS, ONLY : endrun - USE SPMD_UTILS, ONLY : mpicom, masterprocid, mpi_success, mpi_real8 #endif ! ! !INPUT PARAMETERS: @@ -3930,10 +3928,6 @@ SUBROUTINE NOXCOEFF_INIT( Input_Opt, State_Grid, State_Chm ) INTEGER :: I, AS, IOS INTEGER :: IMON, ITRAC, ILEV INTEGER :: IU_FILE -#if defined( MODEL_CESM ) - INTEGER :: nSize ! Number of elements in State_Chm%NOXCOEFF - INTEGER :: ierr -#endif ! Strings CHARACTER(LEN=255) :: NOX_FILE @@ -4057,7 +4051,6 @@ SUBROUTINE NOXCOEFF_INIT( Input_Opt, State_Grid, State_Chm ) State_Chm%NOXCOEFF = 0.0e+0_fp #if defined( MODEL_CESM ) - nSize = State_Chm%JJNOXCOEFF * UCX_NLEVS * 6 * 12 IF ( Input_Opt%amIRoot ) THEN #endif ! Fill array @@ -4138,8 +4131,6 @@ SUBROUTINE NOXCOEFF_INIT( Input_Opt, State_Grid, State_Chm ) ENDDO !IMON #if defined( MODEL_CESM ) ENDIF - - IF ( ierr /= mpi_success ) CALL endrun(subname//': MPI_BCAST ERROR: NOXCOEFF') #endif END SUBROUTINE NOXCOEFF_INIT From d3fba4d2707e515a09917f7d9dd0a75fe7019605 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 25 Jun 2024 14:20:40 -0400 Subject: [PATCH 301/331] Rebase commits for PR #2348 atop dev/no-diff-to-benchmark This rebase brings the commits for PR #2348 (Changes for GEOS-Chem v14.4 within CESM compatibility) atop of PR #2349. Signed-off-by: Bob Yantosca --- .github/workflows/stale.yml | 9 +-------- CHANGELOG.md | 3 +++ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index b14b1f621..c4ba4f38f 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -22,14 +22,7 @@ jobs: with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-label: 'stale' - exempt-issue-labels: - - 'category: Discussion' - - 'category: Feature Request' - - 'deferred' - - 'help needed: Open Research Problem' - - 'help needed: Request Input from Community' - - 'never stale' - - 'TODO: Documentation' + exempt-issue-labels: 'category: Discussion','category: Feature Request','deferred','help needed: Open Research Problem','help needed: Request Input from Community','never stale','TODO: Documentation' days-before-issue-stale: 30 days-before-issue-close: 7 stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. If there are no updates within 7 days it will be closed. You can add the "never stale" tag to prevent the issue from closing this issue.' diff --git a/CHANGELOG.md b/CHANGELOG.md index 82ce69c47..25adf5fec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Updated `run/CESM` with alphabetical sorting of species in `geoschem_config.yml` +### Fixed +- Fixed formatting error in `.github/workflows/stale.yml` that caused the Mark Stale Issues action not to run + ### Removed - Disabled `run/CESM` ParaNOx extension by default in `HEMCO_Config.rc` - Removed MPI broadcasts in CESM-only UCX code; MPI broadcast done at coupler level From 570974270adcf5079878cc6ae8fd06888b7444a1 Mon Sep 17 00:00:00 2001 From: Melissa Sulprizio Date: Wed, 26 Jun 2024 08:48:09 -0400 Subject: [PATCH 302/331] Add fixes for ALK4 and R4N2 chemistry from Brewer et al. (2023, JGR) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit R4N2 was a common product of alkane, isoprene, and monoterpene oxidation and produced organonitrate SOA but we don’t want ALK4 to produce organonitrate SOA as discusses in https://github.com/geoschem/geos-chem/issues/1625. A fix from Jared Brewer is included here. NOTE: The KPP fullchem mechanism has not been rebuilt with these fixes to facilitate merging these updates up to the latest GEOS-Chem release. These updates will also need to be added to the custom.eqn file. Signed-off-by: Melissa Sulprizio --- CHANGELOG.md | 5 +++ KPP/fullchem/fullchem.eqn | 55 ++++++++++++++++++++++++++++----- KPP/fullchem/fullchem.kpp | 4 +-- run/shared/species_database.yml | 40 +++++++++++++++++++++++- 4 files changed, 93 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d99e23fb4..5b90e5f9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] - TBD +### Added +- Added four new species ALK4N1, ALK4N2, ALK4O2, and ALK4P to address issues in ALK4 and R4N2 chemistry following Brewer et al. (2023, JGR) +- Added ALK4N1 and ALK4N2 to Ox family in KPP + ## [14.1.0] - 2023-02-01 ### Added - Added dry deposition updates to Hg0 from Feinberg22 ESPI publication + AMAP emissions diff --git a/KPP/fullchem/fullchem.eqn b/KPP/fullchem/fullchem.eqn index ea05c1393..c3f8ad039 100644 --- a/KPP/fullchem/fullchem.eqn +++ b/KPP/fullchem/fullchem.eqn @@ -108,6 +108,7 @@ FP : Fabien Paulot; fabien.paulot@noaa.gov HOTP: Havala Pye; pye.havala@epa.gov JAF : Jenny Fisher; jennyf@uow.edu.au JAS : Johan Schmidt; johanalbrechtschmidt@gmail.com +JFB : Jared Brewer; jfbrewer@alumni.stanford.edu JMAO: Jingqiu Mao; jmao2@alaska.edu JMM : Jonathan Moch jmoch@g.harvard.edu JPP : Justin Parrella; justin.parrella@gmail.com @@ -134,6 +135,7 @@ REFERENCES (alphabetical order) * Bates2019: Bates and Jacob, Atmos. Chem. Phys., doi:10.5194/acp-19-9613-2019, 2019. * Bates2021a: Bates et al, JGR, https://doi.org/10.1029/2020JD033439, 2021. * Bates2021b: Bates et al, ACP, https://doi.org/10.5194/acp-2021-605, 2021. +* Brewer2023: Brewer et al., JGR, doi:10.1029/2022JD037257, 2023. * Browne2011: Browne et al., Atmos. Chem. Phys., doi:10.5194/acp-11-4209-2011, 2011. * Browne2014: Browne et al., Atmos. Chem. Phys., doi:10.5194/acp-14-1225-2014, 2014. * Chen2017: Chen et al., Geophys. Res. Lett., doi:10.1002/2017GL073812, 2017. @@ -191,6 +193,10 @@ ACTA = IGNORE; {CH3C(O)OH; Acetic acid} AERI = IGNORE; {I; Dissolved iodine} ALD2 = IGNORE; {CH3CHO; Acetaldehyde} ALK4 = IGNORE; {>= C4 alkanes} +ALK4N1 = IGNORE; {RO2 from ALKN2} +ALK4N2 = IGNORE; {RO2NO; >= C4 alkylnitrates from ALK4} +ALK4O2 = IGNORE; {RO2 from ALK4} +ALK4P = IGNORE; {CH3CH2CH2CH2OOH; Peroxide from ALK4O2} AONITA = IGNORE; {Aerosol-phase organic nitrate from aromatic precursors} AROMRO2 = IGNORE; {generic peroxy radical from aromatic oxidation} AROMP4 = IGNORE; {Generic C4 product from aromatic oxidation} @@ -442,7 +448,7 @@ PRPN = IGNORE; {O2NOCH2CH(OOH)CH3; Peroxide from PRN1} PYAC = IGNORE; {CH3COCOOH; Pyruvic acid} R4N1 = IGNORE; {RO2 from R4N2} R4N2 = IGNORE; {RO2NO; >= C4 alkylnitrates} -R4O2 = IGNORE; {RO2 from ALK4} +R4O2 = IGNORE; {RO2 from >= C4 biogenic organics} R4P = IGNORE; {CH3CH2CH2CH2OOH; Peroxide from R4O2} RA3P = IGNORE; {CH3CH2CH2OOH; Peroxide from A3O2} RB3P = IGNORE; {CH3CH(OOH)CH3; Peroxide from B3O2} @@ -585,22 +591,30 @@ C3H8 + OH = A3O2 : GC_TBRANCH_2_acabc(7.60d-12, -585.0 A3O2 + NO = NO2 + HO2 + RCHO : GC_RO2NO_B2_aca(2.90d-12, 350.0d0, 3.0d0); {2019/05/10; Fisher2018; JAF} A3O2 + NO = NPRNO3 : GC_RO2NO_A2_aca(2.90d-12, 350.0d0, 3.0d0); {2019/05/10; Fisher2018; JAF} PO2 + NO = NO2 + HO2 + CH2O + ALD2 : GCARR_ac(2.70d-12, 350.0d0); -ALK4 + OH = R4O2 : GCARR_ac(9.10d-12, -405.0d0); +ALK4 + OH = ALK4O2 : GCARR_ac(9.10d-12, -405.0d0); {2023/05/14; Brewer2023; JFB} +ALK4O2 + NO = NO2 + 0.320ACET + 0.190MEK + + 0.190MO2 + 0.270HO2 + 0.320ALD2 + + 0.140RCHO + 0.050A3O2 + 0.180B3O2 + + 0.320OTHRO2 : GC_RO2NO_B2_aca(2.70d-12, 350.0d0, 4.5d0); {2023/05/14; Brewer2023; JFB} +ALK4O2 + NO = ALK4N2 : GC_RO2NO_A2_aca(2.70d-12, 350.0d0, 4.5d0); {2023/05/14; Brewer2023; JFB} +ALK4N1 + NO = 2.000NO2 + 0.570RCHO + + 0.860ALD2 + 0.570CH2O : GCARR_ac(2.70d-12, 350.0d0); {2023/05/14; Brewer2023; JFB} R4O2 + NO = NO2 + 0.320ACET + 0.190MEK + 0.190MO2 + 0.270HO2 + 0.320ALD2 + 0.140RCHO + 0.050A3O2 + 0.180B3O2 + 0.320OTHRO2 : GC_RO2NO_B2_aca(2.70d-12, 350.0d0, 4.5d0); {2017/02/23; ALK4 lumping fix; BHH} R4O2 + NO = R4N2 : GC_RO2NO_A2_aca(2.70d-12, 350.0d0, 4.5d0); R4N1 + NO = 2.000NO2 + 0.570RCHO + - 0.860ALD2 + 0.570CH2O : GCARR_ac(2.70d-12, 350.0d0); {2017/07/27; Fix C creation; SAS,BHH,MJE} + 0.860ALD2+ 0.570CH2O : GCARR_ac(2.70d-12, 350.0d0); {2017/07/27; Fix C creation; SAS,BHH,MJE} ATO2 + NO = NO2 + CH2O + MCO3 : GCARR_ac(2.80d-12, 300.0d0); {2017/07/27; Fix C creation; SAS,BHH,MJE} KO2 + NO = 0.930NO2 + 0.930ALD2 + - 0.930MCO3 + 0.070R4N2 : GCARR_ac(2.70d-12, 350.0d0); + 0.930MCO3 + 0.070ALK4N2 : GCARR_ac(2.70d-12, 350.0d0); {2023/05/14; Brewer2023; JFB} B3O2 + NO = NO2 + HO2 + ACET : GC_RO2NO_B2_aca(2.70d-12, 360.0d0, 3.0d0); {2019/05/10; Fisher2018; JAF} B3O2 + NO = IPRNO3 : GC_RO2NO_A2_aca(2.70d-12, 360.0d0, 3.0d0); {2019/05/10; Fisher2018; JAF} PRN1 + NO = 2.000NO2 + CH2O + ALD2 : GCARR_ac(2.70d-12, 350.0d0); -ALK4 + NO3 = HNO3 + R4O2 : GCARR_ac(2.80d-12, -3280.0d0); +ALK4 + NO3 = HNO3 + ALK4O2 : GCARR_ac(2.80d-12, -3280.0d0); {2023/05/14; Brewer2023; JFB} R4N2 + OH = R4N1 + H2O : 1.60d-12; +ALK4N2 + OH = ALK4N1 + H2O : 1.60d-12; {2023/05/14; Brewer2023; JFB} ACTA + OH = MO2 + CO2 + H2O : GCARR_ac(3.15d-14, 920.0d0); {2013/02/12; JPL 10-6; BHH,JMAO,EAM} OH + RCHO = RCO3 + H2O : GCARR_ac(6.00d-12, 410.0d0); RCO3 + NO2 {+M} = PPN : GCJPLPR_abab(9.00d-28, 8.9d0, 7.7d-12, 0.2d0, 0.6d0); {JPL Eval 17} @@ -616,6 +630,8 @@ PO2 + MO2 = HO2 + 0.500ALD2 + 1.250CH2O + 0.250ROH : 5.92d-13; R4O2 + HO2 = R4P : GCARR_ac(7.40d-13, 700.0d0); R4N1 + HO2 = R4N2 : GCARR_ac(7.40d-13, 700.0d0); +ALK4O2 + HO2 = ALK4P : GCARR_ac(7.40d-13, 700.0d0); {2023/05/14; Brewer2023; JFB} +ALK4N1 + HO2 = ALK4N2 : GCARR_ac(7.40d-13, 700.0d0); {2023/05/14; Brewer2023; JFB} ATO2 + HO2 = 0.150MCO3 + 0.150OH + 0.150CH2O + 0.850ATOOH : GCARR_ac(8.60d-13, 700.0d0); {2013/03/22; Paulot2009; FP,EAM,JMAO,MJE} KO2 + HO2 = 0.150OH + 0.150ALD2 + @@ -637,6 +653,15 @@ R4N1 + MO2 = NO2 + 0.200CH2O + 0.380ALD2 + 0.290RCHO + 0.150R4O2 + 0.250RCHO + 0.750CH2O + 0.250MOH + 0.250ROH + 0.500HO2 : 8.37d-14; +ALK4O2 + MO2 = 0.160ACET + 0.100MEK + + 0.090MO2 + 0.140HO2 + 0.160ALD2 + + 0.070RCHO + 0.030A3O2 + 0.090B3O2 + + 0.160OTHRO2 + 0.250MEK + 0.750CH2O + + 0.250MOH + 0.250ROH + 0.500HO2 : 8.37d-14; {2023/05/14; Brewer2023; JFB} +ALK4N1 + MO2 = NO2 + 0.200CH2O + 0.380ALD2 + + 0.290RCHO + 0.150R4O2 + 0.250RCHO + + 0.750CH2O + 0.250MOH + 0.250ROH + + 0.500HO2 : 8.37d-14; {2023/05/14; Brewer2023; JFB} ATO2 + MO2 = 0.300HO2 + 0.300CH2O + 0.300MCO3 + 0.200HAC + 0.200CH2O + 0.500MGLY + 0.500MOH : GCARR_ac(7.50d-13, 500.0d0); @@ -694,6 +719,8 @@ RA3P + OH = 0.640OH + 0.360A3O2 + RB3P + OH = 0.791OH + 0.209B3O2 + 0.791ACET : GCARR_ac(8.78d-12, 200.0d0); {2013/03/22; Paulot2009; FP,EAM,JMAO,MJE} R4P + OH = 0.791OH + 0.209R4O2 + 0.791RCHO : GCARR_ac(8.78d-12, 200.0d0); {2013/03/22; Paulot2009; FP,EAM,JMAO,MJE} +ALK4P + OH = 0.791OH + 0.209ALK4O2 + + 0.791RCHO : GCARR_ac(8.78d-12, 200.0d0); {2023/05/14; Brewer2023; JFB} RP + OH = RCO3 : GCARR_ac(6.13d-13, 200.0d0); {2013/03/22; Paulot2009; FP,EAM,JMAO,MJE} PP + OH = 0.791OH + 0.209PO2 + 0.791HAC : GCARR_ac(8.78d-12, 200.0d0); {2013/03/22; Paulot2009; FP,EAM,JMAO,MJE} LVOC + OH = OH : GCARR_ac(4.82d-11, -400.0d0); {2017/06/14; Marais2016; EAM} @@ -705,16 +732,23 @@ MCO3 + MO2 = ACTA + CH2O : GCARR_ac(2.00d-13, 500.0d0); R4O2 + MCO3 = MO2 + 0.320ACET + 0.190MEK + 0.270HO2 + 0.320ALD2 + 0.130RCHO + 0.050A3O2 + 0.180B3O2 + 0.320OTHRO2 : GCARR_ac(1.68d-12, 500.0d0); {2013/03/22; Paulot2009; FP,EAM,JMAO,MJE} +ALK4O2 + MCO3 = MO2 + 0.320ACET + 0.190MEK + + 0.270HO2 + 0.320ALD2 + 0.130RCHO + + 0.050A3O2 + 0.180B3O2 + 0.320OTHRO2 : GCARR_ac(1.68d-12, 500.0d0); {2023/05/14; Brewer2023; JFB} ATO2 + MCO3 = MO2 + MCO3 + CH2O : GCARR_ac(1.68d-12, 500.0d0); {2013/03/22; Paulot2009; FP,EAM,JMAO,MJE} KO2 + MCO3 = MO2 + ALD2 + MCO3 : GCARR_ac(1.68d-12, 500.0d0); B3O2 + MCO3 = MO2 + HO2 + ACET : GCARR_ac(1.68d-12, 500.0d0); R4N1 + MCO3 = MO2 + NO2 + 0.390CH2O + 0.750ALD2 + 0.570RCHO + 0.300R4O2 : GCARR_ac(1.68d-12, 500.0d0); +ALK4N1 + MCO3 = MO2 + NO2 + 0.390CH2O + + 0.750ALD2 + 0.570RCHO + 0.300ALK4O2 : GCARR_ac(1.68d-12, 500.0d0); {2023/05/14; Brewer2023; JFB} PRN1 + MCO3 = MO2 + NO2 + CH2O + ALD2 : GCARR_ac(1.68d-12, 500.0d0); R4O2 + MCO3 = MEK + ACTA : GCARR_ac(1.87d-13, 500.0d0); +ALK4O2 + MCO3 = MEK + ACTA : GCARR_ac(1.87d-13, 500.0d0); {2023/05/14; Brewer2023; JFB} ATO2 + MCO3 = MGLY + ACTA : GCARR_ac(1.87d-13, 500.0d0); {2017/07/27; Fix C creation; SAS,BHH,MJE} KO2 + MCO3 = MEK + ACTA : GCARR_ac(1.87d-13, 500.0d0); R4N1 + MCO3 = RCHO + ACTA + NO2 : GCARR_ac(1.87d-13, 500.0d0); +ALK4N1 + MCO3 = RCHO + ACTA + NO2 : GCARR_ac(1.87d-13, 500.0d0); {2023/05/14; Brewer2023; JFB} PRN1 + MCO3 = RCHO + ACTA + NO2 : GCARR_ac(1.87d-13, 500.0d0); B3O2 + MCO3 = ACET + ACTA : GCARR_ac(1.87d-13, 500.0d0); MCO3 + ETO2 = MO2 + ALD2 + HO2 : GCARR_ac(1.68d-12, 500.0d0); @@ -882,7 +916,7 @@ Cl + C3H8 = HCl + B3O2 : GCARR_ac(6.54d-11, 60.0d0); Cl + C3H8 = HCl + A3O2 : GCARR_ac(8.12d-11, -90.0d0); {2017/09/22; Sherwen2016b;TS,JAS,SDE} Cl + ACET = HCl + ATO2 : GCARR_ac(7.70d-11, -1000.0d0); {2017/09/22; Sherwen2016b;TS,JAS,SDE} Cl + ISOP = HCl + 0.5IHOO1 + 0.5IHOO4 : GCARR_ac(7.60d-11, 500.0d0); {2019/11/06; Sherwen2016b;KHB,TS,JAS,SDE} -Cl + ALK4 = HCl + R4O2 : 2.05d-10; {2017/09/22; Sherwen2016b;TS,JAS,SDE} +Cl + ALK4 = HCl + ALK4O2 : 2.05d-10; {2023/05/14; Brewer2023; JFB} Cl + PRPE {+M} = HCl + PO2 {+M} : GCJPLPR_aa(4.00d-28, 2.8d-10, 0.6d0); {2017/09/22; Sherwen2016b;TS,JAS,SDE} Br + PRPE = HBr + PO2 : 3.60d-12; {2017/09/22; Sherwen2016b;TS,JAS,SDE} I + NO {+M} = INO {+M} : GCJPLPR_aba(1.80d-32, 1.0d0, 1.77d-11, 0.6d0); {2017/09/22; Sherwen2016b;TS,JAS,SDE} @@ -1462,8 +1496,8 @@ AROMP5 + OH = 0.6MGLY + 0.15ACTA + 0.33RCO3 + 0.25CO + 0.52RCOOH : 5.0d-11; {2021/09/29; Bates2021b; KHB,MSL} AROMP5 + O3 = 0.6MGLY + 0.3ACTA + 0.2HCOOH + 0.5CO + 0.95GLYC + 0.1HO2 + 0.1OH : 8.0d-16; {2021/09/29; Bates2021b; KHB,MSL} -AROMP5 = 0.2HO2 + 0.2R4O2 + - 0.2MGLY + 1.2RCHO : 1.5d-3; {2021/09/29; Bates2021b; KHB,MSL} +AROMP5 = 0.2HO2 + 0.2ALK4O2 + + 0.2MGLY + 1.2RCHO : 1.5d-3; {2021/09/29; Bates2021b; KHB,MSL}{2023/05/14; Brewer2023; JFB} // // KHB -- "we still need to include the dummy species for aromatic oxidation // to make the complex SOA code work. Hopefully this will be changed @@ -1629,12 +1663,17 @@ ETP + hv = OH + HO2 + ALD2 : PHOTOL(80); RA3P + hv = OH + HO2 + RCHO : PHOTOL(81); RB3P + hv = OH + HO2 + ACET : PHOTOL(82); R4P + hv = OH + HO2 + RCHO : PHOTOL(83); +ALK4P + hv = OH + HO2 + RCHO : PHOTOL(83); {2023/05/14; Brewer2023; JFB} PP + hv = OH + HO2 + ALD2 + CH2O : PHOTOL(84); RP + hv = OH + HO2 + ALD2 : PHOTOL(85); R4N2 + hv = NO2 + 0.320ACET + 0.190MEK + 0.180MO2 + 0.270HO2 + 0.320ALD2 + 0.130RCHO + 0.050A3O2 + 0.180B3O2 + 0.320OTHRO2 : PHOTOL(98); +ALK4N2 + hv = NO2 + 0.320ACET + 0.190MEK + + 0.180MO2 + 0.270HO2 + 0.320ALD2 + + 0.130RCHO + 0.050A3O2 + 0.180B3O2 + + 0.320OTHRO2 : PHOTOL(98); {2023/05/14; Brewer2023; JFB} MAP + hv = OH + MO2 : PHOTOL(99); Br2 + hv = 2.000Br : PHOTOL(23); {2012/06/07; Parrella2012; JPP} BrO + hv = Br + O : PHOTOL(28); {2014/02/03; Eastham2014; SDE} diff --git a/KPP/fullchem/fullchem.kpp b/KPP/fullchem/fullchem.kpp index e0e6b2183..8a217794d 100644 --- a/KPP/fullchem/fullchem.kpp +++ b/KPP/fullchem/fullchem.kpp @@ -11,8 +11,8 @@ #INCLUDE fullchem.eqn { Chemical reactions for fullchem mechanism } #FAMILIES { Chemical families for prod/loss diagnostic } -POx : O3 + NO2 + 2NO3 + PAN + PPN + MPAN + HNO4 + 3N2O5 + HNO3 + BrO + HOBr + BrNO2 + 2BrNO3 + MPN + ETHLN + MVKN + MCRHN + MCRHNB + PROPNN + R4N2 + PRN1 + PRPN + R4N1 + HONIT + MONITS + MONITU + OLND + OLNN + IHN1 + IHN2 + IHN3 + IHN4 + INPB + INPD + ICN + 2IDN + ITCN + ITHN + ISOPNOO1 + ISOPNOO2 + INO2B + INO2D + INA + IDHNBOO + IDHNDOO1 + IDHNDOO2 + IHPNBOO + IHPNDOO + ICNOO + 2IDNOO + MACRNO2 + ClO + HOCl + ClNO2 + 2ClNO3 + 2Cl2O2 + 2OClO + O + O1D + IO + HOI + IONO + 2IONO2 + 2OIO + 2I2O2 + 3I2O3 + 4I2O4; -LOx : O3 + NO2 + 2NO3 + PAN + PPN + MPAN + HNO4 + 3N2O5 + HNO3 + BrO + HOBr + BrNO2 + 2BrNO3 + MPN + ETHLN + MVKN + MCRHN + MCRHNB + PROPNN + R4N2 + PRN1 + PRPN + R4N1 + HONIT + MONITS + MONITU + OLND + OLNN + IHN1 + IHN2 + IHN3 + IHN4 + INPB + INPD + ICN + 2IDN + ITCN + ITHN + ISOPNOO1 + ISOPNOO2 + INO2B + INO2D + INA + IDHNBOO + IDHNDOO1 + IDHNDOO2 + IHPNBOO + IHPNDOO + ICNOO + 2IDNOO + MACRNO2 + ClO + HOCl + ClNO2 + 2ClNO3 + 2Cl2O2 + 2OClO + O + O1D + IO + HOI + IONO + 2IONO2 + 2OIO + 2I2O2 + 3I2O3 + 4I2O4; +POx : O3 + NO2 + 2NO3 + PAN + PPN + MPAN + HNO4 + 3N2O5 + HNO3 + BrO + HOBr + BrNO2 + 2BrNO3 + MPN + ETHLN + MVKN + MCRHN + MCRHNB + PROPNN + R4N2 + ALK4N2 + PRN1 + PRPN + R4N1 + ALK4N1 + HONIT + MONITS + MONITU + OLND + OLNN + IHN1 + IHN2 + IHN3 + IHN4 + INPB + INPD + ICN + 2IDN + ITCN + ITHN + ISOPNOO1 + ISOPNOO2 + INO2B + INO2D + INA + IDHNBOO + IDHNDOO1 + IDHNDOO2 + IHPNBOO + IHPNDOO + ICNOO + 2IDNOO + MACRNO2 + ClO + HOCl + ClNO2 + 2ClNO3 + 2Cl2O2 + 2OClO + O + O1D + IO + HOI + IONO + 2IONO2 + 2OIO + 2I2O2 + 3I2O3 + 4I2O4; +LOx : O3 + NO2 + 2NO3 + PAN + PPN + MPAN + HNO4 + 3N2O5 + HNO3 + BrO + HOBr + BrNO2 + 2BrNO3 + MPN + ETHLN + MVKN + MCRHN + MCRHNB + PROPNN + R4N2 + ALK4N2 + PRN1 + PRPN + R4N1 + ALK4N1 + HONIT + MONITS + MONITU + OLND + OLNN + IHN1 + IHN2 + IHN3 + IHN4 + INPB + INPD + ICN + 2IDN + ITCN + ITHN + ISOPNOO1 + ISOPNOO2 + INO2B + INO2D + INA + IDHNBOO + IDHNDOO1 + IDHNDOO2 + IHPNBOO + IHPNDOO + ICNOO + 2IDNOO + MACRNO2 + ClO + HOCl + ClNO2 + 2ClNO3 + 2Cl2O2 + 2OClO + O + O1D + IO + HOI + IONO + 2IONO2 + 2OIO + 2I2O2 + 3I2O3 + 4I2O4; PCO : CO; LCO : CO; PSO4 : SO4; diff --git a/run/shared/species_database.yml b/run/shared/species_database.yml index e599abd01..1d0ed703a 100644 --- a/run/shared/species_database.yml +++ b/run/shared/species_database.yml @@ -136,6 +136,44 @@ ALK4: Is_Advected: true Is_Gas: true MW_g: 58.12 +ALK4N1: + Formula: C4H8NO5 + FullName: Peroxy radical from ALK4N2 + Is_Gas: true + MW_g: 150.13 +ALK4N2: + DD_F0: 1.0 + DD_Hstar: 1.7e+4 + Formula: RO2NO + FullName: Lumped alkyl nitrate from ALK4 + Henry_CR: 5800.0 + Henry_K0: 1.0 + Is_Advected: true + Is_DryDep: true + Is_Gas: true + Is_Photolysis: true + Is_WetDep: true + MW_g: 119.10 + WD_RetFactor: 2.0e-2 +ALK4O2: + Formula: C4H9O2 + FullName: Peroxy radical from ALK4 + Is_Gas: true + MW_g: 89.13 +ALK4P: + DD_F0: 1.0 + DD_Hstar: 2.94e+2 + Formula: CH3CH2CH2CH2OOH + FullName: Peroxide from ALK4O2 + Henry_CR: 5200.0 + Henry_K0: 2.94e+2 + Is_Advected: true + Is_DryDep: true + Is_Gas: true + Is_Photolysis: true + Is_WetDep: true + MW_g: 90.14 + WD_RetFactor: 2.0e-2 AONITA: DD_F0: 1.0 DD_Hstar: 2.9e+3 @@ -4097,7 +4135,7 @@ R4N2: WD_RetFactor: 2.0e-2 R4O2: Formula: C4H9O2 - FullName: Peroxy radical from ALK4 + FullName: Peroxy radical from isoprene and MTPA alkyl generation Is_Gas: true MW_g: 89.13 R4P: From dd859ee45494af71d29f0877f359ff571f697b67 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 28 Jun 2024 11:44:15 -0400 Subject: [PATCH 303/331] GEOS-Chem (science codebase) 14.4.1 release CHANGELOG.md - Updated version number to 14.4.1 in CHANGE Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 848820fbf..4b1b11d39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] - TBD +## [14.4.1] - 2024-06-28 ### Added - Added initialization of PHOTDELTA in `ucx_h2so4phot` to avoid run-time error in CESM From 59d5a8ffa6921fb68372c8e623f25fac3c787bb6 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 2 Jul 2024 10:56:24 -0400 Subject: [PATCH 304/331] Add KPP_AbsTol and KPP_RelTol to species_database.yml run/shared/species_database.yml run/shared/species_database_hg.yml - Allow for KPP_AbsTol and KPP_RelTol tags. - Set KPP_AbsTol to 1.0e25 for all dummy species, in order to prevent these from being considered when computing the error norm. Headers/species_mod.F90 - Add KPP_AbsTol and KPP_RelTol to the Species derived type Headers/species_database_mod.F90 - Add "KPP_AbsTol" and "KPP_RelTol" to the tags array - Add code to parse KPP_AbsTol and KPP_RelTol tags - Remove the "places" keyword and just pass the number of decimal places, for a consistent appearance - Trimmed trailing whitespace - Updated comments Headers/state_chem_mod.F90 - Add KPP_AbsTol and KPP_RelTol 1-D arrays. These are initialized at the same time as the Map_KppVar mapping array. This will allow us to replace missing values at initialization, and just copy the values to ATOL and RTOL each timestep. This is more efficient. GeosCore/fullchem_mod.F90 GeosCore/mercury_mod.F90 - Replace missing values in State_Chm%KPP_AbsTol and State_Chm%KPP_RelTol with default values. This preserves the absolute and relative tolerances for species that were specified in species_database.yml. - Copy State_Chm%KPP_AbsTol to the KPP ATOL array - Copy State_Chm%KPP_RelTol to the KPP RTOL array Signed-off-by: Bob Yantosca --- GeosCore/fullchem_mod.F90 | 20 +++++++++++--- GeosCore/mercury_mod.F90 | 16 ++++++++++-- Headers/species_database_mod.F90 | 42 +++++++++++++++++++----------- Headers/species_mod.F90 | 9 +++++++ Headers/state_chm_mod.F90 | 33 +++++++++++++++++++++++ run/shared/species_database.yml | 16 ++++++++++++ run/shared/species_database_hg.yml | 5 ++++ 7 files changed, 120 insertions(+), 21 deletions(-) diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index 0bbe52b9a..ba9517c74 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -44,7 +44,7 @@ MODULE FullChem_Mod INTEGER :: id_NK05, id_NK08, id_NK10, id_NK20 #endif #ifdef MODEL_GEOS - INTEGER :: id_O3 +< INTEGER :: id_O3 INTEGER :: id_A3O2, id_ATO2, id_B3O2, id_BRO2 INTEGER :: id_ETO2, id_LIMO2, id_MO2, id_PIO2, id_PO2 INTEGER :: id_PRN1, id_R4N1, id_R4O2, id_TRO2, id_XRO2 @@ -468,10 +468,10 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & !%%%%% CONVERGENCE CRITERIA %%%%% ! Absolute tolerance - ATOL = 1e-2_dp + ATOL = State_Chm%KPP_AbsTol ! Relative tolerance - RTOL = 0.5e-2_dp + RTOL = State_Chm%KPP_RelTol !======================================================================= ! %%%%% SOLVE CHEMISTRY -- This is the main KPP solver loop %%%%% @@ -2822,6 +2822,19 @@ SUBROUTINE Init_FullChem( Input_Opt, State_Chm, State_Diag, RC ) State_Diag%Archive_O1DconcAfterChem .or. & State_Diag%Archive_O3PconcAfterChem ) + + !======================================================================= + ! Assign default values for KPP absolute and relative tolerances + ! for species where these have not been explicitly defined. + !======================================================================= + WHERE( State_Chm%KPP_AbsTol == MISSING_DBLE ) + State_Chm%KPP_AbsTol = 1.0e-2_f8 + ENDWHERE + + WHERE( State_Chm%KPP_RelTol == MISSING_DBLE ) + State_Chm%KPP_RelTol = 0.5e-2_f8 + ENDWHERE + !======================================================================= ! Save physical parameters from the species database into KPP arrays ! in gckpp_Global.F90. These are for the hetchem routines. @@ -2835,7 +2848,6 @@ SUBROUTINE Init_FullChem( Input_Opt, State_Chm, State_Diag, RC ) HENRY_CR(KppId) = State_Chm%SpcData(N)%Info%Henry_CR ENDIF ENDDO - !======================================================================= ! Allocate arrays !======================================================================= diff --git a/GeosCore/mercury_mod.F90 b/GeosCore/mercury_mod.F90 index 741879cf1..68aa04a32 100644 --- a/GeosCore/mercury_mod.F90 +++ b/GeosCore/mercury_mod.F90 @@ -969,10 +969,10 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & !%%%%% CONVERGENCE CRITERIA %%%%% ! Absolute tolerance - ATOL = 1e-2_dp + ATOL = State_Chm%KPP_AbsTol ! Relative tolerance - RTOL = 1e-2_dp + RTOL = State_Chm%KPP_RelTol !%%%%% SOLVER OPTIONS %%%%% @@ -3886,6 +3886,18 @@ SUBROUTINE Init_Mercury( Input_Opt, State_Grid, State_Chm, State_Diag, RC ) ENDIF ENDDO + !======================================================================= + ! Assign default values for KPP absolute and relative tolerances + ! for species where these have not been explicitly defined. + !======================================================================= + WHERE( State_Chm%KPP_AbsTol == MISSING_DBLE ) + State_Chm%KPP_AbsTol = 1.0e-2_f8 + ENDWHERE + + WHERE( State_Chm%KPP_RelTol == MISSING_DBLE ) + State_Chm%KPP_RelTol = 1.0e-2_f8 + ENDWHERE + !======================================================================== ! Various Settings (not sure how many of these still work) !======================================================================== diff --git a/Headers/species_database_mod.F90 b/Headers/species_database_mod.F90 index abc0c08c6..36357df61 100644 --- a/Headers/species_database_mod.F90 +++ b/Headers/species_database_mod.F90 @@ -157,7 +157,7 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) REAL(f4) :: wd_rainouteff_luo(3) ! String arrays - CHARACTER(LEN=17) :: tags(64) + CHARACTER(LEN=17) :: tags(66) CHARACTER(LEN=QFYAML_StrLen):: a_str(2) ! Objects @@ -208,6 +208,11 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) "Density ", & "Formula ", & "FullName ", & + "Henry_CR ", & + "Henry_CR_Luo ", & + "Henry_K0 ", & + "Henry_K0_Luo ", & + "Henry_pKa ", & "Is_Aerosol ", & "Is_DryAlt ", & "Is_DryDep ", & @@ -218,13 +223,10 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) "Is_HgP ", & "Is_Photolysis ", & "Is_RadioNuclide ", & - "Is_Tracer ", & "Is_WetDep ", & - "Henry_CR ", & - "Henry_CR_Luo ", & - "Henry_K0 ", & - "Henry_K0_Luo ", & - "Henry_pKa ", & + "Is_Tracer ", & + "KPP_AbsTol ", & + "KPP_RelTol ", & "MP_SizeResAer ", & "MP_SizeResNum ", & "MW_g ", & @@ -611,6 +613,16 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) ThisSpc%Is_WetDep = v_bool ENDIF + ELSE IF ( INDEX( key, "%KPP_AbsTol" ) > 0 ) THEN + CALL QFYAML_Add_Get( yml, key, v_str, "", RC ) + IF ( RC /= GC_SUCCESS ) GOTO 999 + ThisSpc%KPP_AbsTol = Cast_and_RoundOff( v_str, -1 ) + + ELSE IF ( INDEX( key, "%KPP_RelTol" ) > 0 ) THEN + CALL QFYAML_Add_Get( yml, key, v_real, "", RC ) + IF ( RC /= GC_SUCCESS ) GOTO 999 + ThisSpc%KPP_RelTol = Cast_and_RoundOff( v_str, -1 ) + ELSE IF ( INDEX( key, "%MP_SizeResAer" ) > 0 ) THEN CALL QFYAML_Add_Get( yml, key, v_bool, "", RC ) IF ( RC /= GC_SUCCESS ) GOTO 999 @@ -640,8 +652,8 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) a_str = MISSING_STR CALL QFYAML_Add_Get( yml, TRIM( key ), a_str, "", RC ) IF ( RC /= GC_SUCCESS ) GOTO 999 - ThisSpc%Snk_LatMin = Cast_and_RoundOff( a_str(1), places=4 ) - ThisSpc%Snk_LatMax = Cast_and_RoundOff( a_str(2), places=4 ) + ThisSpc%Snk_LatMin = Cast_and_RoundOff( a_str(1), 4 ) + ThisSpc%Snk_LatMax = Cast_and_RoundOff( a_str(2), 4 ) ELSE IF ( INDEX( key, "%Snk_Mode" ) > 0 ) THEN CALL QFYAML_Add_Get( yml, key, v_str, "", RC ) @@ -677,8 +689,8 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) a_str = MISSING_STR CALL QFYAML_Add_Get( yml, TRIM( key ), a_str, "", RC ) IF ( RC /= GC_SUCCESS ) GOTO 999 - ThisSpc%Src_LatMin = Cast_and_RoundOff( a_str(1), places=4 ) - ThisSpc%Src_LatMax = Cast_and_RoundOff( a_str(2), places=4 ) + ThisSpc%Src_LatMin = Cast_and_RoundOff( a_str(1), 4 ) + ThisSpc%Src_LatMax = Cast_and_RoundOff( a_str(2), 4 ) ELSE IF ( INDEX( key, "%Src_Mode" ) > 0 ) THEN CALL QFYAML_Add_Get( yml, key, v_str, "", RC ) @@ -689,8 +701,8 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) a_str = MISSING_STR CALL QFYAML_Add_Get( yml, TRIM( key ), a_str, "", RC ) IF ( RC /= GC_SUCCESS ) GOTO 999 - ThisSpc%Src_PresMin = Cast_and_RoundOff( a_str(1), places=4 ) - ThisSpc%Src_PresMax = Cast_and_RoundOff( a_str(2), places=4 ) + ThisSpc%Src_PresMin = Cast_and_RoundOff( a_str(1), 4 ) + ThisSpc%Src_PresMax = Cast_and_RoundOff( a_str(2), 4 ) ELSE IF ( INDEX( key, "%Src_Units" ) > 0 ) THEN CALL QFYAML_Add_Get( yml, key, v_str, "", RC ) @@ -1359,8 +1371,8 @@ SUBROUTINE Unique_Species_Names( Input_Opt, nSpecies, RC ) ENDDO !======================================================================= - ! For specialty simulations, we do not have KPP species. Thus, the - ! of species is just the list of advected species from geoschem_config.yml + ! For speciality simulations that do not use KPP-built mechanisms, + ! we can just use the advected species list from geoschem_config.yml !======================================================================= ELSE diff --git a/Headers/species_mod.F90 b/Headers/species_mod.F90 index ebcbfb2fe..46a6ba7c1 100644 --- a/Headers/species_mod.F90 +++ b/Headers/species_mod.F90 @@ -194,6 +194,10 @@ MODULE Species_Mod LOGICAL :: Is_Hg2 ! Is a Hg2 species? LOGICAL :: Is_HgP ! Is a HgP species? + ! KPP solver parameters + REAL(f8) :: KPP_AbsTol ! Absolute tolerance + REAL(f8) :: KPP_RelTol ! Relative tolerance + END TYPE Species ! ! !DEFINED PARAMETERS: @@ -454,6 +458,8 @@ SUBROUTINE Spc_Zero( Spc ) Spc%Henry_CR = MISSING_DBLE Spc%Henry_K0 = MISSING_DBLE Spc%Henry_PKA = MISSING_DBLE + Spc%KPP_AbsTol = MISSING_DBLE + Spc%KPP_RelTol = MISSING_DBLE ! Strings Spc%Formula = MISSING_STR @@ -597,6 +603,9 @@ SUBROUTINE Spc_Print( Input_Opt, ThisSpc, RC ) WRITE( 6, 130 ) "Is_FixedChem ", ThisSpc%Is_FixedChem WRITE( 6, 100 ) "KppFixId ", ThisSpc%KppFixId ENDIF + + WRITE( 6, 120 ) "KPP_AbsTol ", ThisSpc%KPP_AbsTol + WRITE( 6, 120 ) "KPP_RelTol ", ThisSpc%KPP_RelTol ENDIF !-------------------------------------------------------------------- diff --git a/Headers/state_chm_mod.F90 b/Headers/state_chm_mod.F90 index 4a013f1a6..206b71eb8 100644 --- a/Headers/state_chm_mod.F90 +++ b/Headers/state_chm_mod.F90 @@ -91,6 +91,8 @@ MODULE State_Chm_Mod !----------------------------------------------------------------------- ! Mapping vectors to subset types of species !----------------------------------------------------------------------- + REAL(f8), POINTER :: KPP_AbsTol (: ) ! KPP absolute tolerance + REAL(f8), POINTER :: KPP_RelTol (: ) ! KPP relative tolerance INTEGER, POINTER :: Map_Advect (: ) ! Advected species IDs INTEGER, POINTER :: Map_Aero (: ) ! Aerosol species IDs INTEGER, POINTER :: Map_All (: ) ! All species IDs @@ -644,6 +646,10 @@ SUBROUTINE Zero_State_Chm( State_Chm, RC ) State_Chm%PSO4_SO2APM2 => NULL() #endif + ! KPP integrator quantities + State_Chm%KPP_AbsTol => NULL() + State_Chm%KPP_RelTol => NULL() + END SUBROUTINE Zero_State_Chm !EOC !------------------------------------------------------------------------------ @@ -2525,6 +2531,17 @@ SUBROUTINE Init_Mapping_Vectors( Input_Opt, State_Chm, RC ) CALL GC_CheckVar( 'State_Chm%Map_KppVar', 0, RC ) IF ( RC /= GC_SUCCESS ) RETURN State_Chm%Map_KppVar = 0 + + ! + ALLOCATE( State_Chm%KPP_AbsTol( N ), STAT=RC ) + CALL GC_CheckVar( 'State_Chm%KppAbsTol', 0, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Chm%KPP_AbsTol = 0.0_f8 + + ALLOCATE( State_Chm%KPP_RelTol( N ), STAT=RC ) + CALL GC_CheckVar( 'State_Chm%KppRelTol', 0, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Chm%KPP_RelTol = 0.0_f8 ENDIF N = State_Chm%nKppFix + State_Chm%nOmitted @@ -2683,6 +2700,8 @@ SUBROUTINE Init_Mapping_Vectors( Input_Opt, State_Chm, RC ) IF ( ThisSpc%Is_ActiveChem ) THEN C = ThisSpc%KppVarId State_Chm%Map_KppVar(C) = ThisSpc%ModelId + State_Chm%KPP_AbsTol(C) = ThisSpc%KPP_AbsTol + State_Chm%KPP_RelTol(C) = ThisSpc%KPP_RelTol ENDIF !--------------------------------------------------------------------- @@ -3088,6 +3107,20 @@ SUBROUTINE Cleanup_State_Chm( State_Chm, RC ) State_Chm%Phot => NULL() ENDIF + IF ( ASSOCIATED( State_Chm%KPP_AbsTol ) ) THEN + DEALLOCATE( State_Chm%KPP_AbsTol, STAT=RC ) + CALL GC_CheckVar( 'State_Chm%KPP_AbsTol', 2, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Chm%KPP_AbsTol => NULL() + ENDIF + + IF ( ASSOCIATED( State_Chm%KPP_RelTol ) ) THEN + DEALLOCATE( State_Chm%KPP_RelTol, STAT=RC ) + CALL GC_CheckVar( 'State_Chm%KPP_RelTol', 2, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Chm%KPP_RelTol => NULL() + ENDIF + IF ( ASSOCIATED( State_Chm%Map_Advect ) ) THEN DEALLOCATE( State_Chm%Map_Advect, STAT=RC ) CALL GC_CheckVar( 'State_Chm%Map_Advect', 2, RC ) diff --git a/run/shared/species_database.yml b/run/shared/species_database.yml index 7788822fb..146e6036c 100644 --- a/run/shared/species_database.yml +++ b/run/shared/species_database.yml @@ -2760,18 +2760,22 @@ LBRO2H: FullName: Dummy species to track oxidation of BRO2 by HO2 Is_Gas: true MW_g: 159.13 + KPP_AbsTol: 1.0e+25_8 LBRO2N: FullName: Dummy species to track oxidation of BRO2 by NO Is_Gas: true MW_g: 159.13 + KPP_AbsTol: 1.0e+25 LCH4: FullName: Dummy species to track loss rate of CH4 Is_Gas: true MW_g: 16.04 + KPP_AbsTol: 1.0e+25 LCO: FullName: Dummy species to track loss rate of CO Is_Gas: true MW_g: 28.01 + KPP_AbsTol: 1.0e+25 LIMO: DD_F0: 0.0 DD_Hstar: 7.0e-2 @@ -2794,14 +2798,17 @@ LISOPNO3: FullName: Dummy species to track oxidation of ISOP by NO3 Is_Gas: true MW_g: 68.13 + KPP_AbsTol: 1.0e+25 LISOPOH: FullName: Dummy species to track oxidation of ISOP by OH Is_Gas: true MW_g: 68.13 + KPP_AbsTol: 1.0e+25 LNRO2H: FullName: Dummy species to track oxidation of NRO2 by HO2 Is_Gas: true MW_g: 159.17 + KPP_AbsTol: 1.0e+25 LNRO2N: FullName: Dummy species to track oxidation of NRO2 by NO Is_Gas: true @@ -2810,14 +2817,17 @@ LOx: FullName: Dummy species to track loss rate of Ox Is_Gas: true MW_g: 48.00 + KPP_AbsTol: 1.0e+25 LTRO2H: FullName: Dummy species to track oxidation of TRO2 by HO2 Is_Gas: true MW_g: 173.16 + KPP_AbsTol: 1.0e+25 LTRO2N: FullName: Dummy species to track oxidation of TRO2 by NO Is_Gas: true MW_g: 173.16 + KPP_AbsTol: 1.0e+25 LVOC: DD_F0: 1.0 DD_Hstar: 1.0e+8 @@ -2850,10 +2860,12 @@ LXRO2H: FullName: Dummy species to track oxidation of XRO2 by HO2 Is_Gas: true MW_g: 187.19 + KPP_AbsTol: 1.0e+25 LXRO2N: FullName: Dummy species to track oxidation of XRO2 by NO Is_Gas: true MW_g: 187.19 + KPP_AbsTol: 1.0e+25 MACR: DD_F0: 1.0 DD_Hstar: 6.5 @@ -3818,6 +3830,7 @@ PCO: FullName: Dummy species to track production rate of CO Is_Gas: true MW_g: 28.01 + KPP_AbsTol: 1.0e+25 pFe: DD_F0: 0.0 DD_Hstar: 0.0 @@ -3836,6 +3849,7 @@ PH2O2: FullName: Dummy species to track production rate of H2O2 Is_Gas: true MW_g: 34.02 + KPP_AbsTol: 1.0e+25 PH2SO4: FullName: SO4 from gas-phase chemistry Is_Gas: true @@ -4136,6 +4150,7 @@ POx: FullName: Dummy species to track production rate of Ox Is_Gas: true MW_g: 48.00 + KPP_AbsTol: 1.0e+25 PP: DD_F0: 1.0 DD_Hstar: 2.94e+2 @@ -4210,6 +4225,7 @@ PSO4: FullName: Dummy species to track production of SO4 Is_Gas: true MW_g: 96.06 + KPP_AbsTol: 1.0e+25 PSO4AQ: FullName: SO4 from cloud chemistry Is_Gas: true diff --git a/run/shared/species_database_hg.yml b/run/shared/species_database_hg.yml index 3245b80b2..c69094c72 100644 --- a/run/shared/species_database_hg.yml +++ b/run/shared/species_database_hg.yml @@ -251,19 +251,24 @@ PHg2: FullName: Gross production of gaseous oxidized Hg Is_Gas: true MW_g: 200.59 # Use mol wt of atomic Hg + KPP_AbsTol: 1.0e+25 PHg0: FullName: Gross production of Hg2 Is_Gas: true MW_g: 200.59 # Use mol wt of atomic Hg + KPP_AbsTol: 1.0e+25 PHg2Br: FullName: Gaseous oxidized Hg production from Br Is_Gas: true MW_g: 200.59 # Use mol wt of atomic Hg + KPP_AbsTol: 1.0e+25 PHg2OH: FullName: Gaseous oxidized Hg production from OH Is_Gas: true MW_g: 200.59 # Use mol wt of atomic Hg + KPP_AbsTol: 1.0e+25 PHg2Cl: FullName: Gaseous oxidized Hg production from Cl Is_Gas: true MW_g: 200.59 # Use mol wt of atomic Hg + KPP_AbsTol: 1.0e25 From 9f22811dfe8f7662b26e2e3398c372d0838240bd Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 2 Jul 2024 11:00:58 -0400 Subject: [PATCH 305/331] Update CHANGELOG for KPP_AbsTol and KPP_RelTol updates CHANGELOG.md - Added notes describing how we can now define KPP absolute and relative tolerances for species in species_database.yml Signed-off-by: Bob Yantosca --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7f695551..2cd55ed29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] - TBD +### Added +- Set `KPP_AbsTol` to 1e5 for dummy species in `species_database.yml` and `species_database_hg.yml` +- Vectors `State_Chm%KPP_AbsTol` and `State_Chm%KPP_RelTol` + +### Changed +- Copy values from `State_Chm%KPP_AbsTol` to `ATOL` and `State_Chm%KPP_RelTol` to `RTOL` for fullchem and Hg simulations + ## [14.4.0] - 2024-05-30 ### Added - Added `SpcConc%Units` for species-specific unit conversion From 0952b24408f46b0967c2d1a122b35a21feb0c47e Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 2 Jul 2024 12:10:38 -0400 Subject: [PATCH 306/331] In roundoff_mod.F90, cast first, then round off if places > 0 Headers/roundoff_mod.F90 - Bug fix: First cast to dble or flex. Then round off if the places argument is > 0. This allows us to just cast w/o rounding off if needed. run/shared/species_database_mod.F90 - Changed 1.0e+25_8 to 1.0e+25 in for KPP_AbsTol (LBRO2H) CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 3 +++ Headers/roundoff_mod.F90 | 5 ++++- run/shared/species_database.yml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2cd55ed29..aaed7a6e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Copy values from `State_Chm%KPP_AbsTol` to `ATOL` and `State_Chm%KPP_RelTol` to `RTOL` for fullchem and Hg simulations +### Fixed +- In `Headers/roundoff_mod.F90`, first cast and then only round off if `places > 0` + ## [14.4.0] - 2024-05-30 ### Added - Added `SpcConc%Units` for species-specific unit conversion diff --git a/Headers/roundoff_mod.F90 b/Headers/roundoff_mod.F90 index c1730e7f3..d1d7172fa 100644 --- a/Headers/roundoff_mod.F90 +++ b/Headers/roundoff_mod.F90 @@ -167,7 +167,10 @@ FUNCTION Cast_and_RoundOff_Real2Dble( v_real, places ) RESULT( v_dble ) ENDIF ! Cast to real*8 and roundoff (if the number isn't too large) - v_dble = RoundOff( DBLE( v_real ), places ) + v_dble = DBLE( v_real ) + IF ( places > 0 ) THEN + v_dble = RoundOff( v_dble, places ) + ENDIF END FUNCTION Cast_And_RoundOff_Real2Dble !EOC diff --git a/run/shared/species_database.yml b/run/shared/species_database.yml index 146e6036c..a80b954e6 100644 --- a/run/shared/species_database.yml +++ b/run/shared/species_database.yml @@ -2760,7 +2760,7 @@ LBRO2H: FullName: Dummy species to track oxidation of BRO2 by HO2 Is_Gas: true MW_g: 159.13 - KPP_AbsTol: 1.0e+25_8 + KPP_AbsTol: 1.0e+25 LBRO2N: FullName: Dummy species to track oxidation of BRO2 by NO Is_Gas: true From 813ea43325656ee68cf06339b12d2acbb9a95871 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 2 Jul 2024 12:17:10 -0400 Subject: [PATCH 307/331] Fixed typo in fullchem_mod.F90 GeosCore/fullchem_mod.F90 - Removed extraneous "<" character Signed-off-by: Bob Yantosca --- GeosCore/fullchem_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index ba9517c74..ecdda088d 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -44,7 +44,7 @@ MODULE FullChem_Mod INTEGER :: id_NK05, id_NK08, id_NK10, id_NK20 #endif #ifdef MODEL_GEOS -< INTEGER :: id_O3 + INTEGER :: id_O3 INTEGER :: id_A3O2, id_ATO2, id_B3O2, id_BRO2 INTEGER :: id_ETO2, id_LIMO2, id_MO2, id_PIO2, id_PO2 INTEGER :: id_PRN1, id_R4N1, id_R4O2, id_TRO2, id_XRO2 From bbb722e91d064167eeaf66b6d716aeb7828231bb Mon Sep 17 00:00:00 2001 From: Lee Murray Date: Thu, 4 Jul 2024 11:47:42 -0400 Subject: [PATCH 308/331] Update setCommonRunSettings.sh.template Fix typo for MassFlux_Entry --- run/GCHP/setCommonRunSettings.sh.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/GCHP/setCommonRunSettings.sh.template b/run/GCHP/setCommonRunSettings.sh.template index 667ab8615..9a610e116 100644 --- a/run/GCHP/setCommonRunSettings.sh.template +++ b/run/GCHP/setCommonRunSettings.sh.template @@ -386,7 +386,7 @@ fi #### Mass flux checks for grid resolution and domain decomposition MassFlux_Entry=$(grep "MFXC" ExtData.rc || echo "missing") -if [[ ${MassFluxEntry} != "missing" ]]; then +if [[ ${MassFlux_Entry} != "missing" ]]; then #### Get met grid res (assume GEOS-IT and GEOS-FP are the only options) C180_Entry=$(grep "MFXC.*C180x180x6" ExtData.rc || echo "missing") From 592802f3f2a93f8193fc8ce58f6d069b76077abd Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 8 Jul 2024 10:18:45 -0400 Subject: [PATCH 309/331] Added a changelog entry for PR #2363 CHANGELOG.md - Added note about fixing typo in setCommonRunSettings.sh Signed-off-by: Bob Yantosca --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b1b11d39..c41693a7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] - TBD +### Fixed +- Typo in `setCommonRunSettings.sh` that made GCHP always choose mass fluxes for meteorology + ## [14.4.1] - 2024-06-28 ### Added - Added initialization of PHOTDELTA in `ucx_h2so4phot` to avoid run-time error in CESM From 9b0389606963e5140445af6e738481d05672c04f Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 20 Jun 2024 16:32:38 -0400 Subject: [PATCH 310/331] Read number of levels with clouds from geoschem_config.yml; pass to cloud-j Updates include: - Add new Input_Opt setting Nlevs_Phot_Cloud - Set Input_Opt%Nlevs_Phot_Cloud from new setting in geoschem_config.yml photolysis menu - Move a few existing settings in input_opt_mod.F90 to photolysis menu since that is now where they are stored in geoschem_config.yml - Update all geoschem_config.yml templates. All use 34 as number of levels with clouds except CESM which uses 22. Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 3 ++ GeosCore/cldj_interface_mod.F90 | 5 +-- GeosCore/input_mod.F90 | 19 +++++++++- Headers/input_opt_mod.F90 | 36 ++++++++++--------- run/CESM/geoschem_config.yml | 1 + .../geoschem_config.yml.Hg | 1 + .../geoschem_config.yml.aerosol | 1 + .../geoschem_config.yml.fullchem | 1 + .../geoschem_config.yml.fullchem | 1 + run/GEOS/geoschem_config.yml | 1 + run/WRF/fullchem/geoschem_config.yml | 1 + 11 files changed, 50 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b1b11d39..7f3f20728 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Removed MPI broadcasts in CESM-only UCX code; MPI broadcast done at coupler level - Remove enabling O-server in GCHP for high core counts +### Added +- Added number of levels with clouds for photolysis to geoschem_config.yml and Input_Opt to pass to Cloud-J + ## [14.4.0] - 2024-05-30 ### Added - Added `SpcConc%Units` for species-specific unit conversion diff --git a/GeosCore/cldj_interface_mod.F90 b/GeosCore/cldj_interface_mod.F90 index faa735272..80d389500 100644 --- a/GeosCore/cldj_interface_mod.F90 +++ b/GeosCore/cldj_interface_mod.F90 @@ -131,8 +131,9 @@ SUBROUTINE INIT_CLOUDJ( Input_Opt, State_Grid, State_Diag, State_Chm, RC ) ! Initialize Cloud-J. Includes reading input data files ! FJX_spec.dat (RD_XXX), FJX_scat-aer.dat (RD_MIE), and ! FJX_j2j.dat (RD_JS_JX) - CALL Init_CldJ(Input_Opt%amIRoot, Input_Opt%CloudJ_Dir, & - State_Grid%NZ, TITLEJXX, JVN_, NJXX) + CALL Init_CldJ(Input_Opt%amIRoot, Input_Opt%CloudJ_Dir, & + State_Grid%NZ, Input_Opt%Nlevs_Phot_Cloud, & + TITLEJXX, JVN_, NJXX) ! Store # of photolysis reactions in State_Chm object State_Chm%Phot%nPhotRxns = NRatJ diff --git a/GeosCore/input_mod.F90 b/GeosCore/input_mod.F90 index 15d0a6e48..6294d010f 100644 --- a/GeosCore/input_mod.F90 +++ b/GeosCore/input_mod.F90 @@ -2762,6 +2762,7 @@ SUBROUTINE Config_Photolysis( Config, Input_Opt, RC ) ! ! Scalars LOGICAL :: v_bool + INTEGER :: v_int REAL(yp) :: v_real ! Strings @@ -2793,6 +2794,19 @@ SUBROUTINE Config_Photolysis( Config, Input_Opt, RC ) ENDIF Input_Opt%Do_Photolysis = v_bool + !------------------------------------------------------------------------ + ! Number levels with clouds to use in photolysis + !------------------------------------------------------------------------ + key = "operations%photolysis%num_levs_with_cloud" + v_int = MISSING_INT + CALL QFYAML_Add_Get( Config, TRIM( key ), v_int, "", RC ) + IF ( RC /= GC_SUCCESS ) THEN + errMsg = 'Error parsing ' // TRIM( key ) // '!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF + Input_Opt%NLevs_Phot_Cloud = v_int + !------------------------------------------------------------------------ ! Directories with photolysis input files !------------------------------------------------------------------------ @@ -3000,6 +3014,8 @@ SUBROUTINE Config_Photolysis( Config, Input_Opt, RC ) WRITE( 6,90 ) 'PHOTOLYSIS SETTINGS' WRITE( 6,95 ) '-------------------' WRITE( 6,100 ) 'Turn on photolysis? : ', Input_Opt%Do_Photolysis + WRITE( 6,130 ) 'Number levels with cloud : ', & + Input_Opt%Nlevs_Phot_Cloud WRITE( 6,120 ) 'FAST-JX input directory : ', & TRIM( Input_Opt%FAST_JX_DIR ) WRITE( 6,120 ) 'Cloud-J input directory : ', & @@ -3031,7 +3047,8 @@ SUBROUTINE Config_Photolysis( Config, Input_Opt, RC ) 105 FORMAT( A, F8.3 ) 110 FORMAT( A, F4.2 ) 120 FORMAT( A, A ) - +130 FORMAT( A, I5 ) + END SUBROUTINE Config_Photolysis !EOC !------------------------------------------------------------------------------ diff --git a/Headers/input_opt_mod.F90 b/Headers/input_opt_mod.F90 index ba8a14e51..8b4623e70 100644 --- a/Headers/input_opt_mod.F90 +++ b/Headers/input_opt_mod.F90 @@ -120,12 +120,6 @@ MODULE Input_Opt_Mod LOGICAL :: LBCAE REAL(fp) :: BCAE_1 REAL(fp) :: BCAE_2 - ! for nitrate aerosol photolysis (TMS, 23/08/2018) - LOGICAL :: hvAerNIT - REAL(fp) :: hvAerNIT_JNIT - REAL(fp) :: hvAerNIT_JNITs - REAL(fp) :: JNITChanA - REAL(fp) :: JNITChanB !---------------------------------------- ! EMISSIONS fields @@ -171,9 +165,6 @@ MODULE Input_Opt_Mod REAL(fp) :: GAMMA_HO2 LOGICAL :: LACTIVEH2O LOGICAL :: LINITSPEC - LOGICAL :: USE_ONLINE_O3 - LOGICAL :: USE_O3_FROM_MET - LOGICAL :: USE_TOMS_O3 LOGICAL :: USE_AUTOREDUCE LOGICAL :: AUTOREDUCE_IS_KEEPACTIVE LOGICAL :: AUTOREDUCE_IS_KEY_THRESHOLD @@ -192,6 +183,16 @@ MODULE Input_Opt_Mod LOGICAL :: Do_Photolysis CHARACTER(LEN=255) :: FAST_JX_DIR CHARACTER(LEN=255) :: CloudJ_Dir + INTEGER :: Nlevs_Phot_Cloud + LOGICAL :: USE_ONLINE_O3 + LOGICAL :: USE_O3_FROM_MET + LOGICAL :: USE_TOMS_O3 + ! for nitrate aerosol photolysis (TMS, 23/08/2018) + LOGICAL :: hvAerNIT + REAL(fp) :: hvAerNIT_JNIT + REAL(fp) :: hvAerNIT_JNITs + REAL(fp) :: JNITChanA + REAL(fp) :: JNITChanB !---------------------------------------- ! RADIATION MENU fields @@ -612,11 +613,6 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) Input_Opt%P_ICE_SUPERSAT = 0.0_fp Input_Opt%LPSCCHEM = .FALSE. Input_Opt%LSTRATOD = .FALSE. - Input_Opt%hvAerNIT = .FALSE. - Input_Opt%hvAerNIT_JNIT = 0.0_fp - Input_Opt%hvAerNIT_JNITs = 0.0_fp - Input_Opt%JNITChanA = 0.0_fp - Input_Opt%JNITChanB = 0.0_fp !---------------------------------------- ! EMISSIONS MENU fields @@ -661,9 +657,6 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) Input_Opt%GAMMA_HO2 = 0.0_fp Input_Opt%LACTIVEH2O = .FALSE. Input_Opt%LINITSPEC = .FALSE. - Input_Opt%USE_ONLINE_O3 = .FALSE. - Input_Opt%USE_O3_FROM_MET = .FALSE. - Input_Opt%USE_TOMS_O3 = .FALSE. Input_Opt%USE_AUTOREDUCE = .FALSE. Input_Opt%AUTOREDUCE_IS_KEY_THRESHOLD = .TRUE. @@ -679,6 +672,15 @@ SUBROUTINE Set_Input_Opt( am_I_Root, Input_Opt, RC ) Input_Opt%Do_Photolysis = .FALSE. Input_Opt%FAST_JX_DIR = '' Input_Opt%CloudJ_Dir = '' + Input_Opt%Nlevs_Phot_Cloud = 0 + Input_Opt%USE_ONLINE_O3 = .FALSE. + Input_Opt%USE_O3_FROM_MET = .FALSE. + Input_Opt%USE_TOMS_O3 = .FALSE. + Input_Opt%hvAerNIT = .FALSE. + Input_Opt%hvAerNIT_JNIT = 0.0_fp + Input_Opt%hvAerNIT_JNITs = 0.0_fp + Input_Opt%JNITChanA = 0.0_fp + Input_Opt%JNITChanB = 0.0_fp !---------------------------------------- ! RADIATION MENU fields (for RRTMG only) diff --git a/run/CESM/geoschem_config.yml b/run/CESM/geoschem_config.yml index be47c127c..660db1dbe 100644 --- a/run/CESM/geoschem_config.yml +++ b/run/CESM/geoschem_config.yml @@ -46,6 +46,7 @@ operations: photolysis: activate: true + num_levs_with_cloud: 22 input_directories: fastjx_input_dir: /see/namelist/file cloudj_input_dir: /see/namelist/file diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg index 52bb52141..bfdff2473 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg @@ -65,6 +65,7 @@ operations: photolysis: activate: true + num_levs_with_cloud: 34 input_directories: fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05-Hg/ cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2024-05/ diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol index c221e620d..a3331633b 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol @@ -65,6 +65,7 @@ operations: photolysis: activate: true + num_levs_with_cloud: 34 input_directories: fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05/ cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2023-05/ diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem index e3ed1fb28..1a30babe9 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -88,6 +88,7 @@ operations: photolysis: activate: true + num_levs_with_cloud: 34 input_directories: fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05/ cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2023-05/ diff --git a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem index f62f202f6..fddcf3d90 100644 --- a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -71,6 +71,7 @@ operations: photolysis: activate: true + num_levs_with_cloud: 34 input_directories: fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05/ cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2023-05/ diff --git a/run/GEOS/geoschem_config.yml b/run/GEOS/geoschem_config.yml index 98d5d6321..a35738fed 100644 --- a/run/GEOS/geoschem_config.yml +++ b/run/GEOS/geoschem_config.yml @@ -59,6 +59,7 @@ operations: photolysis: activate: true + num_levs_with_cloud: 34 input_directories: fastjx_input_dir: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/FAST_JX/v2023-10/ cloudj_input_dir: /discover/nobackup/projects/gmao/share/dasilva/fvInput/ExtData/chemistry/GEOSCHEMchem/v0.0.0/CHEM_INPUTS/CLOUD_J/v2023-05/ diff --git a/run/WRF/fullchem/geoschem_config.yml b/run/WRF/fullchem/geoschem_config.yml index 50d7d7520..ed5b8c096 100644 --- a/run/WRF/fullchem/geoschem_config.yml +++ b/run/WRF/fullchem/geoschem_config.yml @@ -67,6 +67,7 @@ operations: photolysis: input_dir: /n/holyscratch01/external_repos/GEOS-CHEM/gcgrid/data/ExtData/CHEM_INPUTS/FAST_JX/v2021-10/ + num_levs_with_cloud: 20 overhead_O3: use_online_O3_from_model: true use_column_O3_from_met: true From 70d7003e8d7f4693ce08d8ad6b64d83dade7aece Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 27 Jun 2024 13:26:51 -0400 Subject: [PATCH 311/331] Set # levels with cloud for photolysis based on meteorology used Signed-off-by: Lizzie Lundgren --- .../geoschem_config.yml.templates/geoschem_config.yml.Hg | 2 +- .../geoschem_config.yml.templates/geoschem_config.yml.aerosol | 2 +- .../geoschem_config.yml.templates/geoschem_config.yml.fullchem | 2 +- .../geoschem_config.yml.templates/geoschem_config.yml.fullchem | 2 +- run/shared/settings/geosfp/geosfp.preprocessed_ll.txt | 2 ++ run/shared/settings/geosfp/geosfp.raw_ll.txt | 2 ++ run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt | 2 ++ run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt | 2 ++ run/shared/settings/geosit/geosit.preprocessed_ll.txt | 2 ++ run/shared/settings/geosit/geosit.raw_cs.txt | 2 ++ run/shared/settings/geosit/geosit.raw_ll.txt | 2 ++ run/shared/settings/merra2.txt | 2 ++ run/shared/settings/modele2.1.txt | 2 ++ 13 files changed, 22 insertions(+), 4 deletions(-) diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg index bfdff2473..dca11fe35 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.Hg @@ -65,7 +65,7 @@ operations: photolysis: activate: true - num_levs_with_cloud: 34 + num_levs_with_cloud: ${RUNDIR_PHOT_CLD_NLEV} input_directories: fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05-Hg/ cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2024-05/ diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol index a3331633b..98286067c 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.aerosol @@ -65,7 +65,7 @@ operations: photolysis: activate: true - num_levs_with_cloud: 34 + num_levs_with_cloud: ${RUNDIR_PHOT_CLD_NLEV} input_directories: fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05/ cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2023-05/ diff --git a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem index 1a30babe9..f3c540df1 100644 --- a/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCClassic/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -88,7 +88,7 @@ operations: photolysis: activate: true - num_levs_with_cloud: 34 + num_levs_with_cloud: ${RUNDIR_PHOT_CLD_NLEV} input_directories: fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05/ cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2023-05/ diff --git a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem index fddcf3d90..ec305a6dd 100644 --- a/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem +++ b/run/GCHP/geoschem_config.yml.templates/geoschem_config.yml.fullchem @@ -71,7 +71,7 @@ operations: photolysis: activate: true - num_levs_with_cloud: 34 + num_levs_with_cloud: ${RUNDIR_PHOT_CLD_NLEV} input_directories: fastjx_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/FAST_JX/v2024-05/ cloudj_input_dir: ${RUNDIR_DATA_ROOT}/CHEM_INPUTS/CLOUD_J/v2023-05/ diff --git a/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt b/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt index 170fdb484..5b2b37099 100644 --- a/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt +++ b/run/shared/settings/geosfp/geosfp.preprocessed_ll.txt @@ -22,6 +22,8 @@ RUNDIR_METLIGHTNING_RES='0.25x0.3125' RUNDIR_LIGHTNOX_CLIM=false RUNDIR_MET_LCLIM='2014-2019' +RUNDIR_PHOT_CLD_NLEV=34 + RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS=""" ${RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS_FOR_ADVECTION} diff --git a/run/shared/settings/geosfp/geosfp.raw_ll.txt b/run/shared/settings/geosfp/geosfp.raw_ll.txt index 1c6c0bca9..3684509b3 100644 --- a/run/shared/settings/geosfp/geosfp.raw_ll.txt +++ b/run/shared/settings/geosfp/geosfp.raw_ll.txt @@ -20,6 +20,8 @@ RUNDIR_METLIGHTNING_RES='0.25x0.3125' RUNDIR_LIGHTNOX_CLIM=false RUNDIR_MET_LCLIM='2014-2019' +RUNDIR_PHOT_CLD_NLEV=34 + RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS=""" ${RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS_FOR_ADVECTION} diff --git a/run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt b/run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt index 9d509181f..d06f9def9 100644 --- a/run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt +++ b/run/shared/settings/geosit/discover/geosit.raw_cs.discover.txt @@ -21,6 +21,8 @@ RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=true RUNDIR_MET_LCLIM='1980-2019' +RUNDIR_PHOT_CLD_NLEV=34 + RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS=""" ${RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS_FOR_ADVECTION} diff --git a/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt b/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt index c124080b4..aab129184 100644 --- a/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt +++ b/run/shared/settings/geosit/discover/geosit.raw_ll.discover.txt @@ -21,6 +21,8 @@ RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=true RUNDIR_MET_LCLIM='1980-2019' +RUNDIR_PHOT_CLD_NLEV=34 + RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS=""" ${RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS_FOR_ADVECTION} diff --git a/run/shared/settings/geosit/geosit.preprocessed_ll.txt b/run/shared/settings/geosit/geosit.preprocessed_ll.txt index aa0722de9..7603457cc 100644 --- a/run/shared/settings/geosit/geosit.preprocessed_ll.txt +++ b/run/shared/settings/geosit/geosit.preprocessed_ll.txt @@ -20,6 +20,8 @@ RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=true RUNDIR_MET_LCLIM='1980-2019' +RUNDIR_PHOT_CLD_NLEV=34 + RUNDIR_IMPORT_MASS_FLUX_FROM_EXTDATA=.false. RUNDIR_USE_TOTAL_AIR_PRESSURE_IN_ADVECTION=0 diff --git a/run/shared/settings/geosit/geosit.raw_cs.txt b/run/shared/settings/geosit/geosit.raw_cs.txt index 1c0b86bc1..ec864b233 100644 --- a/run/shared/settings/geosit/geosit.raw_cs.txt +++ b/run/shared/settings/geosit/geosit.raw_cs.txt @@ -21,6 +21,8 @@ RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=true RUNDIR_MET_LCLIM='1980-2019' +RUNDIR_PHOT_CLD_NLEV=34 + RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS=""" ${RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS_FOR_ADVECTION} diff --git a/run/shared/settings/geosit/geosit.raw_ll.txt b/run/shared/settings/geosit/geosit.raw_ll.txt index 1458f80e2..9ed585a5c 100644 --- a/run/shared/settings/geosit/geosit.raw_ll.txt +++ b/run/shared/settings/geosit/geosit.raw_ll.txt @@ -21,6 +21,8 @@ RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=true RUNDIR_MET_LCLIM='1980-2019' +RUNDIR_PHOT_CLD_NLEV=34 + RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS=""" ${RUNDIR_MET_EXTDATA_PRIMARY_EXPORTS_FOR_ADVECTION} diff --git a/run/shared/settings/merra2.txt b/run/shared/settings/merra2.txt index 5625aa0df..2d0e8004f 100644 --- a/run/shared/settings/merra2.txt +++ b/run/shared/settings/merra2.txt @@ -22,6 +22,8 @@ RUNDIR_METLIGHTNING_RES='0.5x0.625' RUNDIR_LIGHTNOX_CLIM=false RUNDIR_MET_LCLIM='1980-2019' +RUNDIR_PHOT_CLD_NLEV=34 + RUNDIR_OFFLINE_EMIS_RES='0.5x0.625' RUNDIR_OFFLINE_EMIS_LAT_RES='05' diff --git a/run/shared/settings/modele2.1.txt b/run/shared/settings/modele2.1.txt index 4b2f47104..74461d881 100644 --- a/run/shared/settings/modele2.1.txt +++ b/run/shared/settings/modele2.1.txt @@ -11,3 +11,5 @@ RUNDIR_MET_EXT='nc4' RUNDIR_MET_CN_YR=1950 RUNDIR_MET_PRES_UNIT='Pa ' RUNDIR_MET_PRES_SCALE='0.01' + +RUNDIR_PHOT_CLD_NLEV=28 From e91ce06fe44306d4fa75d311cf1a05a77a01dc2f Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 27 Jun 2024 13:31:17 -0400 Subject: [PATCH 312/331] Update changelog Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f3f20728..ad0115902 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [14.4.2] - TBD +### Added +- Added number of levels with clouds for photolysis to geoschem_config.yml and Input_Opt to pass to Cloud-J + +### Fixed +- Fixed bug in # levels with cloud used in photolysis when using GCAP met or CESM + ## [14.4.1] - 2024-06-28 ### Added - Added initialization of PHOTDELTA in `ucx_h2so4phot` to avoid run-time error in CESM @@ -27,9 +34,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Removed MPI broadcasts in CESM-only UCX code; MPI broadcast done at coupler level - Remove enabling O-server in GCHP for high core counts -### Added -- Added number of levels with clouds for photolysis to geoschem_config.yml and Input_Opt to pass to Cloud-J - ## [14.4.0] - 2024-05-30 ### Added - Added `SpcConc%Units` for species-specific unit conversion From 13dc82ce3ae20328804eefcb58b84145378c21c3 Mon Sep 17 00:00:00 2001 From: Haipeng Lin Date: Wed, 3 Jul 2024 12:05:29 -0400 Subject: [PATCH 313/331] Fixes to Cloud-J data reading in CESM environment under SE dynamical core --- GeosCore/photolysis_mod.F90 | 23 ++++++++++++++++------- Headers/state_grid_mod.F90 | 6 ++++-- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/GeosCore/photolysis_mod.F90 b/GeosCore/photolysis_mod.F90 index 0eaf45bad..3269f17f0 100644 --- a/GeosCore/photolysis_mod.F90 +++ b/GeosCore/photolysis_mod.F90 @@ -183,7 +183,7 @@ SUBROUTINE INIT_PHOTOLYSIS( Input_Opt, State_Grid, State_Chm, State_Diag, RC ) ! subroutine Set_Prof_Fjx if using Fast-JX and Set_Prof_CloudJ if using ! Cloud-J. The data is stored in State_Chm%Phot%TREF/%OREF. Cloud-J ! globals variables TREF and OREF are only used for Cloud-J standalone. - CALL RD_PROF_NC( Input_Opt, State_Chm, RC ) + CALL RD_PROF_NC( Input_Opt, State_Grid, State_Chm, RC ) IF ( RC /= GC_SUCCESS ) THEN ErrMsg = 'Error encountered in routine "Rd_Prof_Nc"!' CALL GC_Error( ErrMsg, RC, ThisLoc ) @@ -1500,13 +1500,14 @@ END SUBROUTINE SET_AER !\\ ! !INTERFACE: ! - SUBROUTINE RD_PROF_NC( Input_Opt, State_Chm, RC ) + SUBROUTINE RD_PROF_NC( Input_Opt, State_Grid, State_Chm, RC ) ! ! !USES: ! USE ErrCode_Mod - USE Input_Opt_Mod, ONLY : OptInput - USE State_Chm_Mod, ONLY : ChmState + USE Input_Opt_Mod, ONLY : OptInput + USE State_Grid_Mod, ONLY : GrdState + USE State_Chm_Mod, ONLY : ChmState #if defined( MODEL_CESM ) USE CAM_PIO_UTILS, ONLY : CAM_PIO_OPENFILE @@ -1529,6 +1530,7 @@ SUBROUTINE RD_PROF_NC( Input_Opt, State_Chm, RC ) ! !INPUT PARAMETERS: ! TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object + TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object ! ! !INPUT/OUTPUT PARAMETERS: ! @@ -1589,12 +1591,17 @@ SUBROUTINE RD_PROF_NC( Input_Opt, State_Chm, RC ) ErrMsg = '' ThisLoc = ' -> at RD_PROF_NC (in module GeosCore/photolysis_mod.F90)' +#if defined( MODEL_CESM ) + ! In the CESM model, only read on the root chunk, but on all CPUs (hplin, 7/3/24) + IF ( State_Grid%ID .ne. State_Grid%ROOT_ID ) RETURN +#endif + ! Set pointers OREF => State_Chm%Phot%OREF TREF => State_Chm%Phot%TREF ! Directory and file names - nc_dir = TRIM( Input_Opt%CHEM_INPUTS_DIR ) // '/' // 'FastJ_201204' // '/' + nc_dir = TRIM( Input_Opt%CHEM_INPUTS_DIR ) // 'FastJ_201204' // '/' nc_file = 'fastj.jv_atms_dat.nc' nc_path = TRIM( nc_dir ) // TRIM( nc_file ) @@ -1637,6 +1644,8 @@ SUBROUTINE RD_PROF_NC( Input_Opt, State_Chm, RC ) ! Open netCDF file #if defined( MODEL_CESM ) + ! Note: In CESM environment, PIO_OPENFILE is a collective operation and must + ! be called by all CPUs. (hplin, 7/3/24) CALL CAM_PIO_OPENFILE( ncid, TRIM(nc_path), PIO_NOWRITE ) #else CALL Ncop_Rd( fId, TRIM(nc_path) ) @@ -1661,7 +1670,7 @@ SUBROUTINE RD_PROF_NC( Input_Opt, State_Chm, RC ) ct3d = (/ 51, 18, 12 /) #if defined( MODEL_CESM ) iret = PIO_INQ_VARID( ncid, trim(v_name), vid ) - iret = PIO_GET_VAR( ncid, vid, TREF ) + iret = PIO_GET_VAR( ncid, vid, st3d, ct3d, TREF ) #else CALL NcRd( TREF, fId, TRIM(v_name), st3d, ct3d ) @@ -1687,7 +1696,7 @@ SUBROUTINE RD_PROF_NC( Input_Opt, State_Chm, RC ) ct3d = (/ 51, 18, 12 /) #if defined( MODEL_CESM ) iret = PIO_INQ_VARID( ncid, trim(v_name), vid ) - iret = PIO_GET_VAR( ncid, vid, OREF ) + iret = PIO_GET_VAR( ncid, vid, st3d, ct3d, OREF ) #else CALL NcRd( OREF, fId, TRIM(v_name), st3d, ct3d ) diff --git a/Headers/state_grid_mod.F90 b/Headers/state_grid_mod.F90 index f381179f2..1aebef2e0 100644 --- a/Headers/state_grid_mod.F90 +++ b/Headers/state_grid_mod.F90 @@ -37,8 +37,9 @@ MODULE State_Grid_Mod !---------------------------------------- ! User-defined grid fields !---------------------------------------- -#if defined( MODEL_WRF ) +#if defined( MODEL_WRF ) || defined( MODEL_CESM ) INTEGER :: ID ! Grid identifier number + INTEGER :: ROOT_ID ! Root grid identifier number (used in multi-domain-per-PET) #endif CHARACTER(LEN=255) :: GridRes ! Grid resolution REAL(fp) :: DX ! Delta X [degrees longitude] @@ -150,8 +151,9 @@ SUBROUTINE Init_State_Grid( Input_Opt, State_Grid, RC ) !---------------------------------------- ! User-defined grid fields !---------------------------------------- -#if defined( MODEL_WRF ) +#if defined( MODEL_WRF ) || defined( MODEL_CESM ) State_Grid%ID = -1 + State_Grid%ROOT_ID = -1 #endif State_Grid%GridRes = '' State_Grid%DX = 0e+0_fp From 022c44d018b2deb12e159bef0cfc3a8581586b85 Mon Sep 17 00:00:00 2001 From: Haipeng Lin Date: Wed, 3 Jul 2024 12:14:54 -0400 Subject: [PATCH 314/331] Remove unused CESM-specific variables in UCX_MOD --- GeosCore/ucx_mod.F90 | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/GeosCore/ucx_mod.F90 b/GeosCore/ucx_mod.F90 index 185a6548a..a6d316f77 100644 --- a/GeosCore/ucx_mod.F90 +++ b/GeosCore/ucx_mod.F90 @@ -22,14 +22,6 @@ MODULE UCX_MOD USE PhysConstants ! Physical constants USE PRECISION_MOD ! For GEOS-Chem Precision (fp) -#if defined( MODEL_CESM ) - USE CAM_PIO_UTILS, ONLY : CAM_PIO_OPENFILE - USE IOFILEMOD, ONLY : GETFIL - USE PIO, ONLY : PIO_CLOSEFILE, PIO_INQ_DIMID, PIO_INQ_DIMLEN - USE PIO, ONLY : PIO_INQ_VARID, PIO_GET_VAR, PIO_NOERR - USE PIO, ONLY : PIO_NOWRITE, FILE_DESC_T -#endif - #if !defined( EXTERNAL_GRID ) ! NcdfUtil modules for netCDF I/O USE m_netcdf_io_open ! netCDF open @@ -648,12 +640,6 @@ SUBROUTINE GET_NOXCOEFF( TARG_MONTH, Input_Opt, State_Grid, State_Chm, State_Met REAL(fp), DIMENSION(:,:), ALLOCATABLE :: NOXD2D_IN INTEGER :: LSTART -#if defined( MODEL_CESM ) - INTEGER :: iret - INTEGER :: vid - TYPE(FILE_DESC_T) :: ncid -#endif - !================================================================= ! GET_NOXCOEFF begins here! !================================================================= From 70f30a8b98334be85682093a88df04943123246c Mon Sep 17 00:00:00 2001 From: Haipeng Lin Date: Tue, 9 Jul 2024 11:02:10 -0400 Subject: [PATCH 315/331] Update CHANGELOG; revert removal of trailing slash --- CHANGELOG.md | 7 +++++++ GeosCore/photolysis_mod.F90 | 2 +- Headers/state_grid_mod.F90 | 6 ++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b1b11d39..45860c14b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased +### Added +- Added `State_Grid%ID` and `State_Grid%ROOT_ID` as "identifier numbers" for multiple instances of GEOS-Chem on one core in WRF and CESM + +### Changed +- Only read photolysis data in `Init_Photolysis` in first instance of GEOS-Chem on each PET in CESM as PIO requires it + ## [14.4.1] - 2024-06-28 ### Added - Added initialization of PHOTDELTA in `ucx_h2so4phot` to avoid run-time error in CESM diff --git a/GeosCore/photolysis_mod.F90 b/GeosCore/photolysis_mod.F90 index 3269f17f0..474b5c48b 100644 --- a/GeosCore/photolysis_mod.F90 +++ b/GeosCore/photolysis_mod.F90 @@ -1601,7 +1601,7 @@ SUBROUTINE RD_PROF_NC( Input_Opt, State_Grid, State_Chm, RC ) TREF => State_Chm%Phot%TREF ! Directory and file names - nc_dir = TRIM( Input_Opt%CHEM_INPUTS_DIR ) // 'FastJ_201204' // '/' + nc_dir = TRIM( Input_Opt%CHEM_INPUTS_DIR ) // '/' // 'FastJ_201204' // '/' nc_file = 'fastj.jv_atms_dat.nc' nc_path = TRIM( nc_dir ) // TRIM( nc_file ) diff --git a/Headers/state_grid_mod.F90 b/Headers/state_grid_mod.F90 index 1aebef2e0..b5ae3f4f9 100644 --- a/Headers/state_grid_mod.F90 +++ b/Headers/state_grid_mod.F90 @@ -38,8 +38,10 @@ MODULE State_Grid_Mod ! User-defined grid fields !---------------------------------------- #if defined( MODEL_WRF ) || defined( MODEL_CESM ) - INTEGER :: ID ! Grid identifier number - INTEGER :: ROOT_ID ! Root grid identifier number (used in multi-domain-per-PET) + ! Grid numbers in WRF and CESM because each PET runs multiple instances of GEOS-Chem. + ! The numbers are unique per PET, so a unique grid is identified by the combination of (Input_Opt%thisCPU, State_Grid%ID) + INTEGER :: ID ! Grid identifier number, unique per PET (domain number in WRF, chunk number in CESM) + INTEGER :: ROOT_ID ! Root/first grid identifier number (used in multi-domain-per-PET), unique per PET #endif CHARACTER(LEN=255) :: GridRes ! Grid resolution REAL(fp) :: DX ! Delta X [degrees longitude] From c831dbf8d7ec2327ba1585ba9bc107eea2544940 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Thu, 27 Jun 2024 12:57:26 -0400 Subject: [PATCH 316/331] Add Cloud-J status output and error handling for it This update goes an update to Cloud-J. Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + GeosCore/cldj_interface_mod.F90 | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f3f13d51..bcae8657b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [14.4.1] - 2024-06-28 ### Added - Added initialization of PHOTDELTA in `ucx_h2so4phot` to avoid run-time error in CESM +- Added Cloud-J status output and error handling for it ### Changed - Alphabetically sort Complex SOA species into `geoschem_config.yml` in run directory creation diff --git a/GeosCore/cldj_interface_mod.F90 b/GeosCore/cldj_interface_mod.F90 index 80d389500..0351434f8 100644 --- a/GeosCore/cldj_interface_mod.F90 +++ b/GeosCore/cldj_interface_mod.F90 @@ -133,7 +133,12 @@ SUBROUTINE INIT_CLOUDJ( Input_Opt, State_Grid, State_Diag, State_Chm, RC ) ! FJX_j2j.dat (RD_JS_JX) CALL Init_CldJ(Input_Opt%amIRoot, Input_Opt%CloudJ_Dir, & State_Grid%NZ, Input_Opt%Nlevs_Phot_Cloud, & - TITLEJXX, JVN_, NJXX) + TITLEJXX, JVN_, NJXX, RC) + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error encountered in subroutine Init_Cldj within Cloud-J photolysis' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF ! Store # of photolysis reactions in State_Chm object State_Chm%Phot%nPhotRxns = NRatJ @@ -890,7 +895,7 @@ SUBROUTINE Run_CloudJ( Input_Opt, State_Chm, State_Diag, & REFFL, REFFI, CLDF, CLDCOR, CLDIW, & AERSP, NDXAER, L1_, AN_, JVN_, & VALJXX, SKPERD, SWMSQ, OD18, IRAN, & - NICA, JCOUNT, LDARK, WTQCA ) + NICA, JCOUNT, LDARK, WTQCA, RC ) !----------------------------------------------------------------- ! Fill GEOS-Chem array ZPJ with J-values @@ -989,6 +994,12 @@ SUBROUTINE Run_CloudJ( Input_Opt, State_Chm, State_Diag, & ENDDO !$OMP END PARALLEL DO + IF ( RC /= GC_SUCCESS ) THEN + ErrMsg = 'Error encountered in subroutine Cloud_JX within Cloud-J photolysis' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF + ! Reset first-time flag FIRST=.FALSE. From da6f6a4a88cbb6179651d673da6c913e5c6a5c7c Mon Sep 17 00:00:00 2001 From: Haipeng Lin Date: Wed, 10 Jul 2024 11:51:38 -0400 Subject: [PATCH 317/331] Rename to CPU_Subdomain_ID and CPU_Subdomain_FirstID for clarity. --- CHANGELOG.md | 2 +- GeosCore/hco_interface_gc_mod.F90 | 4 ++-- GeosCore/photolysis_mod.F90 | 2 +- Headers/state_grid_mod.F90 | 12 ++++++------ 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45860c14b..da2eba17d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased ### Added -- Added `State_Grid%ID` and `State_Grid%ROOT_ID` as "identifier numbers" for multiple instances of GEOS-Chem on one core in WRF and CESM +- Added `State_Grid%CPU_Subdomain_ID` and `State_Grid%CPU_Subdomain_FirstID` as "identifier numbers" for multiple instances of GEOS-Chem on one core in WRF and CESM ### Changed - Only read photolysis data in `Init_Photolysis` in first instance of GEOS-Chem on each PET in CESM as PIO requires it diff --git a/GeosCore/hco_interface_gc_mod.F90 b/GeosCore/hco_interface_gc_mod.F90 index 0b09a27cc..0a778a1df 100644 --- a/GeosCore/hco_interface_gc_mod.F90 +++ b/GeosCore/hco_interface_gc_mod.F90 @@ -1873,7 +1873,7 @@ SUBROUTINE ExtState_SetFields( Input_Opt, State_Chm, State_Grid, State_Met, HcoS #if defined( MODEL_WRF ) ! For WRF-GC, the FIRST call needs to be domain-ID specific. - FIRST = FIRST_PERID(State_Grid%ID) + FIRST = FIRST_PERID( State_Grid%CPU_Subdomain_ID ) #endif !----------------------------------------------------------------------- @@ -2811,7 +2811,7 @@ SUBROUTINE ExtState_SetFields( Input_Opt, State_Chm, State_Grid, State_Met, HcoS ! Not first call any more FIRST = .FALSE. #if defined( MODEL_WRF ) - FIRST_PERID(State_Grid%ID) = .FALSE. + FIRST_PERID( State_Grid%CPU_Subdomain_ID ) = .FALSE. #endif Trgt3D => NULL() diff --git a/GeosCore/photolysis_mod.F90 b/GeosCore/photolysis_mod.F90 index 474b5c48b..4281a7ced 100644 --- a/GeosCore/photolysis_mod.F90 +++ b/GeosCore/photolysis_mod.F90 @@ -1593,7 +1593,7 @@ SUBROUTINE RD_PROF_NC( Input_Opt, State_Grid, State_Chm, RC ) #if defined( MODEL_CESM ) ! In the CESM model, only read on the root chunk, but on all CPUs (hplin, 7/3/24) - IF ( State_Grid%ID .ne. State_Grid%ROOT_ID ) RETURN + IF ( State_Grid%CPU_Subdomain_ID .ne. State_Grid%CPU_Subdomain_FirstID ) RETURN #endif ! Set pointers diff --git a/Headers/state_grid_mod.F90 b/Headers/state_grid_mod.F90 index b5ae3f4f9..f48a64f52 100644 --- a/Headers/state_grid_mod.F90 +++ b/Headers/state_grid_mod.F90 @@ -38,10 +38,10 @@ MODULE State_Grid_Mod ! User-defined grid fields !---------------------------------------- #if defined( MODEL_WRF ) || defined( MODEL_CESM ) - ! Grid numbers in WRF and CESM because each PET runs multiple instances of GEOS-Chem. - ! The numbers are unique per PET, so a unique grid is identified by the combination of (Input_Opt%thisCPU, State_Grid%ID) - INTEGER :: ID ! Grid identifier number, unique per PET (domain number in WRF, chunk number in CESM) - INTEGER :: ROOT_ID ! Root/first grid identifier number (used in multi-domain-per-PET), unique per PET + ! Grid numbers for WRF and CESM, for each CPU to run multiple instances of GEOS-Chem. These numbers are unique-per-core (local). + ! A pair of (Input_Opt%thisCPU, State_Grid%CPU_Subdomain_ID) is needed to uniquely identify a geographical region. + INTEGER :: CPU_Subdomain_ID ! Grid identifier number (local) (WRF: domain number, CESM: chunk number/lchnk) + INTEGER :: CPU_Subdomain_FirstID ! First grid identifier number (local) in this CPU #endif CHARACTER(LEN=255) :: GridRes ! Grid resolution REAL(fp) :: DX ! Delta X [degrees longitude] @@ -154,8 +154,8 @@ SUBROUTINE Init_State_Grid( Input_Opt, State_Grid, RC ) ! User-defined grid fields !---------------------------------------- #if defined( MODEL_WRF ) || defined( MODEL_CESM ) - State_Grid%ID = -1 - State_Grid%ROOT_ID = -1 + State_Grid%CPU_Subdomain_ID = -1 + State_Grid%CPU_Subdomain_FirstID = -1 #endif State_Grid%GridRes = '' State_Grid%DX = 0e+0_fp From cce6dc5b4dd4b5210bf1ac9a26d89917c181f1d3 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 10 Jul 2024 11:57:29 -0400 Subject: [PATCH 318/331] Fixed multiple issues with satellite diagnostics History/history_netcdf_mod.F90 - Moved the zeroing of State_Diag%SatDiagnCount to routine History_Write in history_mod.F90 - Also now test if the container name is either SatDiagn or SatDiagnEdge only once at the top of History_Netcdf_Write. History/history_mod.F90 - Reset State_Diag%SatDiagnCount outside of the loop over containers, after History_Netcdf_Write has been called. This is because we now have separate SatDiagn and SatDiagnEdge collections that both use the same SatDiagnCount array. run/GCClassic/HISTORY.rc.templates/HISTORY.rc.* - Remove `SatDiagnPEDGE` from the `SatDiagn` collection; this needs to be in the separate `SatDiagnEdge` collection - Fix typo "SatDiagnConc_PEDGE" -> "SatDiagnPEDGE" - Remove fields from SatDiagn entries that are not relevant for the given simulation (the user can restore these) CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 9 +++++ GeosCore/diagnostics_mod.F90 | 9 +++-- History/history_mod.F90 | 13 ++++++++ History/history_netcdf_mod.F90 | 33 +++++++++++-------- .../HISTORY.rc.templates/HISTORY.rc.CH4 | 13 ++------ .../HISTORY.rc.templates/HISTORY.rc.CO2 | 11 +------ .../HISTORY.rc.templates/HISTORY.rc.Hg | 12 +------ .../HISTORY.rc.TransportTracers | 11 +------ .../HISTORY.rc.templates/HISTORY.rc.aerosol | 7 +--- .../HISTORY.rc.templates/HISTORY.rc.carbon | 13 ++------ .../HISTORY.rc.templates/HISTORY.rc.fullchem | 3 +- .../HISTORY.rc.templates/HISTORY.rc.metals | 12 +------ .../HISTORY.rc.templates/HISTORY.rc.tagCO | 12 +------ .../HISTORY.rc.templates/HISTORY.rc.tagO3 | 11 +------ 14 files changed, 59 insertions(+), 110 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcae8657b..148a0fcd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,9 +8,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Added - Added number of levels with clouds for photolysis to geoschem_config.yml and Input_Opt to pass to Cloud-J +### Changed +- Now reset `State_Diag%SatDiagnCount` to zero in routine`History_Write` (instead of in `History_Netcdf_Write`) + ### Fixed - Typo in `setCommonRunSettings.sh` that made GCHP always choose mass fluxes for meteorology - Fixed bug in # levels with cloud used in photolysis when using GCAP met or CESM +- Fixed typos for `SatDiagnEdge` collection in `HISTORY.rc` templates +- The `SatDiagnOH` diagnostic now works for the carbon simulation + +### Removed +- Entry `SatDiagnPEDGE` from the `SatDiagn` collection; This needs to go into the `SatDiagnEdge` collection. + ## [14.4.1] - 2024-06-28 ### Added diff --git a/GeosCore/diagnostics_mod.F90 b/GeosCore/diagnostics_mod.F90 index 6ea561f4b..3261ff60e 100644 --- a/GeosCore/diagnostics_mod.F90 +++ b/GeosCore/diagnostics_mod.F90 @@ -1425,9 +1425,12 @@ SUBROUTINE Do_Archive_SatDiagn( Input_Opt, State_Chm, State_Diag, & Input_Opt%ITS_A_FULLCHEM_SIM ) THEN id_OH = Ind_('OH') IF ( id_OH < 0 ) THEN - errMsg = 'OH is not a defined species in this simulation!!!' - CALL GC_Error( errMsg, RC, thisLoc ) - RETURN + id_OH = Ind_('FixedOH') + IF ( id_OH < 0 ) THEN + errMsg = 'OH is not a defined species in this simulation!!!' + CALL GC_Error( errMsg, RC, thisLoc ) + RETURN + ENDIF ENDIF ENDIF first= .FALSE. diff --git a/History/history_mod.F90 b/History/history_mod.F90 index ee7f46934..16556c151 100644 --- a/History/history_mod.F90 +++ b/History/history_mod.F90 @@ -3091,6 +3091,19 @@ SUBROUTINE History_Write( Input_Opt, State_Chm, State_Diag, RC ) ENDDO + !======================================================================= + ! Cleanup & quit + !======================================================================= + + ! If we have called History_Netcdf_Write (i.e. DoWrite == T), then + ! reset the satellite diagnostics counter, as we have now entered the + ! next diagnostic interval. We need to do this here instead of in + ! History_Netcdf_Write as there are multiple satellite diagnostic + ! collections (SatDiagn, SatDiagnEdge). + IF ( State_Diag%Archive_SatDiagnCount .and. DoWrite ) THEN + State_Diag%SatDiagnCount = 0.0_f8 + ENDIF + ! Free pointers Container => NULL() Collection => NULL() diff --git a/History/history_netcdf_mod.F90 b/History/history_netcdf_mod.F90 index 8aa770047..9b3bd39c4 100644 --- a/History/history_netcdf_mod.F90 +++ b/History/history_netcdf_mod.F90 @@ -675,6 +675,7 @@ SUBROUTINE History_Netcdf_Write( Input_Opt, State_Diag, Container, RC ) ! ! !USES: ! + USE CharPak_Mod, ONLY : To_Uppercase USE ErrCode_Mod USE HistItem_Mod, ONLY : HistItem USE HistContainer_Mod, ONLY : HistContainer @@ -714,7 +715,7 @@ SUBROUTINE History_Netcdf_Write( Input_Opt, State_Diag, Container, RC ) ! !LOCAL VARIABLES: ! ! Scalars - LOGICAL :: output4Bytes + LOGICAL :: output4Bytes, isSatDiagn INTEGER :: NcFileId, NcVarId INTEGER :: Dim1, Dim2, Dim3 @@ -764,6 +765,9 @@ SUBROUTINE History_Netcdf_Write( Input_Opt, State_Diag, Container, RC ) ThisLoc = & ' -> at History_Netcdf_Write (in History/history_netcdf_mod.F90)' + ! Test if this is the SatDiagn or SatDiagnEdge container + isSatDiagn = (INDEX(To_UpperCase(TRIM(Container%Name)), 'SATDIAGN' ) > 0) + !======================================================================== ! Compute time elapsed since the reference time !======================================================================== @@ -853,9 +857,13 @@ SUBROUTINE History_Netcdf_Write( Input_Opt, State_Diag, Container, RC ) Dim3 = SIZE( Item%Data_3d, 3 ) ! Get average for satellite diagnostic: - IF ( Container%name == 'SatDiagn' ) THEN - Item%Data_3d = Item%Data_3d / State_Diag%SatDiagnCount - Item%nUpdates = 1.0 + IF ( isSatDiagn ) THEN + WHERE ( State_Diag%SatDiagnCount > 0.0_f8 ) + Item%Data_3d = Item%Data_3d / State_Diag%SatDiagnCount + ELSEWHERE + Item%Data_3d = MISSING_DBLE + ENDWHERE + Item%nUpdates = 1.0_f8 ENDIF ! Allocate the 4-byte or 8-byte output array @@ -915,9 +923,13 @@ SUBROUTINE History_Netcdf_Write( Input_Opt, State_Diag, Container, RC ) Dim2 = SIZE( Item%Data_2d, 2 ) ! Get average for satellite diagnostic: - IF ( Container%name == 'SatDiagn' ) THEN - Item%Data_2d = Item%Data_2d / State_Diag%SatDiagnCount(:,:,1) - Item%nUpdates = 1.0 + IF ( isSatDiagn ) THEN + WHERE ( State_Diag%SatDiagnCount(:,:,1) > 0.0_f8 ) + Item%Data_2d = Item%Data_2d / State_Diag%SatDiagnCount(:,:,1) + ELSEWHERE + Item%Data_2d = MISSING_DBLE + ENDWHERE + Item%nUpdates = 1.0_f8 ENDIF ! Allocate the 4-byte or 8-byte output array @@ -1031,13 +1043,6 @@ SUBROUTINE History_Netcdf_Write( Input_Opt, State_Diag, Container, RC ) Item => NULL() ENDDO - !--------------------------------------------------------------------- - ! Set count for satellite diagnostic to zero: - !--------------------------------------------------------------------- - IF ( State_Diag%Archive_SatDiagnCount ) THEN - State_Diag%SatDiagnCount = 0.0e+0_fp - ENDIF - !======================================================================== ! Cleanup and quit !======================================================================== diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 index ffafc62ae..fcee9d16a 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CH4 @@ -213,22 +213,13 @@ COLLECTIONS: 'Restart', SatDiagn.hrrange: 11.98 15.02 SatDiagn.mode: 'time-averaged' SatDiagn.fields: 'SatDiagnConc_CH4 ', + 'SatDiagnOH ', 'SatDiagnRH ', 'SatDiagnAirDen ', 'SatDiagnBoxHeight ', - 'SatDiagnPEdge ', 'SatDiagnTROPP ', 'SatDiagnPBLHeight ', 'SatDiagnPBLTop ', - 'SatDiagnTAir ', - 'SatDiagnGWETROOT ', - 'SatDiagnGWETTOP ', - 'SatDiagnPARDR ', - 'SatDiagnPARDF ', - 'SatDiagnPRECTOT ', - 'SatDiagnSLP ', - 'SatDiagnSPHU ', - 'SatDiagnTS ', 'SatDiagnPBLTOPL ', 'SatDiagnMODISLAI ', 'SatDiagnColEmis_CH4 ', @@ -247,7 +238,7 @@ COLLECTIONS: 'Restart', SatDiagnEdge.duration: 00000100 000000 SatDiagnEdge.hrrange: 11.98 15.02 SatDiagnEdge.mode: 'time-averaged' - SatDiagnEdge.fields: 'SatDiagnConc_PEDGE ', + SatDiagnEdge.fields: 'SatDiagnPEDGE ', :: #============================================================================== # %%%%% The StateMet COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 index be4672d21..331dd0ad7 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.CO2 @@ -178,15 +178,6 @@ COLLECTIONS: 'Restart', 'SatDiagnTROPP ', 'SatDiagnPBLHeight ', 'SatDiagnPBLTop ', - 'SatDiagnTAir ', - 'SatDiagnGWETROOT ', - 'SatDiagnGWETTOP ', - 'SatDiagnPARDR ', - 'SatDiagnPARDF ', - 'SatDiagnPRECTOT ', - 'SatDiagnSLP ', - 'SatDiagnSPHU ', - 'SatDiagnTS ', 'SatDiagnPBLTOPL ', 'SatDiagnMODISLAI ', 'SatDiagnColEmis_CO2 ', @@ -205,7 +196,7 @@ COLLECTIONS: 'Restart', SatDiagnEdge.duration: 00000100 000000 SatDiagnEdge.hrrange: 11.98 15.02 SatDiagnEdge.mode: 'time-averaged' - SatDiagnEdge.fields: 'SatDiagnConc_PEDGE ', + SatDiagnEdge.fields: 'SatDiagnPEDGE ', :: #============================================================================== # %%%%% The StateMet COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg index 69d8de0a8..0d9e57c91 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.Hg @@ -268,19 +268,9 @@ COLLECTIONS: 'Restart', 'SatDiagnRH ', 'SatDiagnAirDen ', 'SatDiagnBoxHeight ', - 'SatDiagnPEdge ', 'SatDiagnTROPP ', 'SatDiagnPBLHeight ', 'SatDiagnPBLTop ', - 'SatDiagnTAir ', - 'SatDiagnGWETROOT ', - 'SatDiagnGWETTOP ', - 'SatDiagnPARDR ', - 'SatDiagnPARDF ', - 'SatDiagnPRECTOT ', - 'SatDiagnSLP ', - 'SatDiagnSPHU ', - 'SatDiagnTS ', 'SatDiagnPBLTOPL ', 'SatDiagnMODISLAI ', 'SatDiagnWetLossLS_Hg0 ', @@ -310,7 +300,7 @@ COLLECTIONS: 'Restart', SatDiagnEdge.duration: 00000100 000000 SatDiagnEdge.hrrange: 11.98 15.02 SatDiagnEdge.mode: 'time-averaged' - SatDiagnEdge.fields: 'SatDiagnConc_PEDGE ', + SatDiagnEdge.fields: 'SatDiagnPEDGE ', :: #============================================================================== # %%%%% The StateMet COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers index 29061c447..9c8c61c08 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.TransportTracers @@ -206,19 +206,10 @@ COLLECTIONS: 'Restart', 'SatDiagnRH ', 'SatDiagnAirDen ', 'SatDiagnBoxHeight ', - 'SatDiagnPEdge ', 'SatDiagnTROPP ', 'SatDiagnPBLHeight ', 'SatDiagnPBLTop ', 'SatDiagnTAir ', - 'SatDiagnGWETROOT ', - 'SatDiagnGWETTOP ', - 'SatDiagnPARDR ', - 'SatDiagnPARDF ', - 'SatDiagnPRECTOT ', - 'SatDiagnSLP ', - 'SatDiagnSPHU ', - 'SatDiagnTS ', 'SatDiagnPBLTOPL ', 'SatDiagnMODISLAI ', 'SatDiagnWetLossLS_Pb210 ', @@ -250,7 +241,7 @@ COLLECTIONS: 'Restart', SatDiagnEdge.duration: 00000100 000000 SatDiagnEdge.hrrange: 11.98 15.02 SatDiagnEdge.mode: 'time-averaged' - SatDiagnEdge.fields: 'SatDiagnConc_PEDGE ', + SatDiagnEdge.fields: 'SatDiagnPEDGE ', :: #============================================================================== # %%%%% The StateMet COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol index 2bbcb136d..aa82ef9fb 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol @@ -319,11 +319,6 @@ COLLECTIONS: 'Restart', 'SatDiagnPBLHeight ', 'SatDiagnPBLTop ', 'SatDiagnTAir ', - 'SatDiagnGWETROOT ', - 'SatDiagnGWETTOP ', - 'SatDiagnPARDR ', - 'SatDiagnPARDF ', - 'SatDiagnPRECTOT ', 'SatDiagnSLP ', 'SatDiagnSPHU ', 'SatDiagnTS ', @@ -351,7 +346,7 @@ COLLECTIONS: 'Restart', SatDiagnEdge.duration: 00000100 000000 SatDiagnEdge.hrrange: 11.98 15.02 SatDiagnEdge.mode: 'time-averaged' - SatDiagnEdge.fields: 'SatDiagnConc_PEDGE ', + SatDiagnEdge.fields: 'SatDiagnPEDGE ', :: #============================================================================== # %%%%% THE StateChm COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon index fc9d39cca..a6bd3094d 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.carbon @@ -214,22 +214,13 @@ COLLECTIONS: 'Restart', 'SatDiagnConc_CO ', 'SatDiagnConc_CO2 ', 'SatDiagnConc_OCS ', + 'SatDiagnOH ', 'SatDiagnRH ', 'SatDiagnAirDen ', 'SatDiagnBoxHeight ', - 'SatDiagnPEdge ', 'SatDiagnTROPP ', 'SatDiagnPBLHeight ', 'SatDiagnPBLTop ', - 'SatDiagnTAir ', - 'SatDiagnGWETROOT ', - 'SatDiagnGWETTOP ', - 'SatDiagnPARDR ', - 'SatDiagnPARDF ', - 'SatDiagnPRECTOT ', - 'SatDiagnSLP ', - 'SatDiagnSPHU ', - 'SatDiagnTS ', 'SatDiagnPBLTOPL ', 'SatDiagnMODISLAI ', 'SatDiagnColEmis_CH4 ', @@ -248,7 +239,7 @@ COLLECTIONS: 'Restart', SatDiagnEdge.duration: 00000100 000000 SatDiagnEdge.hrrange: 11.98 15.02 SatDiagnEdge.mode: 'time-averaged' - SatDiagnEdge.fields: 'SatDiagnConc_PEDGE ', + SatDiagnEdge.fields: 'SatDiagnPEDGE ', :: #============================================================================== # %%%%% The StateMet COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem index 8b7be3e76..db5264b46 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem @@ -620,7 +620,6 @@ COLLECTIONS: 'Restart', 'SatDiagnRH ', 'SatDiagnAirDen ', 'SatDiagnBoxHeight ', - 'SatDiagnPEdge ', 'SatDiagnTROPP ', 'SatDiagnPBLHeight ', 'SatDiagnPBLTop ', @@ -676,7 +675,7 @@ COLLECTIONS: 'Restart', SatDiagnEdge.duration: 00000100 000000 SatDiagnEdge.hrrange: 11.98 15.02 SatDiagnEdge.mode: 'time-averaged' - SatDiagnEdge.fields: 'SatDiagnConc_PEDGE ', + SatDiagnEdge.fields: 'SatDiagnPEDGE ', :: #============================================================================== # %%%%% THE StateChm COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals index fa813dac3..69607f193 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.metals @@ -182,19 +182,9 @@ COLLECTIONS: 'Restart', 'SatDiagnRH ', 'SatDiagnAirDen ', 'SatDiagnBoxHeight ', - 'SatDiagnPEdge ', 'SatDiagnTROPP ', 'SatDiagnPBLHeight ', 'SatDiagnPBLTop ', - 'SatDiagnTAir ', - 'SatDiagnGWETROOT ', - 'SatDiagnGWETTOP ', - 'SatDiagnPARDR ', - 'SatDiagnPARDF ', - 'SatDiagnPRECTOT ', - 'SatDiagnSLP ', - 'SatDiagnSPHU ', - 'SatDiagnTS ', 'SatDiagnPBLTOPL ', 'SatDiagnMODISLAI ', 'SatDiagnWetLossLS_AlF1 ', @@ -217,7 +207,7 @@ COLLECTIONS: 'Restart', SatDiagnEdge.duration: 00000100 000000 SatDiagnEdge.hrrange: 11.98 15.02 SatDiagnEdge.mode: 'time-averaged' - SatDiagnEdge.fields: 'SatDiagnConc_PEDGE ', + SatDiagnEdge.fields: 'SatDiagnPEDGE ', :: #============================================================================== # %%%%% The StateMet COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO index b8bd57025..8031b6e83 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagCO @@ -189,19 +189,9 @@ COLLECTIONS: 'Restart', 'SatDiagnRH ', 'SatDiagnAirDen ', 'SatDiagnBoxHeight ', - 'SatDiagnPEdge ', 'SatDiagnTROPP ', 'SatDiagnPBLHeight ', 'SatDiagnPBLTop ', - 'SatDiagnTAir ', - 'SatDiagnGWETROOT ', - 'SatDiagnGWETTOP ', - 'SatDiagnPARDR ', - 'SatDiagnPARDF ', - 'SatDiagnPRECTOT ', - 'SatDiagnSLP ', - 'SatDiagnSPHU ', - 'SatDiagnTS ', 'SatDiagnPBLTOPL ', 'SatDiagnMODISLAI ', 'SatDiagnColEmis_CO ', @@ -220,7 +210,7 @@ COLLECTIONS: 'Restart', SatDiagnEdge.duration: 00000100 000000 SatDiagnEdge.hrrange: 11.98 15.02 SatDiagnEdge.mode: 'time-averaged' - SatDiagnEdge.fields: 'SatDiagnConc_PEDGE ', + SatDiagnEdge.fields: 'SatDiagnPEDGE ', :: #============================================================================== # %%%%% The StateMet COLLECTION %%%%% diff --git a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 index 891cdb3d9..5dd5b8757 100644 --- a/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 +++ b/run/GCClassic/HISTORY.rc.templates/HISTORY.rc.tagO3 @@ -217,15 +217,6 @@ COLLECTIONS: 'Restart', 'SatDiagnTROPP ', 'SatDiagnPBLHeight ', 'SatDiagnPBLTop ', - 'SatDiagnTAir ', - 'SatDiagnGWETROOT ', - 'SatDiagnGWETTOP ', - 'SatDiagnPARDR ', - 'SatDiagnPARDF ', - 'SatDiagnPRECTOT ', - 'SatDiagnSLP ', - 'SatDiagnSPHU ', - 'SatDiagnTS ', 'SatDiagnPBLTOPL ', 'SatDiagnMODISLAI ', 'SatDiagnDryDep_O3 ', @@ -246,7 +237,7 @@ COLLECTIONS: 'Restart', SatDiagnEdge.duration: 00000100 000000 SatDiagnEdge.hrrange: 11.98 15.02 SatDiagnEdge.mode: 'time-averaged' - SatDiagnEdge.fields: 'SatDiagnConc_PEDGE ', + SatDiagnEdge.fields: 'SatDiagnPEDGE ', :: #============================================================================== # %%%%% The StateMet COLLECTION %%%%% From 5971dcb0cf85c5685374e05107b17fcc46e1f720 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Thu, 11 Jul 2024 11:25:19 -0400 Subject: [PATCH 319/331] Turn off MEGAN extension for standard fullchem simulations This commit addresses the issue raised in geos-chem #2319. We have now updated the following files so that only the "benchmark" fullchem simulation uses the MEGAN extension, while other "standard" simulations use the offline emissions. run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol - Replace "on" with ${RUNDIR_MEGAN_EXT} to toggle the MEGAN extension on or off based on the options given to createRunDir.sh. run/GCClassic/createRunDir.sh run/GCHP/createRunDir.sh - Set RUNDIR_MEGAN_EXT='off' for the aerosol-only simulation - Set RUNDIR_MEGAN_EXT='off' for the fullchem non-benchmark simulations - Set RUNDIR_MEGAN_EXT='on' for the fullchem benchmark simulation CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + .../HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol | 2 +- .../HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem | 2 +- run/GCClassic/createRunDir.sh | 7 +++++++ .../HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem | 2 +- run/GCHP/createRunDir.sh | 2 ++ 6 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8225a896a..67e592421 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Now reset `State_Diag%SatDiagnCount` to zero in routine`History_Write` (instead of in `History_Netcdf_Write`) +- Update rundir creation scripts to turn off the MEGAN extension for "standard" fullchem simulations ### Fixed - Typo in `setCommonRunSettings.sh` that made GCHP always choose mass fluxes for meteorology diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol index e05a6df07..664104e6f 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol @@ -171,7 +171,7 @@ VerboseOnCores: root # Accepted values: root all --> N per snowflake : 5.0 --> Model sea salt Br- : false --> Br- mass ratio : 2.11e-3 -108 MEGAN : off ISOP/ACET/PRPE/C2H4/ALD2/MOH/EOH/MTPA/MTPO/LIMO/SESQ/SOAP/SOAS +108 MEGAN : ${RUNDIR_MEGAN_EXT} ISOP/ACET/PRPE/C2H4/ALD2/MOH/EOH/MTPA/MTPO/LIMO/SESQ/SOAP/SOAS --> Isoprene scaling : 1.0 --> CO2 inhibition : true --> CO2 conc (ppmv) : 390.0 diff --git a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index b0c5bc5d8..c62ca533f 100644 --- a/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -194,7 +194,7 @@ VerboseOnCores: root # Accepted values: root all --> N per snowflake : 5.0 --> Model sea salt Br- : true --> Br- mass ratio : 2.11e-3 -108 MEGAN : on ISOP/ACET/PRPE/C2H4/ALD2/MOH/EOH/MTPA/MTPO/LIMO/SESQ/SOAP/SOAS +108 MEGAN : ${RUNDIR_MEGAN_EXT} ISOP/ACET/PRPE/C2H4/ALD2/MOH/EOH/MTPA/MTPO/LIMO/SESQ/SOAP/SOAS --> Isoprene scaling : 1.0 --> CO2 inhibition : true --> CO2 conc (ppmv) : 390.0 diff --git a/run/GCClassic/createRunDir.sh b/run/GCClassic/createRunDir.sh index 073f85b17..a8d80a4bd 100755 --- a/run/GCClassic/createRunDir.sh +++ b/run/GCClassic/createRunDir.sh @@ -486,6 +486,11 @@ else fi +# Turn off MEGAN for the aerosol-only simulation +if [[ "x${sim_name}" == "xaerosol" ]]; then + RUNDIR_VARS+="RUNDIR_MEGAN_EXT='off'\n" +fi + #----------------------------------------------------------------- # Ask user to select horizontal resolution #----------------------------------------------------------------- @@ -976,6 +981,7 @@ else RUNDIR_VARS+="RUNDIR_DUSTDEAD_EXT='on '\n" RUNDIR_VARS+="RUNDIR_SEASALT_EXT='on '\n" RUNDIR_VARS+="RUNDIR_SOILNOX_EXT='on '\n" + RUNDIR_VARS+="RUNDIR_MEGAN_EXT='on '\n" RUNDIR_VARS+="RUNDIR_OFFLINE_DUST='false'\n" RUNDIR_VARS+="RUNDIR_OFFLINE_BIOVOC='false'\n" RUNDIR_VARS+="RUNDIR_OFFLINE_SEASALT='false'\n" @@ -1006,6 +1012,7 @@ else fi RUNDIR_VARS+="RUNDIR_DUSTDEAD_EXT='off'\n" RUNDIR_VARS+="RUNDIR_SOILNOX_EXT='off'\n" + RUNDIR_VARS+="RUNDIR_MEGAN_EXT='off'\n" RUNDIR_VARS+="RUNDIR_OFFLINE_BIOVOC='true '\n" RUNDIR_VARS+="RUNDIR_OFFLINE_SOILNOX='true '\n" fi diff --git a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem index 56eb15950..4890cfd65 100644 --- a/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem +++ b/run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem @@ -193,7 +193,7 @@ VerboseOnCores: root # Accepted values: root all --> N per snowflake : 5.0 --> Model sea salt Br- : true --> Br- mass ratio : 2.11e-3 -108 MEGAN : on ISOP/ACET/PRPE/C2H4/ALD2/MOH/EOH/MTPA/MTPO/LIMO/SESQ/SOAP/SOAS +108 MEGAN : ${RUNDIR_MEGAN_EXT} ISOP/ACET/PRPE/C2H4/ALD2/MOH/EOH/MTPA/MTPO/LIMO/SESQ/SOAP/SOAS --> Isoprene scaling : 1.0 --> CO2 inhibition : true --> CO2 conc (ppmv) : 390.0 diff --git a/run/GCHP/createRunDir.sh b/run/GCHP/createRunDir.sh index ea3ceecc4..095d59385 100755 --- a/run/GCHP/createRunDir.sh +++ b/run/GCHP/createRunDir.sh @@ -720,6 +720,7 @@ fi # Assign appropriate file paths and settings in HEMCO_Config.rc if [[ "${sim_extra_option}" == "benchmark" ]]; then RUNDIR_VARS+="RUNDIR_DUSTDEAD_EXT='on '\n" + RUNDIR_VARS+="RUNDIR_MEGAN_EXT='on '\n" RUNDIR_VARS+="RUNDIR_SEASALT_EXT='on '\n" RUNDIR_VARS+="RUNDIR_SOILNOX_EXT='on '\n" RUNDIR_VARS+="RUNDIR_OFFLINE_DUST='false'\n" @@ -751,6 +752,7 @@ else RUNDIR_VARS+="RUNDIR_OFFLINE_DUST='true '\n" fi RUNDIR_VARS+="RUNDIR_DUSTDEAD_EXT='off'\n" + RUNDIR_VARS+="RUNDIR_MEGAN_EXT='off'\n" RUNDIR_VARS+="RUNDIR_SOILNOX_EXT='off'\n" RUNDIR_VARS+="RUNDIR_OFFLINE_BIOVOC='true '\n" RUNDIR_VARS+="RUNDIR_OFFLINE_SOILNOX='true '\n" From 207c9c6067198e354a127f17eec47b24156c54f3 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Fri, 12 Jul 2024 13:30:47 -0400 Subject: [PATCH 320/331] Bug fix: Make sure MEGAN is turned on for GCAP2 simulations run/GCClassic/createRunDir.sh - Add a line to set RUNDIR_MEGAN_EXT env var to "on" for GCAP2 met - Reorder the RUNDIR_*_EXT variables alphabetically Signed-off-by: Bob Yantosca --- run/GCClassic/createRunDir.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/run/GCClassic/createRunDir.sh b/run/GCClassic/createRunDir.sh index a8d80a4bd..f7f364e52 100755 --- a/run/GCClassic/createRunDir.sh +++ b/run/GCClassic/createRunDir.sh @@ -967,6 +967,7 @@ fi # Assign appropriate file paths and settings in HEMCO_Config.rc if [[ ${met} = "ModelE2.1" ]]; then RUNDIR_VARS+="RUNDIR_DUSTDEAD_EXT='on '\n" + RUNDIR_VARS+="RUNDIR_MEGAN_EXT='on '\n" RUNDIR_VARS+="RUNDIR_SEASALT_EXT='on '\n" RUNDIR_VARS+="RUNDIR_SOILNOX_EXT='on '\n" RUNDIR_VARS+="RUNDIR_OFFLINE_DUST='false'\n" @@ -979,9 +980,9 @@ if [[ ${met} = "ModelE2.1" ]]; then else if [[ "${sim_extra_option}" == "benchmark" ]]; then RUNDIR_VARS+="RUNDIR_DUSTDEAD_EXT='on '\n" + RUNDIR_VARS+="RUNDIR_MEGAN_EXT='on '\n" RUNDIR_VARS+="RUNDIR_SEASALT_EXT='on '\n" RUNDIR_VARS+="RUNDIR_SOILNOX_EXT='on '\n" - RUNDIR_VARS+="RUNDIR_MEGAN_EXT='on '\n" RUNDIR_VARS+="RUNDIR_OFFLINE_DUST='false'\n" RUNDIR_VARS+="RUNDIR_OFFLINE_BIOVOC='false'\n" RUNDIR_VARS+="RUNDIR_OFFLINE_SEASALT='false'\n" @@ -1011,8 +1012,8 @@ else RUNDIR_VARS+="RUNDIR_OFFLINE_DUST='true '\n" fi RUNDIR_VARS+="RUNDIR_DUSTDEAD_EXT='off'\n" - RUNDIR_VARS+="RUNDIR_SOILNOX_EXT='off'\n" RUNDIR_VARS+="RUNDIR_MEGAN_EXT='off'\n" + RUNDIR_VARS+="RUNDIR_SOILNOX_EXT='off'\n" RUNDIR_VARS+="RUNDIR_OFFLINE_BIOVOC='true '\n" RUNDIR_VARS+="RUNDIR_OFFLINE_SOILNOX='true '\n" fi From 1c44bdb4bf5bce7e46db10367e81844ced604284 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Fri, 12 Jul 2024 09:54:39 -0600 Subject: [PATCH 321/331] Update CESM HEMCO_Config.rc with standard emissions used in 14.4.0 Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + run/CESM/HEMCO_Config.rc | 576 +++++++++++++++++++++------------------ 2 files changed, 311 insertions(+), 266 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67e592421..c91401f32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Now reset `State_Diag%SatDiagnCount` to zero in routine`History_Write` (instead of in `History_Netcdf_Write`) - Update rundir creation scripts to turn off the MEGAN extension for "standard" fullchem simulations +- Updated emissions used in CESM to match standard emissions used in the 14.4 offline model ### Fixed - Typo in `setCommonRunSettings.sh` that made GCHP always choose mass fluxes for meteorology diff --git a/run/CESM/HEMCO_Config.rc b/run/CESM/HEMCO_Config.rc index f3fafd6ec..1a9a646dc 100644 --- a/run/CESM/HEMCO_Config.rc +++ b/run/CESM/HEMCO_Config.rc @@ -69,6 +69,7 @@ VerboseOnCores: root # Accepted values: root all --> XIAO_C3H8 : true # 1985 --> LIANG_BROMOCARB : true # 2000 --> ORDONEZ_IODOCARB : true # 2000 + --> GT_Chlorine : true # 1960-2014 --> DECAYING_PLANTS : true # 1985 --> AFCID : true # 2015 # ----- AIRCRAFT EMISSIONS ---------------------------------------------------- @@ -226,8 +227,8 @@ VerboseOnCores: root # Accepted values: root all 115 DustAlk : off DSTAL1/DSTAL2/DSTAL3/DSTAL4 117 Volcano : on SO2 --> Volcano_Source : AeroCom - --> Volcano_Table : $ROOT/VOLCANO/v2021-09/$YYYY/$MM/so2_volcanic_emissions_Carns.$YYYY$MM$DD.rc - --> Volcano_Climatology : $ROOT/VOLCANO/v2021-09/so2_volcanic_emissions_CARN_v202005.degassing_only.rc + --> Volcano_Table : $ROOT/VOLCANO/v2024-04/$YYYY/$MM/so2_volcanic_emissions_Carns.$YYYY$MM$DD.rc + --> Volcano_Climatology : $ROOT/VOLCANO/v2024-04/so2_volcanic_emissions_CARN_v202401.degassing_only.rc 120 Inorg_Iodine : on HOI/I2 --> Emit HOI : true --> Emit I2 : true @@ -1369,6 +1370,8 @@ VerboseOnCores: root # Accepted values: root all # %%% This is the default global inventory. You may select either CEDS, # EDGAR, HTAPv3 or CMIP6_SFC_LAND_ANTHRO for the global base emissions %%% # +# NOTE: CO2 and CH4 are excluded in CEDS emissions for fullchem simulations. +# # Note for CESM: # Scaling of enegy and industrial sectors is applied the same way # as in the GEOS-Chem offline model except for aerosols SO2, SO4, @@ -1377,285 +1380,271 @@ VerboseOnCores: root # Accepted values: root all # "CEDS to CAM-Chem scale factors" for reference. #============================================================================== (((CEDSv2 -0 CEDS_NO_AGR $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_agr 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_ENE $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s NO 25/315 1 5 -0 CEDS_NO_IND $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s NO 25/316 1 5 -0 CEDS_NO_TRA $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_tra 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_RCO $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_rco 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_SLV $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_slv 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 -0 CEDS_NO_WST $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_wst 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 - -0 CEDS_CO_AGR $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_AGR - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_ENE $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s CO 26/315 1 5 -0 CEDS_SOAP_ENE - - - - - - SOAP 26/280/315 1 5 -0 CEDS_CO_IND $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s CO 26/316 1 5 -0 CEDS_SOAP_IND - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_TRA $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_TRA - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_RCO $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_RCO - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_SLV $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_SLV - - - - - - SOAP 26/280 1 5 -0 CEDS_CO_WST $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 -0 CEDS_SOAP_WST - - - - - - SOAP 26/280 1 5 - -0 CEDS_SO2_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_AGR - - - - - - so4_a1 8902 1 5 -0 CEDS_pFe_AGR - - - - - - pFe 66 1 5 -0 CEDS_SO2_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_ENE - - - - xyL=100m:300m - so4_a1 8907 1 5 -0 CEDS_pFe_ENE - - - - - - pFe 66 1 5 -0 CEDS_SO2_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_IND - - - - xyL=100m:300m - so4_a1 8908 1 5 -0 CEDS_pFe_IND - - - - - - pFe 66 1 5 -0 CEDS_SO2_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_TRA - - - - - - so4_a1 8906 1 5 -0 CEDS_pFe_TRA - - - - - - pFe 66 1 5 -0 CEDS_SO2_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_RCO - - - - - - so4_a1 8905 1 5 -0 CEDS_pFe_RCO - - - - - - pFe 66 1 5 -0 CEDS_SO2_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_SLV - - - - - - so4_a1 8904 1 5 -0 CEDS_pFe_SLV - - - - - - pFe 66 1 5 -0 CEDS_SO2_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 -0 CEDS_SO4_WST - - - - - - so4_a1 8903 1 5 -0 CEDS_pFe_WST - - - - - - pFe 66 1 5 - -0 CEDS_NH3_AGR $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_agr 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_ENE $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s NH3 315 1 5 -0 CEDS_NH3_IND $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s NH3 316 1 5 -0 CEDS_NH3_TRA $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_tra 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_RCO $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_rco 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_SLV $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_slv 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 -0 CEDS_NH3_WST $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_wst 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 +0 CEDS_NO_AGR $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_agr 1750-2019/1-12/1/0 C xy kg/m2/s NO 2401 1 5 +0 CEDS_NO_ENE $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s NO 2406/706/315 1 5 +0 CEDS_NO_IND $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s NO 2407/707/316 1 5 +0 CEDS_NO_TRA $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_tra 1750-2019/1-12/1/0 C xy kg/m2/s NO 2411/711 1 5 +0 CEDS_NO_RCO $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_rco 1750-2019/1-12/1/0 C xy kg/m2/s NO 2409/709 1 5 +0 CEDS_NO_SLV $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_slv 1750-2019/1-12/1/0 C xy kg/m2/s NO 2407/707 1 5 +0 CEDS_NO_WST $ROOT/CEDS/v2021-06/$YYYY/NO-em-anthro_CMIP_CEDS_$YYYY.nc NO_wst 1750-2019/1-12/1/0 C xy kg/m2/s NO 25 1 5 + +0 CEDS_CO_AGR $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO 2401 1 5 +0 CEDS_SOAP_AGR - - - - - - SOAP 280/2401 1 5 +0 CEDS_CO_ENE $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s CO 2406/706/315 1 5 +0 CEDS_SOAP_ENE - - - - - - SOAP 280/2406/706/315 1 5 +0 CEDS_CO_IND $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s CO 2407/707/316 1 5 +0 CEDS_SOAP_IND - - - - - - SOAP 280/2407/707/316 1 5 +0 CEDS_CO_TRA $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO 2411/711 1 5 +0 CEDS_SOAP_TRA - - - - - - SOAP 280/2411/711 1 5 +0 CEDS_CO_RCO $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO 2409/709 1 5 +0 CEDS_SOAP_RCO - - - - - - SOAP 280/2409/709 1 5 +0 CEDS_CO_SLV $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO 2407/707 1 5 +0 CEDS_SOAP_SLV - - - - - - SOAP 280/2407/707 1 5 +0 CEDS_CO_WST $ROOT/CEDS/v2021-06/$YYYY/CO-em-anthro_CMIP_CEDS_$YYYY.nc CO_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO 26 1 5 +0 CEDS_SOAP_WST - - - - - - SOAP 26/280 1 5 + +# Note for CESM: Apply SO4 to so4_a1 +0 CEDS_SO2_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2401 1 5 +0 CEDS_SO4_AGR - - - - - - so4_a1 8902/2401 1 5 +0 CEDS_pFe_AGR - - - - - - pFe 66/2401 1 5 +0 CEDS_SO2_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s SO2 2406/706/315 1 5 +0 CEDS_SO4_ENE - - - - - - so4_a1 8907/2406/706/315 1 5 +0 CEDS_pFe_ENE - - - - - - pFe 66/2406/706/315 1 5 +0 CEDS_SO2_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s SO2 2407/707/316 1 5 +0 CEDS_SO4_IND - - - - - - so4_a1 8908/2407/707/316 1 5 +0 CEDS_pFe_IND - - - - - - pFe 66/2407/707/316 1 5 +0 CEDS_SO2_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2411/711 1 5 +0 CEDS_SO4_TRA - - - - - - so4_a1 8906/2411/711 1 5 +0 CEDS_pFe_TRA - - - - - - pFe 66/2411/711 1 5 +0 CEDS_SO2_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2409/709 1 5 +0 CEDS_SO4_RCO - - - - - - so4_a1 8905/2409/709 1 5 +0 CEDS_pFe_RCO - - - - - - pFe 66/2409/709 1 5 +0 CEDS_SO2_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s SO2 2407/707 1 5 +0 CEDS_SO4_SLV - - - - - - so4_a1 8904/2407/707 1 5 +0 CEDS_pFe_SLV - - - - - - pFe 66/2407/707 1 5 +0 CEDS_SO2_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s SO2 - 1 5 +0 CEDS_SO4_WST - - - - - - so4_a1 8903 1 5 +0 CEDS_pFe_WST - - - - - - pFe 66 1 5 +ch + +0 CEDS_NH3_AGR $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_agr 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2401 1 5 +0 CEDS_NH3_ENE $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s NH3 2406/706/315 1 5 +0 CEDS_NH3_IND $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s NH3 2407/707/316 1 5 +0 CEDS_NH3_TRA $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_tra 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2411/711 1 5 +0 CEDS_NH3_RCO $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_rco 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2409/709 1 5 +0 CEDS_NH3_SLV $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_slv 1750-2019/1-12/1/0 C xy kg/m2/s NH3 2407/707 1 5 +0 CEDS_NH3_WST $ROOT/CEDS/v2021-06/$YYYY/NH3-em-anthro_CMIP_CEDS_$YYYY.nc NH3_wst 1750-2019/1-12/1/0 C xy kg/m2/s NH3 - 1 5 #----------------------------------------------------- # AEROSOL NUMBER EMISSIONS FOR CEDS in CESM - hplin 8/11/22 # note shp emiss in ship section #----------------------------------------------------- -0 CEDS_SO4n_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8902/8014 1 5 -0 CEDS_SO4n_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8903/8014 1 5 -0 CEDS_SO4n_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8904/8014 1 5 -0 CEDS_SO4n_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a2 8906/8022 1 5 -0 CEDS_SO4n_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a2 8905/8022 1 5 -0 CEDS_SO4n_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xyL=100m:300m kg/m2/s num_a1 8907/8011 1 5 -0 CEDS_SO4n_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xyL=100m:300m kg/m2/s num_a1 8908/8011 1 5 +0 CEDS_SO4n_AGR $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8902/2401/8014 1 5 +0 CEDS_SO4n_ENE $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s num_a1 8907/2406/706/315/8011 1 5 +0 CEDS_SO4n_IND $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s num_a1 8908/2407/707/316/8011 1 5 +0 CEDS_SO4n_TRA $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a2 8906/2411/711/8022 1 5 +0 CEDS_SO4n_RCO $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a2 8905/2407/709/8022 1 5 +0 CEDS_SO4n_SLV $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8904/2407/707/8014 1 5 +0 CEDS_SO4n_WST $ROOT/CEDS/v2021-06/$YYYY/SO2-em-anthro_CMIP_CEDS_$YYYY.nc SO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a1 8903/8014 1 5 # BC emiss are classified as a4 for all anthro -0 CEDS_BCn_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 -0 CEDS_BCn_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 +0 CEDS_BCn_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/2401/8041 1 5 +0 CEDS_BCn_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/2406/706/315/8041 1 5 +0 CEDS_BCn_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/2407/707/316/8041 1 5 +0 CEDS_BCn_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/2411/711/8041 1 5 +0 CEDS_BCn_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/2409/709/8041 1 5 +0 CEDS_BCn_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/2407/707/8041 1 5 +0 CEDS_BCn_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8920/8041 1 5 # OC emiss are classified as a4 for all anthro -0 CEDS_OCn_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 -0 CEDS_OCn_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 +0 CEDS_OCn_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/2401/8042 1 5 +0 CEDS_OCn_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/2406/706/315/8042 1 5 +0 CEDS_OCn_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/2407/707/316/8042 1 5 +0 CEDS_OCn_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/2411/711/8042 1 5 +0 CEDS_OCn_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/2409/709/8042 1 5 +0 CEDS_OCn_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/2407/707/8042 1 5 +0 CEDS_OCn_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s num_a4 8930/8042 1 5 #----------------------------------------------------- # // end AEROSOL NUMBER EMISSIONS FOR CEDS in CESM #----------------------------------------------------- -0 CEDS_BCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 -0 CEDS_BCPI_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 - -0 CEDS_OCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_AGR - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_AGR - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_ENE - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_ENE - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_IND - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_IND - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_TRA - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_TRA - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_RCO - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_RCO - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_SLV - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_SLV - - - - - - POG2 73/74/77 1 5 -0 CEDS_OCPI_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 -0 CEDS_POG1_WST - - - - - - POG1 73/74/76 1 5 -0 CEDS_POG2_WST - - - - - - POG2 73/74/77 1 5 - -# Comment out CO2 for fullchem simulations: CO2 not advected -#0 CEDS_CO2_AGR $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_agr 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_ENE $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s CO2 315 1 5 -#0 CEDS_CO2_IND $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s CO2 316 1 5 -#0 CEDS_CO2_TRA $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_tra 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_RCO $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_rco 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_SLV $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_slv 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 -#0 CEDS_CO2_WST $ROOT/CEDS/v2021-06/$YYYY/CO2-em-anthro_CMIP_CEDS_$YYYY.nc CO2_wst 1750-2019/1-12/1/0 C xy kg/m2/s CO2 - 1 5 - -# Comment out CH4 for fullchem simulations: do not use CH4 emissions -# CEDS CH4 emissions are only available for 1970-2014 -#0 CEDS_CH4_AGR $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_agr 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_ENE $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ene 1970-2014/1-12/1/0 C xyL* kg/m2/s CH4 315 1 5 -#0 CEDS_CH4_IND $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_ind 1970-2014/1-12/1/0 C xyL* kg/m2/s CH4 316 1 5 -#0 CEDS_CH4_TRA $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_tra 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_RCO $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_rco 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_SLV $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_slv 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 -#0 CEDS_CH4_WST $ROOT/CEDS/v2021-06/$YYYY/CH4-em-anthro_CMIP_CEDS_$YYYY.nc CH4_wst 1970-2014/1-12/1/0 C xy kg/m2/s CH4 - 1 5 +# Note for CESM: Apply BCPI to bc_a4 +0 CEDS_BCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_agr 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920/2401 1 5 +0 CEDS_BCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s bc_a4 8920/2406/706/315 1 5 +0 CEDS_BCPI_IND $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s bc_a4 8920/2407/707/316 1 5 +0 CEDS_BCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_tra 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920/2411/711 1 5 +0 CEDS_BCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_rco 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920/2409/709 1 5 +0 CEDS_BCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_slv 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920/2407/707 1 5 +0 CEDS_BCPI_WST $ROOT/CEDS/v2021-06/$YYYY/BC-em-anthro_CMIP_CEDS_$YYYY.nc BC_wst 1750-2019/1-12/1/0 C xy kg/m2/s bc_a4 8920 1 5 + +# Note for CESM: Apply OCPI to pom_a4 +0 CEDS_OCPI_AGR $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_agr 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930/2401 1 5 +0 CEDS_POG1_AGR - - - - - - POG1 74/76/2401 1 5 +0 CEDS_POG2_AGR - - - - - - POG2 74/77/2401 1 5 +0 CEDS_OCPI_ENE $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s pom_a4 8930/2406/706/315 1 5 +0 CEDS_POG1_ENE - - - - - - POG1 74/76/2406/706/315 1 5 +0 CEDS_POG2_ENE - - - - - - POG2 74/77/2406/706/315 1 5 +0 CEDS_OCPI_IND $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s pom_a4 8930/2407/707/316 1 5 +0 CEDS_POG1_IND - - - - - - POG1 74/76/2407/707/316 1 5 +0 CEDS_POG2_IND - - - - - - POG2 74/77/2407/707/316 1 5 +0 CEDS_OCPI_TRA $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_tra 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930/2411/711 1 5 +0 CEDS_POG1_TRA - - - - - - POG1 74/76/2411/711 1 5 +0 CEDS_POG2_TRA - - - - - - POG2 74/77/2411/711 1 5 +0 CEDS_OCPI_RCO $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_rco 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930/2409/709 1 5 +0 CEDS_POG1_RCO - - - - - - POG1 74/76/2409/709 1 5 +0 CEDS_POG2_RCO - - - - - - POG2 74/77/2409/709 1 5 +0 CEDS_OCPI_SLV $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_slv 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930/2407/707 1 5 +0 CEDS_POG1_SLV - - - - - - POG1 74/76/2407/707 1 5 +0 CEDS_POG2_SLV - - - - - - POG2 74/77/2407/707 1 5 +0 CEDS_OCPI_WST $ROOT/CEDS/v2021-06/$YYYY/OC-em-anthro_CMIP_CEDS_$YYYY.nc OC_wst 1750-2019/1-12/1/0 C xy kg/m2/s pom_a4 8930 1 5 +0 CEDS_POG1_WST - - - - - - POG1 74/76 1 5 +0 CEDS_POG2_WST - - - - - - POG2 74/77 1 5 # NOTE: EOH files in CEDS/v2021-06 are actually VOC1 (total alchohols) and are split into MOH, EOH, ROH here -0 CEDS_MOH_AGR $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_AGR - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_AGR - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_ENE $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s MOH 26/90/315 1 5 -0 CEDS_EOH_ENE - - - - - - EOH 26/91/315 1 5 -0 CEDS_ROH_ENE - - - - - - ROH 26/92/315 1 5 -0 CEDS_MOH_IND $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s MOH 26/90/316 1 5 -0 CEDS_EOH_IND - - - - - - EOH 26/91/316 1 5 -0 CEDS_ROH_IND - - - - - - ROH 26/92/316 1 5 -0 CEDS_MOH_TRA $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_TRA - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_TRA - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_RCO $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_RCO - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_RCO - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_SLV $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_SLV - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_SLV - - - - - - ROH 26/92 1 5 -0 CEDS_MOH_WST $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 -0 CEDS_EOH_WST - - - - - - EOH 26/91 1 5 -0 CEDS_ROH_WST - - - - - - ROH 26/92 1 5 - -0 CEDS_C2H6_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H6 26/315 1 5 -0 CEDS_C2H6_IND $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H6 26/316 1 5 -0 CEDS_C2H6_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 -0 CEDS_C2H6_WST $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 - -0 CEDS_C3H8_AGR $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_agr 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_ENE $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C3H8 26/315 1 5 -0 CEDS_C3H8_IND $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C3H8 26/316 1 5 -0 CEDS_C3H8_TRA $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_tra 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_RCO $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_rco 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_SLV $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_slv 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 -0 CEDS_C3H8_WST $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_wst 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 - -0 CEDS_C4H10_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/315 1 5 -0 CEDS_C4H10_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/316 1 5 -0 CEDS_C4H10_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C4H10_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C5H12_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/315 1 5 -0 CEDS_C5H12_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/316 1 5 -0 CEDS_C5H12_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C5H12_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C6H14_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/315 1 5 -0 CEDS_C6H14_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 26/316 1 5 -0 CEDS_C6H14_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 -0 CEDS_C6H14_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 - -0 CEDS_C2H4_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H4 26/315 1 5 -0 CEDS_C2H4_IND $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H4 26/316 1 5 -0 CEDS_C2H4_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 -0 CEDS_C2H4_WST $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 - -0 CEDS_PRPE_AGR $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_agr 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_ENE $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s PRPE 26/315 1 5 -0 CEDS_PRPE_IND $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s PRPE 26/316 1 5 -0 CEDS_PRPE_TRA $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_tra 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_RCO $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_rco 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_SLV $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_slv 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 -0 CEDS_PRPE_WST $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_wst 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 - -0 CEDS_C2H2_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H2 26/315 1 5 -0 CEDS_C2H2_IND $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H2 26/316 1 5 -0 CEDS_C2H2_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 -0 CEDS_C2H2_WST $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 - -0 CEDS_BENZ_AGR $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_agr 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_ENE $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s BENZ 26/315 1 5 -0 CEDS_BENZ_IND $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s BENZ 26/316 1 5 -0 CEDS_BENZ_TRA $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_tra 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_RCO $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_rco 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_SLV $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_slv 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 -0 CEDS_BENZ_WST $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_wst 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 - -0 CEDS_TOLU_AGR $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_agr 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_ENE $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s TOLU 26/315 1 5 -0 CEDS_TOLU_IND $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s TOLU 26/316 1 5 -0 CEDS_TOLU_TRA $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_tra 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_RCO $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_rco 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_SLV $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_slv 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 -0 CEDS_TOLU_WST $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_wst 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 - -0 CEDS_XYLE_AGR $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_agr 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_ENE $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s XYLE 26/315 1 5 -0 CEDS_XYLE_IND $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s XYLE 26/316 1 5 -0 CEDS_XYLE_TRA $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_tra 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_RCO $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_rco 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_SLV $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_slv 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 -0 CEDS_XYLE_WST $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_wst 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 - -0 CEDS_CH2O_AGR $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_agr 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_ENE $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s CH2O 26/315 1 5 -0 CEDS_CH2O_IND $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s CH2O 26/316 1 5 -0 CEDS_CH2O_TRA $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_tra 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_RCO $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_rco 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_SLV $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_slv 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 -0 CEDS_CH2O_WST $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_wst 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 - -0 CEDS_ALD2_AGR $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_ENE $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALD2 26/315 1 5 -0 CEDS_ALD2_IND $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALD2 26/316 1 5 -0 CEDS_ALD2_TRA $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_RCO $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_SLV $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 -0 CEDS_ALD2_WST $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 - -0 CEDS_MEK_AGR $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_agr 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_ENE $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s MEK 26/315 1 5 -0 CEDS_MEK_IND $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s MEK 26/316 1 5 -0 CEDS_MEK_TRA $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_tra 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_RCO $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_rco 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_SLV $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_slv 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 -0 CEDS_MEK_WST $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_wst 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 - -0 CEDS_HCOOH_AGR $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_ENE $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s HCOOH 26/315 1 5 -0 CEDS_HCOOH_IND $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s HCOOH 26/316 1 5 -0 CEDS_HCOOH_TRA $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_RCO $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_SLV $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 -0 CEDS_HCOOH_WST $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 +0 CEDS_MOH_AGR $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2401 1 5 +0 CEDS_EOH_AGR - - - - - - EOH 91/2401 1 5 +0 CEDS_ROH_AGR - - - - - - ROH 92/2401 1 5 +0 CEDS_MOH_ENE $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s MOH 90/2406/706/315 1 5 +0 CEDS_EOH_ENE - - - - - - EOH 91/2406/706/315 1 5 +0 CEDS_ROH_ENE - - - - - - ROH 92/2406/706/315 1 5 +0 CEDS_MOH_IND $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s MOH 90/2407/707/316 1 5 +0 CEDS_EOH_IND - - - - - - EOH 91/2407/707/316 1 5 +0 CEDS_ROH_IND - - - - - - ROH 92/2407/707/316 1 5 +0 CEDS_MOH_TRA $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2411/711 1 5 +0 CEDS_EOH_TRA - - - - - - EOH 91/2411/711 1 5 +0 CEDS_ROH_TRA - - - - - - ROH 92/2411/711 1 5 +0 CEDS_MOH_RCO $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2409/709 1 5 +0 CEDS_EOH_RCO - - - - - - EOH 91/2409/709 1 5 +0 CEDS_ROH_RCO - - - - - - ROH 92/2409/709 1 5 +0 CEDS_MOH_SLV $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s MOH 90/2407/707 1 5 +0 CEDS_EOH_SLV - - - - - - EOH 91/2407/707 1 5 +0 CEDS_ROH_SLV - - - - - - ROH 92/2407/707 1 5 +0 CEDS_MOH_WST $ROOT/CEDS/v2021-06/$YYYY/EOH-em-anthro_CMIP_CEDS_$YYYY.nc EOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s MOH 26/90 1 5 +0 CEDS_EOH_WST - - - - - - EOH 26/91 1 5 +0 CEDS_ROH_WST - - - - - - ROH 26/92 1 5 + +0 CEDS_C2H6_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2401 1 5 +0 CEDS_C2H6_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H6 2406/706/315 1 5 +0 CEDS_C2H6_IND $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H6 2407/707/316 1 5 +0 CEDS_C2H6_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2411/711 1 5 +0 CEDS_C2H6_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2409/709 1 5 +0 CEDS_C2H6_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 2407/707 1 5 +0 CEDS_C2H6_WST $ROOT/CEDS/v2021-06/$YYYY/C2H6-em-anthro_CMIP_CEDS_$YYYY.nc C2H6_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H6 26 1 5 + +0 CEDS_C3H8_AGR $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_agr 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2401 1 5 +0 CEDS_C3H8_ENE $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C3H8 2406/706/315 1 5 +0 CEDS_C3H8_IND $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C3H8 2407/707/316 1 5 +0 CEDS_C3H8_TRA $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_tra 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2411/711 1 5 +0 CEDS_C3H8_RCO $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_rco 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2409/709 1 5 +0 CEDS_C3H8_SLV $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_slv 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 2407/707 1 5 +0 CEDS_C3H8_WST $ROOT/CEDS/v2021-06/$YYYY/C3H8-em-anthro_CMIP_CEDS_$YYYY.nc C3H8_wst 1750-2019/1-12/1/0 C xy kg/m2/s C3H8 26 1 5 + +0 CEDS_C4H10_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2401 1 5 +0 CEDS_C4H10_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 2406/706/315 1 5 +0 CEDS_C4H10_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 2407/707/316 1 5 +0 CEDS_C4H10_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2411/711 1 5 +0 CEDS_C4H10_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2409/709 1 5 +0 CEDS_C4H10_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C4H10_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_butanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_butanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C5H12_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2401 1 5 +0 CEDS_C5H12_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 2406/706/315 1 5 +0 CEDS_C5H12_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 2407/707/316 1 5 +0 CEDS_C5H12_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2411/711 1 5 +0 CEDS_C5H12_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2409/709 1 5 +0 CEDS_C5H12_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C5H12_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_pentanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_pentanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C6H14_AGR $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2401 1 5 +0 CEDS_C6H14_ENE $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 2406/706/315 1 5 +0 CEDS_C6H14_IND $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALK4 2407/707/316 1 5 +0 CEDS_C6H14_TRA $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2411/711 1 5 +0 CEDS_C6H14_RCO $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2409/709 1 5 +0 CEDS_C6H14_SLV $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 2407/707 1 5 +0 CEDS_C6H14_WST $ROOT/CEDS/v2021-06/$YYYY/ALK4_hexanes-em-anthro_CMIP_CEDS_$YYYY.nc ALK4_hexanes_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALK4 26 1 5 + +0 CEDS_C2H4_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2401 1 5 +0 CEDS_C2H4_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H4 2406/706/315 1 5 +0 CEDS_C2H4_IND $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H4 2407/707/316 1 5 +0 CEDS_C2H4_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2411/711 1 5 +0 CEDS_C2H4_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2409/709 1 5 +0 CEDS_C2H4_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 2407/707 1 5 +0 CEDS_C2H4_WST $ROOT/CEDS/v2021-06/$YYYY/C2H4-em-anthro_CMIP_CEDS_$YYYY.nc C2H4_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H4 26 1 5 + +0 CEDS_PRPE_AGR $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_agr 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2401 1 5 +0 CEDS_PRPE_ENE $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s PRPE 2406/706/315 1 5 +0 CEDS_PRPE_IND $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s PRPE 2407/707/316 1 5 +0 CEDS_PRPE_TRA $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_tra 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2411/711 1 5 +0 CEDS_PRPE_RCO $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_rco 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2409/709 1 5 +0 CEDS_PRPE_SLV $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_slv 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 2407/707 1 5 +0 CEDS_PRPE_WST $ROOT/CEDS/v2021-06/$YYYY/PRPE-em-anthro_CMIP_CEDS_$YYYY.nc PRPE_wst 1750-2019/1-12/1/0 C xy kg/m2/s PRPE 26 1 5 + +0 CEDS_C2H2_AGR $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_agr 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2401 1 5 +0 CEDS_C2H2_ENE $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H2 2406/706/315 1 5 +0 CEDS_C2H2_IND $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s C2H2 2407/707/316 1 5 +0 CEDS_C2H2_TRA $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_tra 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2411/711 1 5 +0 CEDS_C2H2_RCO $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_rco 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2409/709 1 5 +0 CEDS_C2H2_SLV $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_slv 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 2407/707 1 5 +0 CEDS_C2H2_WST $ROOT/CEDS/v2021-06/$YYYY/C2H2-em-anthro_CMIP_CEDS_$YYYY.nc C2H2_wst 1750-2019/1-12/1/0 C xy kg/m2/s C2H2 26 1 5 + +0 CEDS_BENZ_AGR $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_agr 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2401 1 5 +0 CEDS_BENZ_ENE $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s BENZ 2406/706/315 1 5 +0 CEDS_BENZ_IND $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s BENZ 2407/707/316 1 5 +0 CEDS_BENZ_TRA $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_tra 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2411/711 1 5 +0 CEDS_BENZ_RCO $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_rco 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2409/709 1 5 +0 CEDS_BENZ_SLV $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_slv 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 2407/707 1 5 +0 CEDS_BENZ_WST $ROOT/CEDS/v2021-06/$YYYY/BENZ-em-anthro_CMIP_CEDS_$YYYY.nc BENZ_wst 1750-2019/1-12/1/0 C xy kg/m2/s BENZ 26 1 5 + +0 CEDS_TOLU_AGR $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_agr 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2401 1 5 +0 CEDS_TOLU_ENE $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s TOLU 2406/706/315 1 5 +0 CEDS_TOLU_IND $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s TOLU 2407/707/316 1 5 +0 CEDS_TOLU_TRA $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_tra 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2411/711 1 5 +0 CEDS_TOLU_RCO $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_rco 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2409/709 1 5 +0 CEDS_TOLU_SLV $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_slv 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 2407/707 1 5 +0 CEDS_TOLU_WST $ROOT/CEDS/v2021-06/$YYYY/TOLU-em-anthro_CMIP_CEDS_$YYYY.nc TOLU_wst 1750-2019/1-12/1/0 C xy kg/m2/s TOLU 26 1 5 + +0 CEDS_XYLE_AGR $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_agr 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2401 1 5 +0 CEDS_XYLE_ENE $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s XYLE 2406/706/315 1 5 +0 CEDS_XYLE_IND $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s XYLE 2407/707/316 1 5 +0 CEDS_XYLE_TRA $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_tra 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2411/711 1 5 +0 CEDS_XYLE_RCO $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_rco 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2409/709 1 5 +0 CEDS_XYLE_SLV $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_slv 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 2407/707 1 5 +0 CEDS_XYLE_WST $ROOT/CEDS/v2021-06/$YYYY/XYLE-em-anthro_CMIP_CEDS_$YYYY.nc XYLE_wst 1750-2019/1-12/1/0 C xy kg/m2/s XYLE 26 1 5 + +0 CEDS_CH2O_AGR $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_agr 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2401 1 5 +0 CEDS_CH2O_ENE $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s CH2O 2406/706/315 1 5 +0 CEDS_CH2O_IND $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s CH2O 2407/707/316 1 5 +0 CEDS_CH2O_TRA $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_tra 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2411/711 1 5 +0 CEDS_CH2O_RCO $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_rco 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2409/709 1 5 +0 CEDS_CH2O_SLV $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_slv 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 2407/707 1 5 +0 CEDS_CH2O_WST $ROOT/CEDS/v2021-06/$YYYY/CH2O-em-anthro_CMIP_CEDS_$YYYY.nc CH2O_wst 1750-2019/1-12/1/0 C xy kg/m2/s CH2O 26 1 5 + +0 CEDS_ALD2_AGR $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_agr 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2401 1 5 +0 CEDS_ALD2_ENE $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s ALD2 2406/706/315 1 5 +0 CEDS_ALD2_IND $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s ALD2 2407/707/316 1 5 +0 CEDS_ALD2_TRA $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_tra 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2411/711 1 5 +0 CEDS_ALD2_RCO $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_rco 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2409/709 1 5 +0 CEDS_ALD2_SLV $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_slv 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 2407/707 1 5 +0 CEDS_ALD2_WST $ROOT/CEDS/v2021-06/$YYYY/ALD2-em-anthro_CMIP_CEDS_$YYYY.nc ALD2_wst 1750-2019/1-12/1/0 C xy kg/m2/s ALD2 26 1 5 + +0 CEDS_MEK_AGR $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_agr 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2401 1 5 +0 CEDS_MEK_ENE $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s MEK 2406/706/315 1 5 +0 CEDS_MEK_IND $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s MEK 2407/707/316 1 5 +0 CEDS_MEK_TRA $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_tra 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2411/711 1 5 +0 CEDS_MEK_RCO $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_rco 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2409/709 1 5 +0 CEDS_MEK_SLV $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_slv 1750-2019/1-12/1/0 C xy kg/m2/s MEK 2407/707 1 5 +0 CEDS_MEK_WST $ROOT/CEDS/v2021-06/$YYYY/MEK-em-anthro_CMIP_CEDS_$YYYY.nc MEK_wst 1750-2019/1-12/1/0 C xy kg/m2/s MEK 26 1 5 + +0 CEDS_HCOOH_AGR $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_agr 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2401 1 5 +0 CEDS_HCOOH_ENE $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ene 1750-2019/1-12/1/0 C xyL* kg/m2/s HCOOH 2406/706/315 1 5 +0 CEDS_HCOOH_IND $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_ind 1750-2019/1-12/1/0 C xyL* kg/m2/s HCOOH 2407/707/316 1 5 +0 CEDS_HCOOH_TRA $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_tra 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2411/711 1 5 +0 CEDS_HCOOH_RCO $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_rco 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2409/709 1 5 +0 CEDS_HCOOH_SLV $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_slv 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 2407/707 1 5 +0 CEDS_HCOOH_WST $ROOT/CEDS/v2021-06/$YYYY/HCOOH-em-anthro_CMIP_CEDS_$YYYY.nc HCOOH_wst 1750-2019/1-12/1/0 C xy kg/m2/s HCOOH 26 1 5 + )))CEDSv2 #============================================================================== @@ -2596,6 +2585,39 @@ VerboseOnCores: root # Accepted values: root all 0 ORDONEZ_CH2IBR $ROOT/IODINE/v2020-02/CH2IBr_monthly_emissions_Ordonez_2012_COARDS.nc CH2IBr 2000/1-12/1/0 C xy kg/m2/s CH2IBr - 1 1 )))ORDONEZ_IODOCARB +#============================================================================== +# --- GT_Chlorine --- +# +# Emission inventory for HCl and particulate Cl from continental sources +# +# Reference: +# Zhang, B., & Liu, P., et al (2022). Global Emissions of Hydrogen Chloride +# and Particulate Chloride from Continental Sources. Environmental Science & +# Technology, 56(7), 3894-3904. https://doi.org/10.1021/acs.est.1c05634 +# +# Notes: +# - The HCl emission from open biomass burning (HCL_BIO, HCL_AGR) used the same +# activity data for GFED4 (1998-2014) and BB4CMIP (1960-2014). If your +# emission inventory for open biomass burning has already include HCl +# emissions, shut down either of them to avoid the duplicated emission sources +# - Emissions of particulate Cl are added as HCl as ISORROPIA will reparition +# Cl between particle phase and gas phase. +#============================================================================== +(((GT_Chlorine +0 HCL_ENE $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_ene 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_IND $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_ind 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_RES $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_res 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_WST $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_wstop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 HCL_BIO $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_bbop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +0 HCL_AGR $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc HCl_agri 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +0 PCL_ENE $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_ene 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_IND $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_ind 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_RES $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_res 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_WST $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_wstop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 26 1/2 1 +0 PCL_BIO $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_bbop 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +0 PCL_AGR $ROOT/GT_Chlorine/v2024-05/GT_Chlorine_01_01_$YYYY_V1.0.0.nc pCl_agri 1960-2014/1-12/1/0 C xy kg/m2/s HCl 75 1/2 1 +)))GT_Chlorine + #============================================================================== # --- Ship emissions --- # @@ -3494,7 +3516,7 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- Time zones (offset to UTC) --- #============================================================================== -* TIMEZONES $ROOT/TIMEZONES/v2015-02/timezones_voronoi_1x1.nc UTC_OFFSET 2000/1/1/0 C xy count * - 1 1 +* TIMEZONES $ROOT/TIMEZONES/v2024-02/timezones_vohra_2017_0.1x0.1.nc UTC_OFFSET 2017/1-12/1/0 C xy count * - 1 1 (((CHEMISTRY_INPUT @@ -3796,9 +3818,10 @@ VerboseOnCores: root # Accepted values: root all #============================================================================== # --- NOAA GMD monthly mean surface CH4 --- +# NOTE: Turn off in CESM since GHGs are prescribed from CAM #============================================================================== (((GMD_SFC_CH4 -* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2018-01/monthly.gridded.surface.methane.1979-2020.1x1.nc SFC_CH4 1979-2020/1-12/1/0 RY xy ppbv * - 1 1 +* NOAA_GMD_CH4 $ROOT/NOAA_GMD/v2023-10/monthly.gridded.surface.methane.1975-2022.1x1.nc SFC_CH4 1975-2022/1-12/1/0 RY xy ppbv * - 1 1 )))GMD_SFC_CH4 #============================================================================== @@ -4648,6 +4671,27 @@ VerboseOnCores: root # Accepted values: root all 1212 FFF $ROOT/EDGARv43/v2016-11/EDGAR_v43.Seasonal.1x1.nc FFF 2010/1-12/1/0 C xy unitless 1 )))EDGARv43.or.DICE_Africa +(((CEDSv2 +#========================================================================= +# --- Sector-wise diel scale factors for CEDSv2 --- +# These scale factors could potentially be used for other global base emissions if modified accordingly. +#========================================================================= +2401 TOD_AGRICULTURE 0.599/0.599/0.599/0.599/0.599/0.649/0.748/0.898/1.098/1.247/1.447/1.597/1.796/1.746/1.696/1.547/1.347/1.098/0.898/0.748/0.649/0.599/0.599/0.599 - - - xy unitless 1 +2406 TOD_ENERGY 0.790/0.720/0.720/0.710/0.740/0.800/0.920/1.080/1.190/1.220/1.210/1.210/1.170/1.150/1.140/1.130/1.100/1.070/1.040/1.020/1.020/1.010/0.960/0.880 - - - xy unitless 1 +2407 TOD_INDUSTRY 0.750/0.750/0.780/0.820/0.880/0.950/1.020/1.090/1.160/1.220/1.280/1.300/1.220/1.240/1.250/1.160/1.080/1.010/0.950/0.900/0.850/0.810/0.780/0.750 - - - xy unitless 1 +2409 TOD_RESIDENTIAL 0.393/0.393/0.393/0.393/0.393/0.492/1.180/1.475/1.574/1.574/1.377/1.180/1.082/1.082/0.984/0.984/0.984/1.082/1.377/1.475/1.377/1.377/0.984/0.393 - - - xy unitless 1 +2411 TOD_TRANSPORT 0.190/0.090/0.060/0.050/0.090/0.220/0.860/1.840/1.860/1.410/1.240/1.200/1.320/1.440/1.450/1.590/2.030/2.080/1.510/1.060/0.740/0.620/0.610/0.440 - - - xy unitless 1 + +#========================================================================= +# --- Sector-wise day-of-week scale factors for CEDSv2 --- +# These scale factors could potentially be used for other global base emissions if modified accordingly. +#========================================================================= +706 DOW_ENERGY 0.850/1.060/1.060/1.060/1.060/1.060/0.850 - - - xy unitless 1 +707 DOW_INDUSTRY 0.800/1.080/1.080/1.080/1.080/1.080/0.800 - - - xy unitless 1 +709 DOW_RESIDENTIAL 0.800/1.080/1.080/1.080/1.080/1.080/0.800 - - - xy unitless 1 +711 DOW_TRANSPORT 0.790/1.020/1.060/1.080/1.100/1.140/0.810 - - - xy unitless 1 +)))CEDSv2 + ### END SECTION SCALE FACTORS ### ############################################################################### From 006d012540076a38788ab9612558ef2c513e351c Mon Sep 17 00:00:00 2001 From: "yuanjian.z" Date: Sun, 14 Jul 2024 17:50:37 -0500 Subject: [PATCH 322/331] Updated CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b1b11d39..0df7c50a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +### Changed +- Simplified SOA representations and fixed related AOD and TotalOA/OC calculations in benchmark. + ## [14.4.1] - 2024-06-28 ### Added - Added initialization of PHOTDELTA in `ucx_h2so4phot` to avoid run-time error in CESM From 1e7aa945b5c852c4c8919e5a9bcd68966bd358a0 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 15 Jul 2024 15:00:59 -0400 Subject: [PATCH 323/331] Disable support for FAST-JX except for the Hg simulation GeosCore/gc_environment_mod.F90 - Throw an error (right before the call to Init_FJX) if FAST-JX photolysis is activated for fullchem or carbon simulations. FAST-JX is currently only supported for Hg. Signed-off-by: Bob Yantosca --- CHANGELOG.md | 1 + GeosCore/gc_environment_mod.F90 | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67e592421..39e7dcc62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Now reset `State_Diag%SatDiagnCount` to zero in routine`History_Write` (instead of in `History_Netcdf_Write`) - Update rundir creation scripts to turn off the MEGAN extension for "standard" fullchem simulations +- Disable support For FAST-JX for all simulations except Hg ### Fixed - Typo in `setCommonRunSettings.sh` that made GCHP always choose mass fluxes for meteorology diff --git a/GeosCore/gc_environment_mod.F90 b/GeosCore/gc_environment_mod.F90 index de0b97ea1..1af48d76a 100644 --- a/GeosCore/gc_environment_mod.F90 +++ b/GeosCore/gc_environment_mod.F90 @@ -142,6 +142,13 @@ SUBROUTINE GC_Allocate_All( Input_Opt, & ' -> at GC_Allocate_All (in module GeosCore/gc_environment_mod.F90)' #ifdef FASTJX + ! Throw an error if FAST-JX is used for simulations other than Hg + IF ( Input_Opt%ITS_A_FULLCHEM_SIM .or. Input_Opt%ITS_A_CARBON_SIM ) THEN + ErrMsg = 'FAST-JX is only supported in the Hg simulation!' + CALL GC_Error( ErrMsg, RC, ThisLoc ) + RETURN + ENDIF + ! Initialize CMN_FJX_mod.F90 CALL Init_CMN_FJX( Input_Opt,State_Grid, RC ) From efa425ccc595f552bd7ccd8e3d06ca2bbd0cf5fc Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 2 Jul 2024 10:56:24 -0400 Subject: [PATCH 324/331] Add KPP_AbsTol and KPP_RelTol to species_database.yml run/shared/species_database.yml run/shared/species_database_hg.yml - Allow for KPP_AbsTol and KPP_RelTol tags. - Set KPP_AbsTol to 1.0e25 for all dummy species, in order to prevent these from being considered when computing the error norm. Headers/species_mod.F90 - Add KPP_AbsTol and KPP_RelTol to the Species derived type Headers/species_database_mod.F90 - Add "KPP_AbsTol" and "KPP_RelTol" to the tags array - Add code to parse KPP_AbsTol and KPP_RelTol tags - Remove the "places" keyword and just pass the number of decimal places, for a consistent appearance - Trimmed trailing whitespace - Updated comments Headers/state_chem_mod.F90 - Add KPP_AbsTol and KPP_RelTol 1-D arrays. These are initialized at the same time as the Map_KppVar mapping array. This will allow us to replace missing values at initialization, and just copy the values to ATOL and RTOL each timestep. This is more efficient. GeosCore/fullchem_mod.F90 GeosCore/mercury_mod.F90 - Replace missing values in State_Chm%KPP_AbsTol and State_Chm%KPP_RelTol with default values. This preserves the absolute and relative tolerances for species that were specified in species_database.yml. - Copy State_Chm%KPP_AbsTol to the KPP ATOL array - Copy State_Chm%KPP_RelTol to the KPP RTOL array Signed-off-by: Bob Yantosca --- GeosCore/fullchem_mod.F90 | 20 +++++++++++--- GeosCore/mercury_mod.F90 | 16 ++++++++++-- Headers/species_database_mod.F90 | 42 +++++++++++++++++++----------- Headers/species_mod.F90 | 9 +++++++ Headers/state_chm_mod.F90 | 33 +++++++++++++++++++++++ run/shared/species_database.yml | 16 ++++++++++++ run/shared/species_database_hg.yml | 5 ++++ 7 files changed, 120 insertions(+), 21 deletions(-) diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index 0bbe52b9a..ba9517c74 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -44,7 +44,7 @@ MODULE FullChem_Mod INTEGER :: id_NK05, id_NK08, id_NK10, id_NK20 #endif #ifdef MODEL_GEOS - INTEGER :: id_O3 +< INTEGER :: id_O3 INTEGER :: id_A3O2, id_ATO2, id_B3O2, id_BRO2 INTEGER :: id_ETO2, id_LIMO2, id_MO2, id_PIO2, id_PO2 INTEGER :: id_PRN1, id_R4N1, id_R4O2, id_TRO2, id_XRO2 @@ -468,10 +468,10 @@ SUBROUTINE Do_FullChem( Input_Opt, State_Chm, State_Diag, & !%%%%% CONVERGENCE CRITERIA %%%%% ! Absolute tolerance - ATOL = 1e-2_dp + ATOL = State_Chm%KPP_AbsTol ! Relative tolerance - RTOL = 0.5e-2_dp + RTOL = State_Chm%KPP_RelTol !======================================================================= ! %%%%% SOLVE CHEMISTRY -- This is the main KPP solver loop %%%%% @@ -2822,6 +2822,19 @@ SUBROUTINE Init_FullChem( Input_Opt, State_Chm, State_Diag, RC ) State_Diag%Archive_O1DconcAfterChem .or. & State_Diag%Archive_O3PconcAfterChem ) + + !======================================================================= + ! Assign default values for KPP absolute and relative tolerances + ! for species where these have not been explicitly defined. + !======================================================================= + WHERE( State_Chm%KPP_AbsTol == MISSING_DBLE ) + State_Chm%KPP_AbsTol = 1.0e-2_f8 + ENDWHERE + + WHERE( State_Chm%KPP_RelTol == MISSING_DBLE ) + State_Chm%KPP_RelTol = 0.5e-2_f8 + ENDWHERE + !======================================================================= ! Save physical parameters from the species database into KPP arrays ! in gckpp_Global.F90. These are for the hetchem routines. @@ -2835,7 +2848,6 @@ SUBROUTINE Init_FullChem( Input_Opt, State_Chm, State_Diag, RC ) HENRY_CR(KppId) = State_Chm%SpcData(N)%Info%Henry_CR ENDIF ENDDO - !======================================================================= ! Allocate arrays !======================================================================= diff --git a/GeosCore/mercury_mod.F90 b/GeosCore/mercury_mod.F90 index 741879cf1..68aa04a32 100644 --- a/GeosCore/mercury_mod.F90 +++ b/GeosCore/mercury_mod.F90 @@ -969,10 +969,10 @@ SUBROUTINE ChemMercury( Input_Opt, State_Chm, State_Diag, & !%%%%% CONVERGENCE CRITERIA %%%%% ! Absolute tolerance - ATOL = 1e-2_dp + ATOL = State_Chm%KPP_AbsTol ! Relative tolerance - RTOL = 1e-2_dp + RTOL = State_Chm%KPP_RelTol !%%%%% SOLVER OPTIONS %%%%% @@ -3886,6 +3886,18 @@ SUBROUTINE Init_Mercury( Input_Opt, State_Grid, State_Chm, State_Diag, RC ) ENDIF ENDDO + !======================================================================= + ! Assign default values for KPP absolute and relative tolerances + ! for species where these have not been explicitly defined. + !======================================================================= + WHERE( State_Chm%KPP_AbsTol == MISSING_DBLE ) + State_Chm%KPP_AbsTol = 1.0e-2_f8 + ENDWHERE + + WHERE( State_Chm%KPP_RelTol == MISSING_DBLE ) + State_Chm%KPP_RelTol = 1.0e-2_f8 + ENDWHERE + !======================================================================== ! Various Settings (not sure how many of these still work) !======================================================================== diff --git a/Headers/species_database_mod.F90 b/Headers/species_database_mod.F90 index abc0c08c6..36357df61 100644 --- a/Headers/species_database_mod.F90 +++ b/Headers/species_database_mod.F90 @@ -157,7 +157,7 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) REAL(f4) :: wd_rainouteff_luo(3) ! String arrays - CHARACTER(LEN=17) :: tags(64) + CHARACTER(LEN=17) :: tags(66) CHARACTER(LEN=QFYAML_StrLen):: a_str(2) ! Objects @@ -208,6 +208,11 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) "Density ", & "Formula ", & "FullName ", & + "Henry_CR ", & + "Henry_CR_Luo ", & + "Henry_K0 ", & + "Henry_K0_Luo ", & + "Henry_pKa ", & "Is_Aerosol ", & "Is_DryAlt ", & "Is_DryDep ", & @@ -218,13 +223,10 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) "Is_HgP ", & "Is_Photolysis ", & "Is_RadioNuclide ", & - "Is_Tracer ", & "Is_WetDep ", & - "Henry_CR ", & - "Henry_CR_Luo ", & - "Henry_K0 ", & - "Henry_K0_Luo ", & - "Henry_pKa ", & + "Is_Tracer ", & + "KPP_AbsTol ", & + "KPP_RelTol ", & "MP_SizeResAer ", & "MP_SizeResNum ", & "MW_g ", & @@ -611,6 +613,16 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) ThisSpc%Is_WetDep = v_bool ENDIF + ELSE IF ( INDEX( key, "%KPP_AbsTol" ) > 0 ) THEN + CALL QFYAML_Add_Get( yml, key, v_str, "", RC ) + IF ( RC /= GC_SUCCESS ) GOTO 999 + ThisSpc%KPP_AbsTol = Cast_and_RoundOff( v_str, -1 ) + + ELSE IF ( INDEX( key, "%KPP_RelTol" ) > 0 ) THEN + CALL QFYAML_Add_Get( yml, key, v_real, "", RC ) + IF ( RC /= GC_SUCCESS ) GOTO 999 + ThisSpc%KPP_RelTol = Cast_and_RoundOff( v_str, -1 ) + ELSE IF ( INDEX( key, "%MP_SizeResAer" ) > 0 ) THEN CALL QFYAML_Add_Get( yml, key, v_bool, "", RC ) IF ( RC /= GC_SUCCESS ) GOTO 999 @@ -640,8 +652,8 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) a_str = MISSING_STR CALL QFYAML_Add_Get( yml, TRIM( key ), a_str, "", RC ) IF ( RC /= GC_SUCCESS ) GOTO 999 - ThisSpc%Snk_LatMin = Cast_and_RoundOff( a_str(1), places=4 ) - ThisSpc%Snk_LatMax = Cast_and_RoundOff( a_str(2), places=4 ) + ThisSpc%Snk_LatMin = Cast_and_RoundOff( a_str(1), 4 ) + ThisSpc%Snk_LatMax = Cast_and_RoundOff( a_str(2), 4 ) ELSE IF ( INDEX( key, "%Snk_Mode" ) > 0 ) THEN CALL QFYAML_Add_Get( yml, key, v_str, "", RC ) @@ -677,8 +689,8 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) a_str = MISSING_STR CALL QFYAML_Add_Get( yml, TRIM( key ), a_str, "", RC ) IF ( RC /= GC_SUCCESS ) GOTO 999 - ThisSpc%Src_LatMin = Cast_and_RoundOff( a_str(1), places=4 ) - ThisSpc%Src_LatMax = Cast_and_RoundOff( a_str(2), places=4 ) + ThisSpc%Src_LatMin = Cast_and_RoundOff( a_str(1), 4 ) + ThisSpc%Src_LatMax = Cast_and_RoundOff( a_str(2), 4 ) ELSE IF ( INDEX( key, "%Src_Mode" ) > 0 ) THEN CALL QFYAML_Add_Get( yml, key, v_str, "", RC ) @@ -689,8 +701,8 @@ SUBROUTINE Init_Species_Database( Input_Opt, SpcData, SpcCount, RC ) a_str = MISSING_STR CALL QFYAML_Add_Get( yml, TRIM( key ), a_str, "", RC ) IF ( RC /= GC_SUCCESS ) GOTO 999 - ThisSpc%Src_PresMin = Cast_and_RoundOff( a_str(1), places=4 ) - ThisSpc%Src_PresMax = Cast_and_RoundOff( a_str(2), places=4 ) + ThisSpc%Src_PresMin = Cast_and_RoundOff( a_str(1), 4 ) + ThisSpc%Src_PresMax = Cast_and_RoundOff( a_str(2), 4 ) ELSE IF ( INDEX( key, "%Src_Units" ) > 0 ) THEN CALL QFYAML_Add_Get( yml, key, v_str, "", RC ) @@ -1359,8 +1371,8 @@ SUBROUTINE Unique_Species_Names( Input_Opt, nSpecies, RC ) ENDDO !======================================================================= - ! For specialty simulations, we do not have KPP species. Thus, the - ! of species is just the list of advected species from geoschem_config.yml + ! For speciality simulations that do not use KPP-built mechanisms, + ! we can just use the advected species list from geoschem_config.yml !======================================================================= ELSE diff --git a/Headers/species_mod.F90 b/Headers/species_mod.F90 index ebcbfb2fe..46a6ba7c1 100644 --- a/Headers/species_mod.F90 +++ b/Headers/species_mod.F90 @@ -194,6 +194,10 @@ MODULE Species_Mod LOGICAL :: Is_Hg2 ! Is a Hg2 species? LOGICAL :: Is_HgP ! Is a HgP species? + ! KPP solver parameters + REAL(f8) :: KPP_AbsTol ! Absolute tolerance + REAL(f8) :: KPP_RelTol ! Relative tolerance + END TYPE Species ! ! !DEFINED PARAMETERS: @@ -454,6 +458,8 @@ SUBROUTINE Spc_Zero( Spc ) Spc%Henry_CR = MISSING_DBLE Spc%Henry_K0 = MISSING_DBLE Spc%Henry_PKA = MISSING_DBLE + Spc%KPP_AbsTol = MISSING_DBLE + Spc%KPP_RelTol = MISSING_DBLE ! Strings Spc%Formula = MISSING_STR @@ -597,6 +603,9 @@ SUBROUTINE Spc_Print( Input_Opt, ThisSpc, RC ) WRITE( 6, 130 ) "Is_FixedChem ", ThisSpc%Is_FixedChem WRITE( 6, 100 ) "KppFixId ", ThisSpc%KppFixId ENDIF + + WRITE( 6, 120 ) "KPP_AbsTol ", ThisSpc%KPP_AbsTol + WRITE( 6, 120 ) "KPP_RelTol ", ThisSpc%KPP_RelTol ENDIF !-------------------------------------------------------------------- diff --git a/Headers/state_chm_mod.F90 b/Headers/state_chm_mod.F90 index 4a013f1a6..206b71eb8 100644 --- a/Headers/state_chm_mod.F90 +++ b/Headers/state_chm_mod.F90 @@ -91,6 +91,8 @@ MODULE State_Chm_Mod !----------------------------------------------------------------------- ! Mapping vectors to subset types of species !----------------------------------------------------------------------- + REAL(f8), POINTER :: KPP_AbsTol (: ) ! KPP absolute tolerance + REAL(f8), POINTER :: KPP_RelTol (: ) ! KPP relative tolerance INTEGER, POINTER :: Map_Advect (: ) ! Advected species IDs INTEGER, POINTER :: Map_Aero (: ) ! Aerosol species IDs INTEGER, POINTER :: Map_All (: ) ! All species IDs @@ -644,6 +646,10 @@ SUBROUTINE Zero_State_Chm( State_Chm, RC ) State_Chm%PSO4_SO2APM2 => NULL() #endif + ! KPP integrator quantities + State_Chm%KPP_AbsTol => NULL() + State_Chm%KPP_RelTol => NULL() + END SUBROUTINE Zero_State_Chm !EOC !------------------------------------------------------------------------------ @@ -2525,6 +2531,17 @@ SUBROUTINE Init_Mapping_Vectors( Input_Opt, State_Chm, RC ) CALL GC_CheckVar( 'State_Chm%Map_KppVar', 0, RC ) IF ( RC /= GC_SUCCESS ) RETURN State_Chm%Map_KppVar = 0 + + ! + ALLOCATE( State_Chm%KPP_AbsTol( N ), STAT=RC ) + CALL GC_CheckVar( 'State_Chm%KppAbsTol', 0, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Chm%KPP_AbsTol = 0.0_f8 + + ALLOCATE( State_Chm%KPP_RelTol( N ), STAT=RC ) + CALL GC_CheckVar( 'State_Chm%KppRelTol', 0, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Chm%KPP_RelTol = 0.0_f8 ENDIF N = State_Chm%nKppFix + State_Chm%nOmitted @@ -2683,6 +2700,8 @@ SUBROUTINE Init_Mapping_Vectors( Input_Opt, State_Chm, RC ) IF ( ThisSpc%Is_ActiveChem ) THEN C = ThisSpc%KppVarId State_Chm%Map_KppVar(C) = ThisSpc%ModelId + State_Chm%KPP_AbsTol(C) = ThisSpc%KPP_AbsTol + State_Chm%KPP_RelTol(C) = ThisSpc%KPP_RelTol ENDIF !--------------------------------------------------------------------- @@ -3088,6 +3107,20 @@ SUBROUTINE Cleanup_State_Chm( State_Chm, RC ) State_Chm%Phot => NULL() ENDIF + IF ( ASSOCIATED( State_Chm%KPP_AbsTol ) ) THEN + DEALLOCATE( State_Chm%KPP_AbsTol, STAT=RC ) + CALL GC_CheckVar( 'State_Chm%KPP_AbsTol', 2, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Chm%KPP_AbsTol => NULL() + ENDIF + + IF ( ASSOCIATED( State_Chm%KPP_RelTol ) ) THEN + DEALLOCATE( State_Chm%KPP_RelTol, STAT=RC ) + CALL GC_CheckVar( 'State_Chm%KPP_RelTol', 2, RC ) + IF ( RC /= GC_SUCCESS ) RETURN + State_Chm%KPP_RelTol => NULL() + ENDIF + IF ( ASSOCIATED( State_Chm%Map_Advect ) ) THEN DEALLOCATE( State_Chm%Map_Advect, STAT=RC ) CALL GC_CheckVar( 'State_Chm%Map_Advect', 2, RC ) diff --git a/run/shared/species_database.yml b/run/shared/species_database.yml index 7788822fb..146e6036c 100644 --- a/run/shared/species_database.yml +++ b/run/shared/species_database.yml @@ -2760,18 +2760,22 @@ LBRO2H: FullName: Dummy species to track oxidation of BRO2 by HO2 Is_Gas: true MW_g: 159.13 + KPP_AbsTol: 1.0e+25_8 LBRO2N: FullName: Dummy species to track oxidation of BRO2 by NO Is_Gas: true MW_g: 159.13 + KPP_AbsTol: 1.0e+25 LCH4: FullName: Dummy species to track loss rate of CH4 Is_Gas: true MW_g: 16.04 + KPP_AbsTol: 1.0e+25 LCO: FullName: Dummy species to track loss rate of CO Is_Gas: true MW_g: 28.01 + KPP_AbsTol: 1.0e+25 LIMO: DD_F0: 0.0 DD_Hstar: 7.0e-2 @@ -2794,14 +2798,17 @@ LISOPNO3: FullName: Dummy species to track oxidation of ISOP by NO3 Is_Gas: true MW_g: 68.13 + KPP_AbsTol: 1.0e+25 LISOPOH: FullName: Dummy species to track oxidation of ISOP by OH Is_Gas: true MW_g: 68.13 + KPP_AbsTol: 1.0e+25 LNRO2H: FullName: Dummy species to track oxidation of NRO2 by HO2 Is_Gas: true MW_g: 159.17 + KPP_AbsTol: 1.0e+25 LNRO2N: FullName: Dummy species to track oxidation of NRO2 by NO Is_Gas: true @@ -2810,14 +2817,17 @@ LOx: FullName: Dummy species to track loss rate of Ox Is_Gas: true MW_g: 48.00 + KPP_AbsTol: 1.0e+25 LTRO2H: FullName: Dummy species to track oxidation of TRO2 by HO2 Is_Gas: true MW_g: 173.16 + KPP_AbsTol: 1.0e+25 LTRO2N: FullName: Dummy species to track oxidation of TRO2 by NO Is_Gas: true MW_g: 173.16 + KPP_AbsTol: 1.0e+25 LVOC: DD_F0: 1.0 DD_Hstar: 1.0e+8 @@ -2850,10 +2860,12 @@ LXRO2H: FullName: Dummy species to track oxidation of XRO2 by HO2 Is_Gas: true MW_g: 187.19 + KPP_AbsTol: 1.0e+25 LXRO2N: FullName: Dummy species to track oxidation of XRO2 by NO Is_Gas: true MW_g: 187.19 + KPP_AbsTol: 1.0e+25 MACR: DD_F0: 1.0 DD_Hstar: 6.5 @@ -3818,6 +3830,7 @@ PCO: FullName: Dummy species to track production rate of CO Is_Gas: true MW_g: 28.01 + KPP_AbsTol: 1.0e+25 pFe: DD_F0: 0.0 DD_Hstar: 0.0 @@ -3836,6 +3849,7 @@ PH2O2: FullName: Dummy species to track production rate of H2O2 Is_Gas: true MW_g: 34.02 + KPP_AbsTol: 1.0e+25 PH2SO4: FullName: SO4 from gas-phase chemistry Is_Gas: true @@ -4136,6 +4150,7 @@ POx: FullName: Dummy species to track production rate of Ox Is_Gas: true MW_g: 48.00 + KPP_AbsTol: 1.0e+25 PP: DD_F0: 1.0 DD_Hstar: 2.94e+2 @@ -4210,6 +4225,7 @@ PSO4: FullName: Dummy species to track production of SO4 Is_Gas: true MW_g: 96.06 + KPP_AbsTol: 1.0e+25 PSO4AQ: FullName: SO4 from cloud chemistry Is_Gas: true diff --git a/run/shared/species_database_hg.yml b/run/shared/species_database_hg.yml index 3245b80b2..c69094c72 100644 --- a/run/shared/species_database_hg.yml +++ b/run/shared/species_database_hg.yml @@ -251,19 +251,24 @@ PHg2: FullName: Gross production of gaseous oxidized Hg Is_Gas: true MW_g: 200.59 # Use mol wt of atomic Hg + KPP_AbsTol: 1.0e+25 PHg0: FullName: Gross production of Hg2 Is_Gas: true MW_g: 200.59 # Use mol wt of atomic Hg + KPP_AbsTol: 1.0e+25 PHg2Br: FullName: Gaseous oxidized Hg production from Br Is_Gas: true MW_g: 200.59 # Use mol wt of atomic Hg + KPP_AbsTol: 1.0e+25 PHg2OH: FullName: Gaseous oxidized Hg production from OH Is_Gas: true MW_g: 200.59 # Use mol wt of atomic Hg + KPP_AbsTol: 1.0e+25 PHg2Cl: FullName: Gaseous oxidized Hg production from Cl Is_Gas: true MW_g: 200.59 # Use mol wt of atomic Hg + KPP_AbsTol: 1.0e25 From 8129a609b617ff089ad25c57e93bd607d4077cc2 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 2 Jul 2024 11:00:58 -0400 Subject: [PATCH 325/331] Update CHANGELOG for KPP_AbsTol and KPP_RelTol updates CHANGELOG.md - Added notes describing how we can now define KPP absolute and relative tolerances for species in species_database.yml Signed-off-by: Bob Yantosca --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0df7c50a5..88efd3022 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,13 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] - TBD +### Added +- Set `KPP_AbsTol` to 1e5 for dummy species in `species_database.yml` and `species_database_hg.yml` +- Vectors `State_Chm%KPP_AbsTol` and `State_Chm%KPP_RelTol` + ### Changed +- Copy values from `State_Chm%KPP_AbsTol` to `ATOL` and `State_Chm%KPP_RelTol` to `RTOL` for fullchem and Hg simulations - Simplified SOA representations and fixed related AOD and TotalOA/OC calculations in benchmark. ## [14.4.1] - 2024-06-28 From fd5541ab75ea65011a22ef895f14613beb7b4fb4 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 2 Jul 2024 12:10:38 -0400 Subject: [PATCH 326/331] In roundoff_mod.F90, cast first, then round off if places > 0 Headers/roundoff_mod.F90 - Bug fix: First cast to dble or flex. Then round off if the places argument is > 0. This allows us to just cast w/o rounding off if needed. run/shared/species_database_mod.F90 - Changed 1.0e+25_8 to 1.0e+25 in for KPP_AbsTol (LBRO2H) CHANGELOG.md - Updated accordingly Signed-off-by: Bob Yantosca --- CHANGELOG.md | 3 +++ Headers/roundoff_mod.F90 | 5 ++++- run/shared/species_database.yml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88efd3022..989cab7b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Removed MPI broadcasts in CESM-only UCX code; MPI broadcast done at coupler level - Remove enabling O-server in GCHP for high core counts +### Fixed +- In `Headers/roundoff_mod.F90`, first cast and then only round off if `places > 0` + ## [14.4.0] - 2024-05-30 ### Added - Added `SpcConc%Units` for species-specific unit conversion diff --git a/Headers/roundoff_mod.F90 b/Headers/roundoff_mod.F90 index c1730e7f3..d1d7172fa 100644 --- a/Headers/roundoff_mod.F90 +++ b/Headers/roundoff_mod.F90 @@ -167,7 +167,10 @@ FUNCTION Cast_and_RoundOff_Real2Dble( v_real, places ) RESULT( v_dble ) ENDIF ! Cast to real*8 and roundoff (if the number isn't too large) - v_dble = RoundOff( DBLE( v_real ), places ) + v_dble = DBLE( v_real ) + IF ( places > 0 ) THEN + v_dble = RoundOff( v_dble, places ) + ENDIF END FUNCTION Cast_And_RoundOff_Real2Dble !EOC diff --git a/run/shared/species_database.yml b/run/shared/species_database.yml index 146e6036c..a80b954e6 100644 --- a/run/shared/species_database.yml +++ b/run/shared/species_database.yml @@ -2760,7 +2760,7 @@ LBRO2H: FullName: Dummy species to track oxidation of BRO2 by HO2 Is_Gas: true MW_g: 159.13 - KPP_AbsTol: 1.0e+25_8 + KPP_AbsTol: 1.0e+25 LBRO2N: FullName: Dummy species to track oxidation of BRO2 by NO Is_Gas: true From b0ec470b6babac6cb5cb141ce8f850418ecf4362 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Tue, 2 Jul 2024 12:17:10 -0400 Subject: [PATCH 327/331] Fixed typo in fullchem_mod.F90 GeosCore/fullchem_mod.F90 - Removed extraneous "<" character Signed-off-by: Bob Yantosca --- GeosCore/fullchem_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeosCore/fullchem_mod.F90 b/GeosCore/fullchem_mod.F90 index ba9517c74..ecdda088d 100644 --- a/GeosCore/fullchem_mod.F90 +++ b/GeosCore/fullchem_mod.F90 @@ -44,7 +44,7 @@ MODULE FullChem_Mod INTEGER :: id_NK05, id_NK08, id_NK10, id_NK20 #endif #ifdef MODEL_GEOS -< INTEGER :: id_O3 + INTEGER :: id_O3 INTEGER :: id_A3O2, id_ATO2, id_B3O2, id_BRO2 INTEGER :: id_ETO2, id_LIMO2, id_MO2, id_PIO2, id_PO2 INTEGER :: id_PRN1, id_R4N1, id_R4O2, id_TRO2, id_XRO2 From eabf06c88167f680d2ae932a139852fa3a42d55d Mon Sep 17 00:00:00 2001 From: Lee Murray Date: Thu, 4 Jul 2024 11:47:42 -0400 Subject: [PATCH 328/331] Update setCommonRunSettings.sh.template Fix typo for MassFlux_Entry --- run/GCHP/setCommonRunSettings.sh.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/GCHP/setCommonRunSettings.sh.template b/run/GCHP/setCommonRunSettings.sh.template index 667ab8615..9a610e116 100644 --- a/run/GCHP/setCommonRunSettings.sh.template +++ b/run/GCHP/setCommonRunSettings.sh.template @@ -386,7 +386,7 @@ fi #### Mass flux checks for grid resolution and domain decomposition MassFlux_Entry=$(grep "MFXC" ExtData.rc || echo "missing") -if [[ ${MassFluxEntry} != "missing" ]]; then +if [[ ${MassFlux_Entry} != "missing" ]]; then #### Get met grid res (assume GEOS-IT and GEOS-FP are the only options) C180_Entry=$(grep "MFXC.*C180x180x6" ExtData.rc || echo "missing") From 01188509879b8e627e717338dbe11c7b84cc8d57 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Mon, 15 Jul 2024 17:14:43 -0400 Subject: [PATCH 329/331] Change logic in FAST-JX error trap in gc_environment_mod.F90 GeosCore/gc_environment_mod.F90 - Now test if it is NOT a Hg simulation rather than testing if it is a fullchem or carbon simulation. Signed-off-by: Bob Yantosca --- GeosCore/gc_environment_mod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeosCore/gc_environment_mod.F90 b/GeosCore/gc_environment_mod.F90 index 1af48d76a..4057e1699 100644 --- a/GeosCore/gc_environment_mod.F90 +++ b/GeosCore/gc_environment_mod.F90 @@ -143,7 +143,7 @@ SUBROUTINE GC_Allocate_All( Input_Opt, & #ifdef FASTJX ! Throw an error if FAST-JX is used for simulations other than Hg - IF ( Input_Opt%ITS_A_FULLCHEM_SIM .or. Input_Opt%ITS_A_CARBON_SIM ) THEN + IF ( .not. Input_Opt%ITS_A_MERCURY_SIM ) THEN ErrMsg = 'FAST-JX is only supported in the Hg simulation!' CALL GC_Error( ErrMsg, RC, ThisLoc ) RETURN From 0276c54d84da1b7d77c864cb1c27601b727e54d5 Mon Sep 17 00:00:00 2001 From: Lizzie Lundgren Date: Tue, 23 Jul 2024 10:56:39 -0400 Subject: [PATCH 330/331] Uncomment setting Ca2, K, and Mg cation values passed to HETP Previously these values were zero due to an issue in ISORROPIA. With the update to HETP we can now enable these cations. Signed-off-by: Lizzie Lundgren --- CHANGELOG.md | 1 + GeosCore/aerosol_thermodynamics_mod.F90 | 34 ++++++++----------------- 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53f17f99c..557b60c16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Copy values from `State_Chm%KPP_AbsTol` to `ATOL` and `State_Chm%KPP_RelTol` to `RTOL` for fullchem and Hg simulations +- Change previously zero Ca2, K, and Mg cation values passed to HETP to scaled SALA species concentrations ### Fixed - In `Headers/roundoff_mod.F90`, first cast and then only round off if `places > 0` diff --git a/GeosCore/aerosol_thermodynamics_mod.F90 b/GeosCore/aerosol_thermodynamics_mod.F90 index a5a1559e8..7dcb2b58c 100644 --- a/GeosCore/aerosol_thermodynamics_mod.F90 +++ b/GeosCore/aerosol_thermodynamics_mod.F90 @@ -673,29 +673,17 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, & ! Total Cl- [mole/m3] TCL = ACL + GCL - !==================================================================== - ! NOTE: As of 11/2007, ISORROPIAII does not conserve mass when Ca,K,Mg - ! are non-zero. If you would like to consider Ca, K, Mg from seasalt - ! and dust, then ISORROPIA II ISRP4F routines must be debugged. - ! (hotp, bmy, 2/1/10) - ! This still applies in HETP (ewl, 4/22/2024) - ! - ! ! Total Ca2+ (1.16% by weight of seasalt) [mole/m3] - ! TCA = Spc(id_SALA)%Conc(I,J,L) * 0.0116e+0_fp * 1.d3 / - ! ( 40.08e+0_fp * VOL ) - ! - ! ! Total K+ (1.1% by weight of seasalt) [mole/m3] - ! TK = Spc(id_SALA)%Conc(I,J,L) * 0.0110e+0_fp * 1.d3 / - ! ( 39.102e+0_fp * VOL ) - ! - ! ! Total Mg+ (3.69% by weight of seasalt) [mole/m3] - ! TMG = Spc(id_SALA)%Conc(I,J,L) * 0.0369e+0_fp * 1.d3 / - ! ( 24.312e+0_fp * VOL ) - !==================================================================== - !! Set Ca, K, Mg to zero for time being (hotp, bmy, 2/1/10) - !TCA = 0e+0_fp - !TK = 0e+0_fp - !TMG = 0e+0_fp + ! Total Ca2+ (1.16% by weight of seasalt) [mole/m3] + TCA = Spc(id_SALA)%Conc(I,J,L) * 0.0116e+0_fp * 1.d3 / & + ( 40.08e+0_fp * VOL ) + + ! Total K+ (1.1% by weight of seasalt) [mole/m3] + TK = Spc(id_SALA)%Conc(I,J,L) * 0.0110e+0_fp * 1.d3 / & + ( 39.102e+0_fp * VOL ) + + ! Total Mg+ (3.69% by weight of seasalt) [mole/m3] + TMG = Spc(id_SALA)%Conc(I,J,L) * 0.0369e+0_fp * 1.d3 / & + ( 24.312e+0_fp * VOL ) ! Compute gas-phase NO3 IF ( id_HNO3 > 0 ) THEN From 6a26a6bab094dd8230247aeeb9a252b53c543417 Mon Sep 17 00:00:00 2001 From: Bob Yantosca Date: Wed, 24 Jul 2024 11:26:48 -0400 Subject: [PATCH 331/331] GEOS-Chem (science codebase) 14.4.2 release CHANGELOG.md KPP/fullchem/CHANGELOG_fullchem.md - Updated version numbers to 14.4.2 See CHANGELOG.md for a list of new updates/fixes in this version. Signed-off-by: Bob Yantosca --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e2446547..bf3281677 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This file documents all notable changes to the GEOS-Chem repository starting in The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] - TBD +## [14.4.2] - 2024-07-24 ### Added - Added number of levels with clouds for photolysis to geoschem_config.yml and Input_Opt to pass to Cloud-J - Added `State_Grid%CPU_Subdomain_ID` and `State_Grid%CPU_Subdomain_FirstID` as "identifier numbers" for multiple instances of GEOS-Chem on one core in WRF and CESM